From 39366733c3fe943363566756e2e152c45a1b3cb2 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Fri, 25 May 2018 23:29:36 +0000 Subject: [PATCH] Fri May 25 23:29:36 UTC 2018 patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txz: Rebuilt. Handle removal of US/Pacific-New timezone. If we see that the machine is using this, it will be automatically switched to US/Pacific. --- ChangeLog.txt | 2622 + FILELIST.TXT | 7530 +- READ_DVD.TXT | 7175 -- isolinux/isolinux.boot | Bin 2048 -> 0 bytes ...etworkManager-1.8.4-x86_64-1_slack14.2.txt | 11 + .../bash-4.3.048-x86_64-1_slack14.2.txt | 11 + .../bind-9.10.6_P1-x86_64-1_slack14.2.txt | 11 + .../bluez-5.47-x86_64-1_slack14.2.txt | 11 + ...rtificates-20161130-noarch-1_slack14.2.txt | 11 + .../curl-7.60.0-x86_64-1_slack14.2.txt | 11 + .../dbus-1.10.8-x86_64-2_slack14.2.txt | 11 + .../dhcp-4.4.1-x86_64-1_slack14.2.txt | 11 + .../dnsmasq-2.78-x86_64-1_slack14.2.txt | 11 + .../emacs-25.3-x86_64-1_slack14.2.txt | 11 + .../expat-2.2.2-x86_64-1_slack14.2.txt | 11 + .../freetype-2.6.3-x86_64-2_slack14.2.txt | 11 + .../packages/gcc-5.5.0-x86_64-1_slack14.2.txt | 11 + .../gcc-g++-5.5.0-x86_64-1_slack14.2.txt | 11 + .../gcc-gfortran-5.5.0-x86_64-1_slack14.2.txt | 11 + .../gcc-gnat-5.5.0-x86_64-1_slack14.2.txt | 11 + .../gcc-go-5.5.0-x86_64-1_slack14.2.txt | 11 + .../gcc-java-5.5.0-x86_64-1_slack14.2.txt | 11 + .../gcc-objc-5.5.0-x86_64-1_slack14.2.txt | 11 + .../packages/gd-2.2.5-x86_64-1_slack14.2.txt | 11 + .../gegl-0.2.0-x86_64-4_slack14.2.txt | 11 + .../getmail-4.54.0-x86_64-1_slack14.2.txt | 11 + .../gimp-2.8.18-x86_64-1_slack14.2.txt | 11 + .../git-2.14.1-x86_64-1_slack14.2.txt | 11 + .../gkrellm-2.3.10-x86_64-1_slack14.2.txt | 11 + .../glib2-2.46.2-x86_64-3_slack14.2.txt | 11 + .../glibc-2.23-x86_64-4_slack14.2.txt | 11 + .../glibc-i18n-2.23-x86_64-4_slack14.2.txt | 11 + .../glibc-profile-2.23-x86_64-4_slack14.2.txt | 11 + .../glibc-solibs-2.23-x86_64-4_slack14.2.txt | 11 + ...libc-zoneinfo-2018e-noarch-2_slack14.2.txt | 11 + .../gnupg-1.4.22-x86_64-1_slack14.2.txt | 11 + .../gnutls-3.5.8-x86_64-1_slack14.2.txt | 11 + .../gtk+2-2.24.31-x86_64-1_slack14.2.txt | 11 + .../httpd-2.4.29-x86_64-1_slack14.2.txt | 11 + .../intltool-0.51.0-x86_64-3_slack14.2.txt | 11 + .../irssi-1.0.7-x86_64-1_slack14.2.txt | 11 + .../kdelibs-4.14.32-x86_64-1_slack14.2.txt | 11 + .../libX11-1.6.4-x86_64-1_slack14.2.txt | 11 + .../libXcursor-1.1.15-x86_64-1_slack14.2.txt | 11 + .../libXfixes-5.0.3-x86_64-1_slack14.2.txt | 11 + .../libXfont-1.5.1-x86_64-2_slack14.2.txt | 11 + .../libXi-1.7.8-x86_64-1_slack14.2.txt | 11 + .../libXrandr-1.5.1-x86_64-1_slack14.2.txt | 11 + .../libXrender-0.9.10-x86_64-1_slack14.2.txt | 11 + .../libXres-1.2.0-x86_64-1_slack14.2.txt | 11 + .../libXtst-1.2.3-x86_64-1_slack14.2.txt | 11 + .../libXv-1.0.11-x86_64-1_slack14.2.txt | 11 + .../libXvMC-1.0.10-x86_64-1_slack14.2.txt | 11 + .../libcgroup-0.41-x86_64-2_slack14.2.txt | 11 + .../libgcrypt-1.7.9-x86_64-1_slack14.2.txt | 11 + .../libidn-1.34-x86_64-1_slack14.2.txt | 11 + .../libpcap-1.8.1-x86_64-1_slack14.2.txt | 11 + .../libplist-2.0.0-x86_64-1_slack14.2.txt | 11 + .../libpng-1.6.27-x86_64-1_slack14.2.txt | 11 + .../libsoup-2.52.2-x86_64-3_slack14.2.txt | 11 + .../libtiff-4.0.9-x86_64-1_slack14.2.txt | 11 + .../libtirpc-1.0.2-x86_64-1_slack14.2.txt | 11 + .../libtool-2.4.6-x86_64-5_slack14.2.txt | 11 + .../libvorbis-1.3.6-x86_64-1_slack14.2.txt | 11 + .../libwmf-0.2.8.4-x86_64-7_slack14.2.txt | 11 + .../libxml2-2.9.5-x86_64-1_slack14.2.txt | 11 + .../libzip-1.0.1-x86_64-3_slack14.2.txt | 11 + ...nel-firmware-20180518_2a9b2cf-noarch-1.txt | 11 + .../kernel-generic-4.4.132-x86_64-1.txt | 11 + .../kernel-headers-4.4.132-x86-1.txt | 11 + .../kernel-huge-4.4.132-x86_64-1.txt | 11 + .../kernel-modules-4.4.132-x86_64-1.txt | 11 + .../kernel-source-4.4.132-noarch-1.txt | 11 + .../loudmouth-1.5.3-x86_64-1_slack14.2.txt | 11 + .../lynx-2.8.8rel.2-x86_64-3_slack14.2.txt | 11 + .../mariadb-10.0.35-x86_64-1_slack14.2.txt | 11 + .../mcabber-1.0.5-x86_64-1_slack14.2.txt | 11 + .../mercurial-4.3.1-x86_64-1_slack14.2.txt | 11 + .../minicom-2.7.1-x86_64-1_slack14.2.txt | 11 + .../mkinitrd-1.4.10-x86_64-1_slack14.2.txt | 11 + ...a-firefox-52.8.0esr-x86_64-1_slack14.2.txt | 11 + .../mozilla-nss-3.31.1-x86_64-1_slack14.2.txt | 11 + ...-thunderbird-52.8.0-x86_64-1_slack14.2.txt | 11 + .../nasm-2.13.01-x86_64-1_slack14.2.txt | 11 + ...anager-applet-1.8.4-x86_64-1_slack14.2.txt | 11 + .../ntp-4.2.8p11-x86_64-1_slack14.2.txt | 11 + .../openexr-2.2.0-x86_64-2_slack14.2.txt | 11 + .../openjpeg-2.3.0-x86_64-1_slack14.2.txt | 11 + .../openssh-7.4p1-x86_64-2_slack14.2.txt | 11 + .../openssl-1.0.2o-x86_64-1_slack14.2.txt | 11 + ...enssl-solibs-1.0.2o-x86_64-1_slack14.2.txt | 11 + .../openvpn-2.4.6-x86_64-1_slack14.2.txt | 11 + .../patch-2.7.6-x86_64-1_slack14.2.txt | 11 + .../php-5.6.36-x86_64-1_slack14.2.txt | 11 + .../pidgin-2.12.0-x86_64-1_slack14.2.txt | 11 + .../pkg-config-0.29.2-x86_64-1_slack14.2.txt | 11 + .../procps-ng-3.3.15-x86_64-1_slack14.2.txt | 11 + .../proftpd-1.3.5e-x86_64-1_slack14.2.txt | 11 + .../python-2.7.15-x86_64-1_slack14.2.txt | 11 + .../rpcbind-0.2.4-x86_64-2_slack14.2.txt | 11 + .../rsync-3.1.3-x86_64-1_slack14.2.txt | 11 + .../ruby-2.2.10-x86_64-1_slack14.2.txt | 11 + .../rxvt-2.7.10-x86_64-5_slack14.2.txt | 11 + .../samba-4.4.16-x86_64-3_slack14.2.txt | 11 + .../scim-1.4.17-x86_64-1_slack14.2.txt | 11 + .../screen-4.4.0-x86_64-2_slack14.2.txt | 11 + .../sdl-1.2.15-x86_64-5_slack14.2.txt | 11 + .../seamonkey-2.49.3-x86_64-1_slack14.2.txt | 11 + ...onkey-solibs-2.49.3-x86_64-1_slack14.2.txt | 11 + .../squashfs-tools-4.3-x86_64-2_slack14.2.txt | 11 + .../stunnel-5.35-x86_64-2_slack14.2.txt | 11 + .../subversion-1.9.7-x86_64-1_slack14.2.txt | 11 + .../sudo-1.8.20p2-x86_64-1_slack14.2.txt | 11 + .../tcpdump-4.9.2-x86_64-1_slack14.2.txt | 11 + .../wget-1.19.5-x86_64-1_slack14.2.txt | 11 + .../wpa_supplicant-2.6-x86_64-1_slack14.2.txt | 11 + ...ather-plugin-0.8.10-x86_64-1_slack14.2.txt | 11 + .../xorg-server-1.18.3-x86_64-5_slack14.2.txt | 11 + ...erver-xephyr-1.18.3-x86_64-5_slack14.2.txt | 11 + ...server-xnest-1.18.3-x86_64-5_slack14.2.txt | 11 + ...-server-xvfb-1.18.3-x86_64-5_slack14.2.txt | 11 + .../xscreensaver-5.38-x86_64-1_slack14.2.txt | 11 + .../source/NetworkManager/55NetworkManager | 39 + .../NetworkManager/NetworkManager.SlackBuild | 181 + .../source/NetworkManager/NetworkManager.conf | 7 + .../NetworkManager/conf.d/00-dhcp-client.conf | 8 + .../NetworkManager/conf.d/00-rc-manager.conf | 2 + patches/source/NetworkManager/doinst.sh | 42 + .../source/NetworkManager/rc.networkmanager | 113 + patches/source/NetworkManager/slack-desc | 19 + .../source/bash/bash-4.3-patches/bash43-001 | 58 + .../source/bash/bash-4.3-patches/bash43-002 | 62 + .../source/bash/bash-4.3-patches/bash43-003 | 48 + .../source/bash/bash-4.3-patches/bash43-004 | 47 + .../source/bash/bash-4.3-patches/bash43-005 | 63 + .../source/bash/bash-4.3-patches/bash43-006 | 48 + .../source/bash/bash-4.3-patches/bash43-007 | 50 + .../source/bash/bash-4.3-patches/bash43-008 | 188 + .../source/bash/bash-4.3-patches/bash43-009 | 64 + .../source/bash/bash-4.3-patches/bash43-010 | 157 + .../source/bash/bash-4.3-patches/bash43-011 | 49 + .../source/bash/bash-4.3-patches/bash43-012 | 43 + .../source/bash/bash-4.3-patches/bash43-013 | 66 + .../source/bash/bash-4.3-patches/bash43-014 | 102 + .../source/bash/bash-4.3-patches/bash43-015 | 58 + .../source/bash/bash-4.3-patches/bash43-016 | 132 + .../source/bash/bash-4.3-patches/bash43-017 | 51 + .../source/bash/bash-4.3-patches/bash43-018 | 44 + .../source/bash/bash-4.3-patches/bash43-019 | 84 + .../source/bash/bash-4.3-patches/bash43-020 | 110 + .../source/bash/bash-4.3-patches/bash43-021 | 52 + .../source/bash/bash-4.3-patches/bash43-022 | 56 + .../source/bash/bash-4.3-patches/bash43-023 | 104 + .../source/bash/bash-4.3-patches/bash43-024 | 54 + .../source/bash/bash-4.3-patches/bash43-025 | 123 + .../source/bash/bash-4.3-patches/bash43-026 | 60 + .../source/bash/bash-4.3-patches/bash43-027 | 221 + .../source/bash/bash-4.3-patches/bash43-028 | 2265 + .../source/bash/bash-4.3-patches/bash43-029 | 59 + .../source/bash/bash-4.3-patches/bash43-030 | 2064 + .../source/bash/bash-4.3-patches/bash43-031 | 112 + .../source/bash/bash-4.3-patches/bash43-032 | 51 + .../source/bash/bash-4.3-patches/bash43-033 | 225 + .../source/bash/bash-4.3-patches/bash43-034 | 90 + .../source/bash/bash-4.3-patches/bash43-035 | 63 + .../source/bash/bash-4.3-patches/bash43-036 | 57 + .../source/bash/bash-4.3-patches/bash43-037 | 43 + .../source/bash/bash-4.3-patches/bash43-038 | 88 + .../source/bash/bash-4.3-patches/bash43-039 | 57 + .../source/bash/bash-4.3-patches/bash43-040 | 47 + .../source/bash/bash-4.3-patches/bash43-041 | 72 + .../source/bash/bash-4.3-patches/bash43-042 | 55 + .../source/bash/bash-4.3-patches/bash43-043 | 59 + .../source/bash/bash-4.3-patches/bash43-044 | 48 + .../source/bash/bash-4.3-patches/bash43-045 | 52 + .../source/bash/bash-4.3-patches/bash43-046 | 55 + .../source/bash/bash-4.3-patches/bash43-047 | 150 + .../source/bash/bash-4.3-patches/bash43-048 | 54 + patches/source/bash/bash.SlackBuild | 170 + patches/source/bash/doinst.sh | 18 + patches/source/bash/slack-desc | 19 + patches/source/bind/3link.sh | 136 + patches/source/bind/bind.SlackBuild | 165 + patches/source/bind/bind.libidn.patch | 297 + patches/source/bind/bind.so_bsdcompat.diff | 11 + .../bind/caching-example/localhost.zone | 11 + .../source/bind/caching-example/named.conf | 31 + .../source/bind/caching-example/named.local | 10 + .../source/bind/caching-example/named.root | 90 + patches/source/bind/doinst.sh | 36 + patches/source/bind/rc.bind | 112 + patches/source/bind/slack-desc | 19 + .../bluez-5.30-obexd_without_systemd-1.patch | 61 + patches/source/bluez/bluez.SlackBuild | 178 + patches/source/bluez/btusb.conf | 3 + patches/source/bluez/config/defaultconfig | 9 + patches/source/bluez/config/rc.bluetooth | 74 + patches/source/bluez/config/uart.conf | 6 + patches/source/bluez/doinst.sh | 27 + patches/source/bluez/slack-desc | 19 + .../ca-certificates.SlackBuild | 91 + patches/source/ca-certificates/doinst.sh | 19 + .../patches/fixup_DESTDIR.diff | 49 + .../patches/fixup_update-ca-certificates.diff | 12 + .../source/ca-certificates/setup.11.cacerts | 3 + patches/source/ca-certificates/slack-desc | 19 + patches/source/curl/cacert-fetch.sh | 1 + patches/source/curl/cacert.pem | 3338 + patches/source/curl/curl.SlackBuild | 153 + patches/source/curl/slack-desc | 19 + .../dbus/dbus-1.10.x-allow_root_globally.diff | 18 + patches/source/dbus/dbus.SlackBuild | 151 + patches/source/dbus/dbus.expat222fix.diff | 74 + patches/source/dbus/doinst.sh | 26 + patches/source/dbus/rc.messagebus | 81 + patches/source/dbus/slack-desc | 18 + patches/source/dhcp/dhclient-script.PATH.diff | 13 + .../source/dhcp/dhcp-remove-bind-tarball.sh | 49 + patches/source/dhcp/dhcp.SlackBuild | 179 + patches/source/dhcp/doinst.sh | 21 + patches/source/dhcp/slack-desc | 19 + patches/source/dnsmasq/dnsmasq.SlackBuild | 107 + patches/source/dnsmasq/dnsmasq.leasedir.diff | 24 + patches/source/dnsmasq/doinst.sh | 26 + patches/source/dnsmasq/rc.dnsmasq | 36 + patches/source/dnsmasq/slack-desc | 19 + patches/source/emacs/doinst.sh | 10 + patches/source/emacs/emacs.SlackBuild | 190 + patches/source/emacs/slack-desc | 12 + patches/source/expat/expat.SlackBuild | 93 + patches/source/expat/slack-desc | 19 + .../freetype/freetype.CVE-2017-8287.diff | 31 + patches/source/freetype/freetype.SlackBuild | 123 + .../freetype/freetype.illadvisederror.diff | 31 + .../freetype/freetype.subpixel.rendering.diff | 12 + patches/source/freetype/slack-desc | 19 + ...struct-ix86_frame-to-machine_function.diff | 239 + ...nce-of-struct-ix86_frame-to-avoid-cop.diff | 72 + ...eference-of-struct-ix86_frame-to-avoi.diff | 59 + ...-t-use-reference-of-struct-ix86_frame.diff | 63 + .../0005-x86-Add-mindirect-branch-doc.diff | 279 + .../gcc/0005-x86-Add-mindirect-branch.diff | 1870 + .../0006-x86-Add-mfunction-return-doc.diff | 300 + .../gcc/0006-x86-Add-mfunction-return.diff | 1409 + ...x86-Add-mindirect-branch-register-doc.diff | 231 + ...007-x86-Add-mindirect-branch-register.diff | 812 + ...6-Add-V-register-operand-modifier-doc.diff | 65 + ...8-x86-Add-V-register-operand-modifier.diff | 125 + ...ndirect-branch-mfunction-return-with-.diff | 275 + ...rect-branch-mfunction-return-with-doc.diff | 102 + patches/source/gcc/antlr-runtime-3.4.jar | Bin 0 -> 164368 bytes patches/source/gcc/c89.sh | 10 + patches/source/gcc/c99.sh | 10 + patches/source/gcc/create_gcj_jvm.sh | 93 + patches/source/gcc/ecj-4.9.jar | Bin 0 -> 1619429 bytes patches/source/gcc/ecj.sh | 5 + patches/source/gcc/ecj.url | 1 + .../1000-fastjar-0.97-segfault.patch | 29 + .../1001-fastjar-0.97-len1.patch | 16 + .../1002-fastjar-0.97-filename0.patch | 14 + .../1003-fastjar-CVE-2010-0831.patch | 102 + .../fastjar-patches/1004-fastjar-man.patch | 27 + patches/source/gcc/gcc-no_fixincludes.diff | 27 + patches/source/gcc/gcc.SlackBuild | 827 + patches/source/gcc/slack-desc.gcc | 19 + patches/source/gcc/slack-desc.gcc-g++ | 19 + patches/source/gcc/slack-desc.gcc-gfortran | 19 + patches/source/gcc/slack-desc.gcc-gnat | 19 + patches/source/gcc/slack-desc.gcc-go | 19 + patches/source/gcc/slack-desc.gcc-java | 19 + patches/source/gcc/slack-desc.gcc-objc | 19 + patches/source/gd/gd.SlackBuild | 122 + patches/source/gd/slack-desc | 19 + ...x-the-build-with-recent-suitesparse-.patch | 68 + .../gegl/gegl-0.2.0-CVE-2012-4433.patch | 159 + .../source/gegl/gegl-0.2.0-libopenraw.patch | 71 + .../source/gegl/gegl-0.2.0-linker-flags.patch | 36 + patches/source/gegl/gegl-0.2.0-lua-5.2.patch | 53 + .../gegl/gegl-0.2.0-remove-src-over-op.patch | 195 + patches/source/gegl/gegl.SlackBuild | 116 + patches/source/gegl/slack-desc | 19 + patches/source/getmail/getmail.SlackBuild | 65 + patches/source/getmail/slack-desc | 19 + patches/source/gimp/gimp.SlackBuild | 136 + patches/source/gimp/slack-desc | 19 + patches/source/git/git-2.14.1.tar.sign | Bin 0 -> 543 bytes patches/source/git/git.SlackBuild | 170 + patches/source/git/git.url | 1 + patches/source/git/slack-desc | 19 + patches/source/gkrellm/gkrellm.SlackBuild | 149 + .../gkrellm/gkrellm.theme.defaults.diff | 11 + patches/source/gkrellm/slack-desc | 19 + ...-a-memory-leak-during-initialization.patch | 25 + patches/source/glib2/doinst.sh | 32 + patches/source/glib2/glib.bug.758823.diff | 40 + patches/source/glib2/glib2.SlackBuild | 145 + patches/source/glib2/libglib2.csh | 27 + patches/source/glib2/libglib2.sh | 26 + patches/source/glib2/slack-desc | 19 + patches/source/glibc-zoneinfo/doinst.sh | 57 + .../glibc-zoneinfo/glibc-zoneinfo.SlackBuild | 147 + patches/source/glibc-zoneinfo/slack-desc | 19 + .../output-updated-timeconfig.sh | 60 + .../glibc-zoneinfo/timezone-scripts/parts/00 | 132 + .../glibc-zoneinfo/timezone-scripts/parts/01 | 585 + .../glibc-zoneinfo/timezone-scripts/parts/02 | 28 + .../glibc-zoneinfo/timezone-scripts/parts/03 | 585 + .../glibc-zoneinfo/timezone-scripts/parts/04 | 33 + .../timezone-scripts/parts/README | 2 + .../timezone-scripts/setup.timeconfig | 3 + .../timezone-scripts/timeconfig | 1363 + patches/source/glibc/doinst.sh-glibc | 179 + patches/source/glibc/doinst.sh-glibc-solibs | 137 + .../glibc-2.10-dns-no-gethostbyname4.diff | 26 + .../source/glibc/glibc-c-utf8-locale.patch | 251 + patches/source/glibc/glibc-cvs-checkout.sh | 3 + patches/source/glibc/glibc.3776f38f.diff | 52 + patches/source/glibc/glibc.46703a39.diff | 119 + ...24767.dont.assert.on.older.intel.cpus.diff | 32 + .../glibc.CVE-2017-1000366.3c7cd212.diff | 32 + patches/source/glibc/glibc.SlackBuild | 440 + patches/source/glibc/glibc.adc7e06f.diff | 38 + patches/source/glibc/glibc.c69d4a0f.diff | 201 + ...libc.ldd.trace.through.dynamic.linker.diff | 49 + .../source/glibc/glibc.locale.no-archive.diff | 10 + patches/source/glibc/glibc.make-3.82.diff | 28 + .../glibc.revert.to.fix.build.breakages.diff | 13 + patches/source/glibc/glibc.ru_RU.CP1251.diff | 10 + patches/source/glibc/is_IS.diff | 19 + patches/source/glibc/profile.d/glibc.csh.new | 9 + patches/source/glibc/profile.d/glibc.sh.new | 8 + patches/source/glibc/slack-desc.glibc | 19 + patches/source/glibc/slack-desc.glibc-debug | 19 + patches/source/glibc/slack-desc.glibc-i18n | 19 + patches/source/glibc/slack-desc.glibc-profile | 19 + patches/source/glibc/slack-desc.glibc-solibs | 19 + .../slack-desc.glibc-solibs-linuxthreads | 18 + patches/source/gnupg/gnupg.SlackBuild | 115 + patches/source/gnupg/slack-desc.gnupg | 19 + patches/source/gnutls/gnutls.SlackBuild | 141 + patches/source/gnutls/slack-desc | 19 + patches/source/gtk+2/doinst.sh | 26 + .../fix_build_issues_on_tutorial_and_faq.diff | 26 + .../gtk+2/gtk+-2.24.x.icon-compat.am.diff | 264 + .../source/gtk+2/gtk+-2.24.x.icon-compat.diff | 264 + patches/source/gtk+2/gtk+2.SlackBuild | 203 + patches/source/gtk+2/gtk.gtk-faq.diff | 11 + patches/source/gtk+2/gtk.gtk-tut.diff | 11 + .../source/gtk+2/gtk.xid.nowarningflood.diff | 12 + patches/source/gtk+2/profile.d/gtk+.csh | 2 + patches/source/gtk+2/profile.d/gtk+.sh | 4 + patches/source/gtk+2/slack-desc | 19 + patches/source/gtk+2/update-gtk-immodules | 12 + patches/source/gtk+2/update-gtk-immodules-2.0 | 48 + ...pache-2.4.CVE-2017-9798.optionsbleed.patch | 15 + patches/source/httpd/doinst.sh | 71 + patches/source/httpd/httpd.SlackBuild | 246 + patches/source/httpd/httpd.runasapache.diff | 13 + patches/source/httpd/httpd.url | 2 + patches/source/httpd/logrotate.httpd | 12 + patches/source/httpd/rc.httpd | 44 + patches/source/httpd/slack-desc | 19 + .../intltool/intltool-0.51.0-perl-5.22.patch | 44 + patches/source/intltool/intltool.SlackBuild | 132 + .../source/intltool/no-guess-builddir.diff | 31 + patches/source/intltool/slack-desc | 19 + patches/source/irssi/doinst.sh | 12 + patches/source/irssi/irssi.SlackBuild | 143 + patches/source/irssi/slack-desc | 19 + patches/source/kdelibs/KDE.SlackBuild | 532 + patches/source/kdelibs/KDE.options | 58 + patches/source/kdelibs/build/kdelibs | 1 + patches/source/kdelibs/cmake/kdelibs | 17 + patches/source/kdelibs/doinst.sh/kdelibs | 9 + patches/source/kdelibs/kdelibs.SlackBuild | 2 + patches/source/kdelibs/modularize | 268 + patches/source/kdelibs/modules/kdelibs | 1 + patches/source/kdelibs/noarch | 5 + patches/source/kdelibs/package-blacklist | 9 + patches/source/kdelibs/patch/kdelibs.patch | 14 + .../patch/kdelibs/coding-style-fixes.patch | 62 + .../patch/kdelibs/kdelibs.docbook.patch | 11 + .../kdelibs/kdelibs.upnp_conditional.patch | 15 + .../return-application-icons-properly.patch | 56 + .../return-not-break.-copy-paste-error.patch | 31 + .../kdelibs/post-install/kdelibs.post-install | 2 + patches/source/kdelibs/slack-desc/kdelibs | 19 + patches/source/libX11/arch.use.flags | 9 + patches/source/libX11/build/libX11 | 1 + patches/source/libX11/configure/libX11 | 12 + patches/source/libX11/libX11.SlackBuild | 2 + patches/source/libX11/modularize | 279 + patches/source/libX11/noarch | 75 + patches/source/libX11/package-blacklist | 44 + .../libX11/post-install/libX11.post-install | 2 + patches/source/libX11/slack-desc/libX11 | 19 + patches/source/libX11/x11.SlackBuild | 381 + patches/source/libXcursor/arch.use.flags | 7 + patches/source/libXcursor/build/increment.sh | 17 + patches/source/libXcursor/build/libXcursor | 1 + patches/source/libXcursor/configure/configure | 12 + .../source/libXcursor/libXcursor.SlackBuild | 26 + patches/source/libXcursor/modularize | 272 + patches/source/libXcursor/noarch | 76 + patches/source/libXcursor/package-blacklist | 43 + .../source/libXcursor/slack-desc/libXcursor | 19 + patches/source/libXcursor/x11-build-script.sh | 374 + patches/source/libXfixes/arch.use.flags | 9 + patches/source/libXfixes/build/libXfixes | 1 + patches/source/libXfixes/configure/configure | 13 + patches/source/libXfixes/libXfixes.SlackBuild | 2 + patches/source/libXfixes/modularize | 279 + patches/source/libXfixes/noarch | 75 + patches/source/libXfixes/package-blacklist | 44 + patches/source/libXfixes/slack-desc/libXfixes | 19 + patches/source/libXfixes/x11.SlackBuild | 381 + patches/source/libXfont/arch.use.flags | 7 + patches/source/libXfont/build/increment.sh | 17 + patches/source/libXfont/build/libXfont | 1 + patches/source/libXfont/configure/configure | 12 + patches/source/libXfont/libXfont.SlackBuild | 26 + patches/source/libXfont/modularize | 272 + patches/source/libXfont/noarch | 76 + patches/source/libXfont/package-blacklist | 43 + patches/source/libXfont/patch/libXfont.patch | 1 + .../libXfont/libXfont.CVE-2017-16611.diff | 105 + patches/source/libXfont/slack-desc/libXfont | 19 + patches/source/libXfont/x11-build-script.sh | 374 + patches/source/libXi/arch.use.flags | 9 + patches/source/libXi/build/libXi | 1 + patches/source/libXi/configure/configure | 13 + patches/source/libXi/libXi.SlackBuild | 2 + patches/source/libXi/modularize | 279 + patches/source/libXi/noarch | 75 + patches/source/libXi/package-blacklist | 44 + patches/source/libXi/slack-desc/libXi | 19 + patches/source/libXi/slack-desc/libXinerama | 19 + patches/source/libXi/x11.SlackBuild | 381 + patches/source/libXrandr/arch.use.flags | 9 + patches/source/libXrandr/build/libXrandr | 1 + patches/source/libXrandr/configure/configure | 13 + patches/source/libXrandr/libXrandr.SlackBuild | 2 + patches/source/libXrandr/modularize | 279 + patches/source/libXrandr/noarch | 75 + patches/source/libXrandr/package-blacklist | 44 + patches/source/libXrandr/slack-desc/libXrandr | 19 + patches/source/libXrandr/x11.SlackBuild | 381 + patches/source/libXrender/arch.use.flags | 9 + patches/source/libXrender/build/libXrender | 1 + patches/source/libXrender/configure/configure | 13 + .../source/libXrender/libXrender.SlackBuild | 2 + patches/source/libXrender/modularize | 279 + patches/source/libXrender/noarch | 75 + patches/source/libXrender/package-blacklist | 44 + .../source/libXrender/slack-desc/libXrender | 19 + patches/source/libXrender/x11.SlackBuild | 381 + patches/source/libXres/arch.use.flags | 9 + patches/source/libXres/build/libXres | 1 + patches/source/libXres/configure/configure | 13 + patches/source/libXres/libXres.SlackBuild | 2 + patches/source/libXres/modularize | 279 + patches/source/libXres/noarch | 75 + patches/source/libXres/package-blacklist | 44 + patches/source/libXres/slack-desc/libXres | 19 + patches/source/libXres/x11.SlackBuild | 381 + patches/source/libXtst/arch.use.flags | 9 + patches/source/libXtst/build/libXtst | 1 + patches/source/libXtst/configure/configure | 13 + patches/source/libXtst/libXtst.SlackBuild | 2 + patches/source/libXtst/modularize | 279 + patches/source/libXtst/noarch | 75 + patches/source/libXtst/package-blacklist | 44 + patches/source/libXtst/slack-desc/libXtst | 19 + patches/source/libXtst/x11.SlackBuild | 381 + patches/source/libXv/arch.use.flags | 9 + patches/source/libXv/build/libXv | 1 + patches/source/libXv/configure/configure | 13 + patches/source/libXv/libXv.SlackBuild | 2 + patches/source/libXv/modularize | 279 + patches/source/libXv/noarch | 75 + patches/source/libXv/package-blacklist | 44 + patches/source/libXv/slack-desc/libXv | 19 + patches/source/libXv/slack-desc/libXvMC | 19 + patches/source/libXv/x11.SlackBuild | 381 + patches/source/libXvMC/arch.use.flags | 9 + patches/source/libXvMC/build/libXvMC | 1 + patches/source/libXvMC/configure/configure | 13 + patches/source/libXvMC/libXvMC.SlackBuild | 2 + patches/source/libXvMC/modularize | 279 + patches/source/libXvMC/noarch | 75 + patches/source/libXvMC/package-blacklist | 44 + patches/source/libXvMC/slack-desc/libXvMC | 19 + patches/source/libXvMC/x11.SlackBuild | 381 + patches/source/libcgroup/doinst.sh | 43 + patches/source/libcgroup/libcgroup.SlackBuild | 171 + patches/source/libcgroup/libcgroup.conf.diff | 8 + patches/source/libcgroup/libcgroup.init.diff | 136 + patches/source/libcgroup/slack-desc | 19 + patches/source/libgcrypt/libgcrypt.SlackBuild | 127 + patches/source/libgcrypt/slack-desc | 19 + patches/source/libidn/libidn.SlackBuild | 137 + patches/source/libidn/slack-desc | 19 + patches/source/libpcap/libpcap.SlackBuild | 128 + patches/source/libpcap/slack-desc | 19 + patches/source/libplist/libplist.SlackBuild | 138 + patches/source/libplist/slack-desc | 19 + patches/source/libpng/libpng.SlackBuild | 142 + patches/source/libpng/libpng.url | 1 + patches/source/libpng/slack-desc | 19 + .../source/libsoup/libsoup.CVE-2017-2885.diff | 43 + patches/source/libsoup/libsoup.SlackBuild | 101 + patches/source/libsoup/slack-desc | 19 + .../source/libtiff/libtiff-am-version.patch | 31 + patches/source/libtiff/libtiff.SlackBuild | 120 + patches/source/libtiff/slack-desc | 19 + patches/source/libtirpc/doinst.sh | 13 + patches/source/libtirpc/libtirpc.SlackBuild | 164 + patches/source/libtirpc/slack-desc | 19 + patches/source/libtool/doinst.sh | 18 + patches/source/libtool/libtool.SlackBuild | 104 + .../libtool/libtool.no.moved.warning.diff | 42 + patches/source/libtool/slack-desc | 19 + patches/source/libvorbis/libvorbis.SlackBuild | 102 + patches/source/libvorbis/slack-desc | 19 + .../libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch | 17 + .../libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch | 27 + .../libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch | 11 + .../libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch | 16 + .../libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch | 61 + .../libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch | 13 + .../libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch | 38 + .../libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch | 13 + ...-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch | 118 + .../libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch | 56 + .../libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch | 23 + .../libwmf-0.2.8.4-CVE-2016-10167.patch | 30 + .../libwmf-0.2.8.4-CVE-2016-10168.patch | 14 + .../libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch | 36 + .../libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch | 21 + .../libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch | 32 + .../libwmf/libwmf-0.2.8.4-fallbackfont.patch | 18 + .../libwmf-0.2.8.4-pixbufloaderdir.patch | 14 + .../libwmf/libwmf-0.2.8.4-reducesymbols.patch | 520 + .../libwmf/libwmf-0.2.8.4-useafterfree.patch | 10 + patches/source/libwmf/libwmf.SlackBuild | 142 + patches/source/libwmf/libwmf.png14.diff | 11 + patches/source/libwmf/slack-desc | 19 + patches/source/libxml2/libxml2.SlackBuild | 112 + .../libxml2/libxml2.do-not-check-crc.diff | 35 + patches/source/libxml2/slack-desc | 19 + .../source/libzip/libzip.CVE-2017-14107.diff | 14 + patches/source/libzip/libzip.SlackBuild | 140 + patches/source/libzip/slack-desc | 19 + patches/source/loudmouth/loudmouth.SlackBuild | 133 + patches/source/loudmouth/slack-desc | 19 + patches/source/lynx/doinst.sh | 13 + patches/source/lynx/lynx.SlackBuild | 155 + patches/source/lynx/lynx.cfg.diff | 31 + patches/source/lynx/slack-desc | 19 + patches/source/mariadb/doinst.sh | 28 + patches/source/mariadb/mariadb.SlackBuild | 199 + patches/source/mariadb/mirror.url | 1 + patches/source/mariadb/rc.mysqld | 102 + patches/source/mariadb/slack-desc | 19 + patches/source/mcabber/mcabber.SlackBuild | 128 + patches/source/mcabber/slack-desc | 19 + patches/source/mercurial/doinst.sh | 13 + patches/source/mercurial/mercurial.SlackBuild | 109 + patches/source/mercurial/slack-desc | 22 + patches/source/minicom/config.sub-x86_64.diff | 20 + patches/source/minicom/doinst.sh | 15 + patches/source/minicom/lrzsz_0.12.21-5.diff | 4194 + patches/source/minicom/minicom.SlackBuild | 160 + patches/source/minicom/minicom.users | 36 + patches/source/minicom/slack-desc | 19 + patches/source/mkinitrd/README.initrd | 99 + patches/source/mkinitrd/busybox-dot-config | 1 + .../source/mkinitrd/busybox-dot-config.1.20.x | 1024 + .../busybox-1.20.2-kernel_ver.patch | 25 + .../fixes-1.20.2/busybox-1.20.2-ntpd.patch | 11 + .../busybox-1.20.2-pkg-config-selinux.patch | 67 + .../busybox-1.20.2-sys-resource.patch | 123 + patches/source/mkinitrd/init | 350 + patches/source/mkinitrd/mkinitrd | 740 + patches/source/mkinitrd/mkinitrd.8 | 279 + patches/source/mkinitrd/mkinitrd.SlackBuild | 146 + patches/source/mkinitrd/mkinitrd.conf.5 | 244 + patches/source/mkinitrd/mkinitrd.conf.sample | 21 + .../mkinitrd/mkinitrd_command_generator.8 | 187 + .../mkinitrd/mkinitrd_command_generator.sh | 872 + patches/source/mkinitrd/slack-desc | 19 + .../autoconf-2.13-consolidated_fixes-1.patch | 504 + .../mozilla-firefox/autoconf/autoconf.build | 81 + .../mozilla-firefox/build-with-clang.diff | 13 + .../firefox.moz_plugin_path.diff | 17 + patches/source/mozilla-firefox/gold/gold | 2 + patches/source/mozilla-firefox/gold/ld | 1 + patches/source/mozilla-firefox/mimeTypes.rdf | 28 + .../mozilla-firefox-mimeTypes-fix.diff | 45 + .../mozilla-firefox.SlackBuild | 307 + .../mozilla-firefox/mozilla-firefox.desktop | 80 + patches/source/mozilla-firefox/slack-desc | 19 + patches/source/mozilla-nss/MPL-1.1.txt | 470 + patches/source/mozilla-nss/faq.html | 364 + patches/source/mozilla-nss/gpl-2.0.txt | 339 + patches/source/mozilla-nss/lgpl-2.1.txt | 504 + .../source/mozilla-nss/mozilla-nss.SlackBuild | 186 + patches/source/mozilla-nss/nss-config.in | 145 + patches/source/mozilla-nss/slack-desc | 19 + .../autoconf-2.13-consolidated_fixes-1.patch | 504 + .../autoconf/autoconf.build | 81 + patches/source/mozilla-thunderbird/gold/gold | 2 + patches/source/mozilla-thunderbird/gold/ld | 1 + .../mozilla-firefox.xpcom_arm.patch | 18 + .../mozilla-thunderbird.SlackBuild | 247 + .../mozilla-thunderbird.desktop | 84 + patches/source/mozilla-thunderbird/slack-desc | 19 + .../mozilla-thunderbird/thunderbird.png | Bin 0 -> 47617 bytes patches/source/nasm/nasm.SlackBuild | 90 + patches/source/nasm/slack-desc | 19 + .../source/network-manager-applet/doinst.sh | 16 + .../network-manager-applet.SlackBuild | 124 + .../source/network-manager-applet/slack-desc | 19 + patches/source/ntp/doinst.sh | 28 + patches/source/ntp/ntp.SlackBuild | 158 + patches/source/ntp/ntp.conf | 72 + patches/source/ntp/ntp.keys | 2 + patches/source/ntp/ntp.nano.diff | 17 + patches/source/ntp/rc.ntpd | 56 + patches/source/ntp/slack-desc | 19 + .../openexr.CVE-2017-9110-to-9116.patch | 82 + patches/source/openexr/openexr.SlackBuild | 113 + patches/source/openexr/slack-desc | 19 + patches/source/openjpeg/openjpeg.SlackBuild | 121 + .../openjpeg2_remove-thirdparty.patch | 11 + patches/source/openjpeg/slack-desc | 19 + patches/source/openssh/doinst.sh | 49 + .../source/openssh/openssh-7.4p1-libwrap.diff | 137 + .../openssh/openssh.CVE-2017-15906.patch | 19 + patches/source/openssh/openssh.SlackBuild | 169 + patches/source/openssh/rc.sshd | 59 + patches/source/openssh/slack-desc | 19 + patches/source/openssl/certwatch | 130 + patches/source/openssl/doinst.sh-openssl | 26 + .../source/openssl/doinst.sh-openssl-solibs | 12 + patches/source/openssl/openssl.SlackBuild | 223 + patches/source/openssl/slack-desc.openssl | 19 + .../source/openssl/slack-desc.openssl-solibs | 19 + patches/source/openvpn/README | 26 + patches/source/openvpn/doinst.sh | 25 + patches/source/openvpn/openvpn.SlackBuild | 169 + patches/source/openvpn/openvpn.url | 2 + patches/source/openvpn/rc.openvpn | 111 + patches/source/openvpn/slack-desc | 19 + patches/source/openvpn/slackware.conf | 178 + ...efuse-to-apply-ed-scripts-by-default.patch | 178 + patches/source/patch/patch.SlackBuild | 131 + patches/source/patch/slack-desc | 19 + patches/source/php/doinst.sh | 30 + patches/source/php/fetch-php.sh | 2 + patches/source/php/mod_php.conf.example | 29 + patches/source/php/php-fpm.conf.diff | 28 + patches/source/php/php.SlackBuild | 312 + patches/source/php/php.ini-development.diff | 61 + patches/source/php/slack-desc | 19 + patches/source/pidgin/doinst.sh | 10 + .../pidgin/fix-gmain_h-compile-error.diff | 17 + patches/source/pidgin/pidgin.SlackBuild | 231 + patches/source/pidgin/slack-desc | 19 + patches/source/pkg-config/doinst.sh | 9 + .../source/pkg-config/pkg-config.SlackBuild | 120 + .../source/pkg-config/scripts/pkgconfig.csh | 6 + .../source/pkg-config/scripts/pkgconfig.sh | 7 + patches/source/pkg-config/slack-desc | 19 + patches/source/procps-ng/procps-ng.SlackBuild | 251 + ...8cc55b4d08851faba46635d737b24d016665b.diff | 25 + patches/source/procps-ng/slack-desc | 19 + patches/source/proftpd/doinst.sh | 18 + patches/source/proftpd/etc/ftpusers | 22 + patches/source/proftpd/etc/proftpd.conf | 74 + patches/source/proftpd/proftpd.SlackBuild | 139 + patches/source/proftpd/slack-desc | 19 + patches/source/python/python.SlackBuild | 167 + .../python/python.no-static-library.diff | 49 + .../python.readline.set_pre_input_hook.diff | 12 + patches/source/python/python.x86_64.diff | 174 + patches/source/python/slack-desc | 19 + ...Clarify-state-file-usage-and-history.patch | 39 + ...-svc_getargs-calls-with-svc_freeargs.patch | 218 + ...dump-Fixed-typo-in-memory-leak-patch.patch | 29 + ...nd-fix-building-without-enable-debug.patch | 69 + ...it_com-Stop-freeing-a-static-pointer.patch | 96 + ...com-No-need-to-allocate-output-buffe.patch | 96 + ...pcbind-manpage-statefile-explanation.patch | 25 + patches/source/rpcbind/doinst.sh | 24 + patches/source/rpcbind/rc.rpc | 64 + patches/source/rpcbind/rpcbind.SlackBuild | 155 + .../rpcbind/rpcbind.lwrap.needs.lnsl.diff | 14 + patches/source/rpcbind/slack-desc | 19 + patches/source/rsync/rsync.SlackBuild | 110 + patches/source/rsync/slack-desc | 19 + patches/source/ruby/ruby.SlackBuild | 138 + patches/source/ruby/slack-desc | 19 + .../rxvt/rxvt-integer-overflow-fix.patch | 11 + patches/source/rxvt/rxvt.SlackBuild | 127 + patches/source/rxvt/rxvt.utempter.diff | 277 + patches/source/rxvt/slack-desc | 19 + patches/source/samba/doinst.sh | 42 + patches/source/samba/pytalloc-util.pc | 11 + patches/source/samba/rc.samba | 48 + .../samba/samba-4.4.16-CVE-2018-1057.patch | 903 + .../samba-4.5.14-security-2017-11-21.patch | 110 + patches/source/samba/samba.SlackBuild | 224 + .../samba.install.talloc.tevent.tdb.diff | 102 + patches/source/samba/samba.url | 2 + patches/source/samba/slack-desc | 19 + patches/source/samba/smb.conf.default | 223 + patches/source/samba/smb.conf.default.orig | 223 + patches/source/samba/smb.conf.diff | 29 + patches/source/samba/talloc.pc | 11 + patches/source/scim/scim-setup.desktop | 28 + patches/source/scim/scim.SlackBuild | 250 + patches/source/scim/scim.desktop | 20 + patches/source/scim/slack-desc | 19 + patches/source/screen/26source_encoding.patch | 353 + patches/source/screen/45suppress_remap.patch | 13 + .../source/screen/52fix_screen_utf8_nfd.patch | 41 + .../screen/58-show-encoding-hardstatus.patch | 41 + .../screen/60-revert-screenrc-change.diff | 13 + patches/source/screen/screen.SlackBuild | 158 + patches/source/screen/screen.no_libelf.diff | 19 + patches/source/screen/slack-desc | 19 + patches/source/sdl/SDL_mixer.usrlocal.diff | 11 + patches/source/sdl/SDL_ttf.shaded.text.diff | 11 + .../source/sdl/libsdl-1.2.15-resizing.patch | 63 + .../sdl/sdl-1.2.14-fix-mouse-clicking.patch | 23 + patches/source/sdl/sdl.SlackBuild | 255 + patches/source/sdl/slack-desc | 19 + .../autoconf-2.13-consolidated_fixes-1.patch | 504 + .../source/seamonkey/autoconf/autoconf.build | 81 + patches/source/seamonkey/doinst.sh | 11 + patches/source/seamonkey/gold/gold | 2 + patches/source/seamonkey/gold/ld | 1 + .../pkgconfig/seamonkey-gtkmozembed.pc | 11 + .../seamonkey/pkgconfig/seamonkey-libxul.pc | 11 + .../seamonkey/pkgconfig/seamonkey-nspr.pc | 12 + .../seamonkey/pkgconfig/seamonkey-nss.pc | 11 + .../seamonkey/pkgconfig/seamonkey-plugin.pc | 10 + .../seamonkey/pkgconfig/seamonkey-xpcom.pc | 12 + patches/source/seamonkey/seamonkey-icon.png | Bin 0 -> 12796 bytes .../source/seamonkey/seamonkey-mail-icon.png | Bin 0 -> 185 bytes .../source/seamonkey/seamonkey-mail.desktop | 8 + patches/source/seamonkey/seamonkey.SlackBuild | 289 + patches/source/seamonkey/seamonkey.desktop | 9 + patches/source/seamonkey/slack-desc | 19 + .../source/squashfs-tools/0001-kfreebsd.patch | 123 + .../0002-fix_phys_mem_calculation.patch | 159 + ...0003-CVE-2015-4645_and_CVE-2015-4646.patch | 76 + ...squashfs-add-support-for-LZMA-magics.patch | 102 + .../0006-uptream-fix-race.patch | 54 + .../0007-fix-2GB-limit-in-mksquashfs.patch | 27 + patches/source/squashfs-tools/slack-desc | 19 + .../squashfs-tools/squashfs-tools.SlackBuild | 122 + patches/source/stunnel/doinst.sh | 12 + .../source/stunnel/generate-stunnel-key.sh | 13 + patches/source/stunnel/slack-desc | 19 + patches/source/stunnel/stunnel.SlackBuild | 140 + patches/source/subversion/get-svn-book.sh | 9 + patches/source/subversion/slack-desc | 19 + .../source/subversion/subversion.SlackBuild | 174 + patches/source/sudo/doinst.sh | 14 + patches/source/sudo/slack-desc | 19 + patches/source/sudo/sudo.SlackBuild | 125 + patches/source/tcpdump/slack-desc | 19 + patches/source/tcpdump/tcpdump.SlackBuild | 104 + patches/source/wget/doinst.sh | 14 + patches/source/wget/slack-desc | 19 + patches/source/wget/wget.SlackBuild | 109 + ...d-key-reinstallation-in-FT-handshake.patch | 174 + ...lation-of-an-already-in-use-group-ke.patch | 250 + ...n-of-GTK-IGTK-reinstallation-of-WNM-.patch | 184 + ...event-installation-of-an-all-zero-TK.patch | 79 + ...TK-rekeying-to-generate-a-new-ANonce.patch | 64 + ...6-TDLS-Reject-TPK-TK-reconfiguration.patch | 132 + ...leep-Mode-Response-without-pending-r.patch | 43 + ...multiple-Reassociation-Response-fram.patch | 82 + ...et-number-reuse-with-replayed-messages.txt | 226 + .../source/wpa_supplicant/README.slackware | 55 + .../source/wpa_supplicant/config/dot.config | 37 + .../wpa_supplicant/config/wpa_gui.desktop | 7 + .../source/wpa_supplicant/config/wpa_gui.png | Bin 0 -> 5124 bytes .../wpa_supplicant/config/wpa_supplicant.conf | 2 + .../config/wpa_supplicant.logrotate | 6 + patches/source/wpa_supplicant/doinst.sh | 15 + .../wpa_supplicant/patches/assoc-timeout.diff | 16 + .../patches/dbus-service-file-args.diff | 20 + .../patches/flush-debug-output.diff | 50 + .../patches/quiet-scan-results-message.diff | 16 + patches/source/wpa_supplicant/slack-desc | 18 + .../wpa_supplicant/wpa_supplicant.SlackBuild | 181 + .../source/xfce4-weather-plugin/slack-desc | 19 + .../xfce4-weather-plugin.SlackBuild | 107 + .../xfce4-weather-plugin.url | 1 + patches/source/xorg-server/arch.use.flags | 7 + patches/source/xorg-server/build/xorg-server | 1 + .../source/xorg-server/configure/xorg-server | 53 + .../source/xorg-server/makepkg/xorg-server | 47 + patches/source/xorg-server/modularize | 265 + patches/source/xorg-server/noarch | 76 + patches/source/xorg-server/package-blacklist | 39 + .../xorg-server/patch/xorg-server.patch | 15 + .../xorg-server/x11.startwithblackscreen.diff | 14 + .../xorg-server.CVE-2017-10971.diff | 40 + .../xorg-server.CVE-2017-10972.diff | 36 + .../xorg-server.CVE-2017-12176.diff | 31 + .../xorg-server.CVE-2017-12177.diff | 41 + .../xorg-server.CVE-2017-12178.diff | 29 + .../xorg-server.CVE-2017-12179_p1.diff | 42 + .../xorg-server.CVE-2017-12179_p2.diff | 46 + ...org-server.CVE-2017-12180_12181_12182.diff | 601 + .../xorg-server.CVE-2017-12183.diff | 95 + ...rver.CVE-2017-12184_12185_12186_12187.diff | 139 + .../xorg-server.CVE-2017-13721.diff | 27 + .../xorg-server.CVE-2017-13723.diff | 116 + ...g-server.combo.mouse.keyboard.layout.patch | 49 + .../post-install/xorg-server.post-install | 66 + .../source/xorg-server/slack-desc/xorg-server | 19 + .../xorg-server/slack-desc/xorg-server-xephyr | 19 + .../xorg-server/slack-desc/xorg-server-xnest | 19 + .../xorg-server/slack-desc/xorg-server-xvfb | 19 + patches/source/xorg-server/x11.SlackBuild | 381 + .../source/xorg-server/xorg-server.SlackBuild | 2 + .../xscreensaver/dump.android.osx.sources.sh | 14 + patches/source/xscreensaver/setuid.c | 274 + patches/source/xscreensaver/slack-desc | 19 + .../xscreensaver-getimage-file-5.14 | 555 + .../xscreensaver/xscreensaver.SlackBuild | 141 + .../xscreensaver.electricsheep.diff | 20 + .../xscreensaver.no.expiration.date.diff | 29 + .../xscreensaver/xscreensaver.setuid.diff | 179 + recompress.sh | 2088 +- slackbook/html/TRADEMARKS.html | 80 - slackbook/html/archive-files-bzip2.html | 103 - slackbook/html/archive-files-tar.html | 232 - slackbook/html/archive-files-zip.html | 114 - slackbook/html/archive-files.html | 145 - .../html/basic-network-commands-dns.html | 181 - .../html/basic-network-commands-email.html | 241 - .../html/basic-network-commands-finger.html | 132 - .../html/basic-network-commands-ftp.html | 279 - .../html/basic-network-commands-ssh.html | 100 - .../html/basic-network-commands-talk.html | 184 - .../html/basic-network-commands-telnet.html | 173 - .../basic-network-commands-traceroute.html | 106 - .../html/basic-network-commands-web.html | 215 - slackbook/html/basic-network-commands.html | 142 - slackbook/html/basic-network-commands/elm.png | Bin 3421 -> 0 bytes .../html/basic-network-commands/links.png | Bin 5204 -> 0 bytes .../html/basic-network-commands/lynx.png | Bin 7544 -> 0 bytes .../html/basic-network-commands/mutt.png | Bin 2489 -> 0 bytes .../html/basic-network-commands/pine.png | Bin 4689 -> 0 bytes .../html/basic-network-commands/talk.png | Bin 491 -> 0 bytes .../html/basic-network-commands/ytalk.png | Bin 952 -> 0 bytes slackbook/html/book-preface.html | 404 - slackbook/html/book.html | 13511 --- slackbook/html/booting-dual.html | 341 - slackbook/html/booting-loadlin.html | 116 - slackbook/html/booting.html | 202 - .../html/booting/setup-lilo-expert-w.png | Bin 6986 -> 0 bytes slackbook/html/booting/setup-lilo-w.png | Bin 5824 -> 0 bytes slackbook/html/docbook.css | 162 - slackbook/html/emacs-basic-editing.html | 227 - slackbook/html/emacs-buffers.html | 112 - slackbook/html/emacs-modes.html | 141 - slackbook/html/emacs-saving-files.html | 136 - slackbook/html/emacs.html | 173 - slackbook/html/emacs/emacs.png | Bin 7842 -> 0 bytes .../html/essential-sysadmin-hardusers.html | 202 - .../html/essential-sysadmin-shutdown.html | 236 - slackbook/html/essential-sysadmin.html | 524 - slackbook/html/file-commands-copymove.html | 166 - slackbook/html/file-commands-creation.html | 143 - slackbook/html/file-commands-deletion.html | 189 - slackbook/html/file-commands-link.html | 105 - slackbook/html/file-commands-output.html | 147 - slackbook/html/file-commands-pagers.html | 144 - slackbook/html/file-commands.html | 275 - .../html/filesystem-structure-links.html | 105 - .../html/filesystem-structure-mounting.html | 184 - slackbook/html/filesystem-structure-nfs.html | 78 - .../filesystem-structure-permissions.html | 314 - slackbook/html/filesystem-structure.html | 168 - slackbook/html/glossary.html | 647 - slackbook/html/gpl.html | 452 - slackbook/html/help-online.html | 247 - slackbook/html/help.html | 292 - slackbook/html/imagelib/admon/note.png | Bin 338 -> 0 bytes slackbook/html/imagelib/admon/warning.png | Bin 1090 -> 0 bytes slackbook/html/index.html | 1013 - slackbook/html/installation-partitioning.html | 218 - slackbook/html/installation-requirements.html | 388 - slackbook/html/installation-setup.html | 387 - slackbook/html/installation.html | 176 - .../html/installation/setup-bootdisk-w.png | Bin 4010 -> 0 bytes slackbook/html/installation/setup-font-w.png | Bin 3856 -> 0 bytes .../installation/setup-hardware-clock-w.png | Bin 3916 -> 0 bytes slackbook/html/installation/setup-help-w.png | Bin 4715 -> 0 bytes .../html/installation/setup-install-w.png | Bin 7100 -> 0 bytes .../html/installation/setup-kernel-w.png | Bin 6442 -> 0 bytes .../html/installation/setup-keymap-w.png | Bin 4526 -> 0 bytes slackbook/html/installation/setup-lilo-w.png | Bin 5824 -> 0 bytes slackbook/html/installation/setup-modem-w.png | Bin 5356 -> 0 bytes slackbook/html/installation/setup-mouse-w.png | Bin 6516 -> 0 bytes .../html/installation/setup-program-w.png | Bin 5705 -> 0 bytes .../html/installation/setup-select-w.png | Bin 6817 -> 0 bytes .../html/installation/setup-source-w.png | Bin 3238 -> 0 bytes slackbook/html/installation/setup-swap-w.png | Bin 3066 -> 0 bytes .../html/installation/setup-target-w.png | Bin 3153 -> 0 bytes .../html/installation/setup-timezone-w.png | Bin 3593 -> 0 bytes .../html/installation/setup-xwmconfig-w.png | Bin 6767 -> 0 bytes slackbook/html/introduction-opensource.html | 126 - slackbook/html/introduction-slackware.html | 93 - slackbook/html/introduction.html | 122 - .../html/network-configuration-hardware.html | 173 - slackbook/html/network-configuration-nfs.html | 308 - slackbook/html/network-configuration-ppp.html | 166 - .../html/network-configuration-tcpip.html | 324 - .../html/network-configuration-wireless.html | 208 - slackbook/html/network-configuration.html | 146 - .../package-management-making-packages.html | 120 - ...e-management-making-tags-and-tagfiles.html | 136 - .../package-management-package-utilities.html | 330 - slackbook/html/package-management.html | 148 - .../package-management/pkgtool-view-w.png | Bin 5817 -> 0 bytes .../html/package-management/pkgtool-w.png | Bin 4784 -> 0 bytes .../html/process-control-foregrounding.html | 138 - slackbook/html/process-control-kill.html | 182 - slackbook/html/process-control-ps.html | 243 - slackbook/html/process-control-top.html | 168 - slackbook/html/process-control.html | 138 - slackbook/html/security-current.html | 138 - slackbook/html/security-host.html | 307 - slackbook/html/security.html | 218 - slackbook/html/shell-bash.html | 234 - slackbook/html/shell-command-line.html | 307 - slackbook/html/shell-vt.html | 137 - slackbook/html/shell.html | 166 - slackbook/html/slackware_logo.png | Bin 3675 -> 0 bytes .../html/system-configuration-kernel.html | 354 - slackbook/html/system-configuration.html | 589 - .../make-menuconfig-w.png | Bin 6421 -> 0 bytes slackbook/html/vi-configuration.html | 96 - slackbook/html/vi-keys.html | 279 - slackbook/html/vi-modes.html | 200 - slackbook/html/vi-opening-files.html | 109 - slackbook/html/vi-quitting-vi.html | 80 - slackbook/html/vi-saving-files.html | 103 - slackbook/html/vi.html | 199 - slackbook/html/vi/vim-splitedit.png | Bin 3515 -> 0 bytes slackbook/html/x-window-system-xdm.html | 202 - slackbook/html/x-window-system-xinitrc.html | 145 - slackbook/html/x-window-system-xorgsetup.html | 84 - slackbook/html/x-window-system-xwmconfig.html | 134 - slackbook/html/x-window-system.html | 210 - .../html/x-window-system/xorgconfig1-w.png | Bin 4003 -> 0 bytes .../html/x-window-system/xorgconfig2-w.png | Bin 6872 -> 0 bytes .../html/x-window-system/xorgconfig3-w.png | Bin 3069 -> 0 bytes .../html/x-window-system/xorgconfig4-w.png | Bin 5245 -> 0 bytes .../html/x-window-system/xwmconfig-w.png | Bin 6767 -> 0 bytes slackbook/html/zipslack-booting.html | 93 - slackbook/html/zipslack-getting.html | 110 - slackbook/html/zipslack.html | 128 - slackbook/slackbook-2.0.pdf | Bin 1863038 -> 0 bytes slackbook/slackbook-2.0.ps | 86611 ---------------- 974 files changed, 87686 insertions(+), 128045 deletions(-) delete mode 100644 READ_DVD.TXT delete mode 100644 isolinux/isolinux.boot create mode 100644 patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txt create mode 100644 patches/packages/bash-4.3.048-x86_64-1_slack14.2.txt create mode 100644 patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/bluez-5.47-x86_64-1_slack14.2.txt create mode 100644 patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txt create mode 100644 patches/packages/curl-7.60.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txt create mode 100644 patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txt create mode 100644 patches/packages/emacs-25.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/expat-2.2.2-x86_64-1_slack14.2.txt create mode 100644 patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txt create mode 100644 patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gd-2.2.5-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txt create mode 100644 patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txt create mode 100644 patches/packages/git-2.14.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txt create mode 100644 patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txt create mode 100644 patches/packages/glibc-2.23-x86_64-4_slack14.2.txt create mode 100644 patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txt create mode 100644 patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txt create mode 100644 patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txt create mode 100644 patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txt create mode 100644 patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txt create mode 100644 patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txt create mode 100644 patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txt create mode 100644 patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txt create mode 100644 patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txt create mode 100644 patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txt create mode 100644 patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txt create mode 100644 patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libidn-1.34-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txt create mode 100644 patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txt create mode 100644 patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txt create mode 100644 patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txt create mode 100644 patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txt create mode 100644 patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txt create mode 100644 patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txt create mode 100644 patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txt create mode 100644 patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txt create mode 100644 patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txt create mode 100644 patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txt create mode 100644 patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txt create mode 100644 patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txt create mode 100644 patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txt create mode 100644 patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txt create mode 100644 patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txt create mode 100644 patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txt create mode 100644 patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txt create mode 100644 patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txt create mode 100644 patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txt create mode 100644 patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txt create mode 100644 patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txt create mode 100644 patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txt create mode 100644 patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txt create mode 100644 patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txt create mode 100644 patches/packages/patch-2.7.6-x86_64-1_slack14.2.txt create mode 100644 patches/packages/php-5.6.36-x86_64-1_slack14.2.txt create mode 100644 patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txt create mode 100644 patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txt create mode 100644 patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txt create mode 100644 patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txt create mode 100644 patches/packages/python-2.7.15-x86_64-1_slack14.2.txt create mode 100644 patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txt create mode 100644 patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txt create mode 100644 patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txt create mode 100644 patches/packages/samba-4.4.16-x86_64-3_slack14.2.txt create mode 100644 patches/packages/scim-1.4.17-x86_64-1_slack14.2.txt create mode 100644 patches/packages/screen-4.4.0-x86_64-2_slack14.2.txt create mode 100644 patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txt create mode 100644 patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txt create mode 100644 patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txt create mode 100644 patches/packages/stunnel-5.35-x86_64-2_slack14.2.txt create mode 100644 patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txt create mode 100644 patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txt create mode 100644 patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txt create mode 100644 patches/packages/wget-1.19.5-x86_64-1_slack14.2.txt create mode 100644 patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txt create mode 100644 patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txt create mode 100644 patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txt create mode 100644 patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txt create mode 100644 patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txt create mode 100644 patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txt create mode 100644 patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txt create mode 100644 patches/source/NetworkManager/55NetworkManager create mode 100755 patches/source/NetworkManager/NetworkManager.SlackBuild create mode 100644 patches/source/NetworkManager/NetworkManager.conf create mode 100644 patches/source/NetworkManager/conf.d/00-dhcp-client.conf create mode 100644 patches/source/NetworkManager/conf.d/00-rc-manager.conf create mode 100644 patches/source/NetworkManager/doinst.sh create mode 100644 patches/source/NetworkManager/rc.networkmanager create mode 100644 patches/source/NetworkManager/slack-desc create mode 100644 patches/source/bash/bash-4.3-patches/bash43-001 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-002 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-003 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-004 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-005 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-006 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-007 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-008 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-009 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-010 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-011 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-012 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-013 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-014 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-015 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-016 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-017 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-018 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-019 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-020 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-021 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-022 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-023 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-024 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-025 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-026 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-027 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-028 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-029 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-030 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-031 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-032 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-033 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-034 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-035 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-036 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-037 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-038 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-039 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-040 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-041 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-042 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-043 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-044 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-045 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-046 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-047 create mode 100644 patches/source/bash/bash-4.3-patches/bash43-048 create mode 100755 patches/source/bash/bash.SlackBuild create mode 100644 patches/source/bash/doinst.sh create mode 100644 patches/source/bash/slack-desc create mode 100644 patches/source/bind/3link.sh create mode 100755 patches/source/bind/bind.SlackBuild create mode 100644 patches/source/bind/bind.libidn.patch create mode 100644 patches/source/bind/bind.so_bsdcompat.diff create mode 100644 patches/source/bind/caching-example/localhost.zone create mode 100644 patches/source/bind/caching-example/named.conf create mode 100644 patches/source/bind/caching-example/named.local create mode 100644 patches/source/bind/caching-example/named.root create mode 100644 patches/source/bind/doinst.sh create mode 100644 patches/source/bind/rc.bind create mode 100644 patches/source/bind/slack-desc create mode 100644 patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch create mode 100755 patches/source/bluez/bluez.SlackBuild create mode 100644 patches/source/bluez/btusb.conf create mode 100644 patches/source/bluez/config/defaultconfig create mode 100644 patches/source/bluez/config/rc.bluetooth create mode 100644 patches/source/bluez/config/uart.conf create mode 100644 patches/source/bluez/doinst.sh create mode 100644 patches/source/bluez/slack-desc create mode 100755 patches/source/ca-certificates/ca-certificates.SlackBuild create mode 100644 patches/source/ca-certificates/doinst.sh create mode 100644 patches/source/ca-certificates/patches/fixup_DESTDIR.diff create mode 100644 patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff create mode 100644 patches/source/ca-certificates/setup.11.cacerts create mode 100644 patches/source/ca-certificates/slack-desc create mode 100755 patches/source/curl/cacert-fetch.sh create mode 100644 patches/source/curl/cacert.pem create mode 100755 patches/source/curl/curl.SlackBuild create mode 100644 patches/source/curl/slack-desc create mode 100644 patches/source/dbus/dbus-1.10.x-allow_root_globally.diff create mode 100755 patches/source/dbus/dbus.SlackBuild create mode 100644 patches/source/dbus/dbus.expat222fix.diff create mode 100644 patches/source/dbus/doinst.sh create mode 100644 patches/source/dbus/rc.messagebus create mode 100644 patches/source/dbus/slack-desc create mode 100644 patches/source/dhcp/dhclient-script.PATH.diff create mode 100755 patches/source/dhcp/dhcp-remove-bind-tarball.sh create mode 100755 patches/source/dhcp/dhcp.SlackBuild create mode 100644 patches/source/dhcp/doinst.sh create mode 100644 patches/source/dhcp/slack-desc create mode 100755 patches/source/dnsmasq/dnsmasq.SlackBuild create mode 100644 patches/source/dnsmasq/dnsmasq.leasedir.diff create mode 100644 patches/source/dnsmasq/doinst.sh create mode 100644 patches/source/dnsmasq/rc.dnsmasq create mode 100644 patches/source/dnsmasq/slack-desc create mode 100644 patches/source/emacs/doinst.sh create mode 100755 patches/source/emacs/emacs.SlackBuild create mode 100644 patches/source/emacs/slack-desc create mode 100755 patches/source/expat/expat.SlackBuild create mode 100644 patches/source/expat/slack-desc create mode 100644 patches/source/freetype/freetype.CVE-2017-8287.diff create mode 100755 patches/source/freetype/freetype.SlackBuild create mode 100644 patches/source/freetype/freetype.illadvisederror.diff create mode 100644 patches/source/freetype/freetype.subpixel.rendering.diff create mode 100644 patches/source/freetype/slack-desc create mode 100644 patches/source/gcc/0001-i386-Move-struct-ix86_frame-to-machine_function.diff create mode 100644 patches/source/gcc/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff create mode 100644 patches/source/gcc/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff create mode 100644 patches/source/gcc/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff create mode 100644 patches/source/gcc/0005-x86-Add-mindirect-branch-doc.diff create mode 100644 patches/source/gcc/0005-x86-Add-mindirect-branch.diff create mode 100644 patches/source/gcc/0006-x86-Add-mfunction-return-doc.diff create mode 100644 patches/source/gcc/0006-x86-Add-mfunction-return.diff create mode 100644 patches/source/gcc/0007-x86-Add-mindirect-branch-register-doc.diff create mode 100644 patches/source/gcc/0007-x86-Add-mindirect-branch-register.diff create mode 100644 patches/source/gcc/0008-x86-Add-V-register-operand-modifier-doc.diff create mode 100644 patches/source/gcc/0008-x86-Add-V-register-operand-modifier.diff create mode 100644 patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff create mode 100644 patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff create mode 100644 patches/source/gcc/antlr-runtime-3.4.jar create mode 100644 patches/source/gcc/c89.sh create mode 100644 patches/source/gcc/c99.sh create mode 100644 patches/source/gcc/create_gcj_jvm.sh create mode 100644 patches/source/gcc/ecj-4.9.jar create mode 100644 patches/source/gcc/ecj.sh create mode 100644 patches/source/gcc/ecj.url create mode 100644 patches/source/gcc/fastjar-patches/1000-fastjar-0.97-segfault.patch create mode 100644 patches/source/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch create mode 100644 patches/source/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch create mode 100644 patches/source/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch create mode 100644 patches/source/gcc/fastjar-patches/1004-fastjar-man.patch create mode 100644 patches/source/gcc/gcc-no_fixincludes.diff create mode 100755 patches/source/gcc/gcc.SlackBuild create mode 100644 patches/source/gcc/slack-desc.gcc create mode 100644 patches/source/gcc/slack-desc.gcc-g++ create mode 100644 patches/source/gcc/slack-desc.gcc-gfortran create mode 100644 patches/source/gcc/slack-desc.gcc-gnat create mode 100644 patches/source/gcc/slack-desc.gcc-go create mode 100644 patches/source/gcc/slack-desc.gcc-java create mode 100644 patches/source/gcc/slack-desc.gcc-objc create mode 100755 patches/source/gd/gd.SlackBuild create mode 100644 patches/source/gd/slack-desc create mode 100644 patches/source/gegl/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch create mode 100644 patches/source/gegl/gegl-0.2.0-CVE-2012-4433.patch create mode 100644 patches/source/gegl/gegl-0.2.0-libopenraw.patch create mode 100644 patches/source/gegl/gegl-0.2.0-linker-flags.patch create mode 100644 patches/source/gegl/gegl-0.2.0-lua-5.2.patch create mode 100644 patches/source/gegl/gegl-0.2.0-remove-src-over-op.patch create mode 100755 patches/source/gegl/gegl.SlackBuild create mode 100644 patches/source/gegl/slack-desc create mode 100755 patches/source/getmail/getmail.SlackBuild create mode 100644 patches/source/getmail/slack-desc create mode 100755 patches/source/gimp/gimp.SlackBuild create mode 100644 patches/source/gimp/slack-desc create mode 100644 patches/source/git/git-2.14.1.tar.sign create mode 100755 patches/source/git/git.SlackBuild create mode 100644 patches/source/git/git.url create mode 100644 patches/source/git/slack-desc create mode 100755 patches/source/gkrellm/gkrellm.SlackBuild create mode 100644 patches/source/gkrellm/gkrellm.theme.defaults.diff create mode 100644 patches/source/gkrellm/slack-desc create mode 100644 patches/source/glib2/0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch create mode 100644 patches/source/glib2/doinst.sh create mode 100644 patches/source/glib2/glib.bug.758823.diff create mode 100755 patches/source/glib2/glib2.SlackBuild create mode 100644 patches/source/glib2/libglib2.csh create mode 100644 patches/source/glib2/libglib2.sh create mode 100644 patches/source/glib2/slack-desc create mode 100644 patches/source/glibc-zoneinfo/doinst.sh create mode 100755 patches/source/glibc-zoneinfo/glibc-zoneinfo.SlackBuild create mode 100644 patches/source/glibc-zoneinfo/slack-desc create mode 100755 patches/source/glibc-zoneinfo/timezone-scripts/output-updated-timeconfig.sh create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/parts/00 create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/parts/01 create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/parts/02 create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/parts/03 create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/parts/04 create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/parts/README create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/setup.timeconfig create mode 100644 patches/source/glibc-zoneinfo/timezone-scripts/timeconfig create mode 100644 patches/source/glibc/doinst.sh-glibc create mode 100644 patches/source/glibc/doinst.sh-glibc-solibs create mode 100644 patches/source/glibc/glibc-2.10-dns-no-gethostbyname4.diff create mode 100644 patches/source/glibc/glibc-c-utf8-locale.patch create mode 100755 patches/source/glibc/glibc-cvs-checkout.sh create mode 100644 patches/source/glibc/glibc.3776f38f.diff create mode 100644 patches/source/glibc/glibc.46703a39.diff create mode 100644 patches/source/glibc/glibc.6a824767.dont.assert.on.older.intel.cpus.diff create mode 100644 patches/source/glibc/glibc.CVE-2017-1000366.3c7cd212.diff create mode 100755 patches/source/glibc/glibc.SlackBuild create mode 100644 patches/source/glibc/glibc.adc7e06f.diff create mode 100644 patches/source/glibc/glibc.c69d4a0f.diff create mode 100644 patches/source/glibc/glibc.ldd.trace.through.dynamic.linker.diff create mode 100644 patches/source/glibc/glibc.locale.no-archive.diff create mode 100644 patches/source/glibc/glibc.make-3.82.diff create mode 100644 patches/source/glibc/glibc.revert.to.fix.build.breakages.diff create mode 100644 patches/source/glibc/glibc.ru_RU.CP1251.diff create mode 100644 patches/source/glibc/is_IS.diff create mode 100755 patches/source/glibc/profile.d/glibc.csh.new create mode 100755 patches/source/glibc/profile.d/glibc.sh.new create mode 100644 patches/source/glibc/slack-desc.glibc create mode 100644 patches/source/glibc/slack-desc.glibc-debug create mode 100644 patches/source/glibc/slack-desc.glibc-i18n create mode 100644 patches/source/glibc/slack-desc.glibc-profile create mode 100644 patches/source/glibc/slack-desc.glibc-solibs create mode 100644 patches/source/glibc/slack-desc.glibc-solibs-linuxthreads create mode 100755 patches/source/gnupg/gnupg.SlackBuild create mode 100644 patches/source/gnupg/slack-desc.gnupg create mode 100755 patches/source/gnutls/gnutls.SlackBuild create mode 100644 patches/source/gnutls/slack-desc create mode 100644 patches/source/gtk+2/doinst.sh create mode 100644 patches/source/gtk+2/fix_build_issues_on_tutorial_and_faq.diff create mode 100644 patches/source/gtk+2/gtk+-2.24.x.icon-compat.am.diff create mode 100644 patches/source/gtk+2/gtk+-2.24.x.icon-compat.diff create mode 100755 patches/source/gtk+2/gtk+2.SlackBuild create mode 100644 patches/source/gtk+2/gtk.gtk-faq.diff create mode 100644 patches/source/gtk+2/gtk.gtk-tut.diff create mode 100644 patches/source/gtk+2/gtk.xid.nowarningflood.diff create mode 100755 patches/source/gtk+2/profile.d/gtk+.csh create mode 100755 patches/source/gtk+2/profile.d/gtk+.sh create mode 100644 patches/source/gtk+2/slack-desc create mode 100644 patches/source/gtk+2/update-gtk-immodules create mode 100644 patches/source/gtk+2/update-gtk-immodules-2.0 create mode 100644 patches/source/httpd/apache-2.4.CVE-2017-9798.optionsbleed.patch create mode 100644 patches/source/httpd/doinst.sh create mode 100755 patches/source/httpd/httpd.SlackBuild create mode 100644 patches/source/httpd/httpd.runasapache.diff create mode 100644 patches/source/httpd/httpd.url create mode 100644 patches/source/httpd/logrotate.httpd create mode 100644 patches/source/httpd/rc.httpd create mode 100644 patches/source/httpd/slack-desc create mode 100644 patches/source/intltool/intltool-0.51.0-perl-5.22.patch create mode 100755 patches/source/intltool/intltool.SlackBuild create mode 100644 patches/source/intltool/no-guess-builddir.diff create mode 100644 patches/source/intltool/slack-desc create mode 100644 patches/source/irssi/doinst.sh create mode 100755 patches/source/irssi/irssi.SlackBuild create mode 100644 patches/source/irssi/slack-desc create mode 100755 patches/source/kdelibs/KDE.SlackBuild create mode 100644 patches/source/kdelibs/KDE.options create mode 100644 patches/source/kdelibs/build/kdelibs create mode 100644 patches/source/kdelibs/cmake/kdelibs create mode 100644 patches/source/kdelibs/doinst.sh/kdelibs create mode 100755 patches/source/kdelibs/kdelibs.SlackBuild create mode 100644 patches/source/kdelibs/modularize create mode 100644 patches/source/kdelibs/modules/kdelibs create mode 100644 patches/source/kdelibs/noarch create mode 100644 patches/source/kdelibs/package-blacklist create mode 100644 patches/source/kdelibs/patch/kdelibs.patch create mode 100644 patches/source/kdelibs/patch/kdelibs/coding-style-fixes.patch create mode 100644 patches/source/kdelibs/patch/kdelibs/kdelibs.docbook.patch create mode 100644 patches/source/kdelibs/patch/kdelibs/kdelibs.upnp_conditional.patch create mode 100644 patches/source/kdelibs/patch/kdelibs/return-application-icons-properly.patch create mode 100644 patches/source/kdelibs/patch/kdelibs/return-not-break.-copy-paste-error.patch create mode 100644 patches/source/kdelibs/post-install/kdelibs.post-install create mode 100644 patches/source/kdelibs/slack-desc/kdelibs create mode 100644 patches/source/libX11/arch.use.flags create mode 100644 patches/source/libX11/build/libX11 create mode 100644 patches/source/libX11/configure/libX11 create mode 100755 patches/source/libX11/libX11.SlackBuild create mode 100644 patches/source/libX11/modularize create mode 100644 patches/source/libX11/noarch create mode 100644 patches/source/libX11/package-blacklist create mode 100644 patches/source/libX11/post-install/libX11.post-install create mode 100644 patches/source/libX11/slack-desc/libX11 create mode 100755 patches/source/libX11/x11.SlackBuild create mode 100644 patches/source/libXcursor/arch.use.flags create mode 100755 patches/source/libXcursor/build/increment.sh create mode 100644 patches/source/libXcursor/build/libXcursor create mode 100644 patches/source/libXcursor/configure/configure create mode 100755 patches/source/libXcursor/libXcursor.SlackBuild create mode 100644 patches/source/libXcursor/modularize create mode 100644 patches/source/libXcursor/noarch create mode 100644 patches/source/libXcursor/package-blacklist create mode 100644 patches/source/libXcursor/slack-desc/libXcursor create mode 100755 patches/source/libXcursor/x11-build-script.sh create mode 100644 patches/source/libXfixes/arch.use.flags create mode 100644 patches/source/libXfixes/build/libXfixes create mode 100644 patches/source/libXfixes/configure/configure create mode 100755 patches/source/libXfixes/libXfixes.SlackBuild create mode 100644 patches/source/libXfixes/modularize create mode 100644 patches/source/libXfixes/noarch create mode 100644 patches/source/libXfixes/package-blacklist create mode 100644 patches/source/libXfixes/slack-desc/libXfixes create mode 100755 patches/source/libXfixes/x11.SlackBuild create mode 100644 patches/source/libXfont/arch.use.flags create mode 100755 patches/source/libXfont/build/increment.sh create mode 100644 patches/source/libXfont/build/libXfont create mode 100644 patches/source/libXfont/configure/configure create mode 100755 patches/source/libXfont/libXfont.SlackBuild create mode 100644 patches/source/libXfont/modularize create mode 100644 patches/source/libXfont/noarch create mode 100644 patches/source/libXfont/package-blacklist create mode 100644 patches/source/libXfont/patch/libXfont.patch create mode 100644 patches/source/libXfont/patch/libXfont/libXfont.CVE-2017-16611.diff create mode 100644 patches/source/libXfont/slack-desc/libXfont create mode 100755 patches/source/libXfont/x11-build-script.sh create mode 100644 patches/source/libXi/arch.use.flags create mode 100644 patches/source/libXi/build/libXi create mode 100644 patches/source/libXi/configure/configure create mode 100755 patches/source/libXi/libXi.SlackBuild create mode 100644 patches/source/libXi/modularize create mode 100644 patches/source/libXi/noarch create mode 100644 patches/source/libXi/package-blacklist create mode 100644 patches/source/libXi/slack-desc/libXi create mode 100644 patches/source/libXi/slack-desc/libXinerama create mode 100755 patches/source/libXi/x11.SlackBuild create mode 100644 patches/source/libXrandr/arch.use.flags create mode 100644 patches/source/libXrandr/build/libXrandr create mode 100644 patches/source/libXrandr/configure/configure create mode 100755 patches/source/libXrandr/libXrandr.SlackBuild create mode 100644 patches/source/libXrandr/modularize create mode 100644 patches/source/libXrandr/noarch create mode 100644 patches/source/libXrandr/package-blacklist create mode 100644 patches/source/libXrandr/slack-desc/libXrandr create mode 100755 patches/source/libXrandr/x11.SlackBuild create mode 100644 patches/source/libXrender/arch.use.flags create mode 100644 patches/source/libXrender/build/libXrender create mode 100644 patches/source/libXrender/configure/configure create mode 100755 patches/source/libXrender/libXrender.SlackBuild create mode 100644 patches/source/libXrender/modularize create mode 100644 patches/source/libXrender/noarch create mode 100644 patches/source/libXrender/package-blacklist create mode 100644 patches/source/libXrender/slack-desc/libXrender create mode 100755 patches/source/libXrender/x11.SlackBuild create mode 100644 patches/source/libXres/arch.use.flags create mode 100644 patches/source/libXres/build/libXres create mode 100644 patches/source/libXres/configure/configure create mode 100755 patches/source/libXres/libXres.SlackBuild create mode 100644 patches/source/libXres/modularize create mode 100644 patches/source/libXres/noarch create mode 100644 patches/source/libXres/package-blacklist create mode 100644 patches/source/libXres/slack-desc/libXres create mode 100755 patches/source/libXres/x11.SlackBuild create mode 100644 patches/source/libXtst/arch.use.flags create mode 100644 patches/source/libXtst/build/libXtst create mode 100644 patches/source/libXtst/configure/configure create mode 100755 patches/source/libXtst/libXtst.SlackBuild create mode 100644 patches/source/libXtst/modularize create mode 100644 patches/source/libXtst/noarch create mode 100644 patches/source/libXtst/package-blacklist create mode 100644 patches/source/libXtst/slack-desc/libXtst create mode 100755 patches/source/libXtst/x11.SlackBuild create mode 100644 patches/source/libXv/arch.use.flags create mode 100644 patches/source/libXv/build/libXv create mode 100644 patches/source/libXv/configure/configure create mode 100755 patches/source/libXv/libXv.SlackBuild create mode 100644 patches/source/libXv/modularize create mode 100644 patches/source/libXv/noarch create mode 100644 patches/source/libXv/package-blacklist create mode 100644 patches/source/libXv/slack-desc/libXv create mode 100644 patches/source/libXv/slack-desc/libXvMC create mode 100755 patches/source/libXv/x11.SlackBuild create mode 100644 patches/source/libXvMC/arch.use.flags create mode 100644 patches/source/libXvMC/build/libXvMC create mode 100644 patches/source/libXvMC/configure/configure create mode 100755 patches/source/libXvMC/libXvMC.SlackBuild create mode 100644 patches/source/libXvMC/modularize create mode 100644 patches/source/libXvMC/noarch create mode 100644 patches/source/libXvMC/package-blacklist create mode 100644 patches/source/libXvMC/slack-desc/libXvMC create mode 100755 patches/source/libXvMC/x11.SlackBuild create mode 100644 patches/source/libcgroup/doinst.sh create mode 100755 patches/source/libcgroup/libcgroup.SlackBuild create mode 100644 patches/source/libcgroup/libcgroup.conf.diff create mode 100644 patches/source/libcgroup/libcgroup.init.diff create mode 100644 patches/source/libcgroup/slack-desc create mode 100755 patches/source/libgcrypt/libgcrypt.SlackBuild create mode 100644 patches/source/libgcrypt/slack-desc create mode 100755 patches/source/libidn/libidn.SlackBuild create mode 100644 patches/source/libidn/slack-desc create mode 100755 patches/source/libpcap/libpcap.SlackBuild create mode 100644 patches/source/libpcap/slack-desc create mode 100755 patches/source/libplist/libplist.SlackBuild create mode 100644 patches/source/libplist/slack-desc create mode 100755 patches/source/libpng/libpng.SlackBuild create mode 100644 patches/source/libpng/libpng.url create mode 100644 patches/source/libpng/slack-desc create mode 100644 patches/source/libsoup/libsoup.CVE-2017-2885.diff create mode 100755 patches/source/libsoup/libsoup.SlackBuild create mode 100644 patches/source/libsoup/slack-desc create mode 100644 patches/source/libtiff/libtiff-am-version.patch create mode 100755 patches/source/libtiff/libtiff.SlackBuild create mode 100644 patches/source/libtiff/slack-desc create mode 100644 patches/source/libtirpc/doinst.sh create mode 100755 patches/source/libtirpc/libtirpc.SlackBuild create mode 100644 patches/source/libtirpc/slack-desc create mode 100644 patches/source/libtool/doinst.sh create mode 100755 patches/source/libtool/libtool.SlackBuild create mode 100644 patches/source/libtool/libtool.no.moved.warning.diff create mode 100644 patches/source/libtool/slack-desc create mode 100755 patches/source/libvorbis/libvorbis.SlackBuild create mode 100644 patches/source/libvorbis/slack-desc create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10167.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10168.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-fallbackfont.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-pixbufloaderdir.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-reducesymbols.patch create mode 100644 patches/source/libwmf/libwmf-0.2.8.4-useafterfree.patch create mode 100755 patches/source/libwmf/libwmf.SlackBuild create mode 100644 patches/source/libwmf/libwmf.png14.diff create mode 100644 patches/source/libwmf/slack-desc create mode 100755 patches/source/libxml2/libxml2.SlackBuild create mode 100644 patches/source/libxml2/libxml2.do-not-check-crc.diff create mode 100644 patches/source/libxml2/slack-desc create mode 100644 patches/source/libzip/libzip.CVE-2017-14107.diff create mode 100755 patches/source/libzip/libzip.SlackBuild create mode 100644 patches/source/libzip/slack-desc create mode 100755 patches/source/loudmouth/loudmouth.SlackBuild create mode 100644 patches/source/loudmouth/slack-desc create mode 100644 patches/source/lynx/doinst.sh create mode 100755 patches/source/lynx/lynx.SlackBuild create mode 100644 patches/source/lynx/lynx.cfg.diff create mode 100644 patches/source/lynx/slack-desc create mode 100644 patches/source/mariadb/doinst.sh create mode 100755 patches/source/mariadb/mariadb.SlackBuild create mode 100644 patches/source/mariadb/mirror.url create mode 100644 patches/source/mariadb/rc.mysqld create mode 100644 patches/source/mariadb/slack-desc create mode 100755 patches/source/mcabber/mcabber.SlackBuild create mode 100644 patches/source/mcabber/slack-desc create mode 100644 patches/source/mercurial/doinst.sh create mode 100755 patches/source/mercurial/mercurial.SlackBuild create mode 100644 patches/source/mercurial/slack-desc create mode 100644 patches/source/minicom/config.sub-x86_64.diff create mode 100644 patches/source/minicom/doinst.sh create mode 100644 patches/source/minicom/lrzsz_0.12.21-5.diff create mode 100755 patches/source/minicom/minicom.SlackBuild create mode 100644 patches/source/minicom/minicom.users create mode 100644 patches/source/minicom/slack-desc create mode 100644 patches/source/mkinitrd/README.initrd create mode 120000 patches/source/mkinitrd/busybox-dot-config create mode 100644 patches/source/mkinitrd/busybox-dot-config.1.20.x create mode 100644 patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-kernel_ver.patch create mode 100644 patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-ntpd.patch create mode 100644 patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-pkg-config-selinux.patch create mode 100644 patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-sys-resource.patch create mode 100755 patches/source/mkinitrd/init create mode 100644 patches/source/mkinitrd/mkinitrd create mode 100644 patches/source/mkinitrd/mkinitrd.8 create mode 100755 patches/source/mkinitrd/mkinitrd.SlackBuild create mode 100644 patches/source/mkinitrd/mkinitrd.conf.5 create mode 100644 patches/source/mkinitrd/mkinitrd.conf.sample create mode 100644 patches/source/mkinitrd/mkinitrd_command_generator.8 create mode 100644 patches/source/mkinitrd/mkinitrd_command_generator.sh create mode 100644 patches/source/mkinitrd/slack-desc create mode 100644 patches/source/mozilla-firefox/autoconf/autoconf-2.13-consolidated_fixes-1.patch create mode 100755 patches/source/mozilla-firefox/autoconf/autoconf.build create mode 100644 patches/source/mozilla-firefox/build-with-clang.diff create mode 100644 patches/source/mozilla-firefox/firefox.moz_plugin_path.diff create mode 100755 patches/source/mozilla-firefox/gold/gold create mode 120000 patches/source/mozilla-firefox/gold/ld create mode 100644 patches/source/mozilla-firefox/mimeTypes.rdf create mode 100644 patches/source/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff create mode 100755 patches/source/mozilla-firefox/mozilla-firefox.SlackBuild create mode 100644 patches/source/mozilla-firefox/mozilla-firefox.desktop create mode 100644 patches/source/mozilla-firefox/slack-desc create mode 100644 patches/source/mozilla-nss/MPL-1.1.txt create mode 100644 patches/source/mozilla-nss/faq.html create mode 100644 patches/source/mozilla-nss/gpl-2.0.txt create mode 100644 patches/source/mozilla-nss/lgpl-2.1.txt create mode 100755 patches/source/mozilla-nss/mozilla-nss.SlackBuild create mode 100644 patches/source/mozilla-nss/nss-config.in create mode 100644 patches/source/mozilla-nss/slack-desc create mode 100644 patches/source/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch create mode 100755 patches/source/mozilla-thunderbird/autoconf/autoconf.build create mode 100755 patches/source/mozilla-thunderbird/gold/gold create mode 120000 patches/source/mozilla-thunderbird/gold/ld create mode 100644 patches/source/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch create mode 100755 patches/source/mozilla-thunderbird/mozilla-thunderbird.SlackBuild create mode 100644 patches/source/mozilla-thunderbird/mozilla-thunderbird.desktop create mode 100644 patches/source/mozilla-thunderbird/slack-desc create mode 100644 patches/source/mozilla-thunderbird/thunderbird.png create mode 100755 patches/source/nasm/nasm.SlackBuild create mode 100644 patches/source/nasm/slack-desc create mode 100644 patches/source/network-manager-applet/doinst.sh create mode 100755 patches/source/network-manager-applet/network-manager-applet.SlackBuild create mode 100644 patches/source/network-manager-applet/slack-desc create mode 100644 patches/source/ntp/doinst.sh create mode 100755 patches/source/ntp/ntp.SlackBuild create mode 100644 patches/source/ntp/ntp.conf create mode 100644 patches/source/ntp/ntp.keys create mode 100644 patches/source/ntp/ntp.nano.diff create mode 100644 patches/source/ntp/rc.ntpd create mode 100644 patches/source/ntp/slack-desc create mode 100644 patches/source/openexr/openexr.CVE-2017-9110-to-9116.patch create mode 100755 patches/source/openexr/openexr.SlackBuild create mode 100644 patches/source/openexr/slack-desc create mode 100755 patches/source/openjpeg/openjpeg.SlackBuild create mode 100644 patches/source/openjpeg/openjpeg2_remove-thirdparty.patch create mode 100644 patches/source/openjpeg/slack-desc create mode 100644 patches/source/openssh/doinst.sh create mode 100644 patches/source/openssh/openssh-7.4p1-libwrap.diff create mode 100644 patches/source/openssh/openssh.CVE-2017-15906.patch create mode 100755 patches/source/openssh/openssh.SlackBuild create mode 100644 patches/source/openssh/rc.sshd create mode 100644 patches/source/openssh/slack-desc create mode 100644 patches/source/openssl/certwatch create mode 100644 patches/source/openssl/doinst.sh-openssl create mode 100644 patches/source/openssl/doinst.sh-openssl-solibs create mode 100755 patches/source/openssl/openssl.SlackBuild create mode 100644 patches/source/openssl/slack-desc.openssl create mode 100644 patches/source/openssl/slack-desc.openssl-solibs create mode 100644 patches/source/openvpn/README create mode 100644 patches/source/openvpn/doinst.sh create mode 100755 patches/source/openvpn/openvpn.SlackBuild create mode 100644 patches/source/openvpn/openvpn.url create mode 100644 patches/source/openvpn/rc.openvpn create mode 100644 patches/source/openvpn/slack-desc create mode 100644 patches/source/openvpn/slackware.conf create mode 100644 patches/source/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch create mode 100755 patches/source/patch/patch.SlackBuild create mode 100644 patches/source/patch/slack-desc create mode 100644 patches/source/php/doinst.sh create mode 100755 patches/source/php/fetch-php.sh create mode 100644 patches/source/php/mod_php.conf.example create mode 100644 patches/source/php/php-fpm.conf.diff create mode 100755 patches/source/php/php.SlackBuild create mode 100644 patches/source/php/php.ini-development.diff create mode 100644 patches/source/php/slack-desc create mode 100644 patches/source/pidgin/doinst.sh create mode 100644 patches/source/pidgin/fix-gmain_h-compile-error.diff create mode 100755 patches/source/pidgin/pidgin.SlackBuild create mode 100644 patches/source/pidgin/slack-desc create mode 100644 patches/source/pkg-config/doinst.sh create mode 100755 patches/source/pkg-config/pkg-config.SlackBuild create mode 100755 patches/source/pkg-config/scripts/pkgconfig.csh create mode 100755 patches/source/pkg-config/scripts/pkgconfig.sh create mode 100644 patches/source/pkg-config/slack-desc create mode 100755 patches/source/procps-ng/procps-ng.SlackBuild create mode 100644 patches/source/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff create mode 100644 patches/source/procps-ng/slack-desc create mode 100644 patches/source/proftpd/doinst.sh create mode 100644 patches/source/proftpd/etc/ftpusers create mode 100644 patches/source/proftpd/etc/proftpd.conf create mode 100755 patches/source/proftpd/proftpd.SlackBuild create mode 100644 patches/source/proftpd/slack-desc create mode 100755 patches/source/python/python.SlackBuild create mode 100644 patches/source/python/python.no-static-library.diff create mode 100644 patches/source/python/python.readline.set_pre_input_hook.diff create mode 100644 patches/source/python/python.x86_64.diff create mode 100644 patches/source/python/slack-desc create mode 100644 patches/source/rpcbind/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch create mode 100644 patches/source/rpcbind/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch create mode 100644 patches/source/rpcbind/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch create mode 100644 patches/source/rpcbind/0004-rpcbind-fix-building-without-enable-debug.patch create mode 100644 patches/source/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch create mode 100644 patches/source/rpcbind/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch create mode 100644 patches/source/rpcbind/01.rpcbind-manpage-statefile-explanation.patch create mode 100644 patches/source/rpcbind/doinst.sh create mode 100644 patches/source/rpcbind/rc.rpc create mode 100755 patches/source/rpcbind/rpcbind.SlackBuild create mode 100644 patches/source/rpcbind/rpcbind.lwrap.needs.lnsl.diff create mode 100644 patches/source/rpcbind/slack-desc create mode 100755 patches/source/rsync/rsync.SlackBuild create mode 100644 patches/source/rsync/slack-desc create mode 100755 patches/source/ruby/ruby.SlackBuild create mode 100644 patches/source/ruby/slack-desc create mode 100644 patches/source/rxvt/rxvt-integer-overflow-fix.patch create mode 100755 patches/source/rxvt/rxvt.SlackBuild create mode 100644 patches/source/rxvt/rxvt.utempter.diff create mode 100644 patches/source/rxvt/slack-desc create mode 100644 patches/source/samba/doinst.sh create mode 100644 patches/source/samba/pytalloc-util.pc create mode 100644 patches/source/samba/rc.samba create mode 100644 patches/source/samba/samba-4.4.16-CVE-2018-1057.patch create mode 100644 patches/source/samba/samba-4.5.14-security-2017-11-21.patch create mode 100755 patches/source/samba/samba.SlackBuild create mode 100644 patches/source/samba/samba.install.talloc.tevent.tdb.diff create mode 100644 patches/source/samba/samba.url create mode 100644 patches/source/samba/slack-desc create mode 100644 patches/source/samba/smb.conf.default create mode 100644 patches/source/samba/smb.conf.default.orig create mode 100644 patches/source/samba/smb.conf.diff create mode 100644 patches/source/samba/talloc.pc create mode 100644 patches/source/scim/scim-setup.desktop create mode 100755 patches/source/scim/scim.SlackBuild create mode 100644 patches/source/scim/scim.desktop create mode 100644 patches/source/scim/slack-desc create mode 100644 patches/source/screen/26source_encoding.patch create mode 100644 patches/source/screen/45suppress_remap.patch create mode 100644 patches/source/screen/52fix_screen_utf8_nfd.patch create mode 100644 patches/source/screen/58-show-encoding-hardstatus.patch create mode 100644 patches/source/screen/60-revert-screenrc-change.diff create mode 100755 patches/source/screen/screen.SlackBuild create mode 100644 patches/source/screen/screen.no_libelf.diff create mode 100644 patches/source/screen/slack-desc create mode 100644 patches/source/sdl/SDL_mixer.usrlocal.diff create mode 100644 patches/source/sdl/SDL_ttf.shaded.text.diff create mode 100644 patches/source/sdl/libsdl-1.2.15-resizing.patch create mode 100644 patches/source/sdl/sdl-1.2.14-fix-mouse-clicking.patch create mode 100755 patches/source/sdl/sdl.SlackBuild create mode 100644 patches/source/sdl/slack-desc create mode 100644 patches/source/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch create mode 100755 patches/source/seamonkey/autoconf/autoconf.build create mode 100644 patches/source/seamonkey/doinst.sh create mode 100755 patches/source/seamonkey/gold/gold create mode 120000 patches/source/seamonkey/gold/ld create mode 100644 patches/source/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc create mode 100644 patches/source/seamonkey/pkgconfig/seamonkey-libxul.pc create mode 100644 patches/source/seamonkey/pkgconfig/seamonkey-nspr.pc create mode 100644 patches/source/seamonkey/pkgconfig/seamonkey-nss.pc create mode 100644 patches/source/seamonkey/pkgconfig/seamonkey-plugin.pc create mode 100644 patches/source/seamonkey/pkgconfig/seamonkey-xpcom.pc create mode 100644 patches/source/seamonkey/seamonkey-icon.png create mode 100644 patches/source/seamonkey/seamonkey-mail-icon.png create mode 100644 patches/source/seamonkey/seamonkey-mail.desktop create mode 100755 patches/source/seamonkey/seamonkey.SlackBuild create mode 100644 patches/source/seamonkey/seamonkey.desktop create mode 100644 patches/source/seamonkey/slack-desc create mode 100644 patches/source/squashfs-tools/0001-kfreebsd.patch create mode 100644 patches/source/squashfs-tools/0002-fix_phys_mem_calculation.patch create mode 100644 patches/source/squashfs-tools/0003-CVE-2015-4645_and_CVE-2015-4646.patch create mode 100644 patches/source/squashfs-tools/0004-unsquashfs-add-support-for-LZMA-magics.patch create mode 100644 patches/source/squashfs-tools/0006-uptream-fix-race.patch create mode 100644 patches/source/squashfs-tools/0007-fix-2GB-limit-in-mksquashfs.patch create mode 100644 patches/source/squashfs-tools/slack-desc create mode 100755 patches/source/squashfs-tools/squashfs-tools.SlackBuild create mode 100644 patches/source/stunnel/doinst.sh create mode 100644 patches/source/stunnel/generate-stunnel-key.sh create mode 100644 patches/source/stunnel/slack-desc create mode 100755 patches/source/stunnel/stunnel.SlackBuild create mode 100755 patches/source/subversion/get-svn-book.sh create mode 100644 patches/source/subversion/slack-desc create mode 100755 patches/source/subversion/subversion.SlackBuild create mode 100644 patches/source/sudo/doinst.sh create mode 100644 patches/source/sudo/slack-desc create mode 100755 patches/source/sudo/sudo.SlackBuild create mode 100644 patches/source/tcpdump/slack-desc create mode 100755 patches/source/tcpdump/tcpdump.SlackBuild create mode 100644 patches/source/wget/doinst.sh create mode 100644 patches/source/wget/slack-desc create mode 100755 patches/source/wget/wget.SlackBuild create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch create mode 100644 patches/source/wpa_supplicant/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch create mode 100644 patches/source/wpa_supplicant/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt create mode 100644 patches/source/wpa_supplicant/README.slackware create mode 100644 patches/source/wpa_supplicant/config/dot.config create mode 100644 patches/source/wpa_supplicant/config/wpa_gui.desktop create mode 100644 patches/source/wpa_supplicant/config/wpa_gui.png create mode 100644 patches/source/wpa_supplicant/config/wpa_supplicant.conf create mode 100644 patches/source/wpa_supplicant/config/wpa_supplicant.logrotate create mode 100644 patches/source/wpa_supplicant/doinst.sh create mode 100644 patches/source/wpa_supplicant/patches/assoc-timeout.diff create mode 100644 patches/source/wpa_supplicant/patches/dbus-service-file-args.diff create mode 100644 patches/source/wpa_supplicant/patches/flush-debug-output.diff create mode 100644 patches/source/wpa_supplicant/patches/quiet-scan-results-message.diff create mode 100644 patches/source/wpa_supplicant/slack-desc create mode 100755 patches/source/wpa_supplicant/wpa_supplicant.SlackBuild create mode 100644 patches/source/xfce4-weather-plugin/slack-desc create mode 100755 patches/source/xfce4-weather-plugin/xfce4-weather-plugin.SlackBuild create mode 100644 patches/source/xfce4-weather-plugin/xfce4-weather-plugin.url create mode 100644 patches/source/xorg-server/arch.use.flags create mode 100644 patches/source/xorg-server/build/xorg-server create mode 100644 patches/source/xorg-server/configure/xorg-server create mode 100644 patches/source/xorg-server/makepkg/xorg-server create mode 100644 patches/source/xorg-server/modularize create mode 100644 patches/source/xorg-server/noarch create mode 100644 patches/source/xorg-server/package-blacklist create mode 100644 patches/source/xorg-server/patch/xorg-server.patch create mode 100644 patches/source/xorg-server/patch/xorg-server/x11.startwithblackscreen.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10971.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10972.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12176.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12177.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12178.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12183.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13721.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13723.diff create mode 100644 patches/source/xorg-server/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch create mode 100644 patches/source/xorg-server/post-install/xorg-server.post-install create mode 100644 patches/source/xorg-server/slack-desc/xorg-server create mode 100644 patches/source/xorg-server/slack-desc/xorg-server-xephyr create mode 100644 patches/source/xorg-server/slack-desc/xorg-server-xnest create mode 100644 patches/source/xorg-server/slack-desc/xorg-server-xvfb create mode 100755 patches/source/xorg-server/x11.SlackBuild create mode 100755 patches/source/xorg-server/xorg-server.SlackBuild create mode 100755 patches/source/xscreensaver/dump.android.osx.sources.sh create mode 100644 patches/source/xscreensaver/setuid.c create mode 100644 patches/source/xscreensaver/slack-desc create mode 100644 patches/source/xscreensaver/xscreensaver-getimage-file-5.14 create mode 100755 patches/source/xscreensaver/xscreensaver.SlackBuild create mode 100644 patches/source/xscreensaver/xscreensaver.electricsheep.diff create mode 100644 patches/source/xscreensaver/xscreensaver.no.expiration.date.diff create mode 100644 patches/source/xscreensaver/xscreensaver.setuid.diff delete mode 100644 slackbook/html/TRADEMARKS.html delete mode 100644 slackbook/html/archive-files-bzip2.html delete mode 100644 slackbook/html/archive-files-tar.html delete mode 100644 slackbook/html/archive-files-zip.html delete mode 100644 slackbook/html/archive-files.html delete mode 100644 slackbook/html/basic-network-commands-dns.html delete mode 100644 slackbook/html/basic-network-commands-email.html delete mode 100644 slackbook/html/basic-network-commands-finger.html delete mode 100644 slackbook/html/basic-network-commands-ftp.html delete mode 100644 slackbook/html/basic-network-commands-ssh.html delete mode 100644 slackbook/html/basic-network-commands-talk.html delete mode 100644 slackbook/html/basic-network-commands-telnet.html delete mode 100644 slackbook/html/basic-network-commands-traceroute.html delete mode 100644 slackbook/html/basic-network-commands-web.html delete mode 100644 slackbook/html/basic-network-commands.html delete mode 100644 slackbook/html/basic-network-commands/elm.png delete mode 100644 slackbook/html/basic-network-commands/links.png delete mode 100644 slackbook/html/basic-network-commands/lynx.png delete mode 100644 slackbook/html/basic-network-commands/mutt.png delete mode 100644 slackbook/html/basic-network-commands/pine.png delete mode 100644 slackbook/html/basic-network-commands/talk.png delete mode 100644 slackbook/html/basic-network-commands/ytalk.png delete mode 100644 slackbook/html/book-preface.html delete mode 100644 slackbook/html/book.html delete mode 100644 slackbook/html/booting-dual.html delete mode 100644 slackbook/html/booting-loadlin.html delete mode 100644 slackbook/html/booting.html delete mode 100644 slackbook/html/booting/setup-lilo-expert-w.png delete mode 100644 slackbook/html/booting/setup-lilo-w.png delete mode 100644 slackbook/html/docbook.css delete mode 100644 slackbook/html/emacs-basic-editing.html delete mode 100644 slackbook/html/emacs-buffers.html delete mode 100644 slackbook/html/emacs-modes.html delete mode 100644 slackbook/html/emacs-saving-files.html delete mode 100644 slackbook/html/emacs.html delete mode 100644 slackbook/html/emacs/emacs.png delete mode 100644 slackbook/html/essential-sysadmin-hardusers.html delete mode 100644 slackbook/html/essential-sysadmin-shutdown.html delete mode 100644 slackbook/html/essential-sysadmin.html delete mode 100644 slackbook/html/file-commands-copymove.html delete mode 100644 slackbook/html/file-commands-creation.html delete mode 100644 slackbook/html/file-commands-deletion.html delete mode 100644 slackbook/html/file-commands-link.html delete mode 100644 slackbook/html/file-commands-output.html delete mode 100644 slackbook/html/file-commands-pagers.html delete mode 100644 slackbook/html/file-commands.html delete mode 100644 slackbook/html/filesystem-structure-links.html delete mode 100644 slackbook/html/filesystem-structure-mounting.html delete mode 100644 slackbook/html/filesystem-structure-nfs.html delete mode 100644 slackbook/html/filesystem-structure-permissions.html delete mode 100644 slackbook/html/filesystem-structure.html delete mode 100644 slackbook/html/glossary.html delete mode 100644 slackbook/html/gpl.html delete mode 100644 slackbook/html/help-online.html delete mode 100644 slackbook/html/help.html delete mode 100644 slackbook/html/imagelib/admon/note.png delete mode 100644 slackbook/html/imagelib/admon/warning.png delete mode 100644 slackbook/html/index.html delete mode 100644 slackbook/html/installation-partitioning.html delete mode 100644 slackbook/html/installation-requirements.html delete mode 100644 slackbook/html/installation-setup.html delete mode 100644 slackbook/html/installation.html delete mode 100644 slackbook/html/installation/setup-bootdisk-w.png delete mode 100644 slackbook/html/installation/setup-font-w.png delete mode 100644 slackbook/html/installation/setup-hardware-clock-w.png delete mode 100644 slackbook/html/installation/setup-help-w.png delete mode 100644 slackbook/html/installation/setup-install-w.png delete mode 100644 slackbook/html/installation/setup-kernel-w.png delete mode 100644 slackbook/html/installation/setup-keymap-w.png delete mode 100644 slackbook/html/installation/setup-lilo-w.png delete mode 100644 slackbook/html/installation/setup-modem-w.png delete mode 100644 slackbook/html/installation/setup-mouse-w.png delete mode 100644 slackbook/html/installation/setup-program-w.png delete mode 100644 slackbook/html/installation/setup-select-w.png delete mode 100644 slackbook/html/installation/setup-source-w.png delete mode 100644 slackbook/html/installation/setup-swap-w.png delete mode 100644 slackbook/html/installation/setup-target-w.png delete mode 100644 slackbook/html/installation/setup-timezone-w.png delete mode 100644 slackbook/html/installation/setup-xwmconfig-w.png delete mode 100644 slackbook/html/introduction-opensource.html delete mode 100644 slackbook/html/introduction-slackware.html delete mode 100644 slackbook/html/introduction.html delete mode 100644 slackbook/html/network-configuration-hardware.html delete mode 100644 slackbook/html/network-configuration-nfs.html delete mode 100644 slackbook/html/network-configuration-ppp.html delete mode 100644 slackbook/html/network-configuration-tcpip.html delete mode 100644 slackbook/html/network-configuration-wireless.html delete mode 100644 slackbook/html/network-configuration.html delete mode 100644 slackbook/html/package-management-making-packages.html delete mode 100644 slackbook/html/package-management-making-tags-and-tagfiles.html delete mode 100644 slackbook/html/package-management-package-utilities.html delete mode 100644 slackbook/html/package-management.html delete mode 100644 slackbook/html/package-management/pkgtool-view-w.png delete mode 100644 slackbook/html/package-management/pkgtool-w.png delete mode 100644 slackbook/html/process-control-foregrounding.html delete mode 100644 slackbook/html/process-control-kill.html delete mode 100644 slackbook/html/process-control-ps.html delete mode 100644 slackbook/html/process-control-top.html delete mode 100644 slackbook/html/process-control.html delete mode 100644 slackbook/html/security-current.html delete mode 100644 slackbook/html/security-host.html delete mode 100644 slackbook/html/security.html delete mode 100644 slackbook/html/shell-bash.html delete mode 100644 slackbook/html/shell-command-line.html delete mode 100644 slackbook/html/shell-vt.html delete mode 100644 slackbook/html/shell.html delete mode 100644 slackbook/html/slackware_logo.png delete mode 100644 slackbook/html/system-configuration-kernel.html delete mode 100644 slackbook/html/system-configuration.html delete mode 100644 slackbook/html/system-configuration/make-menuconfig-w.png delete mode 100644 slackbook/html/vi-configuration.html delete mode 100644 slackbook/html/vi-keys.html delete mode 100644 slackbook/html/vi-modes.html delete mode 100644 slackbook/html/vi-opening-files.html delete mode 100644 slackbook/html/vi-quitting-vi.html delete mode 100644 slackbook/html/vi-saving-files.html delete mode 100644 slackbook/html/vi.html delete mode 100644 slackbook/html/vi/vim-splitedit.png delete mode 100644 slackbook/html/x-window-system-xdm.html delete mode 100644 slackbook/html/x-window-system-xinitrc.html delete mode 100644 slackbook/html/x-window-system-xorgsetup.html delete mode 100644 slackbook/html/x-window-system-xwmconfig.html delete mode 100644 slackbook/html/x-window-system.html delete mode 100644 slackbook/html/x-window-system/xorgconfig1-w.png delete mode 100644 slackbook/html/x-window-system/xorgconfig2-w.png delete mode 100644 slackbook/html/x-window-system/xorgconfig3-w.png delete mode 100644 slackbook/html/x-window-system/xorgconfig4-w.png delete mode 100644 slackbook/html/x-window-system/xwmconfig-w.png delete mode 100644 slackbook/html/zipslack-booting.html delete mode 100644 slackbook/html/zipslack-getting.html delete mode 100644 slackbook/html/zipslack.html delete mode 100644 slackbook/slackbook-2.0.pdf delete mode 100644 slackbook/slackbook-2.0.ps diff --git a/ChangeLog.txt b/ChangeLog.txt index f603590b4..19acb2339 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,2625 @@ +Fri May 25 23:29:36 UTC 2018 +patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txz: Rebuilt. + Handle removal of US/Pacific-New timezone. If we see that the machine is + using this, it will be automatically switched to US/Pacific. ++--------------------------+ +Wed May 23 04:42:29 UTC 2018 +patches/packages/linux-4.4.132/*: Upgraded. + This kernel upgrade is being provided primarily to fix a regression in the + getsockopt() function, but it also contains fixes for two denial-of-service + security issues. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000004 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1092 + (* Security fix *) +patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/thunderbird/52.8.0/releasenotes/ + https://www.mozilla.org/en-US/security/advisories/mfsa2018-13/ + (* Security fix *) +patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txz: Upgraded. + Shared library .so-version bump. + This update fixes bugs and security issues: + library: Fix integer overflow and LPE in file2strvec + library: Use size_t for alloc functions + pgrep: Fix stack-based buffer overflow + ps: Fix buffer overflow in output buffer, causing DOS + top: Don't use cwd for location of config + For more information, see: + https://www.qualys.com/2018/05/17/procps-ng-audit-report-advisory.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1124 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1126 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1125 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1123 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1122 + (* Security fix *) ++--------------------------+ +Thu May 17 04:13:16 UTC 2018 +patches/packages/curl-7.60.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes: + FTP: shutdown response buffer overflow + RTSP: bad headers buffer over-read + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000300 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000301 + (* Security fix *) +patches/packages/php-5.6.36-x86_64-1_slack14.2.txz: Upgraded. + This fixes many bugs, including some security issues: + Heap Buffer Overflow (READ: 1786) in exif_iif_add_value + stream filter convert.iconv leads to infinite loop on invalid sequence + Malicious LDAP-Server Response causes crash + fix for CVE-2018-5712 may not be complete + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10549 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10546 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10548 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10547 + (* Security fix *) ++--------------------------+ +Thu May 10 21:01:11 UTC 2018 +patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2782 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2784 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2787 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2766 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2755 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2819 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2817 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2761 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2781 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2771 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2813 + (* Security fix *) ++--------------------------+ +Thu May 10 01:24:19 UTC 2018 +patches/packages/glibc-zoneinfo-2018e-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. +patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + https://www.mozilla.org/en-US/security/advisories/mfsa2018-12/ + (* Security fix *) +patches/packages/wget-1.19.5-x86_64-1_slack14.2.txz: Upgraded. + Fixed a security issue where a malicious web server could inject arbitrary + cookies into the cookie jar file. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0494 + (* Security fix *) ++--------------------------+ +Fri May 4 19:40:52 UTC 2018 +patches/packages/python-2.7.15-x86_64-1_slack14.2.txz: Upgraded. + Updated to the latest 2.7.x release. + This fixes some security issues in difflib and poplib (regexes vulnerable + to denial of service attacks), as well as security issues with the bundled + expat library. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0876 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0718 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0718 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4472 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5300 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9063 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9233 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1060 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1061 + (* Security fix *) ++--------------------------+ +Thu May 3 22:42:35 UTC 2018 +patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txz: Upgraded. + This update contains security fixes and improvements. + For more information (when it appears), see: + http://www.seamonkey-project.org/releases/seamonkey2.49.3 + (* Security fix *) +patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Tue May 1 06:24:40 UTC 2018 +patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txz: Rebuilt. + Renamed package to fix wrong package tag (was slack14.1, should be + slack14.2). Thanks to rworkman for the heads-up. ++--------------------------+ +Mon Apr 30 22:35:43 UTC 2018 +patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.1.txz: Rebuilt. + Patched denial of service and possible execution of arbitrary code + security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-0941 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-3376 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0455 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-2756 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3472 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3473 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3477 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3546 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0848 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4588 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4695 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4696 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10167 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10168 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9011 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9317 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6362 + (* Security fix *) +patches/packages/mozilla-firefox-52.7.4esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Apr 27 03:58:48 UTC 2018 +patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txz: Upgraded. + This is a security update fixing a potential double-free() in Interactive + Service. This usually only leads to a process crash (DoS by an unprivileged + local account) but since it could possibly lead to memory corruption if + happening while multiple other threads are active at the same time, + CVE-2018-9336 has been assigned to acknowledge this risk. + For more information, see: + https://github.com/OpenVPN/openvpn/commit/1394192b210cb3c6624a7419bcf3ff966742e79b + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-9336 + (* Security fix *) ++--------------------------+ +Thu Apr 19 01:04:06 UTC 2018 +patches/packages/gd-2.2.5-x86_64-1_slack14.2.txz: Upgraded. + This update fixes two security issues: + Double-free in gdImagePngPtr() (denial of service). + Buffer over-read into uninitialized memory (information leak). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6362 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7890 + (* Security fix *) ++--------------------------+ +Fri Apr 6 20:47:43 UTC 2018 +patches/packages/patch-2.7.6-x86_64-1_slack14.2.txz: Upgraded. + Fix arbitrary shell execution possible with obsolete ed format patches. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000156 + (* Security fix *) ++--------------------------+ +Sun Apr 1 19:45:12 UTC 2018 +patches/packages/libidn-1.34-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + Fix integer overflow in combine_hangul() + Fix integer overflow in punycode decoder + Fix NULL pointer dereference in g_utf8_normalize() + Fix NULL pointer dereference in stringprep_ucs4_nfkc_normalize() + (* Security fix *) ++--------------------------+ +Sun Apr 1 02:53:26 UTC 2018 +patches/packages/php-5.6.35-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue where sensitive data belonging to other + accounts might be accessed by a local user. + For more information, see: + http://bugs.php.net/75605 + (* Security fix *) ++--------------------------+ +Thu Mar 29 20:48:28 UTC 2018 +patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txz: Upgraded. + This release includes some bug fixes and some security fixes: + HTTP response splitting in WEBrick. + Unintentional file and directory creation with directory traversal in + tempfile and tmpdir. + DoS by large request in WEBrick. + Buffer under-read in String#unpack. + Unintentional socket creation by poisoned NUL byte in UNIXServer + and UNIXSocket. + Unintentional directory traversal by poisoned NUL byte in Dir. + Multiple vulnerabilities in RubyGems. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17742 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6914 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8777 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8778 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8779 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8780 + (* Security fix *) ++--------------------------+ +Thu Mar 29 01:02:50 UTC 2018 +patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + Constructed ASN.1 types with a recursive definition could exceed the stack. + For more information, see: + https://www.openssl.org/news/secadv/20180327.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0739 + (* Security fix *) +patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Mon Mar 26 22:06:38 UTC 2018 +patches/packages/mozilla-firefox-52.7.3esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/security/advisories/mfsa2018-10/ + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Mar 23 22:28:20 UTC 2018 +patches/packages/glibc-zoneinfo-2018d-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. +patches/packages/mozilla-thunderbird-52.7.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/thunderbird/52.7.0/releasenotes/ + (* Security fix *) ++--------------------------+ +Sun Mar 18 00:55:39 UTC 2018 +patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txz: Upgraded. + This release fixes security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14632 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14633 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5146 + (* Security fix *) ++--------------------------+ +Sat Mar 17 03:25:26 UTC 2018 +patches/packages/mozilla-firefox-52.7.2esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/security/advisories/mfsa2018-08/ + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Mar 16 02:29:29 UTC 2018 +patches/packages/curl-7.59.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + FTP path trickery leads to NIL byte out of bounds write + LDAP NULL pointer dereference + RTSP RTP buffer over-read + For more information, see: + https://curl.haxx.se/docs/adv_2018-9cd6.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000120 + https://curl.haxx.se/docs/adv_2018-97a2.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000121 + https://curl.haxx.se/docs/adv_2018-b047.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000122 + (* Security fix *) ++--------------------------+ +Tue Mar 13 21:12:51 UTC 2018 +patches/packages/mozilla-firefox-52.7.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/security/advisories/mfsa2018-07/ + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) +patches/packages/samba-4.4.16-x86_64-3_slack14.2.txz: Rebuilt. + This is a security update in order to patch the following defect: + On a Samba 4 AD DC the LDAP server in all versions of Samba from + 4.0.0 onwards incorrectly validates permissions to modify passwords + over LDAP allowing authenticated users to change any other users` + passwords, including administrative users. + For more information, see: + https://www.samba.org/samba/security/CVE-2018-1057.html + https://wiki.samba.org/index.php/CVE-2018-1057 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1057 + (* Security fix *) ++--------------------------+ +Thu Mar 8 07:07:45 UTC 2018 +patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txz: Rebuilt. + Rebuilt to fix the embedded GCC version number. Thanks to David Spencer. +patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txz: Rebuilt. + sftp-server: in read-only mode, sftp-server was incorrectly permitting + creation of zero-length files. Reported by Michal Zalewski. + Thanks to arny (of Bluewhite64 fame) for the heads-up. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15906 + (* Security fix *) +patches/packages/php-5.6.34-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a stack buffer overflow vulnerability. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7584 + (* Security fix *) ++--------------------------+ +Thu Mar 1 23:24:54 UTC 2018 +patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txz: Upgraded. + This update fixes two security issues: + Corrected an issue where large sized 'X/x' format options were causing + option handling logic to overwrite memory when expanding them to human + readable form. Reported by Felix Wilhelm, Google Security Team. + Option reference count was not correctly decremented in error path + when parsing buffer for options. Reported by Felix Wilhelm, Google + Security Team. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5732 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5733 + (* Security fix *) +patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txz: Upgraded. + This release addresses five security issues in ntpd: + * LOW/MEDIUM: Sec 3012 / CVE-2016-1549 / VU#961909: Sybil vulnerability: + ephemeral association attack. While fixed in ntp-4.2.8p7, there are + significant additional protections for this issue in 4.2.8p11. + Reported by Matt Van Gundy of Cisco. + * INFO/MEDIUM: Sec 3412 / CVE-2018-7182 / VU#961909: ctl_getitem(): buffer + read overrun leads to undefined behavior and information leak. + Reported by Yihan Lian of Qihoo 360. + * LOW: Sec 3415 / CVE-2018-7170 / VU#961909: Multiple authenticated + ephemeral associations. Reported on the questions@ list. + * LOW: Sec 3453 / CVE-2018-7184 / VU#961909: Interleaved symmetric mode + cannot recover from bad state. Reported by Miroslav Lichvar of Red Hat. + * LOW/MEDIUM: Sec 3454 / CVE-2018-7185 / VU#961909: Unauthenticated packet + can reset authenticated interleaved association. + Reported by Miroslav Lichvar of Red Hat. + For more information, see: + http://support.ntp.org/bin/view/Main/SecurityNotice#February_2018_ntp_4_2_8p11_NTP_S + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1549 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7182 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7170 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7184 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7185 + (* Security fix *) ++--------------------------+ +Mon Feb 26 21:32:03 UTC 2018 +patches/packages/linux-4.4.118/*: Upgraded. + This kernel includes __user pointer sanitization mitigation for the Spectre + (variant 1) speculative side channel attack. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5753 + (* Security fix *) ++--------------------------+ +Sat Feb 24 07:41:40 UTC 2018 +patches/packages/wget-1.19.4-x86_64-2_slack14.2.txz: Rebuilt. + Applied upstream patch to fix logging in background mode. + Thanks to Willy Sudiarto Raharjo. ++--------------------------+ +Fri Feb 16 03:19:36 UTC 2018 +patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues. + For more information, see: + https://irssi.org/security/html/irssi_sa_2018_02 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7054 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7053 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7050 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7052 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7051 + (* Security fix *) ++--------------------------+ +Wed Feb 14 19:48:51 UTC 2018 +patches/packages/seamonkey-2.49.2-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. +patches/packages/seamonkey-solibs-2.49.2-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Wed Feb 7 04:28:48 UTC 2018 +patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txz: Upgraded. + Upgraded to the latest gcc-5 release, with patches to support + -mindirect-branch=thunk-extern, allowing full mitigation of Spectre v2 + in the kernel (when CONFIG_RETPOLINE is used). +patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/linux-4.4.115/*: Upgraded. + This kernel includes full retpoline mitigation for the Spectre (variant 2) + speculative side channel attack. + Please note that this kernel was compiled with gcc-5.5.0, also provided as + an update for Slackware 14.2. You'll need to install the updated gcc in order + to compile kernel modules that will load into this updated kernel. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715 + (* Security fix *) ++--------------------------+ +Sun Feb 4 05:13:27 UTC 2018 +patches/packages/php-5.6.33-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues, including: + Potential infinite loop in gdImageCreateFromGifCtx. + Reflected XSS in .phar 404 page. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5711 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5712 + (* Security fix *) ++--------------------------+ +Thu Feb 1 18:24:15 UTC 2018 +patches/packages/mariadb-10.0.34-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2562 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2622 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2640 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2665 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2668 + (* Security fix *) +patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txz: Upgraded. + This update fixes two security issues: + Fixed a buffer overrun in the protocol's handling of xattr names and + ensure that the received name is null terminated. + Fix an issue with --protect-args where the user could specify the arg in + the protected-arg list and short-circuit some of the arg-sanitizing code. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16548 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5764 + (* Security fix *) ++--------------------------+ +Fri Jan 26 03:46:16 UTC 2018 +patches/packages/curl-7.58.0-x86_64-2_slack14.2.txz: Rebuilt. + Recompiled using --with-libssh2, which is evidently no longer a default + option. Thanks to Markus Wiesner. +patches/packages/mozilla-thunderbird-52.6.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/thunderbird/52.6.0/releasenotes/ + (* Security fix *) ++--------------------------+ +Thu Jan 25 02:24:04 UTC 2018 +patches/packages/curl-7.58.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + HTTP authentication leak in redirects + HTTP/2 trailer out-of-bounds read + For more information, see: + https://curl.haxx.se/docs/adv_2018-b3bf.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000007 + https://curl.haxx.se/docs/adv_2018-824a.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000005 + (* Security fix *) ++--------------------------+ +Wed Jan 24 04:21:44 UTC 2018 +patches/packages/glibc-zoneinfo-2018c-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. ++--------------------------+ +Mon Jan 22 22:47:47 UTC 2018 +patches/packages/wget-1.19.4-x86_64-1_slack14.2.txz: Upgraded. + More bug fixes: + A major bug that caused GZip'ed pages to never be decompressed has been fixed + Support for Content-Encoding and Transfer-Encoding have been marked as + experimental and disabled by default ++--------------------------+ +Sat Jan 20 16:00:51 UTC 2018 +patches/packages/mozilla-firefox-52.6.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + Specifically, this update contains performance.now() mitigations for Spectre. + For more information, see: + https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/ + http://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) +patches/packages/wget-1.19.3-x86_64-1_slack14.2.txz: Upgraded. + This update fixes various non-security bugs, including this one: + Prevent erroneous decompression of .gz and .tgz files with broken servers. ++--------------------------+ +Wed Jan 17 21:36:23 UTC 2018 +patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a high severity security issue: + Improper sequencing during cleanup can lead to a use-after-free error, + triggering an assertion failure and crash in named. + For more information, see: + https://kb.isc.org/article/AA-01542 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3145 + (* Security fix *) ++--------------------------+ +Mon Jan 15 23:13:01 UTC 2018 +patches/packages/linux-4.4.111/*: Upgraded. + This kernel includes mitigations for the Spectre (variant 2) and Meltdown + speculative side channel attacks. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5754 + (* Security fix *) ++--------------------------+ +Tue Jan 9 00:54:19 UTC 2018 +patches/packages/irssi-1.0.6-x86_64-1_slack14.2.txz: Upgraded. + This update fixes multiple security vulnerabilities. + For more information, see: + https://irssi.org/security/irssi_sa_2018_01.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5205 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5206 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5207 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5208 + (* Security fix *) ++--------------------------+ +Fri Dec 29 23:09:14 UTC 2017 +patches/packages/mozilla-firefox-52.5.3esr-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Mon Dec 25 00:00:16 UTC 2017 +patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txz: Upgraded. + Here's an upgrade to the latest xscreensaver. ++--------------------------+ +Fri Dec 22 21:49:01 UTC 2017 +patches/packages/mozilla-thunderbird-52.5.2-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/en-US/thunderbird/52.5.2/releasenotes/ + (* Security fix *) ++--------------------------+ +Wed Dec 20 03:05:58 UTC 2017 +patches/packages/ruby-2.2.9-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + Net::FTP#get, getbinaryfile, gettextfile, put, putbinaryfile, and puttextfile + use Kernel#open to open a local file. If the localfile argument starts with + the pipe character "|", the command following the pipe character is executed. + The default value of localfile is File.basename(remotefile), so malicious FTP + servers could cause arbitrary command execution. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17405 + (* Security fix *) ++--------------------------+ +Sat Dec 9 00:02:28 UTC 2017 +patches/packages/openssl-1.0.2n-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + Read/write after SSL object in error state + rsaz_1024_mul_avx2 overflow bug on x86_64 + For more information, see: + https://www.openssl.org/news/secadv/20171207.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3737 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3738 + (* Security fix *) +patches/packages/openssl-solibs-1.0.2n-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Fri Dec 8 05:54:21 UTC 2017 +patches/packages/mozilla-firefox-52.5.2esr-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Sat Dec 2 20:32:45 UTC 2017 +patches/packages/mozilla-firefox-52.5.1esr-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Wed Nov 29 21:48:33 UTC 2017 +patches/packages/curl-7.57.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + SSL out of buffer access + FTP wildcard out of bounds read + NTLM buffer overflow via integer overflow + For more information, see: + https://curl.haxx.se/docs/adv_2017-af0a.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8818 + https://curl.haxx.se/docs/adv_2017-ae72.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8817 + https://curl.haxx.se/docs/adv_2017-12e7.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8816 + (* Security fix *) ++--------------------------+ +Wed Nov 29 08:15:09 UTC 2017 +patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txz: Upgraded. + Fix heap overflows when parsing malicious files. (CVE-2017-16612) + It is possible to trigger heap overflows due to an integer overflow + while parsing images and a signedness issue while parsing comments. + The integer overflow occurs because the chosen limit 0x10000 for + dimensions is too large for 32 bit systems, because each pixel takes + 4 bytes. Properly chosen values allow an overflow which in turn will + lead to less allocated memory than needed for subsequent reads. + The signedness bug is triggered by reading the length of a comment + as unsigned int, but casting it to int when calling the function + XcursorCommentCreate. Turning length into a negative value allows the + check against XCURSOR_COMMENT_MAX_LEN to pass, and the following + addition of sizeof (XcursorComment) + 1 makes it possible to allocate + less memory than needed for subsequent reads. + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16612 + (* Security fix *) +patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txz: Rebuilt. + Open files with O_NOFOLLOW. (CVE-2017-16611) + A non-privileged X client can instruct X server running under root + to open any file by creating own directory with "fonts.dir", + "fonts.alias" or any font file being a symbolic link to any other + file in the system. X server will then open it. This can be issue + with special files such as /dev/watchdog (which could then reboot + the system). + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16611 + (* Security fix *) ++--------------------------+ +Tue Nov 28 06:20:03 UTC 2017 +patches/packages/samba-4.4.16-x86_64-2_slack14.2.txz: Rebuilt. + This is a security update in order to patch the following defects: + CVE-2017-14746 (Use-after-free vulnerability.) + All versions of Samba from 4.0.0 onwards are vulnerable to a use after + free vulnerability, where a malicious SMB1 request can be used to + control the contents of heap memory via a deallocated heap pointer. It + is possible this may be used to compromise the SMB server. + CVE-2017-15275 (Server heap memory information leak.) + All versions of Samba from 3.6.0 onwards are vulnerable to a heap + memory information leak, where server allocated heap memory may be + returned to the client without being cleared. + For more information, see: + https://www.samba.org/samba/security/CVE-2017-14746.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14746 + https://www.samba.org/samba/security/CVE-2017-15275.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15275 + (* Security fix *) ++--------------------------+ +Sat Nov 25 07:44:07 UTC 2017 +patches/packages/mozilla-thunderbird-52.5.0-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Tue Nov 21 05:05:41 UTC 2017 +patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8128 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5318 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10095 + (* Security fix *) ++--------------------------+ +Fri Nov 17 00:56:25 UTC 2017 +patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes several security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6440 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6439 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6438 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6437 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6436 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6435 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5836 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5835 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5834 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5545 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5209 + (* Security fix *) +patches/packages/mozilla-firefox-52.5.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Nov 3 03:31:56 UTC 2017 +patches/packages/mariadb-10.0.33-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues. + For more information, see: + https://jira.mariadb.org/browse/MDEV-13819 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10268 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10378 + (* Security fix *) +patches/packages/openssl-1.0.2m-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + There is a carry propagating bug in the x64 Montgomery squaring procedure. + No EC algorithms are affected. Analysis suggests that attacks against RSA + and DSA as a result of this defect would be very difficult to perform and + are not believed likely. Attacks against DH are considered just feasible + (although very difficult) because most of the work necessary to deduce + information about a private key may be performed offline. The amount of + resources required for such an attack would be very significant and likely + only accessible to a limited number of attackers. An attacker would + additionally need online access to an unpatched system using the target + private key in a scenario with persistent DH parameters and a private + key that is shared between multiple clients. + This only affects processors that support the BMI1, BMI2 and ADX extensions + like Intel Broadwell (5th generation) and later or AMD Ryzen. + For more information, see: + https://www.openssl.org/news/secadv/20171102.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3736 + (* Security fix *) +patches/packages/openssl-solibs-1.0.2m-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Fri Oct 27 20:34:35 UTC 2017 +patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txz: Upgraded. + This update is provided to address issues with wifi scanning when using the + new wpa_supplicant with certain hardware drivers. If you're not having + problems, you don't need this update (but it probably won't hurt). +patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txz: Upgraded. + This package goes along with the optional NetworkManager update. +patches/packages/php-5.6.32-x86_64-1_slack14.2.txz: Upgraded. + Several security bugs were fixed in this release: + Out of bounds read in timelib_meridian(). + The arcfour encryption stream filter crashes PHP. + Applied upstream patch for PCRE (CVE-2016-1283). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1283 + (* Security fix *) +patches/packages/wget-1.19.2-x86_64-1_slack14.2.txz: Upgraded. + This update fixes stack and heap overflows in in HTTP protocol handling. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13089 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13090 + (* Security fix *) ++--------------------------+ +Wed Oct 25 19:09:26 UTC 2017 +patches/packages/glibc-zoneinfo-2017c-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. +patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. +patches/packages/irssi-1.0.5-x86_64-1_slack14.2.txz: Upgraded. + This update fixes some remote denial of service issues. + For more information, see: + https://irssi.org/security/irssi_sa_2017_10.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15228 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15227 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15721 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15723 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15722 + (* Security fix *) +patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txz: Upgraded. + This has a bugfix related to setting the location: + https://bugzilla.xfce.org/show_bug.cgi?id=13877 ++--------------------------+ +Tue Oct 24 05:31:18 UTC 2017 +patches/packages/curl-7.56.1-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + IMAP FETCH response out of bounds read may cause a crash or information leak. + For more information, see: + https://curl.haxx.se/docs/adv_20171023.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000257 + (* Security fix *) +patches/packages/seamonkey-2.49.1-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. +patches/packages/seamonkey-solibs-2.49.1-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Wed Oct 18 18:21:18 UTC 2017 +patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txz: Upgraded. + Integer overflows may allow X servers to trigger allocation of insufficient + memory and a buffer overflow via vectors related to the (1) + XResQueryClients and (2) XResQueryClientResources functions. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1988 + (* Security fix *) +patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txz: Upgraded. + This update includes patches to mitigate the WPA2 protocol issues known + as "KRACK" (Key Reinstallation AttaCK), which may be used to decrypt data, + hijack TCP connections, and to forge and inject packets. This is the + list of vulnerabilities that are addressed here: + CVE-2017-13077: Reinstallation of the pairwise encryption key (PTK-TK) in the + 4-way handshake. + CVE-2017-13078: Reinstallation of the group key (GTK) in the 4-way handshake. + CVE-2017-13079: Reinstallation of the integrity group key (IGTK) in the 4-way + handshake. + CVE-2017-13080: Reinstallation of the group key (GTK) in the group key + handshake. + CVE-2017-13081: Reinstallation of the integrity group key (IGTK) in the group + key handshake. + CVE-2017-13082: Accepting a retransmitted Fast BSS Transition (FT) + Reassociation Request and reinstalling the pairwise encryption key (PTK-TK) + while processing it. + CVE-2017-13084: Reinstallation of the STK key in the PeerKey handshake. + CVE-2017-13086: reinstallation of the Tunneled Direct-Link Setup (TDLS) + PeerKey (TPK) key in the TDLS handshake. + CVE-2017-13087: reinstallation of the group key (GTK) when processing a + Wireless Network Management (WNM) Sleep Mode Response frame. + CVE-2017-13088: reinstallation of the integrity group key (IGTK) when + processing a Wireless Network Management (WNM) Sleep Mode Response frame. + For more information, see: + https://www.krackattacks.com/ + https://w1.fi/security/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13077 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13078 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13079 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13080 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13081 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13082 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13084 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13086 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13087 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13088 + (* Security fix *) +patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txz: Rebuilt. + This update fixes integer overflows and other possible security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12176 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12177 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12178 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12179 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12180 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12181 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12182 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12183 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12184 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12185 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12186 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12187 + (* Security fix *) +patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txz: Rebuilt. +patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txz: Rebuilt. +patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txz: Rebuilt. ++--------------------------+ +Sat Oct 7 02:53:31 UTC 2017 +patches/packages/mozilla-thunderbird-52.4.0-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Fri Oct 6 06:32:32 UTC 2017 +patches/packages/curl-7.56.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + libcurl may read outside of a heap allocated buffer when doing FTP. + For more information, see: + https://curl.haxx.se/docs/adv_20171004.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000254 + (* Security fix *) +patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues which may lead to a denial of service + or possibly remote code execution. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9572 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9573 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9580 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9581 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12982 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14039 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14040 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14041 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14151 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14152 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14164 + (* Security fix *) +patches/packages/xorg-server-1.18.3-x86_64-4_slack14.2.txz: Rebuilt. + This update fixes two security issues: + Xext/shm: Validate shmseg resource id, otherwise it can belong to a + non-existing client and abort X server with FatalError "client not + in use", or overwrite existing segment of another existing client. + Generating strings for XKB data used a single shared static buffer, + which offered several opportunities for errors. Use a ring of + resizable buffers instead, to avoid problems when strings end up + longer than anticipated. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13721 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13723 + (* Security fix *) +patches/packages/xorg-server-xephyr-1.18.3-x86_64-4_slack14.2.txz: Rebuilt. +patches/packages/xorg-server-xnest-1.18.3-x86_64-4_slack14.2.txz: Rebuilt. +patches/packages/xorg-server-xvfb-1.18.3-x86_64-4_slack14.2.txz: Rebuilt. ++--------------------------+ +Mon Oct 2 17:16:06 UTC 2017 +patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and remotely exploitable security issues that may + have impacts including denial of service, information leak, and execution + of arbitrary code. Thanks to Felix Wilhelm, Fermin J. Serna, Gabriel Campana, + Kevin Hamacher, Ron Bowes, and Gynvael Coldwind of the Google Security Team. + For more information, see: + https://security.googleblog.com/2017/10/behind-masq-yet-more-dns-and-dhcp.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13704 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14491 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14492 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14493 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14494 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14495 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14496 + (* Security fix *) ++--------------------------+ +Sun Oct 1 19:19:08 UTC 2017 +patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txz: Rebuilt. + Patched bugs that may lead to program crashes or possibly execution of + arbitrary code. Thanks to Thomas Choi for the patch. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9110 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9111 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9112 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9113 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9114 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9115 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9116 + (* Security fix *) ++--------------------------+ +Thu Sep 28 21:03:26 UTC 2017 +patches/packages/mozilla-firefox-52.4.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Thu Sep 28 05:31:20 UTC 2017 +patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txz: Rebuilt. + Patched integer overflows in operations/external/ppm-load.c that could allow + a denial of service (application crash) or possibly the execution of + arbitrary code via a large width or height value in a ppm image. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-4433 + (* Security fix *) ++--------------------------+ +Sat Sep 23 01:02:32 UTC 2017 +patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txz: Upgraded. + This release fixes some security issues: + Detect infinite recursion in parameter entities (Nick Wellnhofer), + Fix handling of parameter-entity references (Nick Wellnhofer), + Disallow namespace nodes in XPointer ranges (Nick Wellnhofer), + Fix XPointer paths beginning with range-to (Nick Wellnhofer). + (* Security fix *) +patches/packages/python-2.7.14-x86_64-1_slack14.2.txz: Upgraded. + Updated to the latest 2.7.x release. + This fixes some security issues related to the bundled expat library. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0718 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4472 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9063 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9233 + (* Security fix *) ++--------------------------+ +Thu Sep 21 01:23:24 UTC 2017 +patches/packages/samba-4.4.16-x86_64-1_slack14.2.txz: Upgraded. + This is a security release in order to address the following defects: + SMB1/2/3 connections may not require signing where they should. A man in the + middle attack may hijack client connections. + SMB3 connections don't keep encryption across DFS redirects. A man in the + middle attack can read and may alter confidential documents transferred via + a client connection, which are reached via DFS redirect when the original + connection used SMB3. + Server memory information leak over SMB1. Client with write access to a share + can cause server memory contents to be written into a file or printer. + For more information, see: + https://www.samba.org/samba/security/CVE-2017-12150.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12150 + https://www.samba.org/samba/security/CVE-2017-12151.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12151 + https://www.samba.org/samba/security/CVE-2017-12163.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12163 + (* Security fix *) ++--------------------------+ +Mon Sep 18 19:15:03 UTC 2017 +patches/packages/httpd-2.4.27-x86_64-2_slack14.2.txz: Rebuilt. + This update patches a security issue ("Optionsbleed") with the OPTIONS http + method which may leak arbitrary pieces of memory to a potential attacker. + Thanks to Hanno Bo:ck. + For more information, see: + http://seclists.org/oss-sec/2017/q3/477 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9798 + (* Security fix *) +patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txz: Upgraded. + Mitigate a local side-channel attack on Curve25519 dubbed "May + the Fourth be With You". + For more information, see: + https://eprint.iacr.org/2017/806 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0379 + (* Security fix *) +patches/packages/ruby-2.2.8-x86_64-1_slack14.2.txz: Upgraded. + This release includes several security fixes. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0898 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0899 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0900 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0901 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0902 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10784 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14033 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14064 + (* Security fix *) ++--------------------------+ +Fri Sep 15 17:31:57 UTC 2017 +patches/packages/bluez-5.47-x86_64-1_slack14.2.txz: Upgraded. + Fixed an information disclosure vulnerability which allows remote attackers + to obtain sensitive information from the bluetoothd process memory. This + vulnerability lies in the processing of SDP search attribute requests. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000250 + (* Security fix *) +patches/packages/linux-4.4.88/*: Upgraded. + This update fixes the security vulnerability known as "BlueBorne". + The native Bluetooth stack in the Linux Kernel (BlueZ), starting at + Linux kernel version 3.3-rc1 is vulnerable to a stack overflow in + the processing of L2CAP configuration responses resulting in remote + code execution in kernel space. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000251 + https://www.armis.com/blueborne + (* Security fix *) ++--------------------------+ +Tue Sep 12 22:18:51 UTC 2017 +patches/packages/emacs-25.3-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security vulnerability in Emacs. Gnus no longer + supports "richtext" and "enriched" inline MIME objects. This support + was disabled to avoid evaluation of arbitrary Lisp code contained in + email messages and news articles. + For more information, see: + http://seclists.org/oss-sec/2017/q3/422 + https://bugs.gnu.org/28350 + (* Security fix *) +patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txz: Rebuilt. + Fix a denial of service security issue. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14107 + (* Security fix *) ++--------------------------+ +Fri Sep 8 17:56:01 UTC 2017 +patches/packages/bash-4.3.048-x86_64-1_slack14.2.txz: Upgraded. + This update fixes two security issues found in bash before 4.4: + The expansion of '\h' in the prompt string allows remote authenticated users + to execute arbitrary code via shell metacharacters placed in 'hostname' of a + machine. The theoretical attack vector is a hostile DHCP server providing a + crafted hostname, but this is unlikely to occur in a normal Slackware + configuration as we ignore the hostname provided by DHCP. + Specially crafted SHELLOPTS+PS4 environment variables used against bogus + setuid binaries using system()/popen() allowed local attackers to execute + arbitrary code as root. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0634 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7543 + (* Security fix *) +patches/packages/mariadb-10.0.32-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3636 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3641 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3653 + (* Security fix *) +patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txz: Upgraded. + Upgraded to nss-3.31.1 and nspr-4.16. + This is a bugfix release. +patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and many security issues (see the included + CHANGES file). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11541 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11541 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11542 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11542 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11543 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11543 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12893 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12894 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12895 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12896 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12897 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12898 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12899 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12900 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12901 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12902 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12985 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12986 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12987 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12988 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12989 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12990 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12991 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12992 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12993 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12994 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12995 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12996 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12997 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12998 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12999 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13000 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13001 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13002 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13003 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13004 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13005 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13006 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13007 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13008 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13009 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13010 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13011 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13012 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13013 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13014 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13015 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13016 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13017 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13018 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13019 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13020 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13021 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13022 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13023 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13024 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13025 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13026 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13027 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13028 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13029 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13030 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13031 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13032 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13033 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13034 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13035 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13036 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13037 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13038 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13039 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13040 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13041 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13042 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13043 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13044 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13045 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13046 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13047 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13048 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13049 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13050 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13051 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13052 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13053 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13054 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13055 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13687 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13688 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13689 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13690 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-13725 + (* Security fix *) ++--------------------------+ +Thu Aug 17 05:36:28 UTC 2017 +patches/packages/mozilla-thunderbird-52.3.0-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Tue Aug 15 22:16:12 UTC 2017 +patches/packages/xorg-server-1.18.3-x86_64-3_slack14.2.txz: Rebuilt. + This update fixes two security issues: + A user authenticated to an X Session could crash or execute code in the + context of the X Server by exploiting a stack overflow in the endianness + conversion of X Events. + Uninitialized data in endianness conversion in the XEvent handling of the + X.Org X Server allowed authenticated malicious users to access potentially + privileged data from the X server. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10971 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10972 + (* Security fix *) +patches/packages/xorg-server-xephyr-1.18.3-x86_64-3_slack14.2.txz: Rebuilt. +patches/packages/xorg-server-xnest-1.18.3-x86_64-3_slack14.2.txz: Rebuilt. +patches/packages/xorg-server-xvfb-1.18.3-x86_64-3_slack14.2.txz: Rebuilt. ++--------------------------+ +Fri Aug 11 23:02:43 UTC 2017 +patches/packages/git-2.14.1-x86_64-1_slack14.2.txz: Upgraded. + Fixes security issues: + A "ssh://..." URL can result in a "ssh" command line with a hostname that + begins with a dash "-", which would cause the "ssh" command to instead + (mis)treat it as an option. This is now prevented by forbidding such a + hostname (which should not impact any real-world usage). + Similarly, when GIT_PROXY_COMMAND is configured, the command is run with + host and port that are parsed out from "ssh://..." URL; a poorly written + GIT_PROXY_COMMAND could be tricked into treating a string that begins with a + dash "-" as an option. This is now prevented by forbidding such a hostname + and port number (again, which should not impact any real-world usage). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000117 + (* Security fix *) +patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txz: Rebuilt. + Fixed a chunked decoding buffer overrun that could be exploited against + either clients or servers. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2885 + (* Security fix *) +patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txz: Upgraded. + Fixes security issues: + Mercurial's symlink auditing was incomplete prior to 4.3, and could + be abused to write to files outside the repository. + Mercurial was not sanitizing hostnames passed to ssh, allowing + shell injection attacks on clients by specifying a hostname starting + with -oProxyCommand. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000115 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000116 + (* Security fix *) +patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txz: Upgraded. + Fixed client side arbitrary code execution vulnerability. + For more information, see: + https://subversion.apache.org/security/CVE-2017-9800-advisory.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9800 + (* Security fix *) ++--------------------------+ +Wed Aug 9 20:23:16 UTC 2017 +patches/packages/curl-7.55.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes three security issues: + URL globbing out of bounds read + TFTP sends more than buffer size + FILE buffer read out of bounds + For more information, see: + https://curl.haxx.se/docs/adv_20170809A.html + https://curl.haxx.se/docs/adv_20170809B.html + https://curl.haxx.se/docs/adv_20170809C.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000101 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000100 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000099 + (* Security fix *) +patches/packages/glibc-2.23-x86_64-4_slack14.2.txz: Rebuilt. + Fixed a regression with the recent glibc patch packages: + Don't clobber the libm.so linker script with a symlink. + Thanks to guanx. +patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txz: Rebuilt. +patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txz: Rebuilt. +patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txz: Rebuilt. +patches/packages/mozilla-firefox-52.3.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Wed Aug 2 03:43:51 UTC 2017 +patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txz: Upgraded. + Mitigate a flush+reload side-channel attack on RSA secret keys dubbed + "Sliding right into disaster". + For more information, see: + https://eprint.iacr.org/2017/627 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7526 + (* Security fix *) ++--------------------------+ +Fri Jul 28 20:29:47 UTC 2017 +patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txz: Rebuilt. + Patched a couple of denial of service issues and other bugs. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4645 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4646 + (* Security fix *) ++--------------------------+ +Thu Jul 27 01:03:02 UTC 2017 +patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txz: Rebuilt. + Don't demand high-quality entropy from expat-2.2.2+ because 1) dbus doesn't + need it and 2) it can cause the boot process to hang if dbus times out. + Thanks to SeB for a link to the bug report and patch. ++--------------------------+ +Tue Jul 25 21:09:42 UTC 2017 +patches/packages/bind-9.10.5_P3-x86_64-1_slack14.2.txz: Upgraded. + Fix a regression in the previous BIND release that broke verification + of TSIG signed TCP message sequences where not all the messages contain + TSIG records. + Compiled to use libidn rather than the deprecated (and broken) idnkit. ++--------------------------+ +Mon Jul 24 19:59:34 UTC 2017 +patches/packages/tcpdump-4.9.1-x86_64-1_slack14.2.txz: Upgraded. + This update fixes an issue where tcpdump 4.9.0 allows remote attackers + to cause a denial of service (heap-based buffer over-read and application + crash) via crafted packet data. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11108 + (* Security fix *) ++--------------------------+ +Fri Jul 21 20:09:49 UTC 2017 +patches/packages/seamonkey-2.48-x86_64-1_slack14.2.txz: Upgraded. + This update contains security fixes and improvements. + For more information, see: + http://www.seamonkey-project.org/releases/seamonkey2.48 + (* Security fix *) +patches/packages/seamonkey-solibs-2.48-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Tue Jul 18 23:10:25 UTC 2017 +patches/packages/expat-2.2.2-x86_64-1_slack14.2.txz: Upgraded. + Fixes security issues including: + External entity infinite loop DoS + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9233 + https://libexpat.github.io/doc/cve-2017-9233/ + (* Security fix *) +patches/packages/gd-2.2.4-x86_64-1_slack14.2.txz: Upgraded. + Fixes security issues: + gdImageCreate() doesn't check for oversized images and as such is prone to + DoS vulnerabilities. (CVE-2016-9317) + double-free in gdImageWebPtr() (CVE-2016-6912) + potential unsigned underflow in gd_interpolation.c (CVE-2016-10166) + DOS vulnerability in gdImageCreateFromGd2Ctx() (CVE-2016-10167) + Signed Integer Overflow gd_io.c (CVE-2016-10168) + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9317 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6912 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10166 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10167 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10168 + (* Security fix *) +patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. +patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txz: Rebuilt. + Fixed a bug in a previous patch where a svc_freeargs() call ended up freeing + a static pointer causing rpcbind to crash. Thanks to Jonathan Woithe, + Rafael Jorge Csura Szendrodi, and Robby Workman for identifying the problem + and helping to test a fix. ++--------------------------+ +Fri Jul 14 22:11:58 UTC 2017 +patches/packages/mariadb-10.0.31-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3308 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3309 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3453 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3456 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3464 + (* Security fix *) +patches/packages/samba-4.4.15-x86_64-1_slack14.2.txz: Upgraded. + This update fixes an authentication validation bypass security issue: + "Orpheus' Lyre mutual authentication validation bypass" + All versions of Samba from 4.0.0 onwards using embedded Heimdal + Kerberos are vulnerable to a man-in-the-middle attack impersonating + a trusted server, who may gain elevated access to the domain by + returning malicious replication or authorization data. + Samba binaries built against MIT Kerberos are not vulnerable. + For more information, see: + https://www.samba.org/samba/security/CVE-2017-11103.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11103 + (* Security fix *) ++--------------------------+ +Thu Jul 13 18:19:01 UTC 2017 +patches/packages/httpd-2.4.27-x86_64-1_slack14.2.txz: Upgraded. + This update fixes two security issues: + Read after free in mod_http2 (CVE-2017-9789) + Uninitialized memory reflection in mod_auth_digest (CVE-2017-9788) + Thanks to Robert Swiecki for reporting these issues. + For more information, see: + https://httpd.apache.org/security/vulnerabilities_24.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9789 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9788 + (* Security fix *) ++--------------------------+ +Mon Jul 10 21:43:37 UTC 2017 +patches/packages/libtirpc-1.0.1-x86_64-3_slack14.2.txz: Rebuilt. + Patched a bug which can cause a denial of service through memory exhaustion. + Thanks to Robby Workman. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779 + (* Security fix *) +patches/packages/rpcbind-0.2.4-x86_64-1_slack14.2.txz: Upgraded. + Patched a bug which can cause a denial of service through memory exhaustion. + Thanks to Robby Workman. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779 + (* Security fix *) ++--------------------------+ +Sun Jul 9 20:38:08 UTC 2017 +patches/packages/irssi-1.0.4-x86_64-1_slack14.2.txz: Upgraded. + This release fixes two remote crash issues as well as a few bugs. + For more information, see: + https://irssi.org/security/irssi_sa_2017_07.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10965 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10966 + (* Security fix *) ++--------------------------+ +Sat Jul 8 00:11:34 UTC 2017 +patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txz: Upgraded. + This update provides the latest CA certificates to check for the + authenticity of SSL connections. +patches/packages/php-5.6.31-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + https://php.net/ChangeLog-5.php#5.6.31 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9224 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9226 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9227 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9228 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9229 + (* Security fix *) ++--------------------------+ +Thu Jul 6 00:57:41 UTC 2017 +patches/packages/glibc-2.23-x86_64-3_slack14.2.txz: Rebuilt. + Recompiled with upstream patch from git: + "[PATCH] X86: Don't assert on older Intel CPUs [BZ #20647]" + This fixes an ldconfig failure on older Intel CPUs including Pentium MMX. +patches/packages/glibc-i18n-2.23-x86_64-3_slack14.2.txz: Rebuilt. +patches/packages/glibc-profile-2.23-x86_64-3_slack14.2.txz: Rebuilt. +patches/packages/glibc-solibs-2.23-x86_64-3_slack14.2.txz: Rebuilt. +patches/packages/xscreensaver-5.37-x86_64-1_slack14.2.txz: Upgraded. + Here's an upgrade to the latest xscreensaver. ++--------------------------+ +Fri Jun 30 21:14:15 UTC 2017 +patches/packages/glibc-2.23-x86_64-2_slack14.2.txz: Rebuilt. + Applied upstream security hardening patches from git. + For more information, see: + https://sourceware.org/git/?p=glibc.git;a=commit;h=3c7cd21290cabdadd72984fb69bc51e64ff1002d + https://sourceware.org/git/?p=glibc.git;a=commit;h=46703a3995aa3ca2b816814aa4ad05ed524194dd + https://sourceware.org/git/?p=glibc.git;a=commit;h=c69d4a0f680a24fdbe323764a50382ad324041e9 + https://sourceware.org/git/?p=glibc.git;a=commit;h=3776f38fcd267c127ba5eb222e2c614c191744aa + https://sourceware.org/git/?p=glibc.git;a=commit;h=adc7e06fb412a2a1ee52f8cb788caf436335b9f3 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000366 + (* Security fix *) +patches/packages/glibc-i18n-2.23-x86_64-2_slack14.2.txz: Rebuilt. +patches/packages/glibc-profile-2.23-x86_64-2_slack14.2.txz: Rebuilt. + (* Security fix *) +patches/packages/glibc-solibs-2.23-x86_64-2_slack14.2.txz: Rebuilt. + (* Security fix *) +patches/packages/linux-4.4.75/*: Upgraded. + This kernel fixes security issues that include possible stack exhaustion, + memory corruption, and arbitrary code execution. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7482 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000365 + (* Security fix *) ++--------------------------+ +Thu Jun 29 20:55:09 UTC 2017 +patches/packages/bind-9.10.5_P2-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a high severity security issue: + An error in TSIG handling could permit unauthorized zone transfers + or zone updates. + For more information, see: + https://kb.isc.org/article/AA-01503/0 + https://kb.isc.org/article/AA-01504/0 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3142 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3143 + (* Security fix *) +patches/packages/httpd-2.4.26-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues which may lead to an authentication bypass + or a denial of service: + important: ap_get_basic_auth_pw() Authentication Bypass CVE-2017-3167 + important: mod_ssl Null Pointer Dereference CVE-2017-3169 + important: mod_http2 Null Pointer Dereference CVE-2017-7659 + important: ap_find_token() Buffer Overread CVE-2017-7668 + important: mod_mime Buffer Overread CVE-2017-7679 + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3167 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3169 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7659 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7668 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7679 + (* Security fix *) +patches/packages/libgcrypt-1.7.8-x86_64-1_slack14.2.txz: Upgraded. + Mitigate a local flush+reload side-channel attack on RSA secret keys + dubbed "Sliding right into disaster". + For more information, see: + https://eprint.iacr.org/2017/627 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7526 + (* Security fix *) +patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txz: Upgraded. + Added support for -P option and MICROCODE_ARCH in mkinitrd.conf to specify + a microcode archive to be prepended to the initrd for early CPU microcode + patching by the kernel. Thanks to SeB. ++--------------------------+ +Mon Jun 26 20:36:18 UTC 2017 +patches/packages/linux-4.4.74/*: Upgraded. + This kernel fixes two "Stack Clash" vulnerabilities reported by Qualys. + The first issue may allow attackers to execute arbitrary code with elevated + privileges. Failed attack attempts will likely result in denial-of-service + conditions. The second issue can be exploited to bypass certain security + restrictions and perform unauthorized actions. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000364 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000365 + (* Security fix *) +patches/packages/mozilla-thunderbird-52.2.1-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Fri Jun 23 20:11:00 UTC 2017 +patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txz: Upgraded. + This update is needed for some newer projects to compile properly. ++--------------------------+ +Wed Jun 21 18:38:46 UTC 2017 +patches/packages/openvpn-2.3.17-x86_64-1_slack14.2.txz: Upgraded. + This update fixes several denial of service issues discovered + by Guido Vranken. + For more information, see: + https://community.openvpn.net/openvpn/wiki/VulnerabilitiesFixedInOpenVPN243 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7508 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7520 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7521 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7512 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7522 + (* Security fix *) ++--------------------------+ +Thu Jun 15 02:08:28 UTC 2017 +patches/packages/bind-9.10.5_P1-x86_64-1_slack14.2.txz: Upgraded. + Fixed denial of service security issue: + Some RPZ configurations could go into an infinite query loop when + encountering responses with TTL=0. + For more information, see: + https://kb.isc.org/article/AA-01495 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3140 + (* Security fix *) +patches/packages/mozilla-firefox-52.2.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) +patches/packages/mozilla-thunderbird-52.2.0-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Tue Jun 13 19:54:24 UTC 2017 +patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release, and is needed for some updates on slackbuilds.org + to compile properly. Thanks to Willy Sudiarto Raharjo. ++--------------------------+ +Wed Jun 7 22:42:04 UTC 2017 +patches/packages/irssi-1.0.3-x86_64-1_slack14.2.txz: Upgraded. + Fixed security issues that may result in a denial of service. + For more information, see: + https://irssi.org/security/irssi_sa_2017_06.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9468 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9469 + (* Security fix *) ++--------------------------+ +Wed May 31 23:07:23 UTC 2017 +patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release: + Fixed a bug parsing /proc/pid/stat when the process name contains + a newline. This is not exploitable due to the /dev traversal changes + made in sudo 1.8.20p1. ++--------------------------+ +Tue May 30 17:39:17 UTC 2017 +patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txz: Rebuilt. + Fixed lynx startup without a URL by correcting STARTFILE in lynx.cfg to use + the new URL for the Lynx homepage. Thanks to John David Yost. +patches/packages/sudo-1.8.20p1-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a potential overwrite of arbitrary system files. + This bug was discovered and analyzed by Qualys, Inc. + For more information, see: + https://www.sudo.ws/alerts/linux_tty.html + http://www.openwall.com/lists/oss-security/2017/05/30/16 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000367 + (* Security fix *) ++--------------------------+ +Wed May 24 19:38:59 UTC 2017 +patches/packages/samba-4.4.14-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a remote code execution vulnerability, allowing a + malicious client to upload a shared library to a writable share, and + then cause the server to load and execute it. + For more information, see: + https://www.samba.org/samba/security/CVE-2017-7494.html + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7494 + (* Security fix *) ++--------------------------+ +Mon May 22 20:58:20 UTC 2017 +patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release to fix a broken gkrellm.pc. +patches/packages/mozilla-firefox-52.1.2esr-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Tue May 16 20:11:03 UTC 2017 +patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txz: Rebuilt. + This update fixes an out-of-bounds write caused by a heap-based buffer + overflow related to the t1_builder_close_contour function in psaux/psobjs.c. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287 + (* Security fix *) +patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue with KAuth that can lead to gaining + root from an unprivileged account. + For more information, see: + http://www.openwall.com/lists/oss-security/2017/05/10/3 + https://www.kde.org/info/security/advisory-20170510-1.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8422 + (* Security fix *) +patches/packages/mozilla-thunderbird-52.1.1-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Mon May 1 23:31:02 UTC 2017 +patches/packages/mozilla-thunderbird-52.1.0-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. +patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txz: Rebuilt. + Patched an integer overflow that can crash rxvt with an escape sequence, + or possibly have unspecified other impact. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7483 + (* Security fix *) ++--------------------------+ +Wed Apr 26 23:09:45 UTC 2017 +patches/packages/xfce4-weather-plugin-0.8.9-x86_64-1_slack14.2.txz: Upgraded. + Package upgraded to fix the API used to fetch weather data. + Thanks to Robby Workman. ++--------------------------+ +Mon Apr 24 18:06:06 UTC 2017 +patches/packages/mozilla-firefox-52.1.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Apr 21 22:40:12 UTC 2017 +patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release to fix a failure to retrieve HTML formatted emails + that contain a line longer than 1024 characters. Thanks to Edward Trumbo. +patches/packages/ntp-4.2.8p10-x86_64-1_slack14.2.txz: Upgraded. + In addition to bug fixes and enhancements, this release fixes security + issues of medium and low severity: + Denial of Service via Malformed Config (Medium) + Authenticated DoS via Malicious Config Option (Medium) + Potential Overflows in ctl_put() functions (Medium) + Buffer Overflow in ntpq when fetching reslist from a malicious ntpd (Medium) + 0rigin DoS (Medium) + Buffer Overflow in DPTS Clock (Low) + Improper use of snprintf() in mx4200_send() (Low) + The following issues do not apply to Linux systems: + Privileged execution of User Library code (WINDOWS PPSAPI ONLY) (Low) + Stack Buffer Overflow from Command Line (WINDOWS installer ONLY) (Low) + Data Structure terminated insufficiently (WINDOWS installer ONLY) (Low) + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6464 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6463 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6458 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6460 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9042 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6462 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6451 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6455 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6452 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6459 + (* Security fix *) +patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txz: Upgraded. + This release fixes a security issue: + AllowChrootSymlinks off does not check entire DefaultRoot path for symlinks. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7418 + (* Security fix *) ++--------------------------+ +Wed Apr 19 04:46:45 UTC 2017 +patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txz: Upgraded. + Fix an out of bounds data access that can lead to remote code execution. + This issue was found by Solar Designer of Openwall during a security audit + of the Virtuozzo 7 product, which contains derived downstream code in its + prl-vzvncserver component. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7467 + (* Security fix *) ++--------------------------+ +Tue Apr 18 04:21:33 UTC 2017 +patches/packages/mozilla-thunderbird-52.0.1-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix release. ++--------------------------+ +Thu Apr 13 21:19:45 UTC 2017 +patches/packages/bind-9.10.4_P8-x86_64-1_slack14.2.txz: Upgraded. + Fixed denial of service security issues. + For more information, see: + https://kb.isc.org/article/AA-01465 + https://kb.isc.org/article/AA-01466 + https://kb.isc.org/article/AA-01471 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3136 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3137 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3138 + (* Security fix *) ++--------------------------+ +Sat Apr 8 16:24:35 UTC 2017 +patches/packages/libtiff-4.0.7-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8127 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8665 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8683 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3622 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3623 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3658 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5321 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5323 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5652 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5875 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9273 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9448 + (* Security fix *) +patches/packages/mozilla-thunderbird-52.0-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Sat Apr 1 05:16:59 UTC 2017 +patches/packages/samba-4.4.13-x86_64-1_slack14.2.txz: Upgraded. + This is a bug fix release to address a regression introduced by the security + fixes for CVE-2017-2619 (Symlink race allows access outside share definition). + Please see https://bugzilla.samba.org/show_bug.cgi?id=12721 for details. ++--------------------------+ +Tue Mar 28 20:30:50 UTC 2017 +patches/packages/mariadb-10.0.30-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + Crash in libmysqlclient.so. + Difficult to exploit vulnerability allows low privileged attacker with + logon to compromise the server. Successful attacks of this vulnerability + can result in unauthorized access to data. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3302 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3313 + (* Security fix *) +patches/packages/mozilla-firefox-52.0.2esr-x86_64-1_slack14.2.txz: Upgraded. + Upgraded to new Firefox 52.x ESR branch. ++--------------------------+ +Thu Mar 23 21:38:23 UTC 2017 +patches/packages/glibc-zoneinfo-2017b-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. +patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + An incorrect implementation of XEP-0280: Message Carbons in multiple XMPP + clients allows a remote attacker to impersonate any user, including + contacts, in the vulnerable application's display. This allows for various + kinds of social engineering attacks. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5604 + (* Security fix *) +patches/packages/samba-4.4.12-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + All versions of Samba prior to 4.6.1, 4.5.7, 4.4.12 are vulnerable to + a malicious client using a symlink race to allow access to areas of + the server file system not exported under the share definition. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2619 + (* Security fix *) ++--------------------------+ +Thu Mar 16 01:37:05 UTC 2017 +patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a minor security issue (out of bounds memory read in + purple_markup_unescape_entity). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2640 + (* Security fix *) ++--------------------------+ +Wed Mar 8 00:17:36 UTC 2017 +patches/packages/mozilla-firefox-45.8.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) +patches/packages/mozilla-thunderbird-45.8.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + (* Security fix *) ++--------------------------+ +Wed Mar 1 19:09:44 UTC 2017 +patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txz: Rebuilt. + This is a bugfix package update. + Fixed rc.cgred to source the correct config file. + Don't remove the entire cgroup file system with "rc.cgconfig stop". + Thanks to chris.willing. + NOTE: Be sure to install any .new config files. ++--------------------------+ +Tue Feb 28 23:51:55 UTC 2017 +patches/packages/glibc-zoneinfo-2017a-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. ++--------------------------+ +Fri Feb 10 21:07:35 UTC 2017 +patches/packages/bind-9.10.4_P6-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a denial-of-service vulnerability. Under some conditions + when using both DNS64 and RPZ to rewrite query responses, query processing + can resume in an inconsistent state leading to either an INSIST assertion + failure or an attempt to read through a NULL pointer. + For more information, see: + https://kb.isc.org/article/AA-01453 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3135 + (* Security fix *) +patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txz: Upgraded. + This update is required for the new version of tcpdump. +patches/packages/mozilla-thunderbird-45.7.1-x86_64-1_slack14.2.txz: Upgraded. + Fixed crash when viewing certain IMAP messages (introduced in 45.7.0) +patches/packages/openssl-1.0.2k-x86_64-1_slack14.2.txz: Upgraded. + This update fixes security issues: + Truncated packet could crash via OOB read (CVE-2017-3731) + BN_mod_exp may produce incorrect results on x86_64 (CVE-2017-3732) + Montgomery multiplication may produce incorrect results (CVE-2016-7055) + For more information, see: + https://www.openssl.org/news/secadv/20170126.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3731 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3732 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7055 + (* Security fix *) +patches/packages/openssl-solibs-1.0.2k-x86_64-1_slack14.2.txz: Upgraded. +patches/packages/php-5.6.30-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + https://php.net/ChangeLog-5.php#5.6.30 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10158 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10167 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10168 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10159 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10160 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10161 + (* Security fix *) +patches/packages/tcpdump-4.9.0-x86_64-1_slack14.2.txz: Upgraded. + Fixed bugs which allow an attacker to crash tcpdump (denial of service). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7922 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7923 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7924 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7925 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7926 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7927 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7928 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7929 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7930 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7931 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7932 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7933 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7934 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7935 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7936 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7937 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7938 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7939 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7940 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7973 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7974 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7975 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7983 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7984 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7985 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7986 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7992 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7993 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8574 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8575 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5202 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5203 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5204 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5205 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5341 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5342 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5482 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5483 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5484 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5485 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5486 + (* Security fix *) ++--------------------------+ +Thu Jan 26 18:42:29 UTC 2017 +patches/packages/mozilla-thunderbird-45.7.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5375 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5376 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5378 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5380 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5390 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5396 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5383 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5386 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5373 + (* Security fix *) ++--------------------------+ +Mon Jan 23 21:30:13 UTC 2017 +patches/packages/mozilla-firefox-45.7.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Jan 20 04:18:02 UTC 2017 +patches/packages/seamonkey-2.46-x86_64-3_slack14.2.txz: Rebuilt. + Recompiled with less aggressive optimization (-Os) to fix crashes. +patches/packages/seamonkey-solibs-2.46-x86_64-3_slack14.2.txz: Rebuilt. ++--------------------------+ +Wed Jan 18 20:39:17 UTC 2017 +patches/packages/mariadb-10.0.29-x86_64-1_slack14.2.txz: Upgraded. + This update fixes several security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6664 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3238 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3243 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3244 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3257 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3258 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3265 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3291 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3312 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3317 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3318 + (* Security fix *) ++--------------------------+ +Wed Jan 18 01:02:19 UTC 2017 +patches/packages/seamonkey-2.46-x86_64-2_slack14.2.txz: Rebuilt. + Restored missing nspr/obsolete headers. +patches/packages/seamonkey-solibs-2.46-x86_64-2_slack14.2.txz: Rebuilt. ++--------------------------+ +Sat Jan 14 05:34:32 UTC 2017 +patches/packages/scim-1.4.17-x86_64-1_slack14.2.txz: Upgraded. + This is a bugfix package update. ++--------------------------+ +Thu Jan 12 01:15:52 UTC 2017 +patches/packages/bind-9.10.4_P5-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a denial-of-service vulnerability. An error in handling + certain queries can cause an assertion failure when a server is using the + nxdomain-redirect feature to cover a zone for which it is also providing + authoritative service. A vulnerable server could be intentionally stopped + by an attacker if it was using a configuration that met the criteria for + the vulnerability and if the attacker could cause it to accept a query + that possessed the required attributes. + Please note: This vulnerability affects the "nxdomain-redirect" feature, + which is one of two methods of handling NXDOMAIN redirection, and is only + available in certain versions of BIND. Redirection using zones of type + "redirect" is not affected by this vulnerability. + For more information, see: + https://kb.isc.org/article/AA-01442 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9778 + (* Security fix *) +patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txz: Upgraded. + This update fixes some bugs and security issues. + For more information, see: + https://gnutls.org/security.html#GNUTLS-SA-2017-1 + https://gnutls.org/security.html#GNUTLS-SA-2017-2 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5334 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5335 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5336 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5337 + (* Security fix *) +patches/packages/irssi-0.8.21-x86_64-1_slack14.2.txz: Upgraded. + Fixed security issues that may result in a denial of service. + For more information, see: + https://irssi.org/security/irssi_sa_2017_01.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5193 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5194 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5195 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5196 + (* Security fix *) +patches/packages/python-2.7.13-x86_64-2_slack14.2.txz: Rebuilt. + This is a rebuilt package to fix a build-time regression with the + multiprocessing.synchronize module. + Thanks to Damien Goutte-Gattat for the bug report. ++--------------------------+ +Fri Dec 30 19:29:13 UTC 2016 +patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txz: Upgraded. + This release fixes an old NULL pointer dereference bug in png_set_text_2() + discovered and patched by Patrick Keshishian. The potential "NULL + dereference" bug has existed in libpng since version 0.71 of June 26, 1995. + To be vulnerable, an application has to load a text chunk into the png + structure, then delete all text, then add another text chunk to the same + png structure, which seems to be an unlikely sequence, but it has happened. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10087 + (* Security fix *) +patches/packages/mozilla-thunderbird-45.6.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9899 + (* Security fix *) +patches/packages/seamonkey-2.46-x86_64-1_slack14.2.txz: Upgraded. + This update contains security fixes and improvements. + For more information, see: + http://www.seamonkey-project.org/releases/seamonkey2.46 + (* Security fix *) +patches/packages/seamonkey-solibs-2.46-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Wed Dec 28 21:05:19 UTC 2016 +patches/packages/python-2.7.13-x86_64-1_slack14.2.txz: Upgraded. + This release fixes security issues: + Issue #27850: Remove 3DES from ssl module's default cipher list to counter + measure sweet32 attack (CVE-2016-2183). + Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the + HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates + that the script is in CGI mode. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2183 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1000110 + (* Security fix *) +patches/packages/samba-4.4.8-x86_64-1_slack14.2.txz: Upgraded. + This release fixes security issues: + CVE-2016-2123 (Samba NDR Parsing ndr_pull_dnsp_name Heap-based Buffer + Overflow Remote Code Execution Vulnerability). + CVE-2016-2125 (Unconditional privilege delegation to Kerberos servers + in trusted realms). + CVE-2016-2126 (Flaws in Kerberos PAC validation can trigger privilege + elevation). + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2123 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2125 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2126 + (* Security fix *) ++--------------------------+ +Sat Dec 24 18:14:51 UTC 2016 +patches/packages/expat-2.2.0-x86_64-1_slack14.2.txz: Upgraded. + This update fixes bugs and security issues: + Multiple integer overflows in XML_GetBuffer. + Fix crash on malformed input. + Improve insufficient fix to CVE-2015-1283 / CVE-2015-2716. + Use more entropy for hash initialization. + Resolve troublesome internal call to srand. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1283 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0718 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4472 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5300 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-6702 + (* Security fix *) ++--------------------------+ +Sat Dec 24 02:36:05 UTC 2016 +patches/packages/httpd-2.4.25-x86_64-1_slack14.2.txz: Upgraded. + This update fixes the following security issues: + * CVE-2016-8740: mod_http2: Mitigate DoS memory exhaustion via endless + CONTINUATION frames. + * CVE-2016-5387: core: Mitigate [f]cgi "httpoxy" issues. + * CVE-2016-2161: mod_auth_digest: Prevent segfaults during client entry + allocation when the shared memory space is exhausted. + * CVE-2016-0736: mod_session_crypto: Authenticate the session data/cookie + with a MAC (SipHash) to prevent deciphering or tampering with a padding + oracle attack. + * CVE-2016-8743: Enforce HTTP request grammar corresponding to RFC7230 for + request lines and request headers, to prevent response splitting and + cache pollution by malicious clients or downstream proxies. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8740 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5387 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2161 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0736 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8743 + (* Security fix *) +patches/packages/openssh-7.4p1-x86_64-1_slack14.2.txz: Upgraded. + This is primarily a bugfix release, and also addresses security issues. + ssh-agent(1): Will now refuse to load PKCS#11 modules from paths outside + a trusted whitelist. + sshd(8): When privilege separation is disabled, forwarded Unix-domain + sockets would be created by sshd(8) with the privileges of 'root'. + sshd(8): Avoid theoretical leak of host private key material to + privilege-separated child processes via realloc(). + sshd(8): The shared memory manager used by pre-authentication compression + support had a bounds checks that could be elided by some optimising + compilers to potentially allow attacks against the privileged monitor. + process from the sandboxed privilege-separation process. + sshd(8): Validate address ranges for AllowUser and DenyUsers directives at + configuration load time and refuse to accept invalid ones. It was + previously possible to specify invalid CIDR address ranges + (e.g. user@127.1.2.3/55) and these would always match, possibly resulting + in granting access where it was not intended. + For more information, see: + https://www.openssh.com/txt/release-7.4 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10009 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10010 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10011 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10012 + (* Security fix *) +patches/packages/xfce4-weather-plugin-0.8.8-x86_64-1_slack14.2.txz: Upgraded. + Package upgraded to fix the API used to fetch weather data. + Thanks to Robby Workman. ++--------------------------+ +Sun Dec 18 05:20:25 UTC 2016 +patches/packages/glibc-zoneinfo-2016j-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. ++--------------------------+ +Tue Dec 13 22:14:13 UTC 2016 +patches/packages/mozilla-firefox-45.6.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Mon Dec 12 21:25:50 UTC 2016 +patches/packages/linux-4.4.38/*: Upgraded. + This kernel fixes a security issue with a race condition in + net/packet/af_packet.c that can be exploited to gain kernel code execution + from unprivileged processes. + Thanks to Philip Pettersson for discovering the bug and providing a patch. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=84ac7260236a49c79eede91617700174c2c19b0c + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8655 + (* Security fix *) +patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txz: Upgraded. + This update is needed for the mcabber security update. +patches/packages/mcabber-1.0.4-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue which can lead to a malicious actor + MITMing a conversation, or adding themselves as an entity on a third + parties roster (thereby granting themselves the associated priviledges + such as observing when the user is online). + For more information, see: + https://gultsch.de/gajim_roster_push_and_message_interception.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9928 + (* Security fix *) +patches/packages/php-5.6.29-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + https://php.net/ChangeLog-5.php#5.6.29 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9933 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9934 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9935 + (* Security fix *) ++--------------------------+ +Thu Dec 1 08:49:20 UTC 2016 +patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txz: Rebuilt. + Added a patch to fix issues when $(builddir) != $(srcdir). This avoids + possible build failures when intltool is used with automake >= 1.15. + Thanks to Willy Sudiarto Raharjo. +patches/packages/mozilla-firefox-45.5.1esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9079 + (* Security fix *) +patches/packages/mozilla-thunderbird-45.5.1-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + https://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9079 + (* Security fix *) ++--------------------------+ +Mon Nov 21 19:21:22 UTC 2016 +patches/packages/ntp-4.2.8p9-x86_64-1_slack14.2.txz: Upgraded. + In addition to bug fixes and enhancements, this release fixes the + following 1 high- (Windows only :-), 2 medium-, 2 medium-/low, and + 5 low-severity vulnerabilities, and provides 28 other non-security + fixes and improvements. + CVE-2016-9311: Trap crash + CVE-2016-9310: Mode 6 unauthenticated trap info disclosure and DDoS vector + CVE-2016-7427: Broadcast Mode Replay Prevention DoS + CVE-2016-7428: Broadcast Mode Poll Interval Enforcement DoS + CVE-2016-9312: Windows: ntpd DoS by oversized UDP packet + CVE-2016-7431: Regression: 010-origin: Zero Origin Timestamp Bypass + CVE-2016-7434: Null pointer dereference in _IO_str_init_static_internal() + CVE-2016-7429: Interface selection attack + CVE-2016-7426: Client rate limiting and server responses + CVE-2016-7433: Reboot sync calculation problem + For more information, see: + https://www.kb.cert.org/vuls/id/633847 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9311 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9310 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7427 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7428 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9312 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7431 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7434 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7429 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7426 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7433 + (* Security fix *) ++--------------------------+ +Fri Nov 18 22:49:40 UTC 2016 +patches/packages/mozilla-firefox-45.5.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + http://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) ++--------------------------+ +Fri Nov 4 03:31:38 UTC 2016 +patches/packages/bind-9.10.4_P4-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a denial-of-service vulnerability. A defect in BIND's + handling of responses containing a DNAME answer can cause a resolver to exit + after encountering an assertion failure in db.c or resolver.c. A server + encountering either of these error conditions will stop, resulting in denial + of service to clients. The risk to authoritative servers is minimal; + recursive servers are chiefly at risk. + For more information, see: + https://kb.isc.org/article/AA-01434 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8864 + (* Security fix *) +patches/packages/curl-7.51.0-x86_64-1_slack14.2.txz: Upgraded. + This release fixes security issues: + CVE-2016-8615: cookie injection for other servers + CVE-2016-8616: case insensitive password comparison + CVE-2016-8617: OOB write via unchecked multiplication + CVE-2016-8618: double-free in curl_maprintf + CVE-2016-8619: double-free in krb5 code + CVE-2016-8620: glob parser write/read out of bounds + CVE-2016-8621: curl_getdate read out of bounds + CVE-2016-8622: URL unescape heap overflow via integer truncation + CVE-2016-8623: Use-after-free via shared cookies + CVE-2016-8624: invalid URL parsing with '#' + CVE-2016-8625: IDNA 2003 makes curl use wrong host + For more information, see: + https://curl.haxx.se/docs/adv_20161102A.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8615 + https://curl.haxx.se/docs/adv_20161102B.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8616 + https://curl.haxx.se/docs/adv_20161102C.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8617 + https://curl.haxx.se/docs/adv_20161102D.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8618 + https://curl.haxx.se/docs/adv_20161102E.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8619 + https://curl.haxx.se/docs/adv_20161102F.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8620 + https://curl.haxx.se/docs/adv_20161102G.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8621 + https://curl.haxx.se/docs/adv_20161102H.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8622 + https://curl.haxx.se/docs/adv_20161102I.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8623 + https://curl.haxx.se/docs/adv_20161102J.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8624 + https://curl.haxx.se/docs/adv_20161102K.html + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8625 + (* Security fix *) +patches/packages/glibc-zoneinfo-2016i-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. ++--------------------------+ +Mon Oct 31 23:38:24 UTC 2016 +patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause out of boundary + memory read in XGetImage() or write in XListFonts(). + Affected versions libX11 <= 1.6.3. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7942 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7943 + (* Security fix *) +patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause an integer + overflow on 32 bit architectures. + Affected versions : libXfixes <= 5.0.2. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7944 + (* Security fix *) +patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause out of boundary + memory access or endless loops (Denial of Service). + Affected versions libXi <= 1.7.6. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7945 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7946 + (* Security fix *) +patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause out of boundary + memory writes. + Affected versions: libXrandr <= 1.5.0. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7947 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7948 + (* Security fix *) +patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause out of boundary + memory writes. + Affected version: libXrender <= 0.9.9. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7949 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7950 + (* Security fix *) +patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause out of boundary + memory access or endless loops (Denial of Service). + Affected version libXtst <= 1.2.2. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7951 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7952 + (* Security fix *) +patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause out of boundary + memory and memory corruption. + Affected version libXv <= 1.0.10. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5407 + (* Security fix *) +patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txz: Upgraded. + Insufficient validation of data from the X server can cause a one byte buffer + read underrun. + Affected version: libXvMC <= 1.0.9. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7953 + (* Security fix *) +patches/packages/linux-4.4.29/*: Upgraded. + This kernel fixes a security issue known as "Dirty COW". A race condition + was found in the way the Linux kernel's memory subsystem handled the + copy-on-write (COW) breakage of private read-only memory mappings. An + unprivileged local user could use this flaw to gain write access to + otherwise read-only memory mappings and thus increase their privileges on + the system. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + https://dirtycow.ninja/ + https://www.kb.cert.org/vuls/id/243144 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5195 + (* Security fix *) +patches/packages/mariadb-10.0.28-x86_64-1_slack14.2.txz: Upgraded. + This update fixes several security issues. + For more information, see: + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5616 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5624 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5626 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3492 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5629 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8283 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7440 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5584 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6663 + (* Security fix *) +patches/packages/php-5.6.27-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + https://php.net/ChangeLog-5.php#5.6.27 + (* Security fix *) +patches/packages/xscreensaver-5.36-x86_64-1_slack14.2.txz: Upgraded. + Here's an upgrade to the latest xscreensaver. ++--------------------------+ +Sat Oct 1 17:11:13 UTC 2016 +patches/packages/mozilla-thunderbird-45.4.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + http://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + (* Security fix *) ++--------------------------+ +Wed Sep 28 23:24:37 UTC 2016 +patches/packages/glibc-zoneinfo-2016g-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. ++--------------------------+ +Tue Sep 27 19:16:56 UTC 2016 +patches/packages/bind-9.10.4_P3-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a denial-of-service vulnerability. Testing by ISC has + uncovered a critical error condition which can occur when a nameserver is + constructing a response. A defect in the rendering of messages into + packets can cause named to exit with an assertion failure in buffer.c while + constructing a response to a query that meets certain criteria. + For more information, see: + https://kb.isc.org/article/AA-01419/0 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2776 + (* Security fix *) ++--------------------------+ +Mon Sep 26 18:14:08 UTC 2016 +patches/packages/openssl-1.0.2j-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: + Missing CRL sanity check (CVE-2016-7052) + For more information, see: + https://www.openssl.org/news/secadv/20160926.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7052 + (* Security fix *) +patches/packages/openssl-solibs-1.0.2j-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Fri Sep 23 23:30:53 UTC 2016 +patches/packages/php-5.6.26-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + https://php.net/ChangeLog-5.php#5.6.26 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7416 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7412 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7414 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7417 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7411 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7413 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7418 + (* Security fix *) ++--------------------------+ +Thu Sep 22 18:38:07 UTC 2016 +patches/packages/openssl-1.0.2i-x86_64-1_slack14.2.txz: Upgraded. + This update fixes denial-of-service and other security issues. + For more information, see: + https://www.openssl.org/news/secadv/20160922.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6304 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6305 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2183 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6303 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6302 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2182 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2180 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2177 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2178 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2179 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2181 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6306 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6307 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6308 + (* Security fix *) +patches/packages/openssl-solibs-1.0.2i-x86_64-1_slack14.2.txz: Upgraded. ++--------------------------+ +Wed Sep 21 21:10:52 UTC 2016 +patches/packages/irssi-0.8.20-x86_64-1_slack14.2.txz: Upgraded. + This update fixes two remote crash and heap corruption vulnerabilites + in Irssi's format parsing code. Impact: Remote crash and heap + corruption. Remote code execution seems difficult since only Nuls are + written. Bugs discovered by, and patches provided by Gabriel Campana + and Adrien Guinet from Quarkslab. + For more information, see: + https://irssi.org/security/irssi_sa_2016.txt + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7044 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7045 + (* Security fix *) ++--------------------------+ +Wed Sep 21 15:54:06 UTC 2016 +patches/packages/mozilla-firefox-45.4.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + http://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) +patches/packages/pidgin-2.11.0-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + https://www.pidgin.im/news/security/ + (* Security fix *) ++--------------------------+ +Thu Sep 15 22:54:52 UTC 2016 +patches/packages/curl-7.50.3-x86_64-1_slack14.2.txz: Upgraded. + Fixed heap overflows in four libcurl functions: curl_escape(), + curl_easy_escape(), curl_unescape() and curl_easy_unescape(). + For more information, see: + https://curl.haxx.se/docs/adv_20160914.html + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7167 + (* Security fix *) ++--------------------------+ +Tue Sep 13 18:13:32 UTC 2016 +patches/packages/mariadb-10.0.27-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a critical vulnerability which can allow local and + remote attackers to inject malicious settings into MySQL configuration + files (my.cnf). A successful exploitation could allow attackers to + execute arbitrary code with root privileges which would then allow them + to fully compromise the server. + This issue was discovered and reported by Dawid Golunski. + For more information, see: + http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html + https://jira.mariadb.org/browse/MDEV-10465 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6662 + (* Security fix *) ++--------------------------+ +Mon Sep 12 18:39:03 UTC 2016 +patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txz: Rebuilt. + Fixed a regression that broke MOD support. Thanks to B Watson. ++--------------------------+ +Sat Sep 10 18:04:42 UTC 2016 +patches/packages/gnutls-3.4.15-x86_64-1_slack14.2.txz: Upgraded. + This update fixes some bugs and security issues. + For more information, see: + http://www.gnutls.org/security.html#GNUTLS-SA-2015-2 + http://www.gnutls.org/security.html#GNUTLS-SA-2015-3 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-6251 + (* Security fix *) +patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txz: Upgraded. + This update fixes a security issue: Integer overflow in the + gdk_cairo_set_source_pixbuf function in gdk/gdkcairo.c allows remote + attackers to cause a denial of service (crash) via a large image file, + which triggers a large memory allocation. + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-7447 + (* Security fix *) ++--------------------------+ +Thu Sep 8 21:35:02 UTC 2016 +patches/packages/php-5.6.25-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + http://php.net/ChangeLog-5.php#5.6.25 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7125 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7126 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7127 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7128 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7129 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7130 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7131 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7132 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7133 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7134 + (* Security fix *) ++--------------------------+ +Wed Aug 31 20:43:10 UTC 2016 +patches/packages/mozilla-thunderbird-45.3.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + http://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + (* Security fix *) ++--------------------------+ +Tue Aug 23 19:45:33 UTC 2016 +patches/packages/gnupg-1.4.21-x86_64-1_slack14.2.txz: Upgraded. + Fix critical security bug in the RNG [CVE-2016-6313]. An attacker who + obtains 580 bytes from the standard RNG can trivially predict the next + 20 bytes of output. (This is according to the NEWS file included in the + source. According to the annoucement linked below, an attacker who obtains + 4640 bits from the RNG can trivially predict the next 160 bits of output.) + Problem detected by Felix Doerre and Vladimir Klebanov, KIT. + For more information, see: + https://lists.gnupg.org/pipermail/gnupg-announce/2016q3/000395.html + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6313 + (* Security fix *) +patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txz: Rebuilt. + Applied upstream patch to fix a use-before-allocate bug in libgio. Without + this fix, Thunar will crash if $HOME is on an NFS volume. + Thanks to Jonathan Woithe. +patches/packages/libgcrypt-1.7.3-x86_64-1_slack14.2.txz: Upgraded. + Fix critical security bug in the RNG [CVE-2016-6313]. An attacker who + obtains 580 bytes from the standard RNG can trivially predict the next + 20 bytes of output. (This is according to the NEWS file included in the + source. According to the annoucement linked below, an attacker who obtains + 4640 bits from the RNG can trivially predict the next 160 bits of output.) + Problem detected by Felix Doerre and Vladimir Klebanov, KIT. + For more information, see: + https://lists.gnupg.org/pipermail/gnupg-announce/2016q3/000395.html + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6313 + (* Security fix *) +patches/packages/linux-4.4.19/*: Upgraded. + A flaw was found in the implementation of the Linux kernels handling of + networking challenge ack where an attacker is able to determine the shared + counter. This may allow an attacker located on different subnet to inject + or take over a TCP connection between a server and client without having to + be a traditional Man In the Middle (MITM) style attack. + Be sure to upgrade your initrd after upgrading the kernel packages. + If you use lilo to boot your machine, be sure lilo.conf points to the correct + kernel and initrd and run lilo as root to update the bootloader. + If you use elilo to boot your machine, you should run eliloconfig to copy the + kernel and initrd to the EFI System Partition. + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5389 + (* Security fix *) +patches/packages/screen-4.4.0-x86_64-2_slack14.2.txz: Rebuilt. + Reverted a change to /etc/screenrc.new that prevented the console from being + cleared when a screen session was detached. Thanks to Stuart Winter. +patches/packages/stunnel-5.35-x86_64-2_slack14.2.txz: Rebuilt. + Fixed incorrect config file name in generate-stunnel-key.sh. + Thanks to Ebben Aries. ++--------------------------+ +Thu Aug 11 18:55:48 UTC 2016 +patches/packages/glibc-zoneinfo-2016f-noarch-1_slack14.2.txz: Upgraded. + This package provides the latest timezone updates. ++--------------------------+ +Sat Aug 6 19:29:16 UTC 2016 +patches/packages/curl-7.50.1-x86_64-1_slack14.2.txz: Upgraded. + This release fixes security issues: + TLS: switch off SSL session id when client cert is used + TLS: only reuse connections with the same client cert + curl_multi_cleanup: clear connection pointer for easy handles + For more information, see: + https://curl.haxx.se/docs/adv_20160803A.html + https://curl.haxx.se/docs/adv_20160803B.html + https://curl.haxx.se/docs/adv_20160803C.html + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5419 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5420 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5421 + (* Security fix *) +patches/packages/mozilla-firefox-45.3.0esr-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + http://www.mozilla.org/security/known-vulnerabilities/firefoxESR.html + (* Security fix *) +patches/packages/openssh-7.3p1-x86_64-1_slack14.2.txz: Upgraded. + This is primarily a bugfix release, and also addresses security issues. + sshd(8): Mitigate a potential denial-of-service attack against the system's + crypt(3) function via sshd(8). + sshd(8): Mitigate timing differences in password authentication that could + be used to discern valid from invalid account names when long passwords were + sent and particular password hashing algorithms are in use on the server. + ssh(1), sshd(8): Fix observable timing weakness in the CBC padding oracle + countermeasures. + ssh(1), sshd(8): Improve operation ordering of MAC verification for + Encrypt-then-MAC (EtM) mode transport MAC algorithms to verify the MAC + before decrypting any ciphertext. + sshd(8): (portable only) Ignore PAM environment vars when UseLogin=yes. + For more information, see: + http://www.openssh.com/txt/release-7.3 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6210 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8325 + (* Security fix *) +patches/packages/stunnel-5.35-x86_64-1_slack14.2.txz: Upgraded. + Fixes security issues: + Fixed malfunctioning "verify = 4". + Fixed incorrectly enforced client certificate requests. + (* Security fix *) ++--------------------------+ +Thu Jul 28 18:17:17 UTC 2016 +patches/packages/libidn-1.33-x86_64-1_slack14.2.txz: Upgraded. + Fixed out-of-bounds read bugs. Fixed crashes on invalid UTF-8. + Thanks to Hanno Böck. + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8948 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6261 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6262 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6263 + (* Security fix *) ++--------------------------+ +Fri Jul 22 20:51:23 UTC 2016 +patches/packages/bind-9.10.4_P2-x86_64-1_slack14.2.txz: Upgraded. + Fixed a security issue: + getrrsetbyname with a non absolute name could trigger an infinite + recursion bug in lwresd and named with lwres configured if when + combined with a search list entry the resulting name is too long. + (CVE-2016-2775) [RT #42694] + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2775 + (* Security fix *) ++--------------------------+ +Thu Jul 21 23:25:54 UTC 2016 +patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txz: Upgraded. + This release fixes a security issue: + Use-after-free vulnerability in the xcf_load_image function in + app/xcf/xcf-load.c in GIMP allows remote attackers to cause a denial of + service (program crash) or possibly execute arbitrary code via a crafted + XCF file. + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4994 + (* Security fix *) +patches/packages/php-5.6.24-x86_64-1_slack14.2.txz: Upgraded. + This release fixes bugs and security issues. + For more information, see: + http://php.net/ChangeLog-5.php#5.6.24 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5385 + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6207 + (* Security fix *) ++--------------------------+ +Thu Jul 7 19:52:36 UTC 2016 +patches/packages/samba-4.4.5-x86_64-1_slack14.2.txz: Upgraded. + This release fixes a security issue: + Client side SMB2/3 required signing can be downgraded. + It's possible for an attacker to downgrade the required signing for an + SMB2/3 client connection, by injecting the SMB2_SESSION_FLAG_IS_GUEST or + SMB2_SESSION_FLAG_IS_NULL flags. This means that the attacker can + impersonate a server being connected to by Samba, and return malicious + results. + For more information, see: + http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2119 + (* Security fix *) ++--------------------------+ +Tue Jul 5 04:52:45 UTC 2016 +patches/packages/mozilla-thunderbird-45.2.0-x86_64-1_slack14.2.txz: Upgraded. + This release contains security fixes and improvements. + For more information, see: + http://www.mozilla.org/security/known-vulnerabilities/thunderbird.html + (* Security fix *) ++--------------------------+ Thu Jun 30 20:26:57 UTC 2016 Slackware 14.2 x86_64 stable is released! diff --git a/FILELIST.TXT b/FILELIST.TXT index 60a9cf4c7..c6b2dceb2 100644 --- a/FILELIST.TXT +++ b/FILELIST.TXT @@ -1,20 +1,6150 @@ -Thu Jun 30 23:26:18 UTC 2016 +Fri May 25 23:54:33 UTC 2018 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 3 root root 4096 2016-06-30 23:26 . --rw-r--r-- 1 root root 470630 2016-06-30 23:26 ./CHECKSUMS.md5 --rw-r--r-- 1 root root 181 2016-06-30 23:26 ./CHECKSUMS.md5.asc --rw-r--r-- 1 root root 652216 2016-06-30 23:26 ./FILELIST.TXT --rw-r--r-- 1 root root 255844 2016-06-30 23:26 ./READ_DVD.TXT -drwxr-xr-x 19 root root 4096 2016-06-30 23:26 ./source --rw-r--r-- 1 root root 427118 2016-06-30 23:26 ./source/CHECKSUMS.md5 --rw-r--r-- 1 root root 181 2016-06-30 23:26 ./source/CHECKSUMS.md5.asc --rw-r--r-- 1 root root 602448 2016-06-30 23:26 ./source/FILE_LIST --rw-r--r-- 1 root root 11718046 2016-06-30 23:26 ./source/MANIFEST.bz2 +drwxr-xr-x 12 root root 4096 2018-05-25 23:29 . +-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2 +-rw-r--r-- 1 root root 12785 2016-06-24 22:58 ./CHANGES_AND_HINTS.TXT +-rw-r--r-- 1 root root 949583 2018-05-23 04:57 ./CHECKSUMS.md5 +-rw-r--r-- 1 root root 163 2018-05-23 04:57 ./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 480790 2018-05-25 23:29 ./ChangeLog.txt +drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI +drwxr-xr-x 2 root root 4096 2018-03-12 00:03 ./EFI/BOOT +-rw-r--r-- 1 root root 1223680 2016-06-13 03:20 ./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 2015-11-14 19:11 ./EFI/BOOT/grub.cfg +-rw-r--r-- 2 root root 7630144 2016-06-24 18:38 ./EFI/BOOT/huge.s +-rw-r--r-- 2 root root 39424516 2016-06-24 21:14 ./EFI/BOOT/initrd.img +-rwxr-xr-x 1 root root 2493 2013-09-25 05:10 ./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 1258677 2018-05-23 04:55 ./FILELIST.TXT +-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY +-rw-r--r-- 1 root root 704195 2016-06-29 19:49 ./PACKAGES.TXT +-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT +-rw-r--r-- 1 root root 3654 2016-06-25 00:08 ./README.initrd +-rw-r--r-- 1 root root 34463 2016-06-24 22:57 ./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 +-rw-r--r-- 1 root root 7929 2013-10-19 03:39 ./README_UEFI.TXT +-rw-r--r-- 1 root root 6166 2016-06-30 22:48 ./RELEASE_NOTES +-rw-r--r-- 1 root root 13855 2008-12-08 18:13 ./SPEAKUP_DOCS.TXT +-rw-r--r-- 1 root root 17294 2008-12-08 18:13 ./SPEAK_INSTALL.TXT +-rw-r--r-- 1 root root 57632 2016-06-29 18:46 ./Slackware-HOWTO +-rw-r--r-- 1 root root 6688 2016-06-24 22:58 ./UPGRADE.TXT +drwxr-xr-x 17 root root 4096 2016-06-07 06:11 ./extra +-rw-r--r-- 1 root root 30279 2016-06-07 06:11 ./extra/CHECKSUMS.md5 +-rw-r--r-- 1 root root 181 2016-06-07 06:11 ./extra/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 38163 2016-06-07 06:10 ./extra/FILE_LIST +-rw-r--r-- 1 root root 110776 2016-06-07 06:11 ./extra/MANIFEST.bz2 +-rw-r--r-- 1 root root 31790 2016-06-07 06:11 ./extra/PACKAGES.TXT +-rw-r--r-- 1 root root 149 2002-02-09 00:18 ./extra/README.TXT +drwxr-xr-x 2 root root 20480 2016-06-07 06:10 ./extra/aspell-word-lists +-rw-r--r-- 1 root root 171 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-af-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 869560 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-af-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-af-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 190 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-am-0.03_1-x86_64-5.txt +-rw-r--r-- 1 root root 106900 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-am-0.03_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-am-0.03_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 195 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-az-0.02_0-x86_64-5.txt +-rw-r--r-- 1 root root 126644 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-az-0.02_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-az-0.02_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 199 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-be-0.01-x86_64-5.txt +-rw-r--r-- 1 root root 9374080 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-be-0.01-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-be-0.01-x86_64-5.txz.asc +-rw-r--r-- 1 root root 198 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-bg-4.1_0-x86_64-1.txt +-rw-r--r-- 1 root root 737016 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-bg-4.1_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-bg-4.1_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 193 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-bn-0.01.1_1-x86_64-5.txt +-rw-r--r-- 1 root root 582296 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-bn-0.01.1_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-bn-0.01.1_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 168 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-br-0.50_2-x86_64-5.txt +-rw-r--r-- 1 root root 309004 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-br-0.50_2-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-br-0.50_2-x86_64-5.txz.asc +-rw-r--r-- 1 root root 185 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-ca-20040130_1-x86_64-5.txt +-rw-r--r-- 1 root root 1053360 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-ca-20040130_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-ca-20040130_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 185 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-cs-20040614_1-x86_64-5.txt +-rw-r--r-- 1 root root 2051160 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-cs-20040614_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-cs-20040614_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 203 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-csb-0.02_0-x86_64-5.txt +-rw-r--r-- 1 root root 42448 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-csb-0.02_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-csb-0.02_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 167 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-cy-0.50_3-x86_64-5.txt +-rw-r--r-- 1 root root 1746720 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-cy-0.50_3-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-cy-0.50_3-x86_64-5.txz.asc +-rw-r--r-- 1 root root 182 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-da-1.4.42_1-x86_64-5.txt +-rw-r--r-- 1 root root 3045320 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-da-1.4.42_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-da-1.4.42_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 186 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-de-20030222_1-x86_64-5.txt +-rw-r--r-- 1 root root 2987584 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-de-20030222_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-de-20030222_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 167 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-el-0.50_3-x86_64-5.txt +-rw-r--r-- 1 root root 3214284 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-el-0.50_3-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:10 ./extra/aspell-word-lists/aspell-el-0.50_3-x86_64-5.txz.asc +-rw-r--r-- 1 root root 177 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-eo-2.1.20000225a_2-x86_64-1.txt +-rw-r--r-- 1 root root 154980 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-eo-2.1.20000225a_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-eo-2.1.20000225a_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 186 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-es-1.11_2-x86_64-1.txt +-rw-r--r-- 1 root root 453232 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-es-1.11_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-es-1.11_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 176 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-et-0.1.21_1-x86_64-5.txt +-rw-r--r-- 1 root root 877188 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-et-0.1.21_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-et-0.1.21_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 188 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-fa-0.11_0-x86_64-1.txt +-rw-r--r-- 1 root root 1642140 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-fa-0.11_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-fa-0.11_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 175 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-fi-0.7_0-x86_64-5.txt +-rw-r--r-- 1 root root 606924 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-fi-0.7_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-fi-0.7_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 186 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-fo-0.2.16_1-x86_64-5.txt +-rw-r--r-- 1 root root 997712 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-fo-0.2.16_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-fo-0.2.16_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 168 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-fr-0.50_3-x86_64-5.txt +-rw-r--r-- 1 root root 4368196 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-fr-0.50_3-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-fr-0.50_3-x86_64-5.txz.asc +-rw-r--r-- 1 root root 183 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ga-4.5_0-x86_64-1.txt +-rw-r--r-- 1 root root 2543444 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ga-4.5_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ga-4.5_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 194 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-gd-0.1.1_1-x86_64-5.txt +-rw-r--r-- 1 root root 131280 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-gd-0.1.1_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-gd-0.1.1_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 195 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-gl-0.5a_2-x86_64-1.txt +-rw-r--r-- 1 root root 282420 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-gl-0.5a_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-gl-0.5a_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 200 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-gu-0.03_0-x86_64-1.txt +-rw-r--r-- 1 root root 500412 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-gu-0.03_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-gu-0.03_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 173 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-gv-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 219112 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-gv-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-gv-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 187 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-he-1.0_0-x86_64-5.txt +-rw-r--r-- 1 root root 2008516 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-he-1.0_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-he-1.0_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 191 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-hi-0.02_0-x86_64-1.txt +-rw-r--r-- 1 root root 786536 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-hi-0.02_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-hi-0.02_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 190 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-hil-0.11_0-x86_64-5.txt +-rw-r--r-- 1 root root 114932 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-hil-0.11_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-hil-0.11_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 170 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-hr-0.51_0-x86_64-5.txt +-rw-r--r-- 1 root root 1948936 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-hr-0.51_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-hr-0.51_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 209 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-hsb-0.02_0-x86_64-1.txt +-rw-r--r-- 1 root root 315536 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-hsb-0.02_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-hsb-0.02_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 177 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-hu-0.99.4.2_0-x86_64-5.txt +-rw-r--r-- 1 root root 1582096 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-hu-0.99.4.2_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-hu-0.99.4.2_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 173 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-ia-0.50_1-x86_64-5.txt +-rw-r--r-- 1 root root 550072 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-ia-0.50_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-ia-0.50_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 197 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-id-1.2_0-x86_64-5.txt +-rw-r--r-- 1 root root 213260 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-id-1.2_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-id-1.2_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 171 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-is-0.51.1_0-x86_64-5.txt +-rw-r--r-- 1 root root 1505808 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-is-0.51.1_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-is-0.51.1_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 186 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-it-2.2_20050523_0-x86_64-5.txt +-rw-r--r-- 1 root root 644416 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-it-2.2_20050523_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-it-2.2_20050523_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 182 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ku-0.20_1-x86_64-1.txt +-rw-r--r-- 1 root root 76768 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ku-0.20_1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ku-0.20_1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 173 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-la-20020503_0-x86_64-5.txt +-rw-r--r-- 1 root root 122764 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-la-20020503_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-la-20020503_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 190 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-lt-1.2.1_0-x86_64-1.txt +-rw-r--r-- 1 root root 687948 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-lt-1.2.1_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-lt-1.2.1_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 175 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-lv-0.5.5_1-x86_64-5.txt +-rw-r--r-- 1 root root 186944 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-lv-0.5.5_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-lv-0.5.5_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 176 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-mg-0.03_0-x86_64-5.txt +-rw-r--r-- 1 root root 116976 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-mg-0.03_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-mg-0.03_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 167 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mi-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 144796 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mi-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mi-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 172 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mk-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 1253840 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mk-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mk-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 192 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-mn-0.06_2-x86_64-1.txt +-rw-r--r-- 1 root root 3714264 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-mn-0.06_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-mn-0.06_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 193 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-mr-0.10_0-x86_64-5.txt +-rw-r--r-- 1 root root 474760 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-mr-0.10_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-mr-0.10_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 167 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-ms-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 116556 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-ms-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-ms-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 169 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mt-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 5067432 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mt-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-mt-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 178 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nb-0.50.1_0-x86_64-5.txt +-rw-r--r-- 1 root root 3038560 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nb-0.50.1_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nb-0.50.1_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 206 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-nds-0.01_0-x86_64-5.txt +-rw-r--r-- 1 root root 39928 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-nds-0.01_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-nds-0.01_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 167 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nl-0.50_2-x86_64-5.txt +-rw-r--r-- 1 root root 1495224 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nl-0.50_2-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nl-0.50_2-x86_64-5.txz.asc +-rw-r--r-- 1 root root 179 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nn-0.50.1_1-x86_64-5.txt +-rw-r--r-- 1 root root 1909100 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nn-0.50.1_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-nn-0.50.1_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 171 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-no-0.50_2-x86_64-5.txt +-rw-r--r-- 1 root root 1246192 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-no-0.50_2-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-no-0.50_2-x86_64-5.txz.asc +-rw-r--r-- 1 root root 176 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ny-0.01_0-x86_64-5.txt +-rw-r--r-- 1 root root 40848 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ny-0.01_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-ny-0.01_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 191 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-or-0.03_1-x86_64-5.txt +-rw-r--r-- 1 root root 15016 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-or-0.03_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-or-0.03_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 196 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pa-0.01_1-x86_64-5.txt +-rw-r--r-- 1 root root 21732 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pa-0.01_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pa-0.01_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 183 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pl-6.0_20061121_0-x86_64-1.txt +-rw-r--r-- 1 root root 1836484 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pl-6.0_20061121_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pl-6.0_20061121_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 172 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-pt-0.50_2-x86_64-5.txt +-rw-r--r-- 1 root root 2280348 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-pt-0.50_2-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-pt-0.50_2-x86_64-5.txz.asc +-rw-r--r-- 1 root root 247 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pt_BR-20090702_0-x86_64-1.txt +-rw-r--r-- 1 root root 2439308 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pt_BR-20090702_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-pt_BR-20090702_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 196 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-qu-0.02_0-x86_64-5.txt +-rw-r--r-- 1 root root 302864 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-qu-0.02_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-qu-0.02_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 187 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-ro-3.3_2-x86_64-1.txt +-rw-r--r-- 1 root root 8824136 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-ro-3.3_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-ro-3.3_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 192 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-ru-0.99f7_1-x86_64-5.txt +-rw-r--r-- 1 root root 1426100 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-ru-0.99f7_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-ru-0.99f7_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 173 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-rw-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 37612 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-rw-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:11 ./extra/aspell-word-lists/aspell-rw-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 171 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-sc-1.0-x86_64-5.txt +-rw-r--r-- 1 root root 4911424 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-sc-1.0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-sc-1.0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 187 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-sk-2.01_2-x86_64-1.txt +-rw-r--r-- 1 root root 1275104 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-sk-2.01_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-sk-2.01_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 171 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sl-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 5284388 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sl-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sl-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 190 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-sr-0.02-x86_64-5.txt +-rw-r--r-- 1 root root 3707596 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-sr-0.02-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-sr-0.02-x86_64-5.txz.asc +-rw-r--r-- 1 root root 169 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sv-0.51_0-x86_64-5.txt +-rw-r--r-- 1 root root 986188 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sv-0.51_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sv-0.51_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 169 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sw-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 301548 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sw-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-sw-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 191 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-ta-20040424_1-x86_64-5.txt +-rw-r--r-- 1 root root 100064 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-ta-20040424_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-ta-20040424_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 195 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-te-0.01_2-x86_64-5.txt +-rw-r--r-- 1 root root 906884 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-te-0.01_2-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-te-0.01_2-x86_64-5.txz.asc +-rw-r--r-- 1 root root 179 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tet-0.1.1-x86_64-5.txt +-rw-r--r-- 1 root root 65868 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tet-0.1.1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tet-0.1.1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 175 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tl-0.02_1-x86_64-5.txt +-rw-r--r-- 1 root root 97524 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tl-0.02_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tl-0.02_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 176 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tn-1.0.1_0-x86_64-5.txt +-rw-r--r-- 1 root root 42488 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tn-1.0.1_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./extra/aspell-word-lists/aspell-tn-1.0.1_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 169 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-tr-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 493296 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-tr-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-tr-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 200 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-uk-1.4.0_0-x86_64-1.txt +-rw-r--r-- 1 root root 720968 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-uk-1.4.0_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-uk-1.4.0_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 190 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-uz-0.6_0-x86_64-1.txt +-rw-r--r-- 1 root root 540588 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-uz-0.6_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-uz-0.6_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 193 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-vi-0.01.1_1-x86_64-5.txt +-rw-r--r-- 1 root root 42140 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-vi-0.01.1_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-vi-0.01.1_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 169 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-wa-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 648156 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-wa-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-wa-0.50_0-x86_64-5.txz.asc +-rw-r--r-- 1 root root 190 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-yi-0.01.1_1-x86_64-5.txt +-rw-r--r-- 1 root root 396088 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-yi-0.01.1_1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:14 ./extra/aspell-word-lists/aspell-yi-0.01.1_1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 166 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-zu-0.50_0-x86_64-5.txt +-rw-r--r-- 1 root root 489792 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-zu-0.50_0-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:12 ./extra/aspell-word-lists/aspell-zu-0.50_0-x86_64-5.txz.asc +drwxr-xr-x 2 root root 4096 2016-05-31 20:12 ./extra/bash-completion +-rw-r--r-- 1 root root 681 2016-05-31 19:02 ./extra/bash-completion/bash-completion-2.2-noarch-3.txt +-rw-r--r-- 1 root root 162284 2016-05-31 19:02 ./extra/bash-completion/bash-completion-2.2-noarch-3.txz +-rw-r--r-- 1 root root 181 2016-05-31 19:02 ./extra/bash-completion/bash-completion-2.2-noarch-3.txz.asc +drwxr-xr-x 2 root root 4096 2012-06-25 02:53 ./extra/bittornado +-rw-r--r-- 1 root root 444 2012-06-23 18:20 ./extra/bittornado/bittornado-0.3.18-noarch-3.txt +-rw-r--r-- 1 root root 236800 2012-06-23 18:20 ./extra/bittornado/bittornado-0.3.18-noarch-3.txz +-rw-r--r-- 1 root root 198 2012-06-23 18:20 ./extra/bittornado/bittornado-0.3.18-noarch-3.txz.asc +drwxr-xr-x 2 root root 4096 2012-06-25 02:53 ./extra/bittorrent +-rw-r--r-- 1 root root 1279 2006-02-08 01:38 ./extra/bittorrent/README +-rw-r--r-- 1 root root 613 2012-06-23 18:21 ./extra/bittorrent/bittorrent-4.4.0-noarch-4.txt +-rw-r--r-- 1 root root 337716 2012-06-23 18:21 ./extra/bittorrent/bittorrent-4.4.0-noarch-4.txz +-rw-r--r-- 1 root root 198 2012-06-23 18:21 ./extra/bittorrent/bittorrent-4.4.0-noarch-4.txz.asc +drwxr-xr-x 2 root root 4096 2016-03-27 18:57 ./extra/brltty +-rw-r--r-- 1 root root 362 2016-03-27 16:51 ./extra/brltty/brltty-5.3.1-x86_64-2.txt +-rw-r--r-- 1 root root 1947800 2016-03-27 16:51 ./extra/brltty/brltty-5.3.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-27 16:51 ./extra/brltty/brltty-5.3.1-x86_64-2.txz.asc +drwxr-xr-x 2 root root 4096 2013-09-13 20:05 ./extra/emacspeak +-rw-r--r-- 1 root root 6992 2012-06-23 21:23 ./extra/emacspeak/HOWTO_emacspeak-on-slack.txt +-rw-r--r-- 1 root root 665 2013-09-09 23:22 ./extra/emacspeak/emacspeak-38.0-x86_64-1.txt +-rw-r--r-- 1 root root 4240996 2013-09-09 23:22 ./extra/emacspeak/emacspeak-38.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-09-09 23:22 ./extra/emacspeak/emacspeak-38.0-x86_64-1.txz.asc +lrwxrwxrwx 1 root root 25 2009-08-23 23:37 ./extra/flashplayer-plugin -> source/flashplayer-plugin +drwxr-xr-x 2 root root 4096 2015-12-15 08:48 ./extra/fltk +-rw-r--r-- 1 root root 493 2015-12-15 08:07 ./extra/fltk/fltk-1.3.3-x86_64-2.txt +-rw-r--r-- 1 root root 809688 2015-12-15 08:07 ./extra/fltk/fltk-1.3.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-12-15 08:07 ./extra/fltk/fltk-1.3.3-x86_64-2.txz.asc +drwxr-xr-x 2 root root 4096 2013-10-02 20:28 ./extra/google-chrome +-rw-r--r-- 1 root root 1099 2013-10-02 20:28 ./extra/google-chrome/README +-rwxr-xr-x 1 root root 3921 2015-03-05 21:54 ./extra/google-chrome/google-chrome.SlackBuild +-rw-r--r-- 1 root root 844 2011-03-22 05:07 ./extra/google-chrome/slack-desc +lrwxrwxrwx 1 root root 11 2012-07-30 20:41 ./extra/java -> source/java +drwxr-xr-x 2 root root 4096 2009-05-19 20:54 ./extra/mplayerplug-in +-rw-r--r-- 1 root root 534 2009-05-19 19:32 ./extra/mplayerplug-in/mplayerplug-in-3.55-x86_64-1.txt +-rw-r--r-- 1 root root 176148 2009-05-19 19:32 ./extra/mplayerplug-in/mplayerplug-in-3.55-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-05-19 19:32 ./extra/mplayerplug-in/mplayerplug-in-3.55-x86_64-1.txz.asc +drwxr-xr-x 2 root root 4096 2012-06-25 02:53 ./extra/recordmydesktop +-rw-r--r-- 1 root root 674 2012-06-23 18:23 ./extra/recordmydesktop/recordmydesktop-0.3.8.1-x86_64-3.txt +-rw-r--r-- 1 root root 130060 2012-06-23 18:23 ./extra/recordmydesktop/recordmydesktop-0.3.8.1-x86_64-3.txz +-rw-r--r-- 1 root root 198 2012-06-23 18:23 ./extra/recordmydesktop/recordmydesktop-0.3.8.1-x86_64-3.txz.asc +drwxr-xr-x 15 root root 4096 2016-03-26 23:10 ./extra/source +drwxr-xr-x 3 root root 4096 2016-05-31 19:01 ./extra/source/bash-completion +-rw-r--r-- 1 root root 271260 2016-03-03 15:25 ./extra/source/bash-completion/bash-completion-2.2.tar.xz +-rwxr-xr-x 1 root root 3832 2016-05-31 18:59 ./extra/source/bash-completion/bash-completion.SlackBuild +-rw-r--r-- 1 root root 489 2016-03-06 06:45 ./extra/source/bash-completion/fixup-sh-script-completions.diff.gz +drwxr-xr-x 2 root root 4096 2016-05-31 18:58 ./extra/source/bash-completion/patches +-rw-r--r-- 1 root root 549 2016-03-16 11:28 ./extra/source/bash-completion/patches/0001-tar-Don-t-write-to-tmp-jetel.patch.gz +-rw-r--r-- 1 root root 594 2016-03-16 11:28 ./extra/source/bash-completion/patches/0002-test-suite-Add-tar-xvf-filename-test-case.patch.gz +-rw-r--r-- 1 root root 641 2016-03-16 11:28 ./extra/source/bash-completion/patches/0003-tar-Fix-GNU-tar-help-output-parsing-regex-fixes-15.patch.gz +-rw-r--r-- 1 root root 469 2016-03-16 11:28 ./extra/source/bash-completion/patches/0004-tar-Remove-unused-variable.patch.gz +-rw-r--r-- 1 root root 665 2016-03-16 11:28 ./extra/source/bash-completion/patches/0005-tar-Detect-GNU-other-from-version-only-once-per-sess.patch.gz +-rw-r--r-- 1 root root 275 2016-05-31 19:01 ./extra/source/bash-completion/patches/0006-Remove-mplayer-aliased-completion.patch.gz +-rw-r--r-- 1 root root 1147 2016-01-08 18:03 ./extra/source/bash-completion/slack-desc +drwxr-xr-x 2 root root 4096 2007-02-10 02:08 ./extra/source/bittornado +-rw-r--r-- 1 root root 159270 2006-12-23 20:52 ./extra/source/bittornado/BitTornado-0.3.18.tar.bz2 +-rwxr-xr-x 1 root root 1026 2012-06-23 18:20 ./extra/source/bittornado/bittornado.SlackBuild +-rw-r--r-- 1 root root 913 2005-07-14 22:53 ./extra/source/bittornado/btdownloadxterm.sh.gz +-rw-r--r-- 1 root root 283 2006-02-08 01:28 ./extra/source/bittornado/doinst.sh.gz +-rw-r--r-- 1 root root 905 2005-01-04 06:25 ./extra/source/bittornado/slack-desc +drwxr-xr-x 2 root root 4096 2009-05-19 19:16 ./extra/source/bittorrent +-rw-r--r-- 1 root root 678768 2006-01-31 20:24 ./extra/source/bittorrent/BitTorrent-4.4.0.tar.bz2 +-rw-r--r-- 1 root root 940 2006-02-08 01:07 ./extra/source/bittorrent/bittorrent-xterm.sh.gz +-rwxr-xr-x 1 root root 2473 2012-06-23 18:21 ./extra/source/bittorrent/bittorrent.SlackBuild +-rw-r--r-- 1 root root 270 2006-02-08 01:08 ./extra/source/bittorrent/doinst.sh.gz +-rw-r--r-- 1 root root 1074 2003-09-21 04:50 ./extra/source/bittorrent/slack-desc +drwxr-xr-x 2 root root 4096 2016-03-27 16:50 ./extra/source/brltty +-rw-r--r-- 1 root root 2745956 2015-12-22 05:15 ./extra/source/brltty/brltty-5.3.1.tar.xz +-rwxr-xr-x 1 root root 4409 2016-03-27 16:50 ./extra/source/brltty/brltty.SlackBuild +-rw-r--r-- 1 root root 284 2013-09-09 23:02 ./extra/source/brltty/brltty.brlapi.pyx.diff.gz +-rw-r--r-- 1 root root 554 2016-03-27 16:48 ./extra/source/brltty/brltty.fix.blanks.diff.gz +-rwxr-xr-x 1 root root 529 2016-03-26 22:50 ./extra/source/brltty/dump.dos.windows.stuff.sh +-rw-r--r-- 1 root root 819 2016-03-26 22:56 ./extra/source/brltty/slack-desc +drwxr-xr-x 2 root root 4096 2015-06-30 17:23 ./extra/source/emacspeak +-rw-r--r-- 1 root root 4109032 2013-09-09 23:18 ./extra/source/emacspeak/emacspeak-38.0.tar.xz +-rwxr-xr-x 1 root root 4438 2013-09-09 23:21 ./extra/source/emacspeak/emacspeak.SlackBuild +-rw-r--r-- 1 root root 47 2015-06-30 17:23 ./extra/source/emacspeak/emacspeak.git +-rw-r--r-- 1 root root 534 2013-09-09 23:20 ./extra/source/emacspeak/emacspeak.tcl8.6.diff.gz +-rw-r--r-- 1 root root 1125 2002-06-07 01:43 ./extra/source/emacspeak/slack-desc +drwxr-xr-x 2 root root 4096 2016-03-21 02:40 ./extra/source/flashplayer-plugin +-rwxr-xr-- 1 root root 6583 2016-03-21 02:40 ./extra/source/flashplayer-plugin/flashplayer-plugin.SlackBuild +-rw-r--r-- 1 root root 1017 2008-12-16 13:11 ./extra/source/flashplayer-plugin/slack-desc +drwxr-xr-x 2 root root 4096 2015-12-12 16:51 ./extra/source/fltk +-rw-r--r-- 1 root root 662 2015-12-12 16:50 ./extra/source/fltk/Fl_XFont_On_Demand.patch.gz +-rw-r--r-- 1 root root 3503348 2014-11-03 18:49 ./extra/source/fltk/fltk-1.3.3-source.tar.xz +-rwxr-xr-x 1 root root 4679 2015-12-15 07:54 ./extra/source/fltk/fltk.SlackBuild +-rw-r--r-- 1 root root 948 2015-11-07 21:03 ./extra/source/fltk/slack-desc +drwxr-xr-x 3 root root 4096 2012-07-30 19:20 ./extra/source/java +-rw-r--r-- 1 root root 654 2012-07-30 19:32 ./extra/source/java/README +-rwxr-xr-x 1 root root 5687 2012-08-02 15:50 ./extra/source/java/java.SlackBuild +drwxr-xr-x 2 root root 4096 2012-07-30 18:44 ./extra/source/java/profile.d +-rwxr-xr-x 1 root root 143 2007-08-29 00:32 ./extra/source/java/profile.d/jdk.csh +-rwxr-xr-x 1 root root 146 2007-08-29 00:33 ./extra/source/java/profile.d/jdk.sh +-rwxr-xr-x 1 root root 122 2009-04-29 17:28 ./extra/source/java/profile.d/jre.csh +-rwxr-xr-x 1 root root 125 2009-04-29 17:29 ./extra/source/java/profile.d/jre.sh +-rw-r--r-- 1 root root 822 2010-12-18 23:16 ./extra/source/java/slack-desc.jdk +-rw-r--r-- 1 root root 864 2012-07-10 20:02 ./extra/source/java/slack-desc.jre +drwxr-xr-x 2 root root 4096 2009-05-19 19:29 ./extra/source/mplayerplug-in +-rw-r--r-- 1 root root 281845 2008-06-24 13:19 ./extra/source/mplayerplug-in/mplayerplug-in-3.55.tar.gz +-rwxr-xr-- 1 root root 8298 2009-05-19 20:12 ./extra/source/mplayerplug-in/mplayerplug-in.SlackBuild +-rw-r--r-- 1 root root 999 2006-11-06 21:20 ./extra/source/mplayerplug-in/slack-desc +drwxr-xr-x 2 root root 4096 2009-05-19 20:26 ./extra/source/recordmydesktop +-rw-r--r-- 1 root root 185528 2008-11-23 15:35 ./extra/source/recordmydesktop/qt-recordmydesktop-0.3.8.tar.gz +-rw-r--r-- 1 root root 198732 2008-12-13 17:56 ./extra/source/recordmydesktop/recordmydesktop-0.3.8.1.tar.gz +-rwxr-xr-- 1 root root 8651 2012-06-28 21:07 ./extra/source/recordmydesktop/recordmydesktop.SlackBuild +-rw-r--r-- 1 root root 1140 2010-02-19 15:58 ./extra/source/recordmydesktop/slack-desc +drwxr-xr-x 4 root root 4096 2015-11-07 21:35 ./extra/source/tigervnc +-rw-r--r-- 1 root root 590 2015-08-25 10:53 ./extra/source/tigervnc/10-libvnc.conf +drwxr-xr-x 2 root root 4096 2015-11-12 22:24 ./extra/source/tigervnc/patches +-rw-r--r-- 1 root root 5108 2015-11-12 22:24 ./extra/source/tigervnc/patches/tigervnc-xorg118-QueueKeyboardEvents.patch +-rw-r--r-- 1 root root 509 2015-11-12 22:20 ./extra/source/tigervnc/patches/tigervnc.support.xorg.118.patch +-rw-r--r-- 1 root root 330 2015-04-11 21:48 ./extra/source/tigervnc/patches/tigervnc13_link_png.patch +-rw-r--r-- 1 root root 5356 2015-07-11 13:00 ./extra/source/tigervnc/patches/xserver118.patch +-rw-r--r-- 1 root root 939 2010-08-31 20:04 ./extra/source/tigervnc/slack-desc +drwxr-xr-x 2 root root 4096 2016-04-06 01:45 ./extra/source/tigervnc/sources +-rw-r--r-- 1 root root 910884 2016-02-22 19:51 ./extra/source/tigervnc/sources/tigervnc-1.6.0.tar.xz +lrwxrwxrwx 1 root root 62 2016-04-06 01:45 ./extra/source/tigervnc/sources/xorg-server-1.18.3.tar.xz -> ../../../../source/x/x11/src/xserver/xorg-server-1.18.3.tar.xz +-rwxr-xr-- 1 root root 14353 2016-04-06 01:45 ./extra/source/tigervnc/tigervnc.SlackBuild +drwxr-xr-x 2 root root 4096 2016-03-26 21:39 ./extra/source/wicd +-rw-r--r-- 1 root root 719 2012-03-19 16:58 ./extra/source/wicd/README.SLACKWARE +-rw-r--r-- 1 root root 336 2016-03-26 18:21 ./extra/source/wicd/curses_bitrate_fix.patch.gz +-rw-r--r-- 1 root root 512 2012-03-12 01:39 ./extra/source/wicd/doinst.sh.gz +-rw-r--r-- 1 root root 466 2014-12-23 19:03 ./extra/source/wicd/manually-compile-translations.diff.gz +-rw-r--r-- 1 root root 874 2014-12-23 19:08 ./extra/source/wicd/slack-desc +-rw-r--r-- 1 root root 345 2015-04-19 05:50 ./extra/source/wicd/wicd-1.7.3-urwid-1.3.0.patch.gz +-rw-r--r-- 1 root root 390520 2016-01-26 05:19 ./extra/source/wicd/wicd-1.7.4.tar.xz +-rw-r--r-- 1 root root 283 2016-03-26 20:48 ./extra/source/wicd/wicd-1421918.patch.gz +-rwxr-xr-x 1 root root 3975 2016-03-26 21:40 ./extra/source/wicd/wicd.SlackBuild +drwxr-xr-x 2 root root 4096 2013-10-03 21:36 ./extra/source/xf86-video-fbdev +-rw-r--r-- 1 root root 878 2012-05-08 16:28 ./extra/source/xf86-video-fbdev/slack-desc +-rw-r--r-- 1 root root 246016 2013-09-23 18:09 ./extra/source/xf86-video-fbdev/xf86-video-fbdev-0.4.4.tar.xz +-rwxr-xr-x 1 root root 4230 2015-11-12 22:29 ./extra/source/xf86-video-fbdev/xf86-video-fbdev.SlackBuild +drwxr-xr-x 2 root root 4096 2016-04-06 05:22 ./extra/tigervnc +-rw-r--r-- 1 root root 0 2015-12-15 08:03 ./extra/tigervnc/the_fltk_package_must_also_be_installed +-rw-r--r-- 1 root root 480 2016-04-06 03:32 ./extra/tigervnc/tigervnc-1.6.0-x86_64-3.txt +-rw-r--r-- 1 root root 2619036 2016-04-06 03:32 ./extra/tigervnc/tigervnc-1.6.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-04-06 03:32 ./extra/tigervnc/tigervnc-1.6.0-x86_64-3.txz.asc +drwxr-xr-x 2 root root 4096 2016-03-26 23:27 ./extra/wicd +-rw-r--r-- 1 root root 719 2012-03-19 16:58 ./extra/wicd/README.SLACKWARE +-rw-r--r-- 1 root root 418 2016-03-26 22:24 ./extra/wicd/wicd-1.7.4-x86_64-2.txt +-rw-r--r-- 1 root root 422480 2016-03-26 22:24 ./extra/wicd/wicd-1.7.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-26 22:24 ./extra/wicd/wicd-1.7.4-x86_64-2.txz.asc +drwxr-xr-x 2 root root 4096 2015-11-14 21:49 ./extra/xf86-video-fbdev +-rw-r--r-- 1 root root 411 2015-11-12 22:29 ./extra/xf86-video-fbdev/xf86-video-fbdev-0.4.4-x86_64-4.txt +-rw-r--r-- 1 root root 10692 2015-11-12 22:29 ./extra/xf86-video-fbdev/xf86-video-fbdev-0.4.4-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-11-12 22:29 ./extra/xf86-video-fbdev/xf86-video-fbdev-0.4.4-x86_64-4.txz.asc +drwxr-xr-x 2 root root 4096 2011-01-31 03:46 ./extra/xf86-video-nouveau-blacklist +-rw-r--r-- 1 root root 645 2010-04-27 21:47 ./extra/xf86-video-nouveau-blacklist/xf86-video-nouveau-blacklist-noarch-1.txt +-rw-r--r-- 1 root root 880 2010-04-27 21:47 ./extra/xf86-video-nouveau-blacklist/xf86-video-nouveau-blacklist-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-04-27 21:47 ./extra/xf86-video-nouveau-blacklist/xf86-video-nouveau-blacklist-noarch-1.txz.asc +drwxr-xr-x 3 root root 4096 2016-06-24 21:15 ./isolinux +-rw-r--r-- 1 root root 5953 2013-09-25 09:15 ./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 2016-06-13 03:20 ./isolinux/efiboot.img +-rw-r--r-- 1 root root 574 2013-10-24 00:19 ./isolinux/f2.txt +-rw-r--r-- 2 root root 39424516 2016-06-24 21:14 ./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 2016-06-24 21:06 ./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 +-rwxr-xr-x 1 root root 13052 1997-12-01 01:21 ./isolinux/sbootmgr/RAWRITE12.EXE +lrwxrwxrwx 1 root root 11 2009-08-23 23:37 ./isolinux/sbootmgr/RAWRITE13.EXE -> RAWRITE.EXE +-rw-r--r-- 1 root root 6170 2000-08-29 08:23 ./isolinux/sbootmgr/RAWRITENT.DOC +-rwxr-xr-x 1 root root 24576 2000-08-29 08:26 ./isolinux/sbootmgr/RAWRITENT.EXE +-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 3029 2013-08-16 20:23 ./isolinux/setpkg +drwxr-xr-x 5 root root 4096 2016-06-24 21:06 ./kernels +-rw-r--r-- 1 root root 36 2016-06-24 21:06 ./kernels/VERSIONS.TXT +drwxr-xr-x 2 root root 4096 2016-06-24 18:38 ./kernels/huge.s +-rw-r--r-- 1 root root 819610 2016-06-24 18:38 ./kernels/huge.s/System.map.gz +-rw-r--r-- 2 root root 7630144 2016-06-24 18:38 ./kernels/huge.s/bzImage +-rw-r--r-- 1 root root 159775 2016-06-24 18:34 ./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 +drwxr-xr-x 2 root root 4096 2011-03-02 22:16 ./kernels/speakup.s +-rw-r--r-- 1 root root 240 2011-03-02 22:16 ./kernels/speakup.s/README.TXT +drwxr-xr-x 3 root root 4096 2016-02-03 23:07 ./pasture +-rw-r--r-- 1 root root 2414 2016-02-03 23:07 ./pasture/CHECKSUMS.md5 +-rw-r--r-- 1 root root 181 2016-02-03 23:07 ./pasture/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 3016 2016-02-03 23:07 ./pasture/FILE_LIST +-rw-r--r-- 1 root root 3524 2016-02-03 23:07 ./pasture/MANIFEST.bz2 +-rw-r--r-- 1 root root 2238 2016-02-03 23:07 ./pasture/PACKAGES.TXT +-rw-r--r-- 1 root root 554 2011-04-11 06:20 ./pasture/apmd-3.2.2-x86_64-3.txt +-rw-r--r-- 1 root root 54944 2011-04-11 06:20 ./pasture/apmd-3.2.2-x86_64-3.txz +-rw-r--r-- 1 root root 198 2011-04-11 06:20 ./pasture/apmd-3.2.2-x86_64-3.txz.asc +drwxr-xr-x 5 root root 4096 2016-01-20 21:29 ./pasture/source +drwxr-xr-x 2 root root 4096 2009-05-19 20:05 ./pasture/source/apmd +-rw-r--r-- 1 root root 61686 2004-04-30 04:29 ./pasture/source/apmd/apmd-3.2.2.tar.bz2 +-rwxr-xr-x 1 root root 3572 2011-04-11 06:19 ./pasture/source/apmd/apmd.SlackBuild +-rw-r--r-- 1 root root 1009 2002-02-22 00:45 ./pasture/source/apmd/slack-desc +drwxr-xr-x 2 root root 4096 2015-03-05 23:59 ./pasture/source/xfce4-mixer +-rw-r--r-- 1 root root 3176 2015-03-05 23:54 ./pasture/source/xfce4-mixer/0001-Make-Unique-support-optional.patch +-rw-r--r-- 1 root root 2225 2015-03-05 23:51 ./pasture/source/xfce4-mixer/0001-Use-datadir-xfce4-mixer-as-MIXER_DATADIR.patch +-rw-r--r-- 1 root root 1116 2015-03-05 23:51 ./pasture/source/xfce4-mixer/0001-icons-Makefile.am-Remove-unnecessary-gtk-update-icon.patch +-rw-r--r-- 1 root root 184 2010-11-04 03:20 ./pasture/source/xfce4-mixer/doinst.sh.gz +-rw-r--r-- 1 root root 899 2012-07-19 02:54 ./pasture/source/xfce4-mixer/slack-desc +-rw-r--r-- 1 root root 384436 2012-10-10 15:10 ./pasture/source/xfce4-mixer/xfce4-mixer-4.10.0.tar.xz +-rwxr-xr-x 1 root root 3595 2015-11-20 23:57 ./pasture/source/xfce4-mixer/xfce4-mixer.SlackBuild +drwxr-xr-x 2 root root 4096 2015-02-18 06:16 ./pasture/source/xfce4-volumed +-rw-r--r-- 1 root root 1094 2015-02-18 06:16 ./pasture/source/xfce4-volumed/0001-Removed-deprecated-Encoding-entry-in-.desktop-file-t.patch +-rw-r--r-- 1 root root 2294 2015-02-18 06:16 ./pasture/source/xfce4-volumed/0003-Removing-edge-case-memleaks.patch +-rw-r--r-- 1 root root 1034 2011-10-26 15:38 ./pasture/source/xfce4-volumed/slack-desc +-rw-r--r-- 1 root root 83828 2011-03-03 10:39 ./pasture/source/xfce4-volumed/xfce4-volumed-0.1.13.tar.xz +-rwxr-xr-x 1 root root 3470 2015-11-21 17:36 ./pasture/source/xfce4-volumed/xfce4-volumed.SlackBuild +-rw-r--r-- 1 root root 437 2015-11-21 18:48 ./pasture/xfce4-mixer-4.10.0-x86_64-2.txt +-rw-r--r-- 1 root root 93336 2015-11-21 18:48 ./pasture/xfce4-mixer-4.10.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:48 ./pasture/xfce4-mixer-4.10.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 570 2015-11-21 19:02 ./pasture/xfce4-volumed-0.1.13-x86_64-3.txt +-rw-r--r-- 1 root root 27448 2015-11-21 19:02 ./pasture/xfce4-volumed-0.1.13-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-21 19:02 ./pasture/xfce4-volumed-0.1.13-x86_64-3.txz.asc +drwxr-xr-x 4 root root 4096 2018-05-25 23:54 ./patches +-rw-r--r-- 1 root root 99602 2018-05-25 23:54 ./patches/CHECKSUMS.md5 +-rw-r--r-- 1 root root 163 2018-05-25 23:54 ./patches/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 142713 2018-05-25 23:54 ./patches/FILE_LIST +-rw-r--r-- 1 root root 6868682 2018-05-25 23:54 ./patches/MANIFEST.bz2 +-rw-r--r-- 1 root root 72657 2018-05-25 23:54 ./patches/PACKAGES.TXT +drwxr-xr-x 3 root root 28672 2018-05-25 23:54 ./patches/packages +-rw-r--r-- 1 root root 603 2017-10-27 18:17 ./patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 3136368 2017-10-27 18:17 ./patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-27 18:17 ./patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 510 2017-09-07 20:33 ./patches/packages/bash-4.3.048-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1408096 2017-09-07 20:33 ./patches/packages/bash-4.3.048-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-07 20:33 ./patches/packages/bash-4.3.048-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 336 2018-01-17 03:26 ./patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 2410088 2018-01-17 03:26 ./patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-01-17 03:26 ./patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 347 2017-09-14 17:24 ./patches/packages/bluez-5.47-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1056736 2017-09-14 17:24 ./patches/packages/bluez-5.47-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-14 17:24 ./patches/packages/bluez-5.47-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 430 2017-07-07 20:48 ./patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txt +-rw-r--r-- 1 root root 156024 2017-07-07 20:48 ./patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-07-07 20:48 ./patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 555 2018-05-16 20:32 ./patches/packages/curl-7.60.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1221980 2018-05-16 20:32 ./patches/packages/curl-7.60.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-16 20:32 ./patches/packages/curl-7.60.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 491 2017-07-27 00:44 ./patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 485628 2017-07-27 00:44 ./patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-07-27 00:44 ./patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 644 2018-02-28 22:02 ./patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1773188 2018-02-28 22:02 ./patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-28 22:02 ./patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 444 2017-10-02 17:03 ./patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 329148 2017-10-02 17:03 ./patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-02 17:03 ./patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 471 2017-09-12 18:11 ./patches/packages/emacs-25.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 41443156 2017-09-12 18:11 ./patches/packages/emacs-25.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-12 18:11 ./patches/packages/emacs-25.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 264 2017-07-18 04:41 ./patches/packages/expat-2.2.2-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 105732 2017-07-18 04:41 ./patches/packages/expat-2.2.2-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-07-18 04:41 ./patches/packages/expat-2.2.2-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 494 2017-05-16 06:08 ./patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 480060 2017-05-16 06:08 ./patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-05-16 06:08 ./patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 311 2018-02-06 00:32 ./patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 18229688 2018-02-06 00:32 ./patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:32 ./patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 295 2018-02-06 00:32 ./patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 7869284 2018-02-06 00:32 ./patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:32 ./patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 620 2018-02-06 00:32 ./patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 6515284 2018-02-06 00:32 ./patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:32 ./patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 456 2018-02-06 00:33 ./patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 14121924 2018-02-06 00:33 ./patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:33 ./patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 574 2018-02-06 00:34 ./patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 13615028 2018-02-06 00:34 ./patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:34 ./patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 358 2018-02-06 00:34 ./patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 27264032 2018-02-06 00:34 ./patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:34 ./patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 503 2018-02-06 00:34 ./patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 5756904 2018-02-06 00:34 ./patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-06 00:34 ./patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 499 2018-04-17 18:27 ./patches/packages/gd-2.2.5-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 146852 2018-04-17 18:27 ./patches/packages/gd-2.2.5-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-04-17 18:27 ./patches/packages/gd-2.2.5-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 406 2017-09-27 19:13 ./patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txt +-rw-r--r-- 1 root root 470772 2017-09-27 19:13 ./patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-27 19:13 ./patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txz.asc +-rw-r--r-- 1 root root 363 2017-04-21 19:54 ./patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 173888 2017-04-21 19:54 ./patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-04-21 19:54 ./patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 473 2016-07-14 20:43 ./patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 12651552 2016-07-14 20:43 ./patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 181 2016-07-14 20:43 ./patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 397 2017-08-11 20:42 ./patches/packages/git-2.14.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 5313080 2017-08-11 20:42 ./patches/packages/git-2.14.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-11 20:42 ./patches/packages/git-2.14.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 513 2017-05-22 20:43 ./patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 561780 2017-05-22 20:43 ./patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-05-22 20:43 ./patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 235 2016-08-23 17:41 ./patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txt +-rw-r--r-- 1 root root 3630732 2016-08-23 17:41 ./patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-08-23 17:41 ./patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txz.asc +-rw-r--r-- 1 root root 389 2017-08-09 20:18 ./patches/packages/glibc-2.23-x86_64-4_slack14.2.txt +-rw-r--r-- 1 root root 5558132 2017-08-09 20:18 ./patches/packages/glibc-2.23-x86_64-4_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-09 20:18 ./patches/packages/glibc-2.23-x86_64-4_slack14.2.txz.asc +-rw-r--r-- 1 root root 353 2017-08-09 20:18 ./patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txt +-rw-r--r-- 1 root root 7529820 2017-08-09 20:18 ./patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-09 20:18 ./patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txz.asc +-rw-r--r-- 1 root root 508 2017-08-09 20:17 ./patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txt +-rw-r--r-- 1 root root 1408340 2017-08-09 20:17 ./patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-09 20:17 ./patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txz.asc +-rw-r--r-- 1 root root 323 2017-08-09 20:18 ./patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txt +-rw-r--r-- 1 root root 2681132 2017-08-09 20:18 ./patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-09 20:18 ./patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txz.asc +-rw-r--r-- 1 root root 504 2018-05-24 18:07 ./patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txt +-rw-r--r-- 1 root root 193680 2018-05-24 18:07 ./patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-24 18:07 ./patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 371 2017-08-02 03:23 ./patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1174536 2017-08-02 03:23 ./patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-02 03:23 ./patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 493 2017-01-11 01:30 ./patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 2414244 2017-01-11 01:30 ./patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-01-11 01:30 ./patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 335 2016-09-10 16:51 ./patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 7090284 2016-09-10 16:51 ./patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-09-10 16:51 ./patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 514 2017-10-25 16:49 ./patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 3618116 2017-10-25 16:49 ./patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-25 16:49 ./patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 280 2016-11-29 19:05 ./patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txt +-rw-r--r-- 1 root root 47832 2016-11-29 19:05 ./patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-11-29 19:05 ./patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txz.asc +-rw-r--r-- 1 root root 333 2018-02-15 21:23 ./patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 608912 2018-02-15 21:23 ./patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-15 21:23 ./patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 191 2017-05-12 23:15 ./patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 13127480 2017-05-12 23:15 ./patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-05-12 23:15 ./patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 305 2016-10-27 05:47 ./patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 2641664 2016-10-27 05:47 ./patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 05:47 ./patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 366 2017-11-29 07:12 ./patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 42068 2017-11-29 07:12 ./patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-11-29 07:12 ./patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 351 2016-10-27 05:53 ./patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 24084 2016-10-27 05:53 ./patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 05:53 ./patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 575 2017-11-29 06:35 ./patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 137272 2017-11-29 06:35 ./patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-11-29 06:35 ./patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 293 2016-10-27 05:55 ./patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 188232 2016-10-27 05:55 ./patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 05:55 ./patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 361 2016-10-27 05:58 ./patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 38124 2016-10-27 05:58 ./patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 05:58 ./patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 377 2016-10-27 05:59 ./patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 34988 2016-10-27 05:59 ./patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 05:59 ./patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 321 2017-10-18 16:58 ./patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 22640 2017-10-18 16:58 ./patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-18 16:58 ./patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 334 2016-10-27 06:01 ./patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 55412 2016-10-27 06:01 ./patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 06:01 ./patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 321 2016-10-27 06:03 ./patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 47280 2016-10-27 06:03 ./patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 06:03 ./patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 319 2016-10-27 06:04 ./patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 33392 2016-10-27 06:04 ./patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-10-27 06:04 ./patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 596 2017-03-01 19:04 ./patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 117784 2017-03-01 19:04 ./patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-03-01 19:04 ./patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 245 2017-09-17 17:11 ./patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 516060 2017-09-17 17:11 ./patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-17 17:11 ./patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 336 2018-04-01 19:20 ./patches/packages/libidn-1.34-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 297292 2018-04-01 19:20 ./patches/packages/libidn-1.34-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-04-01 19:20 ./patches/packages/libidn-1.34-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 432 2017-02-10 20:52 ./patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 274848 2017-02-10 20:52 ./patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-02-10 20:52 ./patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 337 2017-11-14 22:16 ./patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 106404 2017-11-14 22:16 ./patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-11-14 22:16 ./patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 492 2016-12-30 17:06 ./patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 309032 2016-12-30 17:06 ./patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-12-30 17:06 ./patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 350 2017-08-11 19:39 ./patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txt +-rw-r--r-- 1 root root 551416 2017-08-11 19:39 ./patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-11 19:39 ./patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txz.asc +-rw-r--r-- 1 root root 394 2017-11-21 03:38 ./patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 446772 2017-11-21 03:38 ./patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-11-21 03:38 ./patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 540 2017-07-18 17:53 ./patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 137172 2017-07-18 17:53 ./patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-07-18 17:53 ./patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 500 2018-03-07 21:53 ./patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 436148 2018-03-07 21:53 ./patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-07 21:53 ./patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 558 2018-03-17 19:48 ./patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 284576 2018-03-17 19:48 ./patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-17 19:48 ./patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 288 2018-04-30 22:09 ./patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txt +-rw-r--r-- 1 root root 972916 2018-04-30 22:09 ./patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-04-30 22:09 ./patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txz.asc +-rw-r--r-- 1 root root 522 2017-09-21 22:03 ./patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1232052 2017-09-21 22:03 ./patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-21 22:03 ./patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 429 2017-09-12 21:13 ./patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txt +-rw-r--r-- 1 root root 110192 2017-09-12 21:13 ./patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-12 21:13 ./patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txz.asc +drwxr-xr-x 2 root root 4096 2018-05-23 04:54 ./patches/packages/linux-4.4.132 +-rw-r--r-- 1 root root 422 2018-05-22 03:38 ./patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txt +-rw-r--r-- 1 root root 73713280 2018-05-22 03:38 ./patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txz +-rw-r--r-- 1 root root 163 2018-05-22 03:38 ./patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txz.asc +-rw-r--r-- 1 root root 624 2018-05-21 22:28 ./patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txt +-rw-r--r-- 1 root root 4857692 2018-05-21 22:28 ./patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txz +-rw-r--r-- 1 root root 163 2018-05-21 22:28 ./patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txz.asc +-rw-r--r-- 1 root root 332 2018-05-21 22:13 ./patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txt +-rw-r--r-- 1 root root 745132 2018-05-21 22:13 ./patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txz +-rw-r--r-- 1 root root 163 2018-05-21 22:13 ./patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txz.asc +-rw-r--r-- 1 root root 636 2018-05-21 22:39 ./patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txt +-rw-r--r-- 1 root root 8307000 2018-05-21 22:39 ./patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txz +-rw-r--r-- 1 root root 163 2018-05-21 22:39 ./patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txz.asc +-rw-r--r-- 1 root root 567 2018-05-21 22:31 ./patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txt +-rw-r--r-- 1 root root 29258592 2018-05-21 22:31 ./patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txz +-rw-r--r-- 1 root root 163 2018-05-21 22:31 ./patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txz.asc +-rw-r--r-- 1 root root 317 2018-05-21 22:12 ./patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txt +-rw-r--r-- 1 root root 91120256 2018-05-21 22:12 ./patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txz +-rw-r--r-- 1 root root 163 2018-05-21 22:12 ./patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txz.asc +-rw-r--r-- 1 root root 444 2016-12-10 21:23 ./patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 78172 2016-12-10 21:23 ./patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-12-10 21:23 ./patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 498 2017-05-29 19:54 ./patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txt +-rw-r--r-- 1 root root 1558416 2017-05-29 19:54 ./patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-05-29 19:54 ./patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txz.asc +-rw-r--r-- 1 root root 370 2018-05-10 19:59 ./patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 27086788 2018-05-10 19:59 ./patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-10 19:59 ./patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 418 2017-03-23 19:54 ./patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 239188 2017-03-23 19:54 ./patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-03-23 19:54 ./patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 664 2017-08-11 19:52 ./patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 3242004 2017-08-11 19:52 ./patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-11 19:52 ./patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 376 2017-04-18 21:45 ./patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 297308 2017-04-18 21:45 ./patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-04-18 21:45 ./patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 529 2017-06-29 17:17 ./patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 582144 2017-06-29 17:17 ./patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-06-29 17:17 ./patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 527 2018-05-09 04:11 ./patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 47485020 2018-05-09 04:11 ./patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-09 04:11 ./patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 564 2017-09-08 17:29 ./patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1757156 2017-09-08 17:29 ./patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-08 17:29 ./patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 702 2018-05-22 19:09 ./patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 47485024 2018-05-22 19:09 ./patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-22 19:09 ./patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 340 2017-06-23 17:19 ./patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 383020 2017-06-23 17:19 ./patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-06-23 17:19 ./patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 359 2017-10-27 18:20 ./patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1043768 2017-10-27 18:20 ./patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-27 18:20 ./patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 532 2018-02-28 23:47 ./patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 2008536 2018-02-28 23:47 ./patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-02-28 23:47 ./patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 457 2017-10-01 18:46 ./patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 3000080 2017-10-01 18:46 ./patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-01 18:46 ./patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 226 2017-10-05 16:56 ./patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 507268 2017-10-05 16:56 ./patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-05 16:56 ./patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 676 2018-03-08 03:31 ./patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 742124 2018-03-08 03:31 ./patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-08 03:31 ./patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 561 2018-03-28 03:37 ./patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 3572592 2018-03-28 03:37 ./patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-28 03:37 ./patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 625 2018-03-28 03:37 ./patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1072244 2018-03-28 03:37 ./patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-28 03:37 ./patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 430 2018-04-26 19:09 ./patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 452236 2018-04-26 19:09 ./patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-04-26 19:09 ./patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 563 2018-04-06 19:35 ./patches/packages/patch-2.7.6-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 118356 2018-04-06 19:35 ./patches/packages/patch-2.7.6-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-04-06 19:35 ./patches/packages/patch-2.7.6-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 376 2018-05-16 21:15 ./patches/packages/php-5.6.36-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 12729600 2018-05-16 21:15 ./patches/packages/php-5.6.36-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-16 21:15 ./patches/packages/php-5.6.36-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 469 2017-03-10 19:16 ./patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 6431428 2017-03-10 19:16 ./patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-03-10 19:16 ./patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 446 2017-06-08 17:47 ./patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 55708 2017-06-08 17:47 ./patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-06-08 17:47 ./patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 373 2018-05-21 23:59 ./patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 512628 2018-05-21 23:59 ./patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-21 23:59 ./patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 339 2017-04-20 21:57 ./patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1060580 2017-04-20 21:57 ./patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-04-20 21:57 ./patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 438 2018-05-04 19:15 ./patches/packages/python-2.7.15-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 14570816 2018-05-04 19:15 ./patches/packages/python-2.7.15-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-04 19:15 ./patches/packages/python-2.7.15-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 584 2017-07-18 18:26 ./patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 42968 2017-07-18 18:26 ./patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-07-18 18:26 ./patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 528 2018-01-30 19:39 ./patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 330940 2018-01-30 19:39 ./patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-01-30 19:39 ./patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 410 2018-03-29 20:46 ./patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 7859948 2018-03-29 20:46 ./patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-29 20:46 ./patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 425 2017-05-01 23:20 ./patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 164712 2017-05-01 23:20 ./patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-05-01 23:20 ./patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 509 2018-03-13 19:07 ./patches/packages/samba-4.4.16-x86_64-3_slack14.2.txt +-rw-r--r-- 1 root root 10859416 2018-03-13 19:07 ./patches/packages/samba-4.4.16-x86_64-3_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-03-13 19:07 ./patches/packages/samba-4.4.16-x86_64-3_slack14.2.txz.asc +-rw-r--r-- 1 root root 330 2017-01-14 01:16 ./patches/packages/scim-1.4.17-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1057092 2017-01-14 01:16 ./patches/packages/scim-1.4.17-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-01-14 01:16 ./patches/packages/scim-1.4.17-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 654 2016-08-23 17:21 ./patches/packages/screen-4.4.0-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 539660 2016-08-23 17:21 ./patches/packages/screen-4.4.0-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-08-23 17:21 ./patches/packages/screen-4.4.0-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 480 2016-09-12 18:37 ./patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 640764 2016-09-12 18:37 ./patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-09-12 18:37 ./patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 434 2018-05-03 20:09 ./patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 51382296 2018-05-03 20:09 ./patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-03 20:09 ./patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 673 2018-05-03 20:09 ./patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1172320 2018-05-03 20:09 ./patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-03 20:09 ./patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 584 2017-07-28 19:59 ./patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 127288 2017-07-28 19:59 ./patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-07-28 19:59 ./patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 510 2016-08-22 18:35 ./patches/packages/stunnel-5.35-x86_64-2_slack14.2.txt +-rw-r--r-- 1 root root 165448 2016-08-22 18:35 ./patches/packages/stunnel-5.35-x86_64-2_slack14.2.txz +-rw-r--r-- 1 root root 163 2016-08-22 18:35 ./patches/packages/stunnel-5.35-x86_64-2_slack14.2.txz.asc +-rw-r--r-- 1 root root 597 2017-08-10 20:20 ./patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 4557732 2017-08-10 20:20 ./patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-08-10 20:20 ./patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 414 2017-05-31 22:54 ./patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 628168 2017-05-31 22:54 ./patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-05-31 22:54 ./patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 424 2017-09-07 20:58 ./patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 370604 2017-09-07 20:58 ./patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-09-07 20:58 ./patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 398 2018-05-08 01:31 ./patches/packages/wget-1.19.5-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 629040 2018-05-08 01:31 ./patches/packages/wget-1.19.5-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2018-05-08 01:31 ./patches/packages/wget-1.19.5-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 603 2017-10-17 04:44 ./patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 1059540 2017-10-17 04:44 ./patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-17 04:44 ./patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 369 2017-10-25 05:12 ./patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 2369896 2017-10-25 05:12 ./patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-25 05:12 ./patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txz.asc +-rw-r--r-- 1 root root 698 2017-10-18 17:23 ./patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 1891852 2017-10-18 17:23 ./patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-18 17:23 ./patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 370 2017-10-18 17:23 ./patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 869324 2017-10-18 17:23 ./patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-18 17:23 ./patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 595 2017-10-18 17:23 ./patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 581680 2017-10-18 17:23 ./patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-18 17:23 ./patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 693 2017-10-18 17:23 ./patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txt +-rw-r--r-- 1 root root 719752 2017-10-18 17:23 ./patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-10-18 17:23 ./patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txz.asc +-rw-r--r-- 1 root root 467 2017-12-24 18:04 ./patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txt +-rw-r--r-- 1 root root 5013380 2017-12-24 18:04 ./patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txz +-rw-r--r-- 1 root root 163 2017-12-24 18:04 ./patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txz.asc +drwxr-xr-x 100 root root 4096 2018-05-25 20:11 ./patches/source +drwxr-xr-x 4 root root 4096 2017-09-21 17:25 ./patches/source/NetworkManager +-rw-r--r-- 1 root root 938 2016-03-22 18:59 ./patches/source/NetworkManager/55NetworkManager +-rw-r--r-- 1 root root 3821500 2017-09-20 13:29 ./patches/source/NetworkManager/NetworkManager-1.8.4.tar.xz +-rwxr-xr-x 1 root root 6154 2017-10-27 18:03 ./patches/source/NetworkManager/NetworkManager.SlackBuild +-rw-r--r-- 1 root root 139 2016-04-22 03:58 ./patches/source/NetworkManager/NetworkManager.conf +drwxr-xr-x 2 root root 4096 2016-03-25 04:54 ./patches/source/NetworkManager/conf.d +-rw-r--r-- 1 root root 324 2016-04-22 03:57 ./patches/source/NetworkManager/conf.d/00-dhcp-client.conf +-rw-r--r-- 1 root root 23 2016-03-24 19:11 ./patches/source/NetworkManager/conf.d/00-rc-manager.conf +-rw-r--r-- 1 root root 568 2016-03-25 04:35 ./patches/source/NetworkManager/doinst.sh.gz +drwxr-xr-x 2 root root 4096 2017-07-07 20:34 ./patches/source/NetworkManager/patches +-rw-r--r-- 1 root root 2674 2017-05-25 19:37 ./patches/source/NetworkManager/rc.networkmanager +-rw-r--r-- 1 root root 1068 2013-10-08 04:28 ./patches/source/NetworkManager/slack-desc +drwxr-xr-x 3 root root 4096 2014-04-22 05:25 ./patches/source/bash +drwxr-xr-x 2 root root 4096 2017-09-07 18:29 ./patches/source/bash/bash-4.3-patches +-rw-r--r-- 1 root root 1617 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-001 +-rw-r--r-- 1 root root 72 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-001.sig +-rw-r--r-- 1 root root 1594 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-002 +-rw-r--r-- 1 root root 72 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-002.sig +-rw-r--r-- 1 root root 1465 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-003 +-rw-r--r-- 1 root root 72 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-003.sig +-rw-r--r-- 1 root root 1534 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-004 +-rw-r--r-- 1 root root 72 2014-03-28 15:12 ./patches/source/bash/bash-4.3-patches/bash43-004.sig +-rw-r--r-- 1 root root 2636 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-005 +-rw-r--r-- 1 root root 72 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-005.sig +-rw-r--r-- 1 root root 1445 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-006 +-rw-r--r-- 1 root root 72 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-006.sig +-rw-r--r-- 1 root root 1331 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-007 +-rw-r--r-- 1 root root 72 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-007.sig +-rw-r--r-- 1 root root 4575 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-008 +-rw-r--r-- 1 root root 72 2014-03-28 15:13 ./patches/source/bash/bash-4.3-patches/bash43-008.sig +-rw-r--r-- 1 root root 2413 2014-04-10 15:49 ./patches/source/bash/bash-4.3-patches/bash43-009 +-rw-r--r-- 1 root root 72 2014-04-10 15:49 ./patches/source/bash/bash-4.3-patches/bash43-009.sig +-rw-r--r-- 1 root root 5357 2014-04-10 15:49 ./patches/source/bash/bash-4.3-patches/bash43-010 +-rw-r--r-- 1 root root 72 2014-04-10 15:49 ./patches/source/bash/bash-4.3-patches/bash43-010.sig +-rw-r--r-- 1 root root 1533 2014-04-10 15:50 ./patches/source/bash/bash-4.3-patches/bash43-011 +-rw-r--r-- 1 root root 72 2014-04-10 15:50 ./patches/source/bash/bash-4.3-patches/bash43-011.sig +-rw-r--r-- 1 root root 1365 2014-05-15 12:29 ./patches/source/bash/bash-4.3-patches/bash43-012 +-rw-r--r-- 1 root root 72 2014-05-15 12:29 ./patches/source/bash/bash-4.3-patches/bash43-012.sig +-rw-r--r-- 1 root root 2151 2014-05-15 12:29 ./patches/source/bash/bash-4.3-patches/bash43-013 +-rw-r--r-- 1 root root 72 2014-05-15 12:29 ./patches/source/bash/bash-4.3-patches/bash43-013.sig +-rw-r--r-- 1 root root 3533 2014-05-15 12:29 ./patches/source/bash/bash-4.3-patches/bash43-014 +-rw-r--r-- 1 root root 72 2014-05-15 12:29 ./patches/source/bash/bash-4.3-patches/bash43-014.sig +-rw-r--r-- 1 root root 1894 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-015 +-rw-r--r-- 1 root root 72 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-015.sig +-rw-r--r-- 1 root root 3674 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-016 +-rw-r--r-- 1 root root 72 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-016.sig +-rw-r--r-- 1 root root 1565 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-017 +-rw-r--r-- 1 root root 72 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-017.sig +-rw-r--r-- 1 root root 1315 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-018 +-rw-r--r-- 1 root root 72 2014-05-15 12:30 ./patches/source/bash/bash-4.3-patches/bash43-018.sig +-rw-r--r-- 1 root root 2610 2014-08-01 19:34 ./patches/source/bash/bash-4.3-patches/bash43-019 +-rw-r--r-- 1 root root 72 2014-08-01 19:34 ./patches/source/bash/bash-4.3-patches/bash43-019.sig +-rw-r--r-- 1 root root 2777 2014-08-01 19:34 ./patches/source/bash/bash-4.3-patches/bash43-020 +-rw-r--r-- 1 root root 72 2014-08-01 19:34 ./patches/source/bash/bash-4.3-patches/bash43-020.sig +-rw-r--r-- 1 root root 1623 2014-08-01 19:34 ./patches/source/bash/bash-4.3-patches/bash43-021 +-rw-r--r-- 1 root root 72 2014-08-01 19:34 ./patches/source/bash/bash-4.3-patches/bash43-021.sig +-rw-r--r-- 1 root root 1782 2014-08-01 19:35 ./patches/source/bash/bash-4.3-patches/bash43-022 +-rw-r--r-- 1 root root 72 2014-08-01 19:35 ./patches/source/bash/bash-4.3-patches/bash43-022.sig +-rw-r--r-- 1 root root 3414 2014-08-18 14:55 ./patches/source/bash/bash-4.3-patches/bash43-023 +-rw-r--r-- 1 root root 72 2014-08-18 14:55 ./patches/source/bash/bash-4.3-patches/bash43-023.sig +-rw-r--r-- 1 root root 1909 2014-08-18 14:55 ./patches/source/bash/bash-4.3-patches/bash43-024 +-rw-r--r-- 1 root root 72 2014-08-18 14:55 ./patches/source/bash/bash-4.3-patches/bash43-024.sig +-rw-r--r-- 1 root root 3940 2014-09-24 14:24 ./patches/source/bash/bash-4.3-patches/bash43-025 +-rw-r--r-- 1 root root 72 2014-09-24 14:24 ./patches/source/bash/bash-4.3-patches/bash43-025.sig +-rw-r--r-- 1 root root 1575 2014-09-26 21:02 ./patches/source/bash/bash-4.3-patches/bash43-026 +-rw-r--r-- 1 root root 72 2014-09-26 21:02 ./patches/source/bash/bash-4.3-patches/bash43-026.sig +-rw-r--r-- 1 root root 6889 2014-09-28 02:38 ./patches/source/bash/bash-4.3-patches/bash43-027 +-rw-r--r-- 1 root root 72 2014-09-28 02:38 ./patches/source/bash/bash-4.3-patches/bash43-027.sig +-rw-r--r-- 1 root root 69606 2014-10-01 17:29 ./patches/source/bash/bash-4.3-patches/bash43-028 +-rw-r--r-- 1 root root 72 2014-10-01 17:29 ./patches/source/bash/bash-4.3-patches/bash43-028.sig +-rw-r--r-- 1 root root 1824 2014-10-03 02:14 ./patches/source/bash/bash-4.3-patches/bash43-029 +-rw-r--r-- 1 root root 72 2014-10-03 02:14 ./patches/source/bash/bash-4.3-patches/bash43-029.sig +-rw-r--r-- 1 root root 63206 2014-10-05 23:01 ./patches/source/bash/bash-4.3-patches/bash43-030 +-rw-r--r-- 1 root root 72 2014-10-05 23:01 ./patches/source/bash/bash-4.3-patches/bash43-030.sig +-rw-r--r-- 1 root root 3689 2014-12-30 15:40 ./patches/source/bash/bash-4.3-patches/bash43-031 +-rw-r--r-- 1 root root 72 2014-12-30 15:40 ./patches/source/bash/bash-4.3-patches/bash43-031.sig +-rw-r--r-- 1 root root 1734 2014-12-29 19:45 ./patches/source/bash/bash-4.3-patches/bash43-032 +-rw-r--r-- 1 root root 72 2014-12-29 19:45 ./patches/source/bash/bash-4.3-patches/bash43-032.sig +-rw-r--r-- 1 root root 7038 2014-12-29 19:46 ./patches/source/bash/bash-4.3-patches/bash43-033 +-rw-r--r-- 1 root root 72 2014-12-29 19:46 ./patches/source/bash/bash-4.3-patches/bash43-033.sig +-rw-r--r-- 1 root root 2392 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-034 +-rw-r--r-- 1 root root 72 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-034.sig +-rw-r--r-- 1 root root 1800 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-035 +-rw-r--r-- 1 root root 72 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-035.sig +-rw-r--r-- 1 root root 1539 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-036 +-rw-r--r-- 1 root root 72 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-036.sig +-rw-r--r-- 1 root root 1284 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-037 +-rw-r--r-- 1 root root 72 2015-05-19 18:52 ./patches/source/bash/bash-4.3-patches/bash43-037.sig +-rw-r--r-- 1 root root 2354 2015-05-19 19:48 ./patches/source/bash/bash-4.3-patches/bash43-038 +-rw-r--r-- 1 root root 72 2015-05-19 19:48 ./patches/source/bash/bash-4.3-patches/bash43-038.sig +-rw-r--r-- 1 root root 1531 2015-05-19 18:53 ./patches/source/bash/bash-4.3-patches/bash43-039 +-rw-r--r-- 1 root root 72 2015-05-19 18:53 ./patches/source/bash/bash-4.3-patches/bash43-039.sig +-rw-r--r-- 1 root root 1532 2015-08-13 19:40 ./patches/source/bash/bash-4.3-patches/bash43-040 +-rw-r--r-- 1 root root 72 2015-08-13 19:40 ./patches/source/bash/bash-4.3-patches/bash43-040.sig +-rw-r--r-- 1 root root 2362 2015-08-13 19:40 ./patches/source/bash/bash-4.3-patches/bash43-041 +-rw-r--r-- 1 root root 72 2015-08-13 19:40 ./patches/source/bash/bash-4.3-patches/bash43-041.sig +-rw-r--r-- 1 root root 1535 2015-08-13 19:41 ./patches/source/bash/bash-4.3-patches/bash43-042 +-rw-r--r-- 1 root root 72 2015-08-13 19:41 ./patches/source/bash/bash-4.3-patches/bash43-042.sig +-rw-r--r-- 1 root root 1942 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-043 +-rw-r--r-- 1 root root 72 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-043.sig +-rw-r--r-- 1 root root 1658 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-044 +-rw-r--r-- 1 root root 72 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-044.sig +-rw-r--r-- 1 root root 1312 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-045 +-rw-r--r-- 1 root root 72 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-045.sig +-rw-r--r-- 1 root root 1494 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-046 +-rw-r--r-- 1 root root 72 2016-06-17 13:39 ./patches/source/bash/bash-4.3-patches/bash43-046.sig +-rw-r--r-- 1 root root 4437 2016-10-04 17:57 ./patches/source/bash/bash-4.3-patches/bash43-047 +-rw-r--r-- 1 root root 72 2016-10-04 17:57 ./patches/source/bash/bash-4.3-patches/bash43-047.sig +-rw-r--r-- 1 root root 1612 2016-10-04 17:57 ./patches/source/bash/bash-4.3-patches/bash43-048 +-rw-r--r-- 1 root root 72 2016-10-04 17:57 ./patches/source/bash/bash-4.3-patches/bash43-048.sig +-rw-r--r-- 1 root root 4566432 2014-02-26 14:25 ./patches/source/bash/bash-4.3.tar.xz +-rwxr-xr-x 1 root root 4989 2017-09-07 20:19 ./patches/source/bash/bash.SlackBuild +-rw-r--r-- 1 root root 189 2009-02-23 21:59 ./patches/source/bash/doinst.sh.gz +-rw-r--r-- 1 root root 965 2002-03-23 21:47 ./patches/source/bash/slack-desc +drwxr-xr-x 3 root root 4096 2018-01-17 03:23 ./patches/source/bind +-rw-r--r-- 1 root root 5120 2007-06-08 04:48 ./patches/source/bind/3link.sh +-rw-r--r-- 1 root root 9452495 2018-01-16 19:40 ./patches/source/bind/bind-9.10.6-P1.tar.gz +-rw-r--r-- 1 root root 873 2018-01-16 19:40 ./patches/source/bind/bind-9.10.6-P1.tar.gz.asc +-rw-r--r-- 1 root root 873 2018-01-16 19:40 ./patches/source/bind/bind-9.10.6-P1.tar.gz.sha1.asc +-rw-r--r-- 1 root root 873 2018-01-16 19:40 ./patches/source/bind/bind-9.10.6-P1.tar.gz.sha256.asc +-rw-r--r-- 1 root root 873 2018-01-16 19:40 ./patches/source/bind/bind-9.10.6-P1.tar.gz.sha512.asc +-rwxr-xr-x 1 root root 5192 2018-01-17 02:57 ./patches/source/bind/bind.SlackBuild +-rw-r--r-- 1 root root 2777 2017-07-14 15:10 ./patches/source/bind/bind.libidn.patch.gz +-rw-r--r-- 1 root root 280 2006-02-18 19:10 ./patches/source/bind/bind.so_bsdcompat.diff.gz +drwxr-xr-x 2 root root 4096 2014-12-09 19:28 ./patches/source/bind/caching-example +-rw-r--r-- 1 root root 195 2001-05-18 02:03 ./patches/source/bind/caching-example/localhost.zone +-rw-r--r-- 1 root root 681 2008-04-13 21:47 ./patches/source/bind/caching-example/named.conf +-rw-r--r-- 1 root root 433 2011-03-26 06:54 ./patches/source/bind/caching-example/named.local +-rw-r--r-- 1 root root 3175 2014-11-05 17:56 ./patches/source/bind/caching-example/named.root +-rw-r--r-- 1 root root 514 2009-05-23 08:11 ./patches/source/bind/doinst.sh.gz +-rw-r--r-- 1 root root 3378 2010-06-24 17:32 ./patches/source/bind/rc.bind +-rw-r--r-- 1 root root 791 2002-02-27 02:45 ./patches/source/bind/slack-desc +drwxr-xr-x 3 root root 4096 2017-09-14 17:08 ./patches/source/bluez +-rw-r--r-- 1 root root 838 2015-11-25 21:02 ./patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch.gz +-rw-r--r-- 1 root root 1718920 2017-09-14 10:09 ./patches/source/bluez/bluez-5.47.tar.xz +-rwxr-xr-x 1 root root 5812 2017-09-14 17:13 ./patches/source/bluez/bluez.SlackBuild +-rw-r--r-- 1 root root 128 2016-03-26 18:17 ./patches/source/bluez/btusb.conf +drwxr-xr-x 2 root root 4096 2016-04-18 18:04 ./patches/source/bluez/config +-rw-r--r-- 1 root root 274 2015-11-26 06:13 ./patches/source/bluez/config/defaultconfig +-rw-r--r-- 1 root root 1419 2016-04-18 18:05 ./patches/source/bluez/config/rc.bluetooth +-rw-r--r-- 1 root root 148 2015-11-26 06:03 ./patches/source/bluez/config/uart.conf +-rw-r--r-- 1 root root 379 2016-04-18 18:06 ./patches/source/bluez/doinst.sh.gz +-rw-r--r-- 1 root root 803 2010-05-02 05:59 ./patches/source/bluez/slack-desc +drwxr-xr-x 3 root root 4096 2017-07-07 20:40 ./patches/source/ca-certificates +-rwxr-xr-x 1 root root 3148 2017-07-07 20:47 ./patches/source/ca-certificates/ca-certificates.SlackBuild +-rw-r--r-- 1 root root 298648 2017-05-19 15:18 ./patches/source/ca-certificates/ca-certificates_20161130+nmu1.tar.xz +-rw-r--r-- 1 root root 315 2012-09-11 21:13 ./patches/source/ca-certificates/doinst.sh.gz +drwxr-xr-x 2 root root 4096 2013-06-28 04:48 ./patches/source/ca-certificates/patches +-rw-r--r-- 1 root root 356 2013-07-25 18:11 ./patches/source/ca-certificates/patches/fixup_DESTDIR.diff.gz +-rw-r--r-- 1 root root 374 2015-09-14 21:52 ./patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff.gz +-rw-r--r-- 1 root root 128 2012-09-11 21:12 ./patches/source/ca-certificates/setup.11.cacerts +-rw-r--r-- 1 root root 895 2009-07-02 03:53 ./patches/source/ca-certificates/slack-desc +drwxr-xr-x 2 root root 4096 2018-05-16 20:28 ./patches/source/curl +-rwxr-xr-x 1 root root 86 2012-04-08 00:28 ./patches/source/curl/cacert-fetch.sh +-rw-r--r-- 1 root root 122017 2018-03-07 04:12 ./patches/source/curl/cacert.pem.bz2 +-rw-r--r-- 1 root root 2338104 2018-05-16 06:19 ./patches/source/curl/curl-7.60.0.tar.xz +-rw-r--r-- 1 root root 488 2018-05-16 06:19 ./patches/source/curl/curl-7.60.0.tar.xz.asc +-rwxr-xr-x 1 root root 4577 2018-01-26 00:51 ./patches/source/curl/curl.SlackBuild +-rw-r--r-- 1 root root 1010 2008-02-11 03:44 ./patches/source/curl/slack-desc +drwxr-xr-x 2 root root 4096 2017-07-27 00:43 ./patches/source/dbus +-rw-r--r-- 1 root root 1354308 2016-03-07 19:44 ./patches/source/dbus/dbus-1.10.8.tar.xz +-rw-r--r-- 1 root root 519 2015-10-03 22:47 ./patches/source/dbus/dbus-1.10.x-allow_root_globally.diff.gz +-rwxr-xr-x 1 root root 4820 2017-07-27 00:43 ./patches/source/dbus/dbus.SlackBuild +-rw-r--r-- 1 root root 1475 2017-07-26 22:55 ./patches/source/dbus/dbus.expat222fix.diff.gz +-rw-r--r-- 1 root root 394 2015-03-09 19:24 ./patches/source/dbus/doinst.sh.gz +-rw-r--r-- 1 root root 816 2015-03-17 17:59 ./patches/source/dbus/rc.messagebus.gz +-rw-r--r-- 1 root root 945 2007-10-21 22:41 ./patches/source/dbus/slack-desc +drwxr-xr-x 2 root root 4096 2018-02-28 21:46 ./patches/source/dhcp +-rw-r--r-- 1 root root 414 2017-08-03 20:32 ./patches/source/dhcp/dhclient-script.PATH.diff.gz +-rw-r--r-- 1 root root 11164378 2018-02-28 12:46 ./patches/source/dhcp/dhcp-4.4.1.tar.gz +-rw-r--r-- 1 root root 873 2018-02-28 12:46 ./patches/source/dhcp/dhcp-4.4.1.tar.gz.asc +-rw-r--r-- 1 root root 873 2018-02-28 12:46 ./patches/source/dhcp/dhcp-4.4.1.tar.gz.sha1.asc +-rw-r--r-- 1 root root 873 2018-02-28 12:46 ./patches/source/dhcp/dhcp-4.4.1.tar.gz.sha256.asc +-rw-r--r-- 1 root root 873 2018-02-28 12:46 ./patches/source/dhcp/dhcp-4.4.1.tar.gz.sha512.asc +-rwxr-xr-x 1 root root 1667 2011-04-06 19:13 ./patches/source/dhcp/dhcp-remove-bind-tarball.sh +-rwxr-xr-x 1 root root 5322 2018-02-28 21:49 ./patches/source/dhcp/dhcp.SlackBuild +-rw-r--r-- 1 root root 309 2011-03-24 13:39 ./patches/source/dhcp/doinst.sh.gz +-rw-r--r-- 1 root root 1099 2002-02-27 02:14 ./patches/source/dhcp/slack-desc +drwxr-xr-x 2 root root 4096 2017-10-02 17:00 ./patches/source/dnsmasq +-rw-r--r-- 1 root root 489172 2017-10-02 13:42 ./patches/source/dnsmasq/dnsmasq-2.78.tar.xz +-rw-r--r-- 1 root root 819 2017-10-02 13:42 ./patches/source/dnsmasq/dnsmasq-2.78.tar.xz.asc +-rwxr-xr-x 1 root root 3536 2017-10-02 17:00 ./patches/source/dnsmasq/dnsmasq.SlackBuild +-rw-r--r-- 1 root root 543 2010-01-22 21:33 ./patches/source/dnsmasq/dnsmasq.leasedir.diff.gz +-rw-r--r-- 1 root root 376 2010-01-22 21:37 ./patches/source/dnsmasq/doinst.sh.gz +-rw-r--r-- 1 root root 265 2005-10-16 20:02 ./patches/source/dnsmasq/rc.dnsmasq.gz +-rw-r--r-- 1 root root 902 2017-10-02 16:51 ./patches/source/dnsmasq/slack-desc +drwxr-xr-x 2 root root 4096 2017-09-12 17:31 ./patches/source/emacs +-rw-r--r-- 1 root root 312 2008-04-06 03:10 ./patches/source/emacs/doinst.sh.gz +-rw-r--r-- 1 root root 42854740 2017-09-11 20:45 ./patches/source/emacs/emacs-25.3.tar.xz +-rw-r--r-- 1 root root 488 2017-09-11 20:45 ./patches/source/emacs/emacs-25.3.tar.xz.sig +-rwxr-xr-x 1 root root 6007 2017-09-12 17:53 ./patches/source/emacs/emacs.SlackBuild +-rw-r--r-- 1 root root 549 2008-04-06 03:11 ./patches/source/emacs/slack-desc +drwxr-xr-x 2 root root 4096 2017-07-18 03:29 ./patches/source/expat +-rw-r--r-- 1 root root 341768 2017-07-13 20:20 ./patches/source/expat/expat-2.2.2.tar.xz +-rwxr-xr-x 1 root root 2916 2017-07-18 04:37 ./patches/source/expat/expat.SlackBuild +-rw-r--r-- 1 root root 720 2008-02-11 03:44 ./patches/source/expat/slack-desc +drwxr-xr-x 2 root root 4096 2017-05-16 03:44 ./patches/source/freetype +-rw-r--r-- 1 root root 1531140 2016-02-08 22:35 ./patches/source/freetype/freetype-2.6.3.tar.xz +-rw-r--r-- 1 root root 580 2017-05-16 03:40 ./patches/source/freetype/freetype.CVE-2017-8287.diff.gz +-rwxr-xr-x 1 root root 4107 2017-05-16 03:46 ./patches/source/freetype/freetype.SlackBuild +-rw-r--r-- 1 root root 498 2015-10-05 03:13 ./patches/source/freetype/freetype.illadvisederror.diff.gz +-rw-r--r-- 1 root root 358 2015-10-31 16:21 ./patches/source/freetype/freetype.subpixel.rendering.diff.gz +-rw-r--r-- 1 root root 953 2016-02-09 19:03 ./patches/source/freetype/slack-desc +drwxr-xr-x 3 root root 4096 2018-02-06 00:36 ./patches/source/gcc +-rw-r--r-- 1 root root 2687 2018-02-05 19:52 ./patches/source/gcc/0001-i386-Move-struct-ix86_frame-to-machine_function.diff.gz +-rw-r--r-- 1 root root 1134 2018-02-05 19:52 ./patches/source/gcc/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff.gz +-rw-r--r-- 1 root root 943 2018-02-05 19:52 ./patches/source/gcc/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff.gz +-rw-r--r-- 1 root root 1039 2018-02-05 19:52 ./patches/source/gcc/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff.gz +-rw-r--r-- 1 root root 2812 2018-02-05 19:52 ./patches/source/gcc/0005-x86-Add-mindirect-branch-doc.diff.gz +-rw-r--r-- 1 root root 9620 2018-02-05 19:52 ./patches/source/gcc/0005-x86-Add-mindirect-branch.diff.gz +-rw-r--r-- 1 root root 2666 2018-02-05 19:52 ./patches/source/gcc/0006-x86-Add-mfunction-return-doc.diff.gz +-rw-r--r-- 1 root root 6421 2018-02-05 19:52 ./patches/source/gcc/0006-x86-Add-mfunction-return.diff.gz +-rw-r--r-- 1 root root 2120 2018-02-05 19:52 ./patches/source/gcc/0007-x86-Add-mindirect-branch-register-doc.diff.gz +-rw-r--r-- 1 root root 4008 2018-02-05 19:52 ./patches/source/gcc/0007-x86-Add-mindirect-branch-register.diff.gz +-rw-r--r-- 1 root root 976 2018-02-05 19:52 ./patches/source/gcc/0008-x86-Add-V-register-operand-modifier-doc.diff.gz +-rw-r--r-- 1 root root 1788 2018-02-05 19:52 ./patches/source/gcc/0008-x86-Add-V-register-operand-modifier.diff.gz +-rw-r--r-- 1 root root 1740 2018-02-05 19:52 ./patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff.gz +-rw-r--r-- 1 root root 1264 2018-02-05 19:52 ./patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff.gz +-rw-r--r-- 1 root root 164368 2011-07-19 16:36 ./patches/source/gcc/antlr-runtime-3.4.jar +-rw-r--r-- 1 root root 224 2015-08-03 18:13 ./patches/source/gcc/c89.sh +-rw-r--r-- 1 root root 215 2015-08-03 18:13 ./patches/source/gcc/c99.sh +-rw-r--r-- 1 root root 3206 2012-01-06 12:37 ./patches/source/gcc/create_gcj_jvm.sh +-rw-r--r-- 1 root root 1619429 2013-12-10 16:23 ./patches/source/gcc/ecj-4.9.jar +-rw-r--r-- 1 root root 124 2011-11-29 10:16 ./patches/source/gcc/ecj.sh +-rw-r--r-- 1 root root 42 2015-08-19 21:31 ./patches/source/gcc/ecj.url +-rw-r--r-- 1 root root 482116 2009-01-16 18:32 ./patches/source/gcc/fastjar-0.97.tar.xz +drwxr-xr-x 2 root root 4096 2010-10-04 23:57 ./patches/source/gcc/fastjar-patches +-rw-r--r-- 1 root root 554 2009-01-16 18:34 ./patches/source/gcc/fastjar-patches/1000-fastjar-0.97-segfault.patch.gz +-rw-r--r-- 1 root root 345 2009-12-22 12:22 ./patches/source/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch.gz +-rw-r--r-- 1 root root 358 2010-06-11 08:22 ./patches/source/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch.gz +-rw-r--r-- 1 root root 1211 2010-06-11 08:22 ./patches/source/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch.gz +-rw-r--r-- 1 root root 514 2010-06-24 20:18 ./patches/source/gcc/fastjar-patches/1004-fastjar-man.patch.gz +-rw-r--r-- 1 root root 71096120 2017-10-10 12:43 ./patches/source/gcc/gcc-5.5.0.tar.xz +-rw-r--r-- 1 root root 65 2017-10-10 12:43 ./patches/source/gcc/gcc-5.5.0.tar.xz.sig +-rw-r--r-- 1 root root 527 2010-08-01 21:55 ./patches/source/gcc/gcc-no_fixincludes.diff.gz +-rwxr-xr-x 1 root root 30808 2018-02-05 23:13 ./patches/source/gcc/gcc.SlackBuild +-rw-r--r-- 1 root root 765 2016-03-06 18:55 ./patches/source/gcc/slack-desc.gcc +-rw-r--r-- 1 root root 753 2002-02-21 23:00 ./patches/source/gcc/slack-desc.gcc-g++ +-rw-r--r-- 1 root root 1083 2011-05-28 16:23 ./patches/source/gcc/slack-desc.gcc-gfortran +-rw-r--r-- 1 root root 915 2016-03-11 18:34 ./patches/source/gcc/slack-desc.gcc-gnat +-rw-r--r-- 1 root root 1033 2012-01-06 20:09 ./patches/source/gcc/slack-desc.gcc-go +-rw-r--r-- 1 root root 817 2006-07-30 03:26 ./patches/source/gcc/slack-desc.gcc-java +-rw-r--r-- 1 root root 962 2006-07-30 03:27 ./patches/source/gcc/slack-desc.gcc-objc +drwxr-xr-x 2 root root 4096 2018-04-17 18:26 ./patches/source/gd +-rwxr-xr-x 1 root root 3592 2017-07-18 02:35 ./patches/source/gd/gd.SlackBuild +-rw-r--r-- 1 root root 2594092 2017-08-30 12:59 ./patches/source/gd/libgd-2.2.5.tar.xz +-rw-r--r-- 1 root root 952 2017-07-18 02:31 ./patches/source/gd/slack-desc +drwxr-xr-x 2 root root 4096 2017-07-02 02:22 ./patches/source/gegl +-rw-r--r-- 1 root root 1117 2017-07-02 02:20 ./patches/source/gegl/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch.gz +-rw-r--r-- 1 root root 2075 2017-07-02 02:20 ./patches/source/gegl/gegl-0.2.0-CVE-2012-4433.patch.gz +-rw-r--r-- 1 root root 1005 2017-07-02 02:20 ./patches/source/gegl/gegl-0.2.0-libopenraw.patch.gz +-rw-r--r-- 1 root root 559 2017-07-02 02:20 ./patches/source/gegl/gegl-0.2.0-linker-flags.patch.gz +-rw-r--r-- 1 root root 869 2017-07-02 02:20 ./patches/source/gegl/gegl-0.2.0-lua-5.2.patch.gz +-rw-r--r-- 1 root root 2386 2017-07-02 02:20 ./patches/source/gegl/gegl-0.2.0-remove-src-over-op.patch.gz +-rw-r--r-- 1 root root 7078700 2012-05-03 14:01 ./patches/source/gegl/gegl-0.2.0.tar.xz +-rwxr-xr-x 1 root root 3908 2017-09-27 19:07 ./patches/source/gegl/gegl.SlackBuild +-rw-r--r-- 1 root root 863 2012-07-22 17:01 ./patches/source/gegl/slack-desc +drwxr-xr-x 2 root root 4096 2017-04-21 19:50 ./patches/source/getmail +-rw-r--r-- 1 root root 132760 2017-04-21 19:50 ./patches/source/getmail/getmail-4.54.0.tar.xz +-rwxr-xr-x 1 root root 2088 2017-04-21 19:54 ./patches/source/getmail/getmail.SlackBuild +-rw-r--r-- 1 root root 821 2003-09-10 04:59 ./patches/source/getmail/slack-desc +drwxr-xr-x 2 root root 4096 2016-07-14 18:17 ./patches/source/gimp +-rw-r--r-- 1 root root 15758204 2016-07-13 20:44 ./patches/source/gimp/gimp-2.8.18.tar.xz +-rwxr-xr-x 1 root root 4153 2016-07-14 20:13 ./patches/source/gimp/gimp.SlackBuild +-rw-r--r-- 1 root root 928 2003-01-29 03:18 ./patches/source/gimp/slack-desc +drwxr-xr-x 2 root root 4096 2017-08-11 20:07 ./patches/source/git +-rw-r--r-- 1 root root 543 2017-08-10 17:57 ./patches/source/git/git-2.14.1.tar.sign +-rw-r--r-- 1 root root 4791876 2017-08-10 17:57 ./patches/source/git/git-2.14.1.tar.xz +-rwxr-xr-x 1 root root 4909 2017-08-11 20:23 ./patches/source/git/git.SlackBuild +-rw-r--r-- 1 root root 45 2015-09-01 20:04 ./patches/source/git/git.url +-rw-r--r-- 1 root root 851 2009-05-30 01:25 ./patches/source/git/slack-desc +drwxr-xr-x 2 root root 4096 2017-05-21 19:15 ./patches/source/gkrellm +-rw-r--r-- 1 root root 660728 2016-10-23 15:26 ./patches/source/gkrellm/gkrellm-2.3.10.tar.xz +-rw-r--r-- 1 root root 12374 2004-02-01 16:30 ./patches/source/gkrellm/gkrellm-countdown-0.1.1.tar.gz +-rwxr-xr-x 1 root root 4937 2017-05-22 20:42 ./patches/source/gkrellm/gkrellm.SlackBuild +-rw-r--r-- 1 root root 211 2008-10-26 01:35 ./patches/source/gkrellm/gkrellm.theme.defaults.diff.gz +-rw-r--r-- 1 root root 971 2004-04-29 18:52 ./patches/source/gkrellm/slack-desc +drwxr-xr-x 2 root root 4096 2016-08-23 17:36 ./patches/source/glib2 +-rw-r--r-- 1 root root 714 2015-11-26 03:20 ./patches/source/glib2/0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch +-rw-r--r-- 1 root root 516 2011-11-06 22:03 ./patches/source/glib2/doinst.sh.gz +-rw-r--r-- 1 root root 7344636 2015-11-06 22:54 ./patches/source/glib2/glib-2.46.2.tar.xz +-rw-r--r-- 1 root root 1459 2016-08-23 17:36 ./patches/source/glib2/glib.bug.758823.diff +-rwxr-xr-x 1 root root 4614 2016-08-23 17:40 ./patches/source/glib2/glib2.SlackBuild +-rw-r--r-- 1 root root 999 2011-03-27 21:04 ./patches/source/glib2/libglib2.csh +-rw-r--r-- 1 root root 982 2008-03-18 07:08 ./patches/source/glib2/libglib2.sh +-rw-r--r-- 1 root root 691 2003-01-11 05:50 ./patches/source/glib2/slack-desc +drwxr-xr-x 3 root root 4096 2017-07-05 21:02 ./patches/source/glibc +drwxr-xr-x 3 root root 4096 2018-05-08 04:43 ./patches/source/glibc-zoneinfo +-rw-r--r-- 1 root root 1137 2018-05-24 17:58 ./patches/source/glibc-zoneinfo/doinst.sh.gz +-rwxr-xr-x 1 root root 5017 2018-05-24 18:04 ./patches/source/glibc-zoneinfo/glibc-zoneinfo.SlackBuild +-rw-r--r-- 1 root root 969 2011-11-11 18:09 ./patches/source/glibc-zoneinfo/slack-desc +drwxr-xr-x 3 root root 4096 2015-12-17 23:39 ./patches/source/glibc-zoneinfo/timezone-scripts +-rwxr-xr-x 1 root root 2579 2015-12-11 17:32 ./patches/source/glibc-zoneinfo/timezone-scripts/output-updated-timeconfig.sh +drwxr-xr-x 2 root root 4096 2006-12-03 23:10 ./patches/source/glibc-zoneinfo/timezone-scripts/parts +-rw-r--r-- 1 root root 4548 2015-12-11 02:36 ./patches/source/glibc-zoneinfo/timezone-scripts/parts/00 +-rw-r--r-- 1 root root 13593 2015-12-17 23:39 ./patches/source/glibc-zoneinfo/timezone-scripts/parts/01 +-rw-r--r-- 1 root root 443 2006-12-03 22:53 ./patches/source/glibc-zoneinfo/timezone-scripts/parts/02 +-rw-r--r-- 1 root root 8913 2015-12-17 23:39 ./patches/source/glibc-zoneinfo/timezone-scripts/parts/03 +-rw-r--r-- 1 root root 888 2015-12-11 02:39 ./patches/source/glibc-zoneinfo/timezone-scripts/parts/04 +-rw-r--r-- 1 root root 87 2006-12-03 23:10 ./patches/source/glibc-zoneinfo/timezone-scripts/parts/README +-rw-r--r-- 1 root root 66 2003-02-16 21:17 ./patches/source/glibc-zoneinfo/timezone-scripts/setup.timeconfig +-rw-r--r-- 1 root root 28385 2015-12-17 21:29 ./patches/source/glibc-zoneinfo/timezone-scripts/timeconfig +-rw-r--r-- 1 root root 231732 2018-05-03 23:55 ./patches/source/glibc-zoneinfo/tzcode2018e.tar.gz +-rw-r--r-- 1 root root 819 2018-05-03 23:55 ./patches/source/glibc-zoneinfo/tzcode2018e.tar.gz.asc +-rw-r--r-- 1 root root 353953 2018-05-03 23:55 ./patches/source/glibc-zoneinfo/tzdata2018e.tar.gz +-rw-r--r-- 1 root root 819 2018-05-03 23:55 ./patches/source/glibc-zoneinfo/tzdata2018e.tar.gz.asc +-rw-r--r-- 1 root root 6747 2016-08-16 16:25 ./patches/source/glibc/doinst.sh-glibc +-rw-r--r-- 1 root root 4772 2014-05-04 22:16 ./patches/source/glibc/doinst.sh-glibc-solibs +-rw-r--r-- 1 root root 652 2009-01-09 04:49 ./patches/source/glibc/glibc-2.10-dns-no-gethostbyname4.diff.gz +-rw-r--r-- 1 root root 13455260 2016-02-19 05:49 ./patches/source/glibc/glibc-2.23.tar.xz +-rw-r--r-- 1 root root 473 2016-02-19 05:49 ./patches/source/glibc/glibc-2.23.tar.xz.sig +-rw-r--r-- 1 root root 2396 2015-12-17 23:07 ./patches/source/glibc/glibc-c-utf8-locale.patch.gz +-rwxr-xr-x 1 root root 174 2004-08-09 06:21 ./patches/source/glibc/glibc-cvs-checkout.sh +-rw-r--r-- 1 root root 943 2017-06-30 18:37 ./patches/source/glibc/glibc.3776f38f.diff.gz +-rw-r--r-- 1 root root 1736 2017-06-30 18:28 ./patches/source/glibc/glibc.46703a39.diff.gz +-rw-r--r-- 1 root root 640 2017-07-05 21:02 ./patches/source/glibc/glibc.6a824767.dont.assert.on.older.intel.cpus.diff.gz +-rw-r--r-- 1 root root 644 2017-06-30 18:27 ./patches/source/glibc/glibc.CVE-2017-1000366.3c7cd212.diff.gz +-rwxr-xr-x 1 root root 14669 2017-08-09 17:47 ./patches/source/glibc/glibc.SlackBuild +-rw-r--r-- 1 root root 698 2017-06-30 18:31 ./patches/source/glibc/glibc.adc7e06f.diff.gz +-rw-r--r-- 1 root root 2511 2017-06-30 18:29 ./patches/source/glibc/glibc.c69d4a0f.diff.gz +-rw-r--r-- 1 root root 722 2011-03-24 07:29 ./patches/source/glibc/glibc.ldd.trace.through.dynamic.linker.diff.gz +-rw-r--r-- 1 root root 304 2004-08-04 00:21 ./patches/source/glibc/glibc.locale.no-archive.diff.gz +-rw-r--r-- 1 root root 558 2010-10-19 07:02 ./patches/source/glibc/glibc.make-3.82.diff.gz +-rw-r--r-- 1 root root 246 2009-02-24 23:39 ./patches/source/glibc/glibc.revert.to.fix.build.breakages.diff.gz +-rw-r--r-- 1 root root 213 2006-08-22 06:33 ./patches/source/glibc/glibc.ru_RU.CP1251.diff.gz +-rw-r--r-- 1 root root 254 2007-10-31 01:17 ./patches/source/glibc/is_IS.diff.gz +drwxr-xr-x 2 root root 4096 2006-09-14 06:32 ./patches/source/glibc/profile.d +-rwxr-xr-x 1 root root 328 2011-03-27 21:19 ./patches/source/glibc/profile.d/glibc.csh.new +-rwxr-xr-x 1 root root 325 2006-09-14 08:26 ./patches/source/glibc/profile.d/glibc.sh.new +-rw-r--r-- 1 root root 845 2002-10-11 19:15 ./patches/source/glibc/slack-desc.glibc +-rw-r--r-- 1 root root 1139 2002-10-12 04:15 ./patches/source/glibc/slack-desc.glibc-debug +-rw-r--r-- 1 root root 814 2015-12-17 23:34 ./patches/source/glibc/slack-desc.glibc-i18n +-rw-r--r-- 1 root root 972 2005-11-18 17:02 ./patches/source/glibc/slack-desc.glibc-profile +-rw-r--r-- 1 root root 786 2002-03-23 23:26 ./patches/source/glibc/slack-desc.glibc-solibs +-rw-r--r-- 1 root root 1227 2006-11-23 03:35 ./patches/source/glibc/slack-desc.glibc-solibs-linuxthreads +drwxr-xr-x 2 root root 4096 2017-08-02 03:16 ./patches/source/gnupg +-rw-r--r-- 1 root root 2660120 2017-07-19 09:24 ./patches/source/gnupg/gnupg-1.4.22.tar.xz +-rwxr-xr-x 1 root root 3520 2016-08-23 18:35 ./patches/source/gnupg/gnupg.SlackBuild +-rw-r--r-- 1 root root 827 2003-02-25 23:37 ./patches/source/gnupg/slack-desc.gnupg +drwxr-xr-x 2 root root 4096 2017-01-11 00:00 ./patches/source/gnutls +-rw-r--r-- 1 root root 7264448 2017-01-09 08:06 ./patches/source/gnutls/gnutls-3.5.8.tar.xz +-rw-r--r-- 1 root root 287 2017-01-09 08:06 ./patches/source/gnutls/gnutls-3.5.8.tar.xz.sig +-rwxr-xr-x 1 root root 4087 2017-01-11 01:10 ./patches/source/gnutls/gnutls.SlackBuild +-rw-r--r-- 1 root root 950 2007-03-16 01:33 ./patches/source/gnutls/slack-desc +drwxr-xr-x 3 root root 4096 2016-09-10 16:28 ./patches/source/gtk+2 +-rw-r--r-- 1 root root 494 2014-05-13 07:02 ./patches/source/gtk+2/doinst.sh.gz +-rw-r--r-- 1 root root 394 2015-03-06 02:21 ./patches/source/gtk+2/fix_build_issues_on_tutorial_and_faq.diff.gz +-rw-r--r-- 1 root root 12805344 2016-09-09 22:08 ./patches/source/gtk+2/gtk+-2.24.31.tar.xz +-rw-r--r-- 1 root root 2102 2012-12-13 01:05 ./patches/source/gtk+2/gtk+-2.24.x.icon-compat.am.diff.gz +-rw-r--r-- 1 root root 1965 2012-12-13 01:05 ./patches/source/gtk+2/gtk+-2.24.x.icon-compat.diff.gz +-rwxr-xr-x 1 root root 6617 2016-09-10 16:41 ./patches/source/gtk+2/gtk+2.SlackBuild +-rw-r--r-- 1 root root 223 2015-03-19 03:12 ./patches/source/gtk+2/gtk.gtk-faq.diff.gz +-rw-r--r-- 1 root root 235 2015-03-19 03:05 ./patches/source/gtk+2/gtk.gtk-tut.diff.gz +-rw-r--r-- 1 root root 293 2010-02-08 20:43 ./patches/source/gtk+2/gtk.xid.nowarningflood.diff.gz +drwxr-xr-x 2 root root 4096 2003-01-11 06:27 ./patches/source/gtk+2/profile.d +-rwxr-xr-x 1 root root 32 2010-12-09 19:12 ./patches/source/gtk+2/profile.d/gtk+.csh +-rwxr-xr-x 1 root root 44 2010-12-09 19:13 ./patches/source/gtk+2/profile.d/gtk+.sh +-rw-r--r-- 1 root root 791 2008-02-11 03:44 ./patches/source/gtk+2/slack-desc +-rw-r--r-- 1 root root 339 2011-02-24 20:40 ./patches/source/gtk+2/update-gtk-immodules +-rw-r--r-- 1 root root 1459 2013-07-12 04:52 ./patches/source/gtk+2/update-gtk-immodules-2.0 +drwxr-xr-x 2 root root 4096 2017-10-25 16:44 ./patches/source/httpd +-rw-r--r-- 1 root root 437 2017-09-18 17:30 ./patches/source/httpd/apache-2.4.CVE-2017-9798.optionsbleed.patch.gz +-rw-r--r-- 1 root root 991 2017-06-27 18:38 ./patches/source/httpd/doinst.sh.gz +-rw-r--r-- 1 root root 6567926 2017-10-20 19:39 ./patches/source/httpd/httpd-2.4.29.tar.bz2 +-rw-r--r-- 1 root root 793 2017-10-20 19:39 ./patches/source/httpd/httpd-2.4.29.tar.bz2.asc +-rwxr-xr-x 1 root root 8410 2017-10-25 16:45 ./patches/source/httpd/httpd.SlackBuild +-rw-r--r-- 1 root root 260 2012-04-13 02:17 ./patches/source/httpd/httpd.runasapache.diff.gz +-rw-r--r-- 1 root root 112 2017-10-25 16:40 ./patches/source/httpd/httpd.url +-rw-r--r-- 1 root root 171 2010-11-09 20:22 ./patches/source/httpd/logrotate.httpd +-rw-r--r-- 1 root root 1061 2012-05-16 20:56 ./patches/source/httpd/rc.httpd +-rw-r--r-- 1 root root 970 2007-05-18 04:13 ./patches/source/httpd/slack-desc +drwxr-xr-x 2 root root 4096 2016-11-29 18:54 ./patches/source/intltool +-rw-r--r-- 1 root root 572 2015-11-21 21:21 ./patches/source/intltool/intltool-0.51.0-perl-5.22.patch.gz +-rw-r--r-- 1 root root 109372 2015-03-09 01:45 ./patches/source/intltool/intltool-0.51.0.tar.xz +-rwxr-xr-x 1 root root 4054 2016-11-29 19:04 ./patches/source/intltool/intltool.SlackBuild +-rw-r--r-- 1 root root 544 2016-11-29 18:53 ./patches/source/intltool/no-guess-builddir.diff.gz +-rw-r--r-- 1 root root 739 2016-11-29 17:35 ./patches/source/intltool/slack-desc +drwxr-xr-x 2 root root 4096 2018-02-15 21:20 ./patches/source/irssi +-rw-r--r-- 1 root root 264 2009-07-29 00:34 ./patches/source/irssi/doinst.sh.gz +-rw-r--r-- 1 root root 1034188 2018-02-15 18:38 ./patches/source/irssi/irssi-1.0.7.tar.xz +-rw-r--r-- 1 root root 195 2018-02-15 18:38 ./patches/source/irssi/irssi-1.0.7.tar.xz.asc +-rwxr-xr-x 1 root root 4452 2017-10-24 16:57 ./patches/source/irssi/irssi.SlackBuild +-rw-r--r-- 1 root root 789 2003-12-13 20:28 ./patches/source/irssi/slack-desc +drwxr-xr-x 10 root root 4096 2017-05-12 19:42 ./patches/source/kdelibs +-rwxr-xr-x 1 root root 18317 2017-02-14 19:52 ./patches/source/kdelibs/KDE.SlackBuild +-rw-r--r-- 1 root root 1886 2015-08-14 18:04 ./patches/source/kdelibs/KDE.options +drwxr-xr-x 2 root root 4096 2017-05-12 19:40 ./patches/source/kdelibs/build +-rw-r--r-- 1 root root 12 2017-05-12 19:41 ./patches/source/kdelibs/build/kdelibs +drwxr-xr-x 2 root root 4096 2017-05-12 19:39 ./patches/source/kdelibs/cmake +-rw-r--r-- 1 root root 498 2011-07-31 10:27 ./patches/source/kdelibs/cmake/kdelibs +drwxr-xr-x 2 root root 4096 2017-05-12 19:40 ./patches/source/kdelibs/doinst.sh +-rw-r--r-- 1 root root 242 2011-07-28 15:02 ./patches/source/kdelibs/doinst.sh/kdelibs +-rwxr-xr-x 1 root root 68 2017-05-12 19:42 ./patches/source/kdelibs/kdelibs.SlackBuild +-rw-r--r-- 1 root root 3322 2015-10-24 22:56 ./patches/source/kdelibs/modularize +drwxr-xr-x 2 root root 4096 2017-05-12 19:39 ./patches/source/kdelibs/modules +-rw-r--r-- 1 root root 8 2013-03-06 02:03 ./patches/source/kdelibs/modules/kdelibs +-rw-r--r-- 1 root root 108 2011-07-31 15:51 ./patches/source/kdelibs/noarch +-rw-r--r-- 1 root root 191 2012-10-13 20:59 ./patches/source/kdelibs/package-blacklist +drwxr-xr-x 3 root root 4096 2017-05-12 19:40 ./patches/source/kdelibs/patch +drwxr-xr-x 2 root root 4096 2017-04-07 20:41 ./patches/source/kdelibs/patch/kdelibs +-rw-r--r-- 1 root root 1082 2017-04-07 20:42 ./patches/source/kdelibs/patch/kdelibs.patch +-rw-r--r-- 1 root root 916 2013-10-20 23:21 ./patches/source/kdelibs/patch/kdelibs/coding-style-fixes.patch.gz +-rw-r--r-- 1 root root 361 2010-06-07 15:19 ./patches/source/kdelibs/patch/kdelibs/kdelibs.docbook.patch.gz +-rw-r--r-- 1 root root 347 2012-01-26 08:18 ./patches/source/kdelibs/patch/kdelibs/kdelibs.upnp_conditional.patch.gz +-rw-r--r-- 1 root root 955 2013-10-20 23:22 ./patches/source/kdelibs/patch/kdelibs/return-application-icons-properly.patch.gz +-rw-r--r-- 1 root root 572 2013-10-20 23:20 ./patches/source/kdelibs/patch/kdelibs/return-not-break.-copy-paste-error.patch.gz +drwxr-xr-x 2 root root 4096 2017-05-12 19:38 ./patches/source/kdelibs/post-install +-rw-r--r-- 1 root root 97 2011-06-12 23:40 ./patches/source/kdelibs/post-install/kdelibs.post-install +drwxr-xr-x 2 root root 4096 2017-05-12 19:39 ./patches/source/kdelibs/slack-desc +-rw-r--r-- 1 root root 649 2015-04-01 19:09 ./patches/source/kdelibs/slack-desc/kdelibs +drwxr-xr-x 2 root root 4096 2017-05-12 19:39 ./patches/source/kdelibs/src +-rw-r--r-- 1 root root 11640860 2017-05-10 08:47 ./patches/source/kdelibs/src/kdelibs-4.14.32.tar.xz +drwxr-xr-x 10 root root 4096 2016-10-26 20:10 ./patches/source/libX11 +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libX11/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/build +-rw-r--r-- 1 root root 12 2016-10-26 23:07 ./patches/source/libX11/build/libX11 +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/configure +-rw-r--r-- 1 root root 317 2010-12-04 23:25 ./patches/source/libX11/configure/libX11 +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/doinst.sh +-rwxr-xr-x 1 root root 82 2016-10-26 20:10 ./patches/source/libX11/libX11.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libX11/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libX11/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libX11/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/post-install +-rw-r--r-- 1 root root 102 2011-04-16 03:30 ./patches/source/libX11/post-install/libX11.post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/slack-desc +-rw-r--r-- 1 root root 762 2012-04-08 02:42 ./patches/source/libX11/slack-desc/libX11 +drwxr-xr-x 3 root root 4096 2016-10-26 20:10 ./patches/source/libX11/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:10 ./patches/source/libX11/src/lib +-rw-r--r-- 1 root root 1762644 2016-10-04 20:21 ./patches/source/libX11/src/lib/libX11-1.6.4.tar.xz +-rwxr-xr-x 1 root root 13192 2015-08-19 06:04 ./patches/source/libX11/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2017-11-29 07:02 ./patches/source/libXcursor +-rw-r--r-- 1 root root 183 2017-11-29 07:05 ./patches/source/libXcursor/arch.use.flags +drwxr-xr-x 2 root root 4096 2017-11-29 07:03 ./patches/source/libXcursor/build +-rwxr-xr-x 1 root root 507 2013-03-07 23:41 ./patches/source/libXcursor/build/increment.sh +-rw-r--r-- 1 root root 12 2017-11-29 07:06 ./patches/source/libXcursor/build/libXcursor +drwxr-xr-x 2 root root 4096 2014-01-13 21:54 ./patches/source/libXcursor/configure +-rw-r--r-- 1 root root 317 2010-11-05 06:13 ./patches/source/libXcursor/configure/configure +drwxr-xr-x 2 root root 4096 2014-01-13 21:54 ./patches/source/libXcursor/doinst.sh +-rwxr-xr-x 1 root root 1208 2017-11-29 07:02 ./patches/source/libXcursor/libXcursor.SlackBuild +drwxr-xr-x 2 root root 4096 2014-01-13 21:54 ./patches/source/libXcursor/makepkg +-rw-r--r-- 1 root root 3374 2013-09-07 20:34 ./patches/source/libXcursor/modularize +-rw-r--r-- 1 root root 1220 2012-05-09 18:58 ./patches/source/libXcursor/noarch +-rw-r--r-- 1 root root 833 2013-02-21 22:10 ./patches/source/libXcursor/package-blacklist +drwxr-xr-x 2 root root 4096 2017-11-29 07:03 ./patches/source/libXcursor/patch +drwxr-xr-x 2 root root 4096 2014-01-13 21:55 ./patches/source/libXcursor/post-install +drwxr-xr-x 2 root root 4096 2017-11-29 07:04 ./patches/source/libXcursor/slack-desc +-rw-r--r-- 1 root root 827 2012-04-08 03:06 ./patches/source/libXcursor/slack-desc/libXcursor +drwxr-xr-x 12 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/app +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/data +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/doc +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/driver +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/font +drwxr-xr-x 2 root root 4096 2017-11-29 07:04 ./patches/source/libXcursor/src/lib +-rw-r--r-- 1 root root 273708 2017-11-28 14:26 ./patches/source/libXcursor/src/lib/libXcursor-1.1.15.tar.xz +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/proto +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/util +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/xcb +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXcursor/src/xserver +-rwxr-xr-x 1 root root 12673 2017-11-29 07:05 ./patches/source/libXcursor/x11-build-script.sh +drwxr-xr-x 10 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXfixes/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/build +-rw-r--r-- 1 root root 12 2016-10-27 04:07 ./patches/source/libXfixes/build/libXfixes +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXfixes/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/doinst.sh +-rwxr-xr-x 1 root root 88 2016-10-26 20:40 ./patches/source/libXfixes/libXfixes.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXfixes/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXfixes/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXfixes/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/slack-desc +-rw-r--r-- 1 root root 811 2012-04-08 03:08 ./patches/source/libXfixes/slack-desc/libXfixes +drwxr-xr-x 3 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:40 ./patches/source/libXfixes/src/lib +-rw-r--r-- 1 root root 243620 2016-10-04 20:22 ./patches/source/libXfixes/src/lib/libXfixes-5.0.3.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 04:06 ./patches/source/libXfixes/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2014-01-13 21:55 ./patches/source/libXfont +-rw-r--r-- 1 root root 183 2009-05-30 01:47 ./patches/source/libXfont/arch.use.flags +drwxr-xr-x 2 root root 4096 2014-01-13 21:47 ./patches/source/libXfont/build +-rwxr-xr-x 1 root root 507 2013-03-07 23:41 ./patches/source/libXfont/build/increment.sh +-rw-r--r-- 1 root root 12 2017-11-29 06:30 ./patches/source/libXfont/build/libXfont +drwxr-xr-x 2 root root 4096 2014-01-13 21:54 ./patches/source/libXfont/configure +-rw-r--r-- 1 root root 317 2010-11-05 06:13 ./patches/source/libXfont/configure/configure +drwxr-xr-x 2 root root 4096 2014-01-13 21:54 ./patches/source/libXfont/doinst.sh +-rwxr-xr-x 1 root root 1206 2014-01-13 21:53 ./patches/source/libXfont/libXfont.SlackBuild +drwxr-xr-x 2 root root 4096 2014-01-13 21:54 ./patches/source/libXfont/makepkg +-rw-r--r-- 1 root root 3374 2013-09-07 20:34 ./patches/source/libXfont/modularize +-rw-r--r-- 1 root root 1220 2012-05-09 18:58 ./patches/source/libXfont/noarch +-rw-r--r-- 1 root root 833 2013-02-21 22:10 ./patches/source/libXfont/package-blacklist +drwxr-xr-x 3 root root 4096 2017-11-29 06:31 ./patches/source/libXfont/patch +drwxr-xr-x 2 root root 4096 2017-11-29 06:32 ./patches/source/libXfont/patch/libXfont +-rw-r--r-- 1 root root 134 2017-11-29 06:32 ./patches/source/libXfont/patch/libXfont.patch +-rw-r--r-- 1 root root 1320 2017-11-29 06:29 ./patches/source/libXfont/patch/libXfont/libXfont.CVE-2017-16611.diff.gz +drwxr-xr-x 2 root root 4096 2014-01-13 21:55 ./patches/source/libXfont/post-install +drwxr-xr-x 2 root root 4096 2014-01-13 21:55 ./patches/source/libXfont/slack-desc +-rw-r--r-- 1 root root 1034 2012-04-08 03:18 ./patches/source/libXfont/slack-desc/libXfont +drwxr-xr-x 12 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/app +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/data +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/doc +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/driver +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/font +drwxr-xr-x 2 root root 4096 2017-11-29 06:30 ./patches/source/libXfont/src/lib +-rw-r--r-- 1 root root 416988 2015-03-17 15:31 ./patches/source/libXfont/src/lib/libXfont-1.5.1.tar.xz +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/proto +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/util +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/xcb +drwxr-xr-x 2 root root 4096 2014-01-13 21:46 ./patches/source/libXfont/src/xserver +-rwxr-xr-x 1 root root 12673 2013-02-21 20:09 ./patches/source/libXfont/x11-build-script.sh +drwxr-xr-x 10 root root 4096 2016-10-26 20:31 ./patches/source/libXi +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXi/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/build +-rw-r--r-- 1 root root 12 2016-10-27 04:15 ./patches/source/libXi/build/libXi +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXi/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/doinst.sh +-rwxr-xr-x 1 root root 80 2016-10-26 20:31 ./patches/source/libXi/libXi.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXi/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXi/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXi/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/slack-desc +-rw-r--r-- 1 root root 749 2012-04-08 03:18 ./patches/source/libXi/slack-desc/libXi +-rw-r--r-- 1 root root 846 2012-04-08 03:19 ./patches/source/libXi/slack-desc/libXinerama +drwxr-xr-x 3 root root 4096 2016-10-26 20:31 ./patches/source/libXi/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:31 ./patches/source/libXi/src/lib +-rw-r--r-- 1 root root 396928 2016-10-25 02:45 ./patches/source/libXi/src/lib/libXi-1.7.8.tar.xz +-rw-r--r-- 1 root root 236468 2013-05-31 00:36 ./patches/source/libXi/src/lib/libXinerama-1.1.3.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 04:14 ./patches/source/libXi/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXrandr/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/build +-rw-r--r-- 1 root root 12 2016-10-27 04:50 ./patches/source/libXrandr/build/libXrandr +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXrandr/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/doinst.sh +-rwxr-xr-x 1 root root 88 2016-10-26 20:42 ./patches/source/libXrandr/libXrandr.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXrandr/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXrandr/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXrandr/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/slack-desc +-rw-r--r-- 1 root root 821 2012-04-08 03:24 ./patches/source/libXrandr/slack-desc/libXrandr +drwxr-xr-x 3 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:42 ./patches/source/libXrandr/src/lib +-rw-r--r-- 1 root root 262536 2016-10-04 20:23 ./patches/source/libXrandr/src/lib/libXrandr-1.5.1.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 04:50 ./patches/source/libXrandr/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2016-10-26 20:45 ./patches/source/libXrender +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXrender/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/build +-rw-r--r-- 1 root root 12 2016-10-27 04:58 ./patches/source/libXrender/build/libXrender +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXrender/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/doinst.sh +-rwxr-xr-x 1 root root 90 2016-10-26 20:45 ./patches/source/libXrender/libXrender.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXrender/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXrender/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXrender/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/slack-desc +-rw-r--r-- 1 root root 838 2012-04-08 03:24 ./patches/source/libXrender/slack-desc/libXrender +drwxr-xr-x 3 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXrender/src/lib +-rw-r--r-- 1 root root 255432 2016-10-04 20:24 ./patches/source/libXrender/src/lib/libXrender-0.9.10.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 04:57 ./patches/source/libXrender/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2017-10-18 16:55 ./patches/source/libXres +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXres/arch.use.flags +drwxr-xr-x 2 root root 4096 2017-10-18 16:56 ./patches/source/libXres/build +-rw-r--r-- 1 root root 12 2016-10-27 04:58 ./patches/source/libXres/build/libXres +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXres/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXres/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXres/doinst.sh +-rwxr-xr-x 1 root root 84 2017-10-18 16:55 ./patches/source/libXres/libXres.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXres/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXres/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXres/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXres/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXres/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:45 ./patches/source/libXres/post-install +drwxr-xr-x 2 root root 4096 2017-10-18 16:56 ./patches/source/libXres/slack-desc +-rw-r--r-- 1 root root 779 2012-04-08 03:25 ./patches/source/libXres/slack-desc/libXres +drwxr-xr-x 3 root root 4096 2016-10-26 20:45 ./patches/source/libXres/src +drwxr-xr-x 2 root root 4096 2017-10-18 16:56 ./patches/source/libXres/src/lib +-rw-r--r-- 1 root root 254692 2017-10-11 15:13 ./patches/source/libXres/src/lib/libXres-1.2.0.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 04:57 ./patches/source/libXres/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2016-10-26 20:46 ./patches/source/libXtst +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXtst/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/build +-rw-r--r-- 1 root root 12 2016-10-27 05:06 ./patches/source/libXtst/build/libXtst +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXtst/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/doinst.sh +-rwxr-xr-x 1 root root 84 2016-10-26 20:46 ./patches/source/libXtst/libXtst.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXtst/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXtst/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXtst/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/slack-desc +-rw-r--r-- 1 root root 792 2012-04-08 03:26 ./patches/source/libXtst/slack-desc/libXtst +drwxr-xr-x 3 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:46 ./patches/source/libXtst/src/lib +-rw-r--r-- 1 root root 267468 2016-10-04 20:25 ./patches/source/libXtst/src/lib/libXtst-1.2.3.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 05:06 ./patches/source/libXtst/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2016-10-26 20:49 ./patches/source/libXv +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXv/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/build +-rw-r--r-- 1 root root 12 2016-10-27 05:20 ./patches/source/libXv/build/libXv +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXv/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/doinst.sh +-rwxr-xr-x 1 root root 80 2016-10-26 20:49 ./patches/source/libXv/libXv.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXv/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXv/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXv/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/slack-desc +-rw-r--r-- 1 root root 777 2012-04-08 03:26 ./patches/source/libXv/slack-desc/libXv +-rw-r--r-- 1 root root 777 2012-04-08 02:52 ./patches/source/libXv/slack-desc/libXvMC +drwxr-xr-x 3 root root 4096 2016-10-26 20:49 ./patches/source/libXv/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:49 ./patches/source/libXv/src/lib +-rw-r--r-- 1 root root 257292 2016-10-04 20:25 ./patches/source/libXv/src/lib/libXv-1.0.11.tar.xz +-rw-r--r-- 1 root root 254256 2016-10-04 20:26 ./patches/source/libXv/src/lib/libXvMC-1.0.10.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 05:19 ./patches/source/libXv/x11.SlackBuild +drwxr-xr-x 10 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC +-rw-r--r-- 1 root root 257 2015-08-19 06:05 ./patches/source/libXvMC/arch.use.flags +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/build +-rw-r--r-- 1 root root 12 2016-10-27 05:23 ./patches/source/libXvMC/build/libXvMC +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/configure +-rw-r--r-- 1 root root 361 2016-01-16 20:11 ./patches/source/libXvMC/configure/configure +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/doinst.sh +-rwxr-xr-x 1 root root 84 2016-10-26 20:50 ./patches/source/libXvMC/libXvMC.SlackBuild +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/makepkg +-rw-r--r-- 1 root root 3467 2015-11-19 17:51 ./patches/source/libXvMC/modularize +-rw-r--r-- 1 root root 1206 2016-01-12 20:54 ./patches/source/libXvMC/noarch +-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./patches/source/libXvMC/package-blacklist +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/patch +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/post-install +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/slack-desc +-rw-r--r-- 1 root root 777 2012-04-08 02:52 ./patches/source/libXvMC/slack-desc/libXvMC +drwxr-xr-x 3 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/src +drwxr-xr-x 2 root root 4096 2016-10-26 20:50 ./patches/source/libXvMC/src/lib +-rw-r--r-- 1 root root 254256 2016-10-04 20:26 ./patches/source/libXvMC/src/lib/libXvMC-1.0.10.tar.xz +-rwxr-xr-x 1 root root 13192 2016-10-27 05:22 ./patches/source/libXvMC/x11.SlackBuild +drwxr-xr-x 2 root root 4096 2017-02-28 18:51 ./patches/source/libcgroup +-rw-r--r-- 1 root root 513 2011-01-10 20:23 ./patches/source/libcgroup/doinst.sh.gz +-rw-r--r-- 1 root root 406464 2014-01-13 14:10 ./patches/source/libcgroup/libcgroup-0.41.tar.xz +-rwxr-xr-x 1 root root 5257 2017-03-01 19:01 ./patches/source/libcgroup/libcgroup.SlackBuild +-rw-r--r-- 1 root root 282 2011-01-10 20:16 ./patches/source/libcgroup/libcgroup.conf.diff.gz +-rw-r--r-- 1 root root 1375 2017-02-28 18:42 ./patches/source/libcgroup/libcgroup.init.diff.gz +-rw-r--r-- 1 root root 1057 2011-01-10 19:23 ./patches/source/libcgroup/slack-desc +drwxr-xr-x 2 root root 4096 2017-09-17 17:09 ./patches/source/libgcrypt +-rw-r--r-- 1 root root 2897137 2017-08-27 07:51 ./patches/source/libgcrypt/libgcrypt-1.7.9.tar.bz2 +-rw-r--r-- 1 root root 620 2017-08-31 09:49 ./patches/source/libgcrypt/libgcrypt-1.7.9.tar.bz2.sig +-rwxr-xr-x 1 root root 3884 2016-08-23 18:24 ./patches/source/libgcrypt/libgcrypt.SlackBuild +-rw-r--r-- 1 root root 705 2007-03-15 20:47 ./patches/source/libgcrypt/slack-desc +drwxr-xr-x 2 root root 4096 2018-04-01 19:02 ./patches/source/libidn +-rw-r--r-- 1 root root 2176452 2018-03-31 15:03 ./patches/source/libidn/libidn-1.34.tar.xz +-rwxr-xr-x 1 root root 4151 2018-04-01 19:12 ./patches/source/libidn/libidn.SlackBuild +-rw-r--r-- 1 root root 790 2018-02-27 06:12 ./patches/source/libidn/slack-desc +drwxr-xr-x 2 root root 4096 2017-02-08 23:57 ./patches/source/libpcap +-rw-r--r-- 1 root root 739163 2016-10-26 01:19 ./patches/source/libpcap/libpcap-1.8.1.tar.gz +-rw-r--r-- 1 root root 419 2016-10-26 01:19 ./patches/source/libpcap/libpcap-1.8.1.tar.gz.sig +-rwxr-xr-x 1 root root 4139 2017-02-09 00:02 ./patches/source/libpcap/libpcap.SlackBuild +-rw-r--r-- 1 root root 890 2013-10-15 22:41 ./patches/source/libpcap/slack-desc +drwxr-xr-x 2 root root 4096 2017-11-02 04:25 ./patches/source/libplist +-rw-r--r-- 1 root root 324404 2017-04-26 19:28 ./patches/source/libplist/libplist-2.0.0.tar.xz +-rwxr-xr-x 1 root root 4094 2017-11-14 20:06 ./patches/source/libplist/libplist.SlackBuild +-rw-r--r-- 1 root root 796 2011-01-15 19:44 ./patches/source/libplist/slack-desc +drwxr-xr-x 2 root root 4096 2016-12-30 17:01 ./patches/source/libpng +-rw-r--r-- 1 root root 984316 2016-12-29 14:13 ./patches/source/libpng/libpng-1.6.27.tar.xz +-rw-r--r-- 1 root root 819 2016-12-29 14:40 ./patches/source/libpng/libpng-1.6.27.tar.xz.asc +-rwxr-xr-x 1 root root 4303 2016-12-30 16:58 ./patches/source/libpng/libpng.SlackBuild +-rw-r--r-- 1 root root 48 2012-07-23 21:59 ./patches/source/libpng/libpng.url +-rw-r--r-- 1 root root 949 2002-03-23 23:42 ./patches/source/libpng/slack-desc +drwxr-xr-x 2 root root 4096 2017-08-11 19:36 ./patches/source/libsoup +-rw-r--r-- 1 root root 1764308 2015-11-09 20:27 ./patches/source/libsoup/libsoup-2.52.2.tar.xz +-rw-r--r-- 1 root root 680 2017-08-11 19:32 ./patches/source/libsoup/libsoup.CVE-2017-2885.diff.gz +-rwxr-xr-x 1 root root 3062 2017-08-11 19:37 ./patches/source/libsoup/libsoup.SlackBuild +-rw-r--r-- 1 root root 808 2012-07-19 00:24 ./patches/source/libsoup/slack-desc +drwxr-xr-x 2 root root 4096 2017-11-21 03:37 ./patches/source/libtiff +-rw-r--r-- 1 root root 574 2014-08-17 12:50 ./patches/source/libtiff/libtiff-am-version.patch.gz +-rwxr-xr-x 1 root root 3839 2017-04-07 19:30 ./patches/source/libtiff/libtiff.SlackBuild +-rw-r--r-- 1 root root 852 2004-10-28 01:28 ./patches/source/libtiff/slack-desc +-rw-r--r-- 1 root root 1572468 2017-11-18 20:02 ./patches/source/libtiff/tiff-4.0.9.tar.xz +drwxr-xr-x 2 root root 4096 2017-07-17 18:07 ./patches/source/libtirpc +-rw-r--r-- 1 root root 269 2015-12-13 21:15 ./patches/source/libtirpc/doinst.sh.gz +-rw-r--r-- 1 root root 404004 2017-07-05 15:36 ./patches/source/libtirpc/libtirpc-1.0.2.tar.xz +-rwxr-xr-x 1 root root 4958 2017-07-18 17:52 ./patches/source/libtirpc/libtirpc.SlackBuild +-rw-r--r-- 1 root root 999 2015-12-22 20:54 ./patches/source/libtirpc/slack-desc +drwxr-xr-x 2 root root 4096 2015-02-18 02:26 ./patches/source/libtool +-rw-r--r-- 1 root root 385 2009-05-30 01:28 ./patches/source/libtool/doinst.sh.gz +-rw-r--r-- 1 root root 973080 2015-02-16 10:16 ./patches/source/libtool/libtool-2.4.6.tar.xz +-rw-r--r-- 1 root root 181 2015-02-16 10:16 ./patches/source/libtool/libtool-2.4.6.tar.xz.sig +-rwxr-xr-x 1 root root 3178 2018-03-07 18:46 ./patches/source/libtool/libtool.SlackBuild +-rw-r--r-- 1 root root 522 2014-10-28 16:01 ./patches/source/libtool/libtool.no.moved.warning.diff.gz +-rw-r--r-- 1 root root 958 2009-05-30 01:28 ./patches/source/libtool/slack-desc +drwxr-xr-x 2 root root 4096 2018-03-17 19:41 ./patches/source/libvorbis +-rw-r--r-- 1 root root 1195388 2018-03-16 16:28 ./patches/source/libvorbis/libvorbis-1.3.6.tar.xz +-rwxr-xr-x 1 root root 3194 2018-03-17 19:46 ./patches/source/libvorbis/libvorbis.SlackBuild +-rw-r--r-- 1 root root 1015 2018-02-27 06:12 ./patches/source/libvorbis/slack-desc +drwxr-xr-x 2 root root 4096 2018-04-30 21:27 ./patches/source/libwmf +-rw-r--r-- 1 root root 354 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch.gz +-rw-r--r-- 1 root root 480 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch.gz +-rw-r--r-- 1 root root 221 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch.gz +-rw-r--r-- 1 root root 337 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch.gz +-rw-r--r-- 1 root root 713 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch.gz +-rw-r--r-- 1 root root 269 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch.gz +-rw-r--r-- 1 root root 302 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch.gz +-rw-r--r-- 1 root root 282 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch.gz +-rw-r--r-- 1 root root 1120 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch.gz +-rw-r--r-- 1 root root 372 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch.gz +-rw-r--r-- 1 root root 277 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch.gz +-rw-r--r-- 1 root root 345 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10167.patch.gz +-rw-r--r-- 1 root root 336 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10168.patch.gz +-rw-r--r-- 1 root root 580 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch.gz +-rw-r--r-- 1 root root 280 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch.gz +-rw-r--r-- 1 root root 510 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch.gz +-rw-r--r-- 1 root root 348 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-fallbackfont.patch.gz +-rw-r--r-- 1 root root 404 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-pixbufloaderdir.patch.gz +-rw-r--r-- 1 root root 3498 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-reducesymbols.patch.gz +-rw-r--r-- 1 root root 320 2017-09-12 12:21 ./patches/source/libwmf/libwmf-0.2.8.4-useafterfree.patch.gz +-rw-r--r-- 1 root root 1271924 2006-06-14 06:20 ./patches/source/libwmf/libwmf-0.2.8.4.tar.xz +-rwxr-xr-x 1 root root 5372 2018-05-01 06:18 ./patches/source/libwmf/libwmf.SlackBuild +-rw-r--r-- 1 root root 340 2010-02-15 00:24 ./patches/source/libwmf/libwmf.png14.diff.gz +-rw-r--r-- 1 root root 742 2018-02-27 06:12 ./patches/source/libwmf/slack-desc +drwxr-xr-x 2 root root 4096 2017-09-21 21:58 ./patches/source/libxml2 +-rw-r--r-- 1 root root 3024720 2017-09-04 13:01 ./patches/source/libxml2/libxml2-2.9.5.tar.xz +-rwxr-xr-x 1 root root 3628 2017-09-21 21:59 ./patches/source/libxml2/libxml2.SlackBuild +-rw-r--r-- 1 root root 495 2013-04-19 07:57 ./patches/source/libxml2/libxml2.do-not-check-crc.diff.gz +-rw-r--r-- 1 root root 980 2008-01-08 23:42 ./patches/source/libxml2/slack-desc +drwxr-xr-x 2 root root 4096 2017-09-12 21:05 ./patches/source/libzip +-rw-r--r-- 1 root root 450308 2015-05-04 21:05 ./patches/source/libzip/libzip-1.0.1.tar.xz +-rw-r--r-- 1 root root 281 2017-09-12 20:58 ./patches/source/libzip/libzip.CVE-2017-14107.diff.gz +-rwxr-xr-x 1 root root 4428 2017-09-12 21:05 ./patches/source/libzip/libzip.SlackBuild +-rw-r--r-- 1 root root 886 2015-06-21 16:33 ./patches/source/libzip/slack-desc +drwxr-xr-x 2 root root 4096 2016-12-10 19:21 ./patches/source/loudmouth +-rw-r--r-- 1 root root 327488 2016-02-14 17:25 ./patches/source/loudmouth/loudmouth-1.5.3.tar.xz +-rwxr-xr-x 1 root root 4102 2016-12-10 21:18 ./patches/source/loudmouth/loudmouth.SlackBuild +-rw-r--r-- 1 root root 904 2015-12-22 22:52 ./patches/source/loudmouth/slack-desc +drwxr-xr-x 2 root root 4096 2017-05-29 19:39 ./patches/source/lynx +-rw-r--r-- 1 root root 264 2017-05-29 19:39 ./patches/source/lynx/doinst.sh.gz +-rwxr-xr-x 1 root root 4546 2017-05-29 19:44 ./patches/source/lynx/lynx.SlackBuild +-rw-r--r-- 1 root root 539 2017-05-29 19:36 ./patches/source/lynx/lynx.cfg.diff.gz +-rw-r--r-- 1 root root 2189048 2014-03-09 21:43 ./patches/source/lynx/lynx2.8.8rel.2.tar.xz +-rw-r--r-- 1 root root 953 2002-02-27 06:50 ./patches/source/lynx/slack-desc +drwxr-xr-x 2 root root 4096 2018-05-10 19:09 ./patches/source/mariadb +-rw-r--r-- 1 root root 373 2013-03-22 21:07 ./patches/source/mariadb/doinst.sh.gz +-rw-r--r-- 1 root root 37574820 2018-05-01 19:03 ./patches/source/mariadb/mariadb-10.0.35.tar.xz +-rwxr-xr-x 1 root root 6616 2016-09-13 16:06 ./patches/source/mariadb/mariadb.SlackBuild +-rw-r--r-- 1 root root 34 2015-05-07 18:51 ./patches/source/mariadb/mirror.url +-rw-r--r-- 1 root root 1402 2014-06-29 18:17 ./patches/source/mariadb/rc.mysqld.gz +-rw-r--r-- 1 root root 828 2013-03-22 23:38 ./patches/source/mariadb/slack-desc +drwxr-xr-x 2 root root 4096 2017-03-23 19:46 ./patches/source/mcabber +-rw-r--r-- 1 root root 512988 2017-01-29 20:44 ./patches/source/mcabber/mcabber-1.0.5.tar.xz +-rwxr-xr-x 1 root root 3938 2016-12-10 21:31 ./patches/source/mcabber/mcabber.SlackBuild +-rw-r--r-- 1 root root 876 2007-06-14 00:35 ./patches/source/mcabber/slack-desc +drwxr-xr-x 2 root root 4096 2017-08-11 19:48 ./patches/source/mercurial +-rw-r--r-- 1 root root 279 2010-05-18 06:20 ./patches/source/mercurial/doinst.sh.gz +-rw-r--r-- 1 root root 3169060 2017-08-10 22:52 ./patches/source/mercurial/mercurial-4.3.1.tar.xz +-rwxr-xr-x 1 root root 3773 2017-08-11 19:47 ./patches/source/mercurial/mercurial.SlackBuild +-rw-r--r-- 1 root root 1253 2006-05-14 00:35 ./patches/source/mercurial/slack-desc +drwxr-xr-x 2 root root 4096 2017-04-19 03:21 ./patches/source/minicom +-rw-r--r-- 1 root root 503 2008-09-30 10:20 ./patches/source/minicom/config.sub-x86_64.diff.gz +-rw-r--r-- 1 root root 290 2011-02-01 21:44 ./patches/source/minicom/doinst.sh.gz +-rw-r--r-- 1 root root 30271 2009-11-23 17:02 ./patches/source/minicom/lrzsz_0.12.21-5.diff.gz +-rw-r--r-- 1 root root 287790 1999-09-19 19:01 ./patches/source/minicom/lrzsz_0.12.21.orig.tar.gz +-rw-r--r-- 1 root root 476912 2017-04-18 09:57 ./patches/source/minicom/minicom-2.7.1.tar.xz +-rwxr-xr-x 1 root root 4974 2017-04-19 03:21 ./patches/source/minicom/minicom.SlackBuild +-rw-r--r-- 1 root root 570 2004-09-04 21:17 ./patches/source/minicom/minicom.users.gz +-rw-r--r-- 1 root root 834 2017-01-05 00:32 ./patches/source/minicom/slack-desc +drwxr-xr-x 3 root root 4096 2017-06-29 17:09 ./patches/source/mkinitrd +-rw-r--r-- 1 root root 3752 2012-06-12 13:27 ./patches/source/mkinitrd/README.initrd +-rw-r--r-- 1 root root 2699 2012-07-06 04:14 ./patches/source/mkinitrd/_initrd-tree.tar.gz +-rw-r--r-- 1 root root 1943148 2012-07-02 14:26 ./patches/source/mkinitrd/busybox-1.20.2.tar.xz +lrwxrwxrwx 1 root root 25 2012-06-12 14:38 ./patches/source/mkinitrd/busybox-dot-config -> busybox-dot-config.1.20.x +-rw-r--r-- 1 root root 25350 2016-06-08 19:48 ./patches/source/mkinitrd/busybox-dot-config.1.20.x +drwxr-xr-x 2 root root 4096 2013-01-17 08:53 ./patches/source/mkinitrd/fixes-1.20.2 +-rw-r--r-- 1 root root 540 2013-01-17 08:53 ./patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-kernel_ver.patch +-rw-r--r-- 1 root root 493 2013-01-17 08:53 ./patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-ntpd.patch +-rw-r--r-- 1 root root 2009 2012-10-20 19:44 ./patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-pkg-config-selinux.patch +-rw-r--r-- 1 root root 3561 2012-10-20 19:44 ./patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-sys-resource.patch +-rwxr-xr-x 1 root root 12219 2017-05-07 23:45 ./patches/source/mkinitrd/init +-rw-r--r-- 1 root root 29903 2009-12-18 05:10 ./patches/source/mkinitrd/keymaps.tar.gz +-rw-r--r-- 1 root root 24958 2017-06-29 17:11 ./patches/source/mkinitrd/mkinitrd +-rw-r--r-- 1 root root 8659 2017-06-29 16:59 ./patches/source/mkinitrd/mkinitrd.8 +-rwxr-xr-x 1 root root 5022 2017-06-29 17:14 ./patches/source/mkinitrd/mkinitrd.SlackBuild +-rw-r--r-- 1 root root 6669 2017-06-29 16:51 ./patches/source/mkinitrd/mkinitrd.conf.5 +-rw-r--r-- 1 root root 529 2017-06-29 16:52 ./patches/source/mkinitrd/mkinitrd.conf.sample +-rw-r--r-- 1 root root 5624 2016-02-08 20:10 ./patches/source/mkinitrd/mkinitrd_command_generator.8 +-rw-r--r-- 1 root root 28373 2016-06-20 20:24 ./patches/source/mkinitrd/mkinitrd_command_generator.sh +-rw-r--r-- 1 root root 988 2009-12-18 05:07 ./patches/source/mkinitrd/slack-desc +drwxr-xr-x 4 root root 4096 2018-05-09 03:17 ./patches/source/mozilla-firefox +drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./patches/source/mozilla-firefox/autoconf +-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./patches/source/mozilla-firefox/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz +-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./patches/source/mozilla-firefox/autoconf/autoconf-2.13.tar.xz +-rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./patches/source/mozilla-firefox/autoconf/autoconf.build +-rw-r--r-- 1 root root 340 2016-11-16 18:41 ./patches/source/mozilla-firefox/build-with-clang.diff.gz +-rw-r--r-- 1 root root 214054520 2018-05-08 17:11 ./patches/source/mozilla-firefox/firefox-52.8.0esr.source.tar.xz +-rw-r--r-- 1 root root 327 2008-06-17 17:19 ./patches/source/mozilla-firefox/firefox.moz_plugin_path.diff.gz +drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./patches/source/mozilla-firefox/gold +-rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./patches/source/mozilla-firefox/gold/gold +lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./patches/source/mozilla-firefox/gold/ld -> gold +-rw-r--r-- 1 root root 462 2009-07-01 06:05 ./patches/source/mozilla-firefox/mimeTypes.rdf.gz +-rw-r--r-- 1 root root 680 2009-07-01 13:28 ./patches/source/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff.gz +-rwxr-xr-x 1 root root 11462 2017-06-13 22:01 ./patches/source/mozilla-firefox/mozilla-firefox.SlackBuild +-rw-r--r-- 1 root root 2737 2013-06-26 07:43 ./patches/source/mozilla-firefox/mozilla-firefox.desktop +-rw-r--r-- 1 root root 993 2005-03-08 04:51 ./patches/source/mozilla-firefox/slack-desc +drwxr-xr-x 2 root root 4096 2017-09-07 19:16 ./patches/source/mozilla-nss +-rw-r--r-- 1 root root 25755 2008-02-27 08:35 ./patches/source/mozilla-nss/MPL-1.1.txt +-rw-r--r-- 1 root root 18152 2009-01-01 08:10 ./patches/source/mozilla-nss/faq.html +-rw-r--r-- 1 root root 17987 2007-06-28 20:04 ./patches/source/mozilla-nss/gpl-2.0.txt +-rw-r--r-- 1 root root 26434 2009-04-08 16:39 ./patches/source/mozilla-nss/lgpl-2.1.txt +-rwxr-xr-- 1 root root 5930 2017-09-08 16:53 ./patches/source/mozilla-nss/mozilla-nss.SlackBuild +-rw-r--r-- 1 root root 766828 2017-07-27 12:42 ./patches/source/mozilla-nss/nspr-4.16.tar.xz +-rw-r--r-- 1 root root 6461480 2017-08-08 20:39 ./patches/source/mozilla-nss/nss-3.31.1.tar.xz +-rw-r--r-- 1 root root 2488 2012-04-29 21:05 ./patches/source/mozilla-nss/nss-config.in +-rw-r--r-- 1 root root 1026 2005-03-26 15:21 ./patches/source/mozilla-nss/slack-desc +drwxr-xr-x 4 root root 4096 2018-05-22 18:14 ./patches/source/mozilla-thunderbird +drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./patches/source/mozilla-thunderbird/autoconf +-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./patches/source/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz +-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./patches/source/mozilla-thunderbird/autoconf/autoconf-2.13.tar.xz +-rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./patches/source/mozilla-thunderbird/autoconf/autoconf.build +drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./patches/source/mozilla-thunderbird/gold +-rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./patches/source/mozilla-thunderbird/gold/gold +lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./patches/source/mozilla-thunderbird/gold/ld -> gold +-rw-r--r-- 1 root root 312 2012-03-28 18:01 ./patches/source/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch.gz +-rwxr-xr-x 1 root root 8599 2017-04-08 01:21 ./patches/source/mozilla-thunderbird/mozilla-thunderbird.SlackBuild +-rw-r--r-- 1 root root 3378 2005-03-08 05:13 ./patches/source/mozilla-thunderbird/mozilla-thunderbird.desktop +-rw-r--r-- 1 root root 1172 2005-03-08 04:50 ./patches/source/mozilla-thunderbird/slack-desc +-rw-r--r-- 1 root root 230380780 2018-05-18 20:55 ./patches/source/mozilla-thunderbird/thunderbird-52.8.0.source.tar.xz +-rw-r--r-- 1 root root 47617 2006-02-18 17:00 ./patches/source/mozilla-thunderbird/thunderbird.png +drwxr-xr-x 2 root root 4096 2017-06-21 22:28 ./patches/source/nasm +-rw-r--r-- 1 root root 800244 2017-05-02 05:18 ./patches/source/nasm/nasm-2.13.01.tar.xz +-rwxr-xr-x 1 root root 2782 2017-06-23 17:18 ./patches/source/nasm/nasm.SlackBuild +-rw-r--r-- 1 root root 795 2017-06-21 22:28 ./patches/source/nasm/slack-desc +drwxr-xr-x 2 root root 4096 2017-09-21 17:30 ./patches/source/network-manager-applet +-rw-r--r-- 1 root root 207 2012-08-10 23:59 ./patches/source/network-manager-applet/doinst.sh.gz +-rw-r--r-- 1 root root 1484932 2017-09-20 15:32 ./patches/source/network-manager-applet/network-manager-applet-1.8.4.tar.xz +-rwxr-xr-x 1 root root 3805 2017-10-27 18:07 ./patches/source/network-manager-applet/network-manager-applet.SlackBuild +-rw-r--r-- 1 root root 832 2011-10-26 15:39 ./patches/source/network-manager-applet/slack-desc +drwxr-xr-x 2 root root 4096 2018-02-28 23:39 ./patches/source/ntp +-rw-r--r-- 1 root root 391 2013-10-14 07:58 ./patches/source/ntp/doinst.sh.gz +-rw-r--r-- 1 root root 4301668 2018-02-27 23:22 ./patches/source/ntp/ntp-4.2.8p11.tar.xz +-rwxr-xr-x 1 root root 5049 2016-11-21 18:52 ./patches/source/ntp/ntp.SlackBuild +-rw-r--r-- 1 root root 2534 2014-12-20 23:06 ./patches/source/ntp/ntp.conf +-rw-r--r-- 1 root root 22 1999-10-07 19:50 ./patches/source/ntp/ntp.keys +-rw-r--r-- 1 root root 269 2010-04-22 04:38 ./patches/source/ntp/ntp.nano.diff.gz +-rw-r--r-- 1 root root 804 2015-02-11 18:32 ./patches/source/ntp/rc.ntpd +-rw-r--r-- 1 root root 986 2002-02-27 23:02 ./patches/source/ntp/slack-desc +drwxr-xr-x 2 root root 4096 2017-10-01 18:39 ./patches/source/openexr +-rw-r--r-- 1 root root 12388072 2014-11-29 16:18 ./patches/source/openexr/openexr-2.2.0.tar.xz +-rw-r--r-- 1 root root 949 2017-10-01 18:38 ./patches/source/openexr/openexr.CVE-2017-9110-to-9116.patch.gz +-rwxr-xr-x 1 root root 3650 2017-10-01 19:05 ./patches/source/openexr/openexr.SlackBuild +-rw-r--r-- 1 root root 915 2008-08-01 02:42 ./patches/source/openexr/slack-desc +drwxr-xr-x 2 root root 4096 2017-10-05 16:53 ./patches/source/openjpeg +-rw-r--r-- 1 root root 1470440 2017-10-05 16:50 ./patches/source/openjpeg/openjpeg-2.3.0.tar.xz +-rwxr-xr-x 1 root root 3909 2017-10-05 16:55 ./patches/source/openjpeg/openjpeg.SlackBuild +-rw-r--r-- 1 root root 387 2017-10-04 19:22 ./patches/source/openjpeg/openjpeg2_remove-thirdparty.patch.gz +-rw-r--r-- 1 root root 685 2012-10-27 15:02 ./patches/source/openjpeg/slack-desc +drwxr-xr-x 2 root root 4096 2018-03-08 01:09 ./patches/source/openssh +-rw-r--r-- 1 root root 569 2014-01-30 21:21 ./patches/source/openssh/doinst.sh.gz +-rw-r--r-- 1 root root 1631 2016-12-23 18:59 ./patches/source/openssh/openssh-7.4p1-libwrap.diff.gz +-rw-r--r-- 1 root root 1511780 2016-12-19 13:00 ./patches/source/openssh/openssh-7.4p1.tar.gz +-rw-r--r-- 1 root root 650 2016-12-19 13:00 ./patches/source/openssh/openssh-7.4p1.tar.gz.asc +-rw-r--r-- 1 root root 481 2018-03-08 01:18 ./patches/source/openssh/openssh.CVE-2017-15906.patch.gz +-rwxr-xr-x 1 root root 5255 2018-03-08 01:10 ./patches/source/openssh/openssh.SlackBuild +-rw-r--r-- 1 root root 1726 2015-09-01 21:13 ./patches/source/openssh/rc.sshd +-rw-r--r-- 1 root root 1134 2002-03-07 23:03 ./patches/source/openssh/slack-desc +drwxr-xr-x 2 root root 4096 2018-03-28 03:32 ./patches/source/openssl +-rw-r--r-- 1 root root 1758 2012-08-08 22:46 ./patches/source/openssl/certwatch.gz +-rw-r--r-- 1 root root 281 2007-06-13 17:20 ./patches/source/openssl/doinst.sh-openssl-solibs.gz +-rw-r--r-- 1 root root 501 2012-07-12 16:21 ./patches/source/openssl/doinst.sh-openssl.gz +-rw-r--r-- 1 root root 5329472 2018-03-27 14:03 ./patches/source/openssl/openssl-1.0.2o.tar.gz +-rw-r--r-- 1 root root 455 2018-03-27 14:03 ./patches/source/openssl/openssl-1.0.2o.tar.gz.asc +-rwxr-xr-x 1 root root 8219 2016-09-22 17:38 ./patches/source/openssl/openssl.SlackBuild +-rw-r--r-- 1 root root 1019 2002-04-06 20:23 ./patches/source/openssl/slack-desc.openssl +-rw-r--r-- 1 root root 1090 2012-07-03 23:23 ./patches/source/openssl/slack-desc.openssl-solibs +drwxr-xr-x 2 root root 4096 2018-04-26 17:44 ./patches/source/openvpn +-rw-r--r-- 1 root root 1375 2007-06-10 01:25 ./patches/source/openvpn/README +-rw-r--r-- 1 root root 355 2018-02-22 02:16 ./patches/source/openvpn/doinst.sh.gz +-rw-r--r-- 1 root root 943376 2018-04-24 12:56 ./patches/source/openvpn/openvpn-2.4.6.tar.xz +-rw-r--r-- 1 root root 833 2018-04-24 12:56 ./patches/source/openvpn/openvpn-2.4.6.tar.xz.asc +-rwxr-xr-x 1 root root 5676 2018-04-26 19:03 ./patches/source/openvpn/openvpn.SlackBuild +-rw-r--r-- 1 root root 142 2018-04-26 17:44 ./patches/source/openvpn/openvpn.url +-rw-r--r-- 1 root root 3489 2018-02-28 21:25 ./patches/source/openvpn/rc.openvpn +-rw-r--r-- 1 root root 885 2018-02-27 06:13 ./patches/source/openvpn/slack-desc +-rw-r--r-- 1 root root 6942 2007-06-12 03:48 ./patches/source/openvpn/slackware.conf +drwxr-xr-x 2 root root 4096 2018-04-06 18:11 ./patches/source/patch +-rw-r--r-- 1 root root 2241 2018-04-06 18:04 ./patches/source/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch.gz +-rw-r--r-- 1 root root 783756 2018-02-06 16:52 ./patches/source/patch/patch-2.7.6.tar.xz +-rw-r--r-- 1 root root 801 2018-02-06 16:52 ./patches/source/patch/patch-2.7.6.tar.xz.sig +-rwxr-xr-x 1 root root 4165 2018-04-06 19:27 ./patches/source/patch/patch.SlackBuild +-rw-r--r-- 1 root root 1016 2018-02-27 06:13 ./patches/source/patch/slack-desc +drwxr-xr-x 3 root root 4096 2018-05-16 21:01 ./patches/source/php +-rw-r--r-- 1 root root 425 2013-12-14 19:02 ./patches/source/php/doinst.sh.gz +-rwxr-xr-x 1 root root 120 2018-05-16 21:01 ./patches/source/php/fetch-php.sh +-rw-r--r-- 1 root root 1022 2009-10-02 23:56 ./patches/source/php/mod_php.conf.example +drwxr-xr-x 2 root root 4096 2008-05-07 05:21 ./patches/source/php/pear +-rw-r--r-- 1 root root 12467560 2018-04-26 10:10 ./patches/source/php/php-5.6.36.tar.xz +-rw-r--r-- 1 root root 455 2018-04-26 10:10 ./patches/source/php/php-5.6.36.tar.xz.asc +-rw-r--r-- 1 root root 529 2013-12-14 19:03 ./patches/source/php/php-fpm.conf.diff.gz +-rwxr-xr-x 1 root root 9206 2018-03-07 22:10 ./patches/source/php/php.SlackBuild +-rw-r--r-- 1 root root 770 2014-08-30 09:32 ./patches/source/php/php.ini-development.diff.gz +-rw-r--r-- 1 root root 830 2005-12-09 05:18 ./patches/source/php/slack-desc +drwxr-xr-x 2 root root 4096 2017-03-10 19:02 ./patches/source/pidgin +-rw-r--r-- 1 root root 172 2016-01-04 03:06 ./patches/source/pidgin/doinst.sh.gz +-rw-r--r-- 1 root root 355 2012-05-02 03:59 ./patches/source/pidgin/fix-gmain_h-compile-error.diff.gz +-rw-r--r-- 1 root root 6802476 2017-03-10 02:46 ./patches/source/pidgin/pidgin-2.12.0.tar.xz +-rw-r--r-- 1 root root 604129 2010-05-18 16:51 ./patches/source/pidgin/pidgin-encryption-3.1.tar.gz +-rwxr-xr-x 1 root root 7160 2016-09-19 16:21 ./patches/source/pidgin/pidgin.SlackBuild +-rw-r--r-- 1 root root 926 2008-03-09 08:06 ./patches/source/pidgin/slack-desc +drwxr-xr-x 3 root root 4096 2017-03-22 01:24 ./patches/source/pkg-config +-rw-r--r-- 1 root root 252 2015-04-17 18:25 ./patches/source/pkg-config/doinst.sh.gz +-rw-r--r-- 1 root root 1098512 2017-03-20 17:08 ./patches/source/pkg-config/pkg-config-0.29.2.tar.xz +-rwxr-xr-x 1 root root 3867 2017-06-08 17:46 ./patches/source/pkg-config/pkg-config.SlackBuild +drwxr-xr-x 2 root root 4096 2006-08-20 04:13 ./patches/source/pkg-config/scripts +-rwxr-xr-x 1 root root 269 2016-06-04 18:22 ./patches/source/pkg-config/scripts/pkgconfig.csh +-rwxr-xr-x 1 root root 279 2016-06-04 18:22 ./patches/source/pkg-config/scripts/pkgconfig.sh +-rw-r--r-- 1 root root 907 2008-02-11 03:44 ./patches/source/pkg-config/slack-desc +drwxr-xr-x 2 root root 4096 2018-05-21 23:58 ./patches/source/procps-ng +-rw-r--r-- 1 root root 22308 2001-03-02 18:54 ./patches/source/procps-ng/procinfo-18.tar.xz +-rw-r--r-- 1 root root 57684 2009-04-27 04:03 ./patches/source/procps-ng/procinfo-ng-2.0.304.tar.xz +-rw-r--r-- 1 root root 904416 2018-05-19 21:41 ./patches/source/procps-ng/procps-ng-3.3.15.tar.xz +-rw-r--r-- 1 root root 833 2018-05-19 21:44 ./patches/source/procps-ng/procps-ng-3.3.15.tar.xz.asc +-rwxr-xr-x 1 root root 7735 2018-05-21 23:58 ./patches/source/procps-ng/procps-ng.SlackBuild +-rw-r--r-- 1 root root 285312 2014-02-16 07:13 ./patches/source/procps-ng/psmisc-22.21.tar.xz +-rw-r--r-- 1 root root 469 2015-08-19 17:55 ./patches/source/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff.gz +-rw-r--r-- 1 root root 863 2015-05-06 04:50 ./patches/source/procps-ng/slack-desc +drwxr-xr-x 3 root root 4096 2017-04-20 21:47 ./patches/source/proftpd +-rw-r--r-- 1 root root 306 2003-03-06 07:52 ./patches/source/proftpd/doinst.sh.gz +drwxr-xr-x 2 root root 4096 2001-02-26 07:35 ./patches/source/proftpd/etc +-rw-r--r-- 1 root root 581 2001-02-26 07:31 ./patches/source/proftpd/etc/ftpusers +-rw-r--r-- 1 root root 2046 2008-07-29 18:18 ./patches/source/proftpd/etc/proftpd.conf +-rw-r--r-- 1 root root 22018088 2017-04-09 21:16 ./patches/source/proftpd/proftpd-1.3.5e.tar.xz +-rwxr-xr-x 1 root root 4261 2017-04-20 21:49 ./patches/source/proftpd/proftpd.SlackBuild +-rw-r--r-- 1 root root 797 2004-09-18 22:48 ./patches/source/proftpd/slack-desc +drwxr-xr-x 2 root root 4096 2018-05-04 19:04 ./patches/source/python +-rw-r--r-- 1 root root 12642436 2018-04-29 23:20 ./patches/source/python/Python-2.7.15.tar.xz +-rw-r--r-- 1 root root 801 2018-04-29 23:20 ./patches/source/python/Python-2.7.15.tar.xz.asc +-rw-r--r-- 1 root root 1617467 2018-04-29 23:20 ./patches/source/python/python-2.7.15-docs-text.tar.bz2 +-rwxr-xr-x 1 root root 5160 2017-09-21 19:15 ./patches/source/python/python.SlackBuild +-rw-r--r-- 1 root root 798 2012-05-09 18:38 ./patches/source/python/python.no-static-library.diff.gz +-rw-r--r-- 1 root root 325 2009-06-09 19:23 ./patches/source/python/python.readline.set_pre_input_hook.diff.gz +-rw-r--r-- 1 root root 1867 2016-12-28 19:19 ./patches/source/python/python.x86_64.diff.gz +-rw-r--r-- 1 root root 895 2002-03-23 22:54 ./patches/source/python/slack-desc +drwxr-xr-x 2 root root 4096 2017-07-19 21:53 ./patches/source/rpcbind +-rw-r--r-- 1 root root 732 2017-07-18 04:32 ./patches/source/rpcbind/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch.gz +-rw-r--r-- 1 root root 2276 2017-06-02 18:21 ./patches/source/rpcbind/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch.gz +-rw-r--r-- 1 root root 608 2017-06-02 18:21 ./patches/source/rpcbind/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch.gz +-rw-r--r-- 1 root root 803 2017-06-02 18:21 ./patches/source/rpcbind/0004-rpcbind-fix-building-without-enable-debug.patch.gz +-rw-r--r-- 1 root root 1414 2017-07-17 04:37 ./patches/source/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch.gz +-rw-r--r-- 1 root root 1276 2017-07-17 04:37 ./patches/source/rpcbind/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch.gz +-rw-r--r-- 1 root root 493 2015-09-22 15:17 ./patches/source/rpcbind/01.rpcbind-manpage-statefile-explanation.patch.gz +-rw-r--r-- 1 root root 332 2015-12-14 21:09 ./patches/source/rpcbind/doinst.sh.gz +-rw-r--r-- 1 root root 680 2015-12-15 00:50 ./patches/source/rpcbind/rc.rpc.gz +-rw-r--r-- 1 root root 122781 2016-11-30 15:33 ./patches/source/rpcbind/rpcbind-0.2.4.tar.bz2 +-rwxr-xr-x 1 root root 5014 2017-07-18 18:21 ./patches/source/rpcbind/rpcbind.SlackBuild +-rw-r--r-- 1 root root 381 2015-12-14 19:35 ./patches/source/rpcbind/rpcbind.lwrap.needs.lnsl.diff.gz +-rw-r--r-- 1 root root 1042 2015-12-14 20:46 ./patches/source/rpcbind/slack-desc +drwxr-xr-x 2 root root 4096 2018-01-30 19:32 ./patches/source/rsync +-rw-r--r-- 1 root root 653524 2018-01-28 23:54 ./patches/source/rsync/rsync-3.1.3.tar.xz +-rwxr-xr-x 1 root root 3322 2018-01-30 19:32 ./patches/source/rsync/rsync.SlackBuild +-rw-r--r-- 1 root root 984 2015-04-23 21:38 ./patches/source/rsync/slack-desc +drwxr-xr-x 2 root root 4096 2018-03-29 19:16 ./patches/source/ruby +-rw-r--r-- 1 root root 10175796 2018-03-28 17:26 ./patches/source/ruby/ruby-2.2.10.tar.xz +-rwxr-xr-x 1 root root 4445 2017-09-17 17:47 ./patches/source/ruby/ruby.SlackBuild +-rw-r--r-- 1 root root 865 2006-07-20 06:49 ./patches/source/ruby/slack-desc +drwxr-xr-x 2 root root 4096 2017-05-01 23:03 ./patches/source/rxvt +-rw-r--r-- 1 root root 429356 2003-03-26 06:47 ./patches/source/rxvt/rxvt-2.7.10.tar.xz +-rw-r--r-- 1 root root 304 2017-05-01 22:58 ./patches/source/rxvt/rxvt-integer-overflow-fix.patch.gz +-rwxr-xr-x 1 root root 3912 2017-05-01 23:13 ./patches/source/rxvt/rxvt.SlackBuild +-rw-r--r-- 1 root root 2002 2003-06-08 04:09 ./patches/source/rxvt/rxvt.utempter.diff.gz +-rw-r--r-- 1 root root 880 2002-03-10 07:02 ./patches/source/rxvt/slack-desc +drwxr-xr-x 2 root root 4096 2018-03-13 17:23 ./patches/source/samba +-rw-r--r-- 1 root root 703 2016-06-13 04:19 ./patches/source/samba/doinst.sh.gz +-rw-r--r-- 1 root root 296 2013-10-16 00:05 ./patches/source/samba/pytalloc-util.pc +-rw-r--r-- 1 root root 940 2016-06-04 17:50 ./patches/source/samba/rc.samba +-rw-r--r-- 1 root root 6468 2018-03-13 10:43 ./patches/source/samba/samba-4.4.16-CVE-2018-1057.patch.gz +-rw-r--r-- 1 root root 195 2017-09-13 18:29 ./patches/source/samba/samba-4.4.16.tar.asc +-rw-r--r-- 1 root root 14090760 2017-09-13 18:28 ./patches/source/samba/samba-4.4.16.tar.xz +-rw-r--r-- 1 root root 1466 2017-11-21 08:23 ./patches/source/samba/samba-4.5.14-security-2017-11-21.patch.gz +-rwxr-xr-x 1 root root 7085 2018-03-13 17:25 ./patches/source/samba/samba.SlackBuild +-rw-r--r-- 1 root root 921 2016-04-11 17:45 ./patches/source/samba/samba.install.talloc.tevent.tdb.diff.gz +-rw-r--r-- 1 root root 129 2017-09-20 17:12 ./patches/source/samba/samba.url +-rw-r--r-- 1 root root 965 2012-06-20 17:31 ./patches/source/samba/slack-desc +-rw-r--r-- 1 root root 7920 2013-10-16 01:02 ./patches/source/samba/smb.conf.default +-rw-r--r-- 1 root root 7932 2013-06-13 09:21 ./patches/source/samba/smb.conf.default.orig +-rw-r--r-- 1 root root 535 2013-10-16 01:04 ./patches/source/samba/smb.conf.diff.gz +-rw-r--r-- 1 root root 286 2013-10-16 00:05 ./patches/source/samba/talloc.pc +drwxr-xr-x 2 root root 4096 2017-01-13 18:13 ./patches/source/scim +-rw-rw-r-- 1 root root 874400 2016-06-02 07:38 ./patches/source/scim/scim-1.4.17.tar.xz +-rw-r--r-- 1 root root 1411 2007-10-28 14:28 ./patches/source/scim/scim-setup.desktop +-rwxr-xr-x 1 root root 8090 2017-01-14 01:14 ./patches/source/scim/scim.SlackBuild +-rw-r--r-- 1 root root 423 2008-03-31 21:12 ./patches/source/scim/scim.desktop +-rw-r--r-- 1 root root 785 2008-02-16 23:16 ./patches/source/scim/slack-desc +drwxr-xr-x 2 root root 4096 2016-08-23 17:09 ./patches/source/screen +-rw-r--r-- 1 root root 2913 2014-07-26 12:01 ./patches/source/screen/26source_encoding.patch.gz +-rw-r--r-- 1 root root 237 2014-07-26 12:01 ./patches/source/screen/45suppress_remap.patch.gz +-rw-r--r-- 1 root root 693 2014-07-26 12:01 ./patches/source/screen/52fix_screen_utf8_nfd.patch.gz +-rw-r--r-- 1 root root 652 2014-07-26 12:01 ./patches/source/screen/58-show-encoding-hardstatus.patch.gz +-rw-r--r-- 1 root root 341 2016-08-23 17:08 ./patches/source/screen/60-revert-screenrc-change.diff.gz +-rw-r--r-- 1 root root 621256 2016-06-19 20:37 ./patches/source/screen/screen-4.4.0.tar.xz +-rwxr-xr-x 1 root root 5028 2016-08-23 17:11 ./patches/source/screen/screen.SlackBuild +-rw-r--r-- 1 root root 371 2015-08-02 18:47 ./patches/source/screen/screen.no_libelf.diff.gz +-rw-r--r-- 1 root root 1111 2002-03-23 22:34 ./patches/source/screen/slack-desc +drwxr-xr-x 2 root root 4096 2016-09-12 17:50 ./patches/source/sdl +-rw-r--r-- 1 root root 2521972 2012-01-21 02:15 ./patches/source/sdl/SDL-1.2.15.tar.xz +-rw-r--r-- 1 root root 1250244 2012-01-21 01:58 ./patches/source/sdl/SDL_image-1.2.12.tar.xz +-rw-r--r-- 1 root root 2714656 2012-01-15 22:19 ./patches/source/sdl/SDL_mixer-1.2.12.tar.xz +-rw-r--r-- 1 root root 212 2010-02-14 23:16 ./patches/source/sdl/SDL_mixer.usrlocal.diff.gz +-rw-r--r-- 1 root root 237384 2012-01-15 22:37 ./patches/source/sdl/SDL_net-1.2.8.tar.xz +-rw-r--r-- 1 root root 1946336 2012-01-15 22:52 ./patches/source/sdl/SDL_ttf-2.0.11.tar.xz +-rw-r--r-- 1 root root 280 2016-06-08 17:00 ./patches/source/sdl/SDL_ttf.shaded.text.diff.gz +-rw-r--r-- 1 root root 731528 2016-08-31 20:51 ./patches/source/sdl/libmikmod-3.1.20.tar.xz +-rw-r--r-- 1 root root 1018 2013-01-27 19:16 ./patches/source/sdl/libsdl-1.2.15-resizing.patch.gz +-rw-r--r-- 1 root root 407 2013-01-27 19:16 ./patches/source/sdl/sdl-1.2.14-fix-mouse-clicking.patch.gz +-rwxr-xr-x 1 root root 7498 2016-09-12 17:53 ./patches/source/sdl/sdl.SlackBuild +-rw-r--r-- 1 root root 934 2016-09-12 18:13 ./patches/source/sdl/slack-desc +drwxr-xr-x 5 root root 4096 2018-05-03 19:21 ./patches/source/seamonkey +drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./patches/source/seamonkey/autoconf +-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./patches/source/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz +-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./patches/source/seamonkey/autoconf/autoconf-2.13.tar.xz +-rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./patches/source/seamonkey/autoconf/autoconf.build +-rw-r--r-- 1 root root 231 2007-06-01 23:47 ./patches/source/seamonkey/doinst.sh.gz +drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./patches/source/seamonkey/gold +-rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./patches/source/seamonkey/gold/gold +lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./patches/source/seamonkey/gold/ld -> gold +drwxr-xr-x 2 root root 4096 2013-08-13 03:24 ./patches/source/seamonkey/pkgconfig +-rw-r--r-- 1 root root 320 2009-11-06 05:10 ./patches/source/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc +-rw-r--r-- 1 root root 327 2011-11-30 00:44 ./patches/source/seamonkey/pkgconfig/seamonkey-libxul.pc +-rw-r--r-- 1 root root 308 2009-11-06 05:10 ./patches/source/seamonkey/pkgconfig/seamonkey-nspr.pc +-rw-r--r-- 1 root root 313 2012-04-30 17:42 ./patches/source/seamonkey/pkgconfig/seamonkey-nss.pc +-rw-r--r-- 1 root root 287 2012-01-10 16:25 ./patches/source/seamonkey/pkgconfig/seamonkey-plugin.pc +-rw-r--r-- 1 root root 372 2009-11-06 05:10 ./patches/source/seamonkey/pkgconfig/seamonkey-xpcom.pc +-rw-r--r-- 1 root root 231547028 2018-05-03 07:20 ./patches/source/seamonkey/seamonkey-2.49.3.source.tar.xz +-rw-r--r-- 1 root root 12796 2006-02-09 03:17 ./patches/source/seamonkey/seamonkey-icon.png +-rw-r--r-- 1 root root 185 2006-02-09 03:40 ./patches/source/seamonkey/seamonkey-mail-icon.png +-rw-r--r-- 1 root root 207 2006-02-09 03:23 ./patches/source/seamonkey/seamonkey-mail.desktop +-rwxr-xr-x 1 root root 10096 2017-07-21 16:13 ./patches/source/seamonkey/seamonkey.SlackBuild +-rw-r--r-- 1 root root 315 2013-08-13 03:23 ./patches/source/seamonkey/seamonkey.desktop +-rw-r--r-- 1 root root 894 2009-11-10 01:43 ./patches/source/seamonkey/slack-desc +drwxr-xr-x 2 root root 4096 2017-07-28 19:54 ./patches/source/squashfs-tools +-rw-r--r-- 1 root root 653 2015-09-09 18:13 ./patches/source/squashfs-tools/0001-kfreebsd.patch.gz +-rw-r--r-- 1 root root 2477 2015-09-07 16:02 ./patches/source/squashfs-tools/0002-fix_phys_mem_calculation.patch.gz +-rw-r--r-- 1 root root 1625 2015-09-07 16:47 ./patches/source/squashfs-tools/0003-CVE-2015-4645_and_CVE-2015-4646.patch.gz +-rw-r--r-- 1 root root 1517 2015-10-20 10:57 ./patches/source/squashfs-tools/0004-unsquashfs-add-support-for-LZMA-magics.patch.gz +-rw-r--r-- 1 root root 993 2017-06-07 17:47 ./patches/source/squashfs-tools/0006-uptream-fix-race.patch.gz +-rw-r--r-- 1 root root 580 2017-06-07 17:47 ./patches/source/squashfs-tools/0007-fix-2GB-limit-in-mksquashfs.patch.gz +-rw-r--r-- 1 root root 1081 2015-10-21 09:31 ./patches/source/squashfs-tools/slack-desc +-rwxr-xr-- 1 root root 3946 2017-07-28 20:16 ./patches/source/squashfs-tools/squashfs-tools.SlackBuild +-rw-r--r-- 1 root root 131612 2014-05-12 23:11 ./patches/source/squashfs-tools/squashfs4.3.tar.xz +drwxr-xr-x 2 root root 4096 2016-08-22 18:31 ./patches/source/stunnel +-rw-r--r-- 1 root root 268 2015-09-17 19:39 ./patches/source/stunnel/doinst.sh.gz +-rw-r--r-- 1 root root 286 2016-08-22 18:28 ./patches/source/stunnel/generate-stunnel-key.sh +-rw-r--r-- 1 root root 968 2003-08-28 23:04 ./patches/source/stunnel/slack-desc +-rw-r--r-- 1 root root 645148 2016-07-17 22:16 ./patches/source/stunnel/stunnel-5.35.tar.gz +-rw-r--r-- 1 root root 811 2016-07-17 22:16 ./patches/source/stunnel/stunnel-5.35.tar.gz.asc +-rwxr-xr-x 1 root root 4386 2016-08-22 18:31 ./patches/source/stunnel/stunnel.SlackBuild +drwxr-xr-x 2 root root 4096 2017-08-10 19:30 ./patches/source/subversion +-rwxr-xr-x 1 root root 181 2012-05-25 22:37 ./patches/source/subversion/get-svn-book.sh +-rw-r--r-- 1 root root 1058 2010-04-30 02:11 ./patches/source/subversion/slack-desc +-rw-r--r-- 1 root root 6249348 2017-08-10 18:03 ./patches/source/subversion/subversion-1.9.7.tar.xz +-rwxr-xr-x 1 root root 5562 2017-08-10 20:05 ./patches/source/subversion/subversion.SlackBuild +-rw-r--r-- 1 root root 470499 2017-08-10 06:01 ./patches/source/subversion/svn-book-html.tar.bz2 +drwxr-xr-x 2 root root 4096 2017-05-31 22:48 ./patches/source/sudo +-rw-r--r-- 1 root root 275 2004-09-19 00:25 ./patches/source/sudo/doinst.sh.gz +-rw-r--r-- 1 root root 869 2002-03-23 22:36 ./patches/source/sudo/slack-desc +-rw-r--r-- 1 root root 1670448 2017-05-31 15:17 ./patches/source/sudo/sudo-1.8.20p2.tar.xz +-rwxr-xr-x 1 root root 3823 2017-05-30 17:14 ./patches/source/sudo/sudo.SlackBuild +drwxr-xr-x 2 root root 4096 2017-09-07 20:54 ./patches/source/tcpdump +-rw-r--r-- 1 root root 882 2013-10-15 22:40 ./patches/source/tcpdump/slack-desc +-rw-r--r-- 1 root root 955416 2017-09-05 07:44 ./patches/source/tcpdump/tcpdump-4.9.2.tar.xz +-rwxr-xr-x 1 root root 3181 2017-07-24 18:33 ./patches/source/tcpdump/tcpdump.SlackBuild +drwxr-xr-x 2 root root 4096 2018-05-08 01:20 ./patches/source/wget +-rw-r--r-- 1 root root 264 2008-10-01 23:27 ./patches/source/wget/doinst.sh.gz +-rw-r--r-- 1 root root 853 2002-03-23 23:56 ./patches/source/wget/slack-desc +-rw-r--r-- 1 root root 2252972 2018-05-08 01:20 ./patches/source/wget/wget-1.19.5.tar.xz +-rwxr-xr-x 1 root root 3434 2018-05-08 01:21 ./patches/source/wget/wget.SlackBuild +drwxr-xr-x 5 root root 4096 2017-10-17 00:37 ./patches/source/wpa_supplicant +drwxr-xr-x 2 root root 4096 2017-10-17 00:41 ./patches/source/wpa_supplicant/2017-1 +-rw-r--r-- 1 root root 2472 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch.gz +-rw-r--r-- 1 root root 2568 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch.gz +-rw-r--r-- 1 root root 2079 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch.gz +-rw-r--r-- 1 root root 1301 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch.gz +-rw-r--r-- 1 root root 1069 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch.gz +-rw-r--r-- 1 root root 1977 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch.gz +-rw-r--r-- 1 root root 880 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch.gz +-rw-r--r-- 1 root root 1374 2017-10-02 16:19 ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch.gz +-rw-r--r-- 1 root root 11037 2017-10-16 09:17 ./patches/source/wpa_supplicant/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt +-rw-r--r-- 1 root root 2080 2005-08-06 20:17 ./patches/source/wpa_supplicant/README.slackware +drwxr-xr-x 2 root root 4096 2012-05-06 07:28 ./patches/source/wpa_supplicant/config +-rw-r--r-- 1 root root 697 2013-05-11 19:03 ./patches/source/wpa_supplicant/config/dot.config +-rw-r--r-- 1 root root 139 2012-05-06 07:11 ./patches/source/wpa_supplicant/config/wpa_gui.desktop +-rw-r--r-- 1 root root 5124 2009-04-20 18:10 ./patches/source/wpa_supplicant/config/wpa_gui.png +-rw-r--r-- 1 root root 65 2012-05-06 07:08 ./patches/source/wpa_supplicant/config/wpa_supplicant.conf +-rw-r--r-- 1 root root 100 2012-05-06 07:05 ./patches/source/wpa_supplicant/config/wpa_supplicant.logrotate +-rw-r--r-- 1 root root 284 2012-05-06 07:31 ./patches/source/wpa_supplicant/doinst.sh.gz +drwxr-xr-x 2 root root 4096 2017-01-05 17:31 ./patches/source/wpa_supplicant/patches +-rw-r--r-- 1 root root 747 2014-12-04 19:03 ./patches/source/wpa_supplicant/patches/assoc-timeout.diff +-rw-r--r-- 1 root root 1342 2012-05-31 00:15 ./patches/source/wpa_supplicant/patches/dbus-service-file-args.diff +-rw-r--r-- 1 root root 1432 2014-12-04 19:03 ./patches/source/wpa_supplicant/patches/flush-debug-output.diff +-rw-r--r-- 1 root root 704 2017-01-05 17:31 ./patches/source/wpa_supplicant/patches/quiet-scan-results-message.diff +-rw-r--r-- 1 root root 1067 2008-02-28 05:38 ./patches/source/wpa_supplicant/slack-desc +-rw-r--r-- 1 root root 1883252 2016-10-02 19:29 ./patches/source/wpa_supplicant/wpa_supplicant-2.6.tar.xz +-rwxr-xr-x 1 root root 6626 2017-10-17 04:30 ./patches/source/wpa_supplicant/wpa_supplicant.SlackBuild +drwxr-xr-x 2 root root 4096 2017-10-25 05:11 ./patches/source/xfce4-weather-plugin +-rw-r--r-- 1 root root 840 2012-07-19 03:25 ./patches/source/xfce4-weather-plugin/slack-desc +-rw-r--r-- 1 root root 2723376 2017-10-11 20:18 ./patches/source/xfce4-weather-plugin/xfce4-weather-plugin-0.8.10.tar.xz +-rwxr-xr-x 1 root root 3405 2016-12-24 00:36 ./patches/source/xfce4-weather-plugin/xfce4-weather-plugin.SlackBuild +-rw-r--r-- 1 root root 64 2011-11-28 03:17 ./patches/source/xfce4-weather-plugin/xfce4-weather-plugin.url +drwxr-xr-x 10 root root 4096 2017-10-05 20:24 ./patches/source/xorg-server +-rw-r--r-- 1 root root 183 2009-05-30 01:47 ./patches/source/xorg-server/arch.use.flags +drwxr-xr-x 2 root root 4096 2013-04-18 22:42 ./patches/source/xorg-server/build +-rw-r--r-- 1 root root 12 2017-10-18 17:15 ./patches/source/xorg-server/build/xorg-server +drwxr-xr-x 2 root root 4096 2013-04-18 22:43 ./patches/source/xorg-server/configure +-rw-r--r-- 1 root root 1612 2015-08-19 06:07 ./patches/source/xorg-server/configure/xorg-server +drwxr-xr-x 2 root root 4096 2013-04-18 22:43 ./patches/source/xorg-server/doinst.sh +drwxr-xr-x 2 root root 4096 2009-05-30 01:47 ./patches/source/xorg-server/makepkg +-rw-r--r-- 1 root root 3253 2014-07-15 05:19 ./patches/source/xorg-server/makepkg/xorg-server +-rw-r--r-- 1 root root 3275 2012-04-08 04:56 ./patches/source/xorg-server/modularize +-rw-r--r-- 1 root root 1220 2012-05-09 18:58 ./patches/source/xorg-server/noarch +-rw-r--r-- 1 root root 726 2009-06-08 22:38 ./patches/source/xorg-server/package-blacklist +drwxr-xr-x 3 root root 4096 2017-08-15 19:18 ./patches/source/xorg-server/patch +drwxr-xr-x 2 root root 4096 2017-10-18 17:14 ./patches/source/xorg-server/patch/xorg-server +-rw-r--r-- 1 root root 2149 2017-10-18 17:15 ./patches/source/xorg-server/patch/xorg-server.patch +-rw-r--r-- 1 root root 340 2012-04-14 03:01 ./patches/source/xorg-server/patch/xorg-server/x11.startwithblackscreen.diff.gz +-rw-r--r-- 1 root root 714 2017-08-15 18:48 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10971.diff.gz +-rw-r--r-- 1 root root 685 2017-08-15 18:49 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10972.diff.gz +-rw-r--r-- 1 root root 629 2017-10-17 17:49 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12176.diff.gz +-rw-r--r-- 1 root root 701 2017-10-17 17:50 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12177.diff.gz +-rw-r--r-- 1 root root 577 2017-10-17 17:51 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12178.diff.gz +-rw-r--r-- 1 root root 656 2017-10-18 16:35 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff.gz +-rw-r--r-- 1 root root 753 2017-10-18 16:36 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff.gz +-rw-r--r-- 1 root root 2763 2017-10-18 16:37 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff.gz +-rw-r--r-- 1 root root 1161 2017-10-18 16:39 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12183.diff.gz +-rw-r--r-- 1 root root 1619 2017-10-18 16:39 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff.gz +-rw-r--r-- 1 root root 592 2017-10-05 18:01 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13721.diff.gz +-rw-r--r-- 1 root root 1301 2017-10-05 18:01 ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13723.diff.gz +-rw-r--r-- 1 root root 897 2016-04-14 16:42 ./patches/source/xorg-server/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch.gz +drwxr-xr-x 2 root root 4096 2013-04-18 22:44 ./patches/source/xorg-server/post-install +-rw-r--r-- 1 root root 2241 2010-12-29 01:53 ./patches/source/xorg-server/post-install/xorg-server.post-install +drwxr-xr-x 2 root root 4096 2013-04-18 22:44 ./patches/source/xorg-server/slack-desc +-rw-r--r-- 1 root root 1160 2007-02-13 18:20 ./patches/source/xorg-server/slack-desc/xorg-server +-rw-r--r-- 1 root root 839 2009-05-30 01:47 ./patches/source/xorg-server/slack-desc/xorg-server-xephyr +-rw-r--r-- 1 root root 1063 2007-02-13 18:18 ./patches/source/xorg-server/slack-desc/xorg-server-xnest +-rw-r--r-- 1 root root 1160 2007-02-13 18:20 ./patches/source/xorg-server/slack-desc/xorg-server-xvfb +drwxr-xr-x 3 root root 4096 2013-04-18 22:44 ./patches/source/xorg-server/src +drwxr-xr-x 2 root root 4096 2017-08-15 19:18 ./patches/source/xorg-server/src/xserver +-rw-r--r-- 1 root root 4696844 2016-04-04 19:48 ./patches/source/xorg-server/src/xserver/xorg-server-1.18.3.tar.xz +-rwxr-xr-x 1 root root 13192 2015-08-19 06:04 ./patches/source/xorg-server/x11.SlackBuild +-rwxr-xr-x 1 root root 85 2014-12-18 04:56 ./patches/source/xorg-server/xorg-server.SlackBuild +drwxr-xr-x 2 root root 4096 2017-12-24 17:59 ./patches/source/xscreensaver +-rwxr-xr-x 1 root root 611 2015-03-23 03:06 ./patches/source/xscreensaver/dump.android.osx.sources.sh +-rw-r--r-- 1 root root 2868 2008-10-17 04:30 ./patches/source/xscreensaver/setuid.c.gz +-rw-r--r-- 1 root root 930 2013-03-22 02:00 ./patches/source/xscreensaver/slack-desc +-rw-r--r-- 1 root root 4742752 2017-12-20 20:14 ./patches/source/xscreensaver/xscreensaver-5.38.tar.xz +-rw-r--r-- 1 root root 16569 2011-01-30 03:18 ./patches/source/xscreensaver/xscreensaver-getimage-file-5.14 +-rwxr-xr-x 1 root root 4739 2016-10-28 18:51 ./patches/source/xscreensaver/xscreensaver.SlackBuild +-rw-r--r-- 1 root root 285 2009-05-15 21:22 ./patches/source/xscreensaver/xscreensaver.electricsheep.diff.gz +-rw-r--r-- 1 root root 693 2016-05-30 20:30 ./patches/source/xscreensaver/xscreensaver.no.expiration.date.diff.gz +-rw-r--r-- 1 root root 1763 2008-10-17 04:32 ./patches/source/xscreensaver/xscreensaver.setuid.diff.gz +drwxr-xr-x 18 root root 4096 2016-06-29 19:50 ./slackware64 +-rw-r--r-- 1 root root 282010 2016-06-29 19:50 ./slackware64/CHECKSUMS.md5 +-rw-r--r-- 1 root root 181 2016-06-29 19:50 ./slackware64/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 351638 2016-06-29 19:47 ./slackware64/FILE_LIST +-rw-r--r-- 1 root root 3139391 2016-06-29 19:48 ./slackware64/MANIFEST.bz2 +lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT +drwxr-xr-x 2 root root 20480 2016-06-29 19:47 ./slackware64/a +-rw-r--r-- 1 root root 327 2016-05-20 20:18 ./slackware64/a/aaa_base-14.2-x86_64-2.txt +-rw-r--r-- 1 root root 10840 2016-05-20 20:18 ./slackware64/a/aaa_base-14.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-05-20 20:18 ./slackware64/a/aaa_base-14.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 472 2016-06-24 22:03 ./slackware64/a/aaa_elflibs-14.2-x86_64-23.txt +-rw-r--r-- 1 root root 5883880 2016-06-24 22:03 ./slackware64/a/aaa_elflibs-14.2-x86_64-23.txz +-rw-r--r-- 1 root root 181 2016-06-24 22:03 ./slackware64/a/aaa_elflibs-14.2-x86_64-23.txz.asc +-rw-r--r-- 1 root root 505 2015-04-30 19:11 ./slackware64/a/aaa_terminfo-5.9-x86_64-1.txt +-rw-r--r-- 1 root root 46516 2015-04-30 19:11 ./slackware64/a/aaa_terminfo-5.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-30 19:11 ./slackware64/a/aaa_terminfo-5.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 416 2015-04-14 01:07 ./slackware64/a/acl-2.2.52-x86_64-1.txt +-rw-r--r-- 1 root root 136904 2015-04-14 01:07 ./slackware64/a/acl-2.2.52-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-14 01:07 ./slackware64/a/acl-2.2.52-x86_64-1.txz.asc +-rw-r--r-- 1 root root 463 2016-03-07 19:37 ./slackware64/a/acpid-2.0.26-x86_64-1.txt +-rw-r--r-- 1 root root 47188 2016-03-07 19:37 ./slackware64/a/acpid-2.0.26-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:37 ./slackware64/a/acpid-2.0.26-x86_64-1.txz.asc +-rw-r--r-- 1 root root 608 2015-04-18 21:01 ./slackware64/a/attr-2.4.47-x86_64-1.txt +-rw-r--r-- 1 root root 74660 2015-04-18 21:01 ./slackware64/a/attr-2.4.47-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-18 21:01 ./slackware64/a/attr-2.4.47-x86_64-1.txz.asc +-rw-r--r-- 1 root root 510 2016-06-21 17:40 ./slackware64/a/bash-4.3.046-x86_64-1.txt +-rw-r--r-- 1 root root 1406416 2016-06-21 17:40 ./slackware64/a/bash-4.3.046-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-21 17:40 ./slackware64/a/bash-4.3.046-x86_64-1.txz.asc +-rw-r--r-- 1 root root 227 2008-09-21 22:01 ./slackware64/a/bin-11.1-x86_64-1.txt +-rw-r--r-- 1 root root 44196 2008-09-21 22:01 ./slackware64/a/bin-11.1-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-21 22:01 ./slackware64/a/bin-11.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 490 2016-05-20 21:00 ./slackware64/a/btrfs-progs-v4.5.3-x86_64-1.txt +-rw-r--r-- 1 root root 555336 2016-05-20 21:00 ./slackware64/a/btrfs-progs-v4.5.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-20 21:00 ./slackware64/a/btrfs-progs-v4.5.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 478 2010-09-20 17:35 ./slackware64/a/bzip2-1.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 127592 2010-09-20 17:35 ./slackware64/a/bzip2-1.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-09-20 17:35 ./slackware64/a/bzip2-1.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 525 2016-04-17 18:26 ./slackware64/a/coreutils-8.25-x86_64-2.txt +-rw-r--r-- 1 root root 2323072 2016-04-17 18:26 ./slackware64/a/coreutils-8.25-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-17 18:26 ./slackware64/a/coreutils-8.25-x86_64-2.txz.asc +-rw-r--r-- 1 root root 487 2015-12-02 19:54 ./slackware64/a/cpio-2.12-x86_64-1.txt +-rw-r--r-- 1 root root 224376 2015-12-02 19:54 ./slackware64/a/cpio-2.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-02 19:54 ./slackware64/a/cpio-2.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 620 2011-02-25 20:06 ./slackware64/a/cpufrequtils-008-x86_64-1.txt +-rw-r--r-- 1 root root 35440 2011-02-25 20:06 ./slackware64/a/cpufrequtils-008-x86_64-1.txz +-rw-r--r-- 1 root root 198 2011-02-25 20:06 ./slackware64/a/cpufrequtils-008-x86_64-1.txz.asc +-rw-r--r-- 1 root root 586 2016-03-09 17:40 ./slackware64/a/cryptsetup-1.7.1-x86_64-1.txt +-rw-r--r-- 1 root root 262532 2016-03-09 17:40 ./slackware64/a/cryptsetup-1.7.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 17:40 ./slackware64/a/cryptsetup-1.7.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 491 2016-03-27 17:11 ./slackware64/a/dbus-1.10.8-x86_64-1.txt +-rw-r--r-- 1 root root 483608 2016-03-27 17:11 ./slackware64/a/dbus-1.10.8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-27 17:11 ./slackware64/a/dbus-1.10.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 359 2016-05-10 18:02 ./slackware64/a/dcron-4.5-x86_64-5.txt +-rw-r--r-- 1 root root 33616 2016-05-10 18:02 ./slackware64/a/dcron-4.5-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-05-10 18:02 ./slackware64/a/dcron-4.5-x86_64-5.txz.asc +-rw-r--r-- 1 root root 311 2008-09-25 21:53 ./slackware64/a/devs-2.3.1-noarch-25.txt +-rw-r--r-- 1 root root 98596 2008-09-25 21:53 ./slackware64/a/devs-2.3.1-noarch-25.txz +-rw-r--r-- 1 root root 197 2008-09-25 21:53 ./slackware64/a/devs-2.3.1-noarch-25.txz.asc +-rw-r--r-- 1 root root 513 2013-08-12 22:31 ./slackware64/a/dialog-1.2_20130523-x86_64-1.txt +-rw-r--r-- 1 root root 158112 2013-08-12 22:31 ./slackware64/a/dialog-1.2_20130523-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-08-12 22:31 ./slackware64/a/dialog-1.2_20130523-x86_64-1.txz.asc +-rw-r--r-- 1 root root 337 2015-08-15 18:14 ./slackware64/a/dosfstools-3.0.28-x86_64-1.txt +-rw-r--r-- 1 root root 76960 2015-08-15 18:14 ./slackware64/a/dosfstools-3.0.28-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-15 18:14 ./slackware64/a/dosfstools-3.0.28-x86_64-1.txz.asc +-rw-r--r-- 1 root root 401 2016-06-09 17:34 ./slackware64/a/e2fsprogs-1.43.1-x86_64-1.txt +-rw-r--r-- 1 root root 954472 2016-06-09 17:34 ./slackware64/a/e2fsprogs-1.43.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-09 17:34 ./slackware64/a/e2fsprogs-1.43.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 352 2016-03-07 20:23 ./slackware64/a/ed-1.13-x86_64-1.txt +-rw-r--r-- 1 root root 59840 2016-03-07 20:23 ./slackware64/a/ed-1.13-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:23 ./slackware64/a/ed-1.13-x86_64-1.txz.asc +-rw-r--r-- 1 root root 461 2013-09-18 21:01 ./slackware64/a/efibootmgr-0.5.4-x86_64-1.txt +-rw-r--r-- 1 root root 48036 2013-09-18 21:01 ./slackware64/a/efibootmgr-0.5.4-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-09-18 21:01 ./slackware64/a/efibootmgr-0.5.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 430 2013-02-22 00:50 ./slackware64/a/eject-2.1.5-x86_64-4.txt +-rw-r--r-- 1 root root 34520 2013-02-22 00:50 ./slackware64/a/eject-2.1.5-x86_64-4.txz +-rw-r--r-- 1 root root 198 2013-02-22 00:50 ./slackware64/a/eject-2.1.5-x86_64-4.txz.asc +-rw-r--r-- 1 root root 447 2016-04-01 18:49 ./slackware64/a/elilo-3.16-x86_64-2.txt +-rw-r--r-- 1 root root 151260 2016-04-01 18:49 ./slackware64/a/elilo-3.16-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-01 18:49 ./slackware64/a/elilo-3.16-x86_64-2.txz.asc +-rw-r--r-- 1 root root 389 2008-09-23 19:35 ./slackware64/a/elvis-2.2_0-x86_64-2.txt +-rw-r--r-- 1 root root 699236 2008-09-23 19:35 ./slackware64/a/elvis-2.2_0-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-09-23 19:35 ./slackware64/a/elvis-2.2_0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 203 2016-06-22 19:37 ./slackware64/a/etc-14.2-x86_64-7.txt +-rw-r--r-- 1 root root 207728 2016-06-22 19:37 ./slackware64/a/etc-14.2-x86_64-7.txz +-rw-r--r-- 1 root root 181 2016-06-22 19:37 ./slackware64/a/etc-14.2-x86_64-7.txz.asc +-rw-r--r-- 1 root root 513 2016-01-12 19:10 ./slackware64/a/eudev-3.1.5-x86_64-8.txt +-rw-r--r-- 1 root root 908084 2016-01-12 19:10 ./slackware64/a/eudev-3.1.5-x86_64-8.txz +-rw-r--r-- 1 root root 181 2016-01-12 19:10 ./slackware64/a/eudev-3.1.5-x86_64-8.txz.asc +-rw-r--r-- 1 root root 272 2015-11-11 21:41 ./slackware64/a/file-5.25-x86_64-1.txt +-rw-r--r-- 1 root root 276008 2015-11-11 21:41 ./slackware64/a/file-5.25-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-11 21:41 ./slackware64/a/file-5.25-x86_64-1.txz.asc +-rw-r--r-- 1 root root 368 2009-06-13 00:03 ./slackware64/a/findutils-4.4.2-x86_64-1.txt +-rw-r--r-- 1 root root 414500 2009-06-13 00:03 ./slackware64/a/findutils-4.4.2-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-06-13 00:03 ./slackware64/a/findutils-4.4.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 257 2013-08-02 21:20 ./slackware64/a/floppy-5.5-x86_64-1.txt +-rw-r--r-- 1 root root 357868 2013-08-02 21:20 ./slackware64/a/floppy-5.5-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-08-02 21:20 ./slackware64/a/floppy-5.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 588 2015-08-07 19:37 ./slackware64/a/gawk-4.1.3-x86_64-1.txt +-rw-r--r-- 1 root root 1035700 2015-08-07 19:37 ./slackware64/a/gawk-4.1.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-07 19:37 ./slackware64/a/gawk-4.1.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 498 2008-12-13 17:25 ./slackware64/a/genpower-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 42648 2008-12-13 17:25 ./slackware64/a/genpower-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-12-13 17:25 ./slackware64/a/genpower-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 279 2016-06-13 18:24 ./slackware64/a/gettext-0.19.8.1-x86_64-1.txt +-rw-r--r-- 1 root root 122608 2016-06-13 18:24 ./slackware64/a/gettext-0.19.8.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-13 18:24 ./slackware64/a/gettext-0.19.8.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 510 2013-10-02 23:54 ./slackware64/a/getty-ps-2.1.0b-x86_64-2.txt +-rw-r--r-- 1 root root 61796 2013-10-02 23:54 ./slackware64/a/getty-ps-2.1.0b-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-10-02 23:54 ./slackware64/a/getty-ps-2.1.0b-x86_64-2.txz.asc +-rw-r--r-- 1 root root 323 2016-02-20 17:52 ./slackware64/a/glibc-solibs-2.23-x86_64-1.txt +-rw-r--r-- 1 root root 2679548 2016-02-20 17:52 ./slackware64/a/glibc-solibs-2.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-20 17:52 ./slackware64/a/glibc-solibs-2.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 504 2016-06-14 21:47 ./slackware64/a/glibc-zoneinfo-2016e-noarch-1.txt +-rw-r--r-- 1 root root 172824 2016-06-14 21:47 ./slackware64/a/glibc-zoneinfo-2016e-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-06-14 21:47 ./slackware64/a/glibc-zoneinfo-2016e-noarch-1.txz.asc +-rw-r--r-- 1 root root 513 2014-08-04 20:46 ./slackware64/a/gpm-1.20.7-x86_64-3.txt +-rw-r--r-- 1 root root 165364 2014-08-04 20:46 ./slackware64/a/gpm-1.20.7-x86_64-3.txz +-rw-r--r-- 1 root root 181 2014-08-04 20:46 ./slackware64/a/gpm-1.20.7-x86_64-3.txz.asc +-rw-r--r-- 1 root root 581 2015-04-07 16:42 ./slackware64/a/gptfdisk-1.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 176968 2015-04-07 16:42 ./slackware64/a/gptfdisk-1.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-07 16:42 ./slackware64/a/gptfdisk-1.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 292 2016-04-24 00:30 ./slackware64/a/grep-2.25-x86_64-1.txt +-rw-r--r-- 1 root root 248680 2016-04-24 00:30 ./slackware64/a/grep-2.25-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-24 00:30 ./slackware64/a/grep-2.25-x86_64-1.txz.asc +-rw-r--r-- 1 root root 182 2016-06-13 03:18 ./slackware64/a/grub-2.00-x86_64-5.txt +-rw-r--r-- 1 root root 8673260 2016-06-13 03:18 ./slackware64/a/grub-2.00-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-13 03:18 ./slackware64/a/grub-2.00-x86_64-5.txz.asc +-rw-r--r-- 1 root root 315 2016-05-20 20:41 ./slackware64/a/gzip-1.8-x86_64-1.txt +-rw-r--r-- 1 root root 111072 2016-05-20 20:41 ./slackware64/a/gzip-1.8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-20 20:41 ./slackware64/a/gzip-1.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 348 2015-10-23 20:54 ./slackware64/a/hdparm-9.48-x86_64-1.txt +-rw-r--r-- 1 root root 69412 2015-10-23 20:54 ./slackware64/a/hdparm-9.48-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-23 20:54 ./slackware64/a/hdparm-9.48-x86_64-1.txz.asc +-rw-r--r-- 1 root root 325 2016-03-07 20:01 ./slackware64/a/hwdata-0.284-noarch-1.txt +-rw-r--r-- 1 root root 1188964 2016-03-07 20:01 ./slackware64/a/hwdata-0.284-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:01 ./slackware64/a/hwdata-0.284-noarch-1.txz.asc +-rw-r--r-- 1 root root 466 2015-04-19 05:17 ./slackware64/a/infozip-6.0-x86_64-3.txt +-rw-r--r-- 1 root root 411316 2015-04-19 05:17 ./slackware64/a/infozip-6.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-04-19 05:17 ./slackware64/a/infozip-6.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 513 2010-05-08 07:59 ./slackware64/a/inotify-tools-3.14-x86_64-1.txt +-rw-r--r-- 1 root root 43908 2010-05-08 07:59 ./slackware64/a/inotify-tools-3.14-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-05-08 07:59 ./slackware64/a/inotify-tools-3.14-x86_64-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:05 ./slackware64/a/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/a/install.end +-rw-r--r-- 1 root root 539 2011-03-29 19:01 ./slackware64/a/jfsutils-1.1.15-x86_64-1.txt +-rw-r--r-- 1 root root 198368 2011-03-29 19:01 ./slackware64/a/jfsutils-1.1.15-x86_64-1.txz +-rw-r--r-- 1 root root 198 2011-03-29 19:01 ./slackware64/a/jfsutils-1.1.15-x86_64-1.txz.asc +-rw-r--r-- 1 root root 465 2012-08-21 17:24 ./slackware64/a/kbd-1.15.3-x86_64-2.txt +-rw-r--r-- 1 root root 1147168 2012-08-21 17:24 ./slackware64/a/kbd-1.15.3-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-08-21 17:24 ./slackware64/a/kbd-1.15.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 426 2016-06-29 00:17 ./slackware64/a/kernel-firmware-20160628git-noarch-1.txt +-rw-r--r-- 1 root root 41986528 2016-06-29 00:17 ./slackware64/a/kernel-firmware-20160628git-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-06-29 00:17 ./slackware64/a/kernel-firmware-20160628git-noarch-1.txz.asc +-rw-r--r-- 1 root root 626 2016-06-24 18:31 ./slackware64/a/kernel-generic-4.4.14-x86_64-1.txt +-rw-r--r-- 1 root root 4803536 2016-06-24 18:31 ./slackware64/a/kernel-generic-4.4.14-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 18:31 ./slackware64/a/kernel-generic-4.4.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 638 2016-06-24 18:38 ./slackware64/a/kernel-huge-4.4.14-x86_64-1.txt +-rw-r--r-- 1 root root 8236544 2016-06-24 18:38 ./slackware64/a/kernel-huge-4.4.14-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 18:38 ./slackware64/a/kernel-huge-4.4.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 569 2016-06-24 18:34 ./slackware64/a/kernel-modules-4.4.14-x86_64-1.txt +-rw-r--r-- 1 root root 28918672 2016-06-24 18:34 ./slackware64/a/kernel-modules-4.4.14-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 18:34 ./slackware64/a/kernel-modules-4.4.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 513 2015-11-24 03:03 ./slackware64/a/kmod-22-x86_64-1.txt +-rw-r--r-- 1 root root 148664 2015-11-24 03:03 ./slackware64/a/kmod-22-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-24 03:03 ./slackware64/a/kmod-22-x86_64-1.txz.asc +-rw-r--r-- 1 root root 386 2015-10-16 16:29 ./slackware64/a/less-481-x86_64-1.txt +-rw-r--r-- 1 root root 115472 2015-10-16 16:29 ./slackware64/a/less-481-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-16 16:29 ./slackware64/a/less-481-x86_64-1.txz.asc +-rw-r--r-- 1 root root 152 2008-10-02 14:54 ./slackware64/a/lha-114i-x86_64-1.txt +-rw-r--r-- 1 root root 47640 2008-10-02 14:54 ./slackware64/a/lha-114i-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-02 14:54 ./slackware64/a/lha-114i-x86_64-1.txz.asc +-rw-r--r-- 1 root root 596 2014-08-25 19:40 ./slackware64/a/libcgroup-0.41-x86_64-1.txt +-rw-r--r-- 1 root root 118432 2014-08-25 19:40 ./slackware64/a/libcgroup-0.41-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-08-25 19:40 ./slackware64/a/libcgroup-0.41-x86_64-1.txz.asc +-rw-r--r-- 1 root root 332 2015-11-14 19:46 ./slackware64/a/libgudev-230-x86_64-1.txt +-rw-r--r-- 1 root root 67108 2015-11-14 19:46 ./slackware64/a/libgudev-230-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-14 19:46 ./slackware64/a/libgudev-230-x86_64-1.txz.asc +-rw-r--r-- 1 root root 590 2016-04-21 20:16 ./slackware64/a/lilo-24.2-x86_64-2.txt +-rw-r--r-- 1 root root 428344 2016-04-21 20:16 ./slackware64/a/lilo-24.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-21 20:16 ./slackware64/a/lilo-24.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 533 2015-04-17 19:14 ./slackware64/a/logrotate-3.8.9-x86_64-1.txt +-rw-r--r-- 1 root root 45560 2015-04-17 19:14 ./slackware64/a/logrotate-3.8.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 19:14 ./slackware64/a/logrotate-3.8.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 448 2015-12-15 05:37 ./slackware64/a/lrzip-0.621-x86_64-1.txt +-rw-r--r-- 1 root root 205192 2015-12-15 05:37 ./slackware64/a/lrzip-0.621-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:37 ./slackware64/a/lrzip-0.621-x86_64-1.txz.asc +-rw-r--r-- 1 root root 557 2016-05-17 04:31 ./slackware64/a/lvm2-2.02.154-x86_64-1.txt +-rw-r--r-- 1 root root 1245404 2016-05-17 04:31 ./slackware64/a/lvm2-2.02.154-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-17 04:31 ./slackware64/a/lvm2-2.02.154-x86_64-1.txz.asc +-rw-r--r-- 1 root root 8557 2016-06-24 21:06 ./slackware64/a/maketag +-rw-r--r-- 1 root root 8557 2016-06-24 21:06 ./slackware64/a/maketag.ez +-rw-r--r-- 1 root root 587 2015-12-18 04:58 ./slackware64/a/mcelog-128-x86_64-1.txt +-rw-r--r-- 1 root root 316056 2015-12-18 04:58 ./slackware64/a/mcelog-128-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 04:58 ./slackware64/a/mcelog-128-x86_64-1.txz.asc +-rw-r--r-- 1 root root 472 2016-03-04 04:10 ./slackware64/a/mdadm-3.3.4-x86_64-1.txt +-rw-r--r-- 1 root root 328600 2016-03-04 04:10 ./slackware64/a/mdadm-3.3.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-04 04:10 ./slackware64/a/mdadm-3.3.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 323 2013-10-15 21:32 ./slackware64/a/minicom-2.6.2-x86_64-1.txt +-rw-r--r-- 1 root root 301344 2013-10-15 21:32 ./slackware64/a/minicom-2.6.2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-15 21:32 ./slackware64/a/minicom-2.6.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 529 2016-06-20 20:25 ./slackware64/a/mkinitrd-1.4.8-x86_64-8.txt +-rw-r--r-- 1 root root 580172 2016-06-20 20:25 ./slackware64/a/mkinitrd-1.4.8-x86_64-8.txz +-rw-r--r-- 1 root root 181 2016-06-20 20:25 ./slackware64/a/mkinitrd-1.4.8-x86_64-8.txz.asc +-rw-r--r-- 1 root root 487 2008-10-02 19:42 ./slackware64/a/mt-st-0.9b-x86_64-2.txt +-rw-r--r-- 1 root root 30000 2008-10-02 19:42 ./slackware64/a/mt-st-0.9b-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-10-02 19:42 ./slackware64/a/mt-st-0.9b-x86_64-2.txz.asc +-rw-r--r-- 1 root root 400 2010-07-28 03:30 ./slackware64/a/mtx-1.3.12-x86_64-1.txt +-rw-r--r-- 1 root root 64888 2010-07-28 03:30 ./slackware64/a/mtx-1.3.12-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-07-28 03:30 ./slackware64/a/mtx-1.3.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 560 2015-12-15 05:36 ./slackware64/a/ncompress-4.2.4.4-x86_64-1.txt +-rw-r--r-- 1 root root 18904 2015-12-15 05:36 ./slackware64/a/ncompress-4.2.4.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:36 ./slackware64/a/ncompress-4.2.4.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 553 2016-03-21 18:31 ./slackware64/a/ntfs-3g-2016.2.22-x86_64-1.txt +-rw-r--r-- 1 root root 475824 2016-03-21 18:31 ./slackware64/a/ntfs-3g-2016.2.22-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-21 18:31 ./slackware64/a/ntfs-3g-2016.2.22-x86_64-1.txz.asc +-rw-r--r-- 1 root root 625 2016-05-03 17:21 ./slackware64/a/openssl-solibs-1.0.2h-x86_64-1.txt +-rw-r--r-- 1 root root 1062596 2016-05-03 17:21 ./slackware64/a/openssl-solibs-1.0.2h-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-03 17:21 ./slackware64/a/openssl-solibs-1.0.2h-x86_64-1.txz.asc +-rw-r--r-- 1 root root 419 2015-12-18 04:48 ./slackware64/a/os-prober-1.70-x86_64-1.txt +-rw-r--r-- 1 root root 16540 2015-12-18 04:48 ./slackware64/a/os-prober-1.70-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 04:48 ./slackware64/a/os-prober-1.70-x86_64-1.txz.asc +-rw-r--r-- 1 root root 564 2015-12-15 05:26 ./slackware64/a/patch-2.7.5-x86_64-1.txt +-rw-r--r-- 1 root root 109956 2015-12-15 05:26 ./slackware64/a/patch-2.7.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:26 ./slackware64/a/patch-2.7.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 436 2016-03-19 18:47 ./slackware64/a/pciutils-3.4.1-x86_64-2.txt +-rw-r--r-- 1 root root 99296 2016-03-19 18:47 ./slackware64/a/pciutils-3.4.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-19 18:47 ./slackware64/a/pciutils-3.4.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 451 2015-12-18 04:50 ./slackware64/a/pcmciautils-018-x86_64-1.txt +-rw-r--r-- 1 root root 32804 2015-12-18 04:50 ./slackware64/a/pcmciautils-018-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 04:50 ./slackware64/a/pcmciautils-018-x86_64-1.txz.asc +-rw-r--r-- 1 root root 624 2016-06-15 01:18 ./slackware64/a/pkgtools-14.2-noarch-10.txt +-rw-r--r-- 1 root root 188636 2016-06-15 01:18 ./slackware64/a/pkgtools-14.2-noarch-10.txz +-rw-r--r-- 1 root root 181 2016-06-15 01:18 ./slackware64/a/pkgtools-14.2-noarch-10.txz.asc +-rw-r--r-- 1 root root 373 2016-03-15 20:34 ./slackware64/a/procps-ng-3.3.11-x86_64-1.txt +-rw-r--r-- 1 root root 472720 2016-03-15 20:34 ./slackware64/a/procps-ng-3.3.11-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-15 20:34 ./slackware64/a/procps-ng-3.3.11-x86_64-1.txz.asc +-rw-r--r-- 1 root root 579 2015-12-28 00:57 ./slackware64/a/quota-4.03-x86_64-1.txt +-rw-r--r-- 1 root root 223424 2015-12-28 00:57 ./slackware64/a/quota-4.03-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-28 00:57 ./slackware64/a/quota-4.03-x86_64-1.txz.asc +-rw-r--r-- 1 root root 423 2015-04-14 18:05 ./slackware64/a/reiserfsprogs-3.6.24-x86_64-1.txt +-rw-r--r-- 1 root root 225528 2015-04-14 18:05 ./slackware64/a/reiserfsprogs-3.6.24-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-14 18:05 ./slackware64/a/reiserfsprogs-3.6.24-x86_64-1.txz.asc +-rw-r--r-- 1 root root 398 2010-08-07 22:48 ./slackware64/a/rpm2tgz-1.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 5492 2010-08-07 22:48 ./slackware64/a/rpm2tgz-1.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-07 22:48 ./slackware64/a/rpm2tgz-1.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 467 2016-02-26 19:09 ./slackware64/a/sdparm-1.10-x86_64-1.txt +-rw-r--r-- 1 root root 86256 2016-02-26 19:09 ./slackware64/a/sdparm-1.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-26 19:09 ./slackware64/a/sdparm-1.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 408 2013-10-02 19:52 ./slackware64/a/sed-4.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 154124 2013-10-02 19:52 ./slackware64/a/sed-4.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-02 19:52 ./slackware64/a/sed-4.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 536 2014-07-02 00:21 ./slackware64/a/shadow-4.2.1-x86_64-1.txt +-rw-r--r-- 1 root root 1457356 2014-07-02 00:21 ./slackware64/a/shadow-4.2.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-07-02 00:21 ./slackware64/a/shadow-4.2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 627 2015-12-22 22:50 ./slackware64/a/sharutils-4.15.2-x86_64-1.txt +-rw-r--r-- 1 root root 264708 2015-12-22 22:50 ./slackware64/a/sharutils-4.15.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-22 22:50 ./slackware64/a/sharutils-4.15.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 553 2012-08-30 18:56 ./slackware64/a/slocate-3.1-x86_64-4.txt +-rw-r--r-- 1 root root 28504 2012-08-30 18:56 ./slackware64/a/slocate-3.1-x86_64-4.txz +-rw-r--r-- 1 root root 198 2012-08-30 18:56 ./slackware64/a/slocate-3.1-x86_64-4.txz.asc +-rw-r--r-- 1 root root 493 2016-06-07 18:00 ./slackware64/a/smartmontools-6.5-x86_64-1.txt +-rw-r--r-- 1 root root 353652 2016-06-07 18:00 ./slackware64/a/smartmontools-6.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-07 18:00 ./slackware64/a/smartmontools-6.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 285 2008-10-02 20:57 ./slackware64/a/splitvt-1.6.5-x86_64-1.txt +-rw-r--r-- 1 root root 28700 2008-10-02 20:57 ./slackware64/a/splitvt-1.6.5-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-02 20:57 ./slackware64/a/splitvt-1.6.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 544 2008-09-25 22:00 ./slackware64/a/sysfsutils-2.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 39392 2008-09-25 22:00 ./slackware64/a/sysfsutils-2.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-25 22:00 ./slackware64/a/sysfsutils-2.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 457 2016-06-29 19:20 ./slackware64/a/sysklogd-1.5.1-x86_64-2.txt +-rw-r--r-- 1 root root 64500 2016-06-29 19:20 ./slackware64/a/sysklogd-1.5.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-29 19:20 ./slackware64/a/sysklogd-1.5.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 518 2016-05-24 20:54 ./slackware64/a/syslinux-4.07-x86_64-1.txt +-rw-r--r-- 1 root root 900076 2016-05-24 20:54 ./slackware64/a/syslinux-4.07-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-24 20:54 ./slackware64/a/syslinux-4.07-x86_64-1.txz.asc +-rw-r--r-- 1 root root 513 2015-08-06 23:06 ./slackware64/a/sysvinit-2.88dsf-x86_64-4.txt +-rw-r--r-- 1 root root 72736 2015-08-06 23:06 ./slackware64/a/sysvinit-2.88dsf-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-08-06 23:06 ./slackware64/a/sysvinit-2.88dsf-x86_64-4.txz.asc +-rw-r--r-- 1 root root 695 2008-09-23 17:55 ./slackware64/a/sysvinit-functions-8.53-x86_64-2.txt +-rw-r--r-- 1 root root 30356 2008-09-23 17:55 ./slackware64/a/sysvinit-functions-8.53-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-09-23 17:55 ./slackware64/a/sysvinit-functions-8.53-x86_64-2.txz.asc +-rw-r--r-- 1 root root 379 2016-06-13 01:33 ./slackware64/a/sysvinit-scripts-2.0-noarch-33.txt +-rw-r--r-- 1 root root 21632 2016-06-13 01:33 ./slackware64/a/sysvinit-scripts-2.0-noarch-33.txz +-rw-r--r-- 1 root root 181 2016-06-13 01:33 ./slackware64/a/sysvinit-scripts-2.0-noarch-33.txz.asc +-rw-r--r-- 1 root root 1306 2016-06-24 21:06 ./slackware64/a/tagfile +-rw-r--r-- 1 root root 380 2016-05-20 20:37 ./slackware64/a/tar-1.29-x86_64-1.txt +-rw-r--r-- 1 root root 782012 2016-05-20 20:37 ./slackware64/a/tar-1.29-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-20 20:37 ./slackware64/a/tar-1.29-x86_64-1.txz.asc +-rw-r--r-- 1 root root 431 2015-11-07 18:27 ./slackware64/a/tcsh-6.19.00-x86_64-1.txt +-rw-r--r-- 1 root root 401908 2015-11-07 18:27 ./slackware64/a/tcsh-6.19.00-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-07 18:27 ./slackware64/a/tcsh-6.19.00-x86_64-1.txz.asc +-rw-r--r-- 1 root root 432 2008-09-25 21:54 ./slackware64/a/time-1.7-x86_64-1.txt +-rw-r--r-- 1 root root 18340 2008-09-25 21:54 ./slackware64/a/time-1.7-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-25 21:54 ./slackware64/a/time-1.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 418 2015-12-15 05:35 ./slackware64/a/tree-1.7.0-x86_64-1.txt +-rw-r--r-- 1 root root 46820 2015-12-15 05:35 ./slackware64/a/tree-1.7.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:35 ./slackware64/a/tree-1.7.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 413 2015-11-20 19:26 ./slackware64/a/udisks-1.0.5-x86_64-3.txt +-rw-r--r-- 1 root root 177840 2015-11-20 19:26 ./slackware64/a/udisks-1.0.5-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-20 19:26 ./slackware64/a/udisks-1.0.5-x86_64-3.txz.asc +-rw-r--r-- 1 root root 428 2015-11-19 05:38 ./slackware64/a/udisks2-2.1.5-x86_64-2.txt +-rw-r--r-- 1 root root 595584 2015-11-19 05:38 ./slackware64/a/udisks2-2.1.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:38 ./slackware64/a/udisks2-2.1.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 392 2008-10-02 21:07 ./slackware64/a/unarj-265-x86_64-1.txt +-rw-r--r-- 1 root root 16528 2008-10-02 21:07 ./slackware64/a/unarj-265-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-02 21:07 ./slackware64/a/unarj-265-x86_64-1.txz.asc +-rw-r--r-- 1 root root 494 2016-03-04 16:13 ./slackware64/a/upower-0.9.23-x86_64-3.txt +-rw-r--r-- 1 root root 127576 2016-03-04 16:13 ./slackware64/a/upower-0.9.23-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-04 16:13 ./slackware64/a/upower-0.9.23-x86_64-3.txz.asc +-rw-r--r-- 1 root root 720 2015-12-15 05:39 ./slackware64/a/usb_modeswitch-2.2.6-x86_64-1.txt +-rw-r--r-- 1 root root 151380 2015-12-15 05:39 ./slackware64/a/usb_modeswitch-2.2.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:39 ./slackware64/a/usb_modeswitch-2.2.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 322 2015-12-18 04:27 ./slackware64/a/usbutils-008-x86_64-1.txt +-rw-r--r-- 1 root root 73148 2015-12-18 04:27 ./slackware64/a/usbutils-008-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 04:27 ./slackware64/a/usbutils-008-x86_64-1.txz.asc +-rw-r--r-- 1 root root 350 2016-03-19 20:11 ./slackware64/a/utempter-1.1.6-x86_64-2.txt +-rw-r--r-- 1 root root 15624 2016-03-19 20:11 ./slackware64/a/utempter-1.1.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:11 ./slackware64/a/utempter-1.1.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 329 2015-12-11 03:39 ./slackware64/a/util-linux-2.27.1-x86_64-1.txt +-rw-r--r-- 1 root root 2008376 2015-12-11 03:39 ./slackware64/a/util-linux-2.27.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-11 03:39 ./slackware64/a/util-linux-2.27.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 582 2015-12-11 18:09 ./slackware64/a/which-2.21-x86_64-1.txt +-rw-r--r-- 1 root root 29804 2015-12-11 18:09 ./slackware64/a/which-2.21-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-11 18:09 ./slackware64/a/which-2.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 495 2015-12-15 06:01 ./slackware64/a/xfsprogs-4.3.0-x86_64-1.txt +-rw-r--r-- 1 root root 782352 2015-12-15 06:01 ./slackware64/a/xfsprogs-4.3.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 06:01 ./slackware64/a/xfsprogs-4.3.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 498 2015-10-31 17:23 ./slackware64/a/xz-5.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 282156 2015-10-31 17:23 ./slackware64/a/xz-5.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-31 17:23 ./slackware64/a/xz-5.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 542 2010-07-28 04:37 ./slackware64/a/zoo-2.10_22-x86_64-1.txt +-rw-r--r-- 1 root root 54660 2010-07-28 04:37 ./slackware64/a/zoo-2.10_22-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-07-28 04:37 ./slackware64/a/zoo-2.10_22-x86_64-1.txz.asc +drwxr-xr-x 2 root root 20480 2016-06-29 19:47 ./slackware64/ap +-rw-r--r-- 1 root root 445 2010-07-28 17:25 ./slackware64/ap/a2ps-4.14-x86_64-5.txt +-rw-r--r-- 1 root root 749532 2010-07-28 17:25 ./slackware64/ap/a2ps-4.14-x86_64-5.txz +-rw-r--r-- 1 root root 198 2010-07-28 17:25 ./slackware64/ap/a2ps-4.14-x86_64-5.txz.asc +-rw-r--r-- 1 root root 599 2013-10-24 00:10 ./slackware64/ap/acct-6.5.4-x86_64-2.txt +-rw-r--r-- 1 root root 92044 2013-10-24 00:10 ./slackware64/ap/acct-6.5.4-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-10-24 00:10 ./slackware64/ap/acct-6.5.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 625 2016-04-01 19:22 ./slackware64/ap/alsa-utils-1.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 974352 2016-04-01 19:22 ./slackware64/ap/alsa-utils-1.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-01 19:22 ./slackware64/ap/alsa-utils-1.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 275 2008-10-02 22:32 ./slackware64/ap/amp-0.7.6-x86_64-1.txt +-rw-r--r-- 1 root root 44568 2008-10-02 22:32 ./slackware64/ap/amp-0.7.6-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-02 22:32 ./slackware64/ap/amp-0.7.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 525 2010-04-25 21:36 ./slackware64/ap/ash-0.4.0-x86_64-2.txt +-rw-r--r-- 1 root root 81548 2010-04-25 21:36 ./slackware64/ap/ash-0.4.0-x86_64-2.txz +-rw-r--r-- 1 root root 198 2010-04-25 21:36 ./slackware64/ap/ash-0.4.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 346 2016-06-29 19:31 ./slackware64/ap/at-3.1.19-x86_64-2.txt +-rw-r--r-- 1 root root 41260 2016-06-29 19:31 ./slackware64/ap/at-3.1.19-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-29 19:31 ./slackware64/ap/at-3.1.19-x86_64-2.txz.asc +-rw-r--r-- 1 root root 386 2015-03-20 16:46 ./slackware64/ap/bc-1.06.95-x86_64-3.txt +-rw-r--r-- 1 root root 101680 2015-03-20 16:46 ./slackware64/ap/bc-1.06.95-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-20 16:46 ./slackware64/ap/bc-1.06.95-x86_64-3.txz.asc +-rw-r--r-- 1 root root 335 2009-05-23 04:18 ./slackware64/ap/bpe-2.01.00-x86_64-2.txt +-rw-r--r-- 1 root root 47880 2009-05-23 04:18 ./slackware64/ap/bpe-2.01.00-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-05-23 04:18 ./slackware64/ap/bpe-2.01.00-x86_64-2.txz.asc +-rw-r--r-- 1 root root 595 2008-11-26 15:53 ./slackware64/ap/cdparanoia-III_10.2-x86_64-1.txt +-rw-r--r-- 1 root root 97840 2008-11-26 15:53 ./slackware64/ap/cdparanoia-III_10.2-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-11-26 15:53 ./slackware64/ap/cdparanoia-III_10.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 296 2012-07-07 02:20 ./slackware64/ap/cdrdao-1.2.3-x86_64-2.txt +-rw-r--r-- 1 root root 281584 2012-07-07 02:20 ./slackware64/ap/cdrdao-1.2.3-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-07-07 02:20 ./slackware64/ap/cdrdao-1.2.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 409 2016-05-31 19:44 ./slackware64/ap/cdrtools-3.01-x86_64-3.txt +-rw-r--r-- 1 root root 883000 2016-05-31 19:44 ./slackware64/ap/cdrtools-3.01-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-05-31 19:44 ./slackware64/ap/cdrtools-3.01-x86_64-3.txz.asc +-rw-r--r-- 1 root root 532 2015-12-15 00:42 ./slackware64/ap/cgmanager-0.39-x86_64-1.txt +-rw-r--r-- 1 root root 112280 2015-12-15 00:42 ./slackware64/ap/cgmanager-0.39-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 00:42 ./slackware64/ap/cgmanager-0.39-x86_64-1.txz.asc +-rw-r--r-- 1 root root 644 2016-06-15 05:54 ./slackware64/ap/cups-2.1.4-x86_64-1.txt +-rw-r--r-- 1 root root 1376012 2016-06-15 05:54 ./slackware64/ap/cups-2.1.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 05:54 ./slackware64/ap/cups-2.1.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 416 2016-06-23 06:25 ./slackware64/ap/cups-filters-1.9.0-x86_64-2.txt +-rw-r--r-- 1 root root 733848 2016-06-23 06:25 ./slackware64/ap/cups-filters-1.9.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-23 06:25 ./slackware64/ap/cups-filters-1.9.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 465 2015-10-15 20:59 ./slackware64/ap/dc3dd-7.2.641-x86_64-1.txt +-rw-r--r-- 1 root root 125228 2015-10-15 20:59 ./slackware64/ap/dc3dd-7.2.641-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:59 ./slackware64/ap/dc3dd-7.2.641-x86_64-1.txz.asc +-rw-r--r-- 1 root root 465 2016-03-19 01:34 ./slackware64/ap/ddrescue-1.21-x86_64-1.txt +-rw-r--r-- 1 root root 92584 2016-03-19 01:34 ./slackware64/ap/ddrescue-1.21-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 01:34 ./slackware64/ap/ddrescue-1.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 409 2016-03-07 20:14 ./slackware64/ap/diffstat-1.60-x86_64-1.txt +-rw-r--r-- 1 root root 25016 2016-03-07 20:14 ./slackware64/ap/diffstat-1.60-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:14 ./slackware64/ap/diffstat-1.60-x86_64-1.txz.asc +-rw-r--r-- 1 root root 283 2013-10-03 21:28 ./slackware64/ap/diffutils-3.3-x86_64-1.txt +-rw-r--r-- 1 root root 299652 2013-10-03 21:28 ./slackware64/ap/diffutils-3.3-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-03 21:28 ./slackware64/ap/diffutils-3.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 349 2013-05-17 03:58 ./slackware64/ap/dmapi-2.2.12-x86_64-1.txt +-rw-r--r-- 1 root root 32040 2013-05-17 03:58 ./slackware64/ap/dmapi-2.2.12-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-05-17 03:58 ./slackware64/ap/dmapi-2.2.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 473 2016-01-29 18:32 ./slackware64/ap/dmidecode-3.0-x86_64-1.txt +-rw-r--r-- 1 root root 59528 2016-01-29 18:32 ./slackware64/ap/dmidecode-3.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-29 18:32 ./slackware64/ap/dmidecode-3.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 360 2011-04-14 18:30 ./slackware64/ap/dvd+rw-tools-7.1-x86_64-2.txt +-rw-r--r-- 1 root root 110456 2011-04-14 18:30 ./slackware64/ap/dvd+rw-tools-7.1-x86_64-2.txz +-rw-r--r-- 1 root root 198 2011-04-14 18:30 ./slackware64/ap/dvd+rw-tools-7.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 461 2016-03-07 20:12 ./slackware64/ap/enscript-1.6.6-x86_64-1.txt +-rw-r--r-- 1 root root 370636 2016-03-07 20:12 ./slackware64/ap/enscript-1.6.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:12 ./slackware64/ap/enscript-1.6.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 603 2015-04-02 17:13 ./slackware64/ap/flac-1.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 488632 2015-04-02 17:13 ./slackware64/ap/flac-1.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 17:13 ./slackware64/ap/flac-1.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 560 2016-05-27 18:27 ./slackware64/ap/ghostscript-9.19-x86_64-2.txt +-rw-r--r-- 1 root root 13829036 2016-05-27 18:27 ./slackware64/ap/ghostscript-9.19-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-05-27 18:27 ./slackware64/ap/ghostscript-9.19-x86_64-2.txz.asc +-rw-r--r-- 1 root root 368 2008-10-01 19:55 ./slackware64/ap/ghostscript-fonts-std-8.11-noarch-1.txt +-rw-r--r-- 1 root root 3517036 2008-10-01 19:55 ./slackware64/ap/ghostscript-fonts-std-8.11-noarch-1.txz +-rw-r--r-- 1 root root 197 2008-10-01 19:55 ./slackware64/ap/ghostscript-fonts-std-8.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 303 2016-04-30 18:18 ./slackware64/ap/gphoto2-2.5.10-x86_64-1.txt +-rw-r--r-- 1 root root 190832 2016-04-30 18:18 ./slackware64/ap/gphoto2-2.5.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-30 18:18 ./slackware64/ap/gphoto2-2.5.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 431 2016-06-09 17:30 ./slackware64/ap/groff-1.22.3-x86_64-2.txt +-rw-r--r-- 1 root root 2164808 2016-06-09 17:30 ./slackware64/ap/groff-1.22.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-09 17:30 ./slackware64/ap/groff-1.22.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 549 2016-02-03 04:25 ./slackware64/ap/gutenprint-5.2.11-x86_64-2.txt +-rw-r--r-- 1 root root 2575776 2016-02-03 04:25 ./slackware64/ap/gutenprint-5.2.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-02-03 04:25 ./slackware64/ap/gutenprint-5.2.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 477 2016-06-01 18:57 ./slackware64/ap/hplip-3.16.5-x86_64-3.txt +-rw-r--r-- 1 root root 15732960 2016-06-01 18:57 ./slackware64/ap/hplip-3.16.5-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-06-01 18:57 ./slackware64/ap/hplip-3.16.5-x86_64-3.txz.asc +-rw-r--r-- 1 root root 482 2016-03-09 17:47 ./slackware64/ap/htop-2.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 81712 2016-03-09 17:47 ./slackware64/ap/htop-2.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 17:47 ./slackware64/ap/htop-2.0.1-x86_64-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/ap/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/ap/install.end +-rw-r--r-- 1 root root 600 2009-03-16 21:02 ./slackware64/ap/ispell-3.2.06-x86_64-1.txt +-rw-r--r-- 1 root root 347684 2009-03-16 21:02 ./slackware64/ap/ispell-3.2.06-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-03-16 21:02 ./slackware64/ap/ispell-3.2.06-x86_64-1.txz.asc +-rw-r--r-- 1 root root 381 2015-04-20 01:54 ./slackware64/ap/itstool-2.0.2-x86_64-1.txt +-rw-r--r-- 1 root root 39716 2015-04-20 01:54 ./slackware64/ap/itstool-2.0.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-20 01:54 ./slackware64/ap/itstool-2.0.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 484 2013-06-22 23:59 ./slackware64/ap/jed-0.99_19-x86_64-2.txt +-rw-r--r-- 1 root root 531096 2013-06-22 23:59 ./slackware64/ap/jed-0.99_19-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-06-22 23:59 ./slackware64/ap/jed-0.99_19-x86_64-2.txz.asc +-rw-r--r-- 1 root root 145 2015-12-17 00:05 ./slackware64/ap/joe-4.1-x86_64-1.txt +-rw-r--r-- 1 root root 431956 2015-12-17 00:05 ./slackware64/ap/joe-4.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-17 00:05 ./slackware64/ap/joe-4.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 337 2010-07-28 18:44 ./slackware64/ap/jove-4.16.0.73-x86_64-1.txt +-rw-r--r-- 1 root root 150256 2010-07-28 18:44 ./slackware64/ap/jove-4.16.0.73-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-07-28 18:44 ./slackware64/ap/jove-4.16.0.73-x86_64-1.txz.asc +-rw-r--r-- 1 root root 540 2016-03-02 22:04 ./slackware64/ap/ksh93-2012_08_01-x86_64-2.txt +-rw-r--r-- 1 root root 736440 2016-03-02 22:04 ./slackware64/ap/ksh93-2012_08_01-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-02 22:04 ./slackware64/ap/ksh93-2012_08_01-x86_64-2.txz.asc +-rw-r--r-- 1 root root 316 2015-12-23 02:50 ./slackware64/ap/libx86-1.1-x86_64-2.txt +-rw-r--r-- 1 root root 36572 2015-12-23 02:50 ./slackware64/ap/libx86-1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-12-23 02:50 ./slackware64/ap/libx86-1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 701 2015-10-23 21:53 ./slackware64/ap/linuxdoc-tools-0.9.69-x86_64-5.txt +-rw-r--r-- 1 root root 6815420 2015-10-23 21:53 ./slackware64/ap/linuxdoc-tools-0.9.69-x86_64-5.txz +-rw-r--r-- 1 root root 181 2015-10-23 21:53 ./slackware64/ap/linuxdoc-tools-0.9.69-x86_64-5.txz.asc +-rw-r--r-- 1 root root 487 2015-11-23 19:43 ./slackware64/ap/lm_sensors-3.4.0-x86_64-1.txt +-rw-r--r-- 1 root root 138768 2015-11-23 19:43 ./slackware64/ap/lm_sensors-3.4.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-23 19:43 ./slackware64/ap/lm_sensors-3.4.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 333 2015-12-23 20:53 ./slackware64/ap/lsof-4.89-x86_64-1.txt +-rw-r--r-- 1 root root 294396 2015-12-23 20:53 ./slackware64/ap/lsof-4.89-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 20:53 ./slackware64/ap/lsof-4.89-x86_64-1.txz.asc +-rw-r--r-- 1 root root 367 2015-04-15 19:18 ./slackware64/ap/lsscsi-0.28-x86_64-1.txt +-rw-r--r-- 1 root root 40260 2015-04-15 19:18 ./slackware64/ap/lsscsi-0.28-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-15 19:18 ./slackware64/ap/lsscsi-0.28-x86_64-1.txz.asc +-rw-r--r-- 1 root root 507 2016-06-13 01:42 ./slackware64/ap/lxc-2.0.1-x86_64-4.txt +-rw-r--r-- 1 root root 858300 2016-06-13 01:42 ./slackware64/ap/lxc-2.0.1-x86_64-4.txz +-rw-r--r-- 1 root root 181 2016-06-13 01:42 ./slackware64/ap/lxc-2.0.1-x86_64-4.txz.asc +-rw-r--r-- 1 root root 444 2015-04-20 01:48 ./slackware64/ap/lzip-1.16-x86_64-1.txt +-rw-r--r-- 1 root root 72936 2015-04-20 01:48 ./slackware64/ap/lzip-1.16-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-20 01:48 ./slackware64/ap/lzip-1.16-x86_64-1.txz.asc +-rw-r--r-- 1 root root 339 2013-03-21 20:44 ./slackware64/ap/madplay-0.15.2b-x86_64-4.txt +-rw-r--r-- 1 root root 60264 2013-03-21 20:44 ./slackware64/ap/madplay-0.15.2b-x86_64-4.txz +-rw-r--r-- 1 root root 198 2013-03-21 20:44 ./slackware64/ap/madplay-0.15.2b-x86_64-4.txz.asc +-rw-r--r-- 1 root root 6178 2016-03-08 01:38 ./slackware64/ap/maketag +-rw-r--r-- 1 root root 6178 2016-03-08 01:38 ./slackware64/ap/maketag.ez +-rw-r--r-- 1 root root 447 2015-11-10 20:21 ./slackware64/ap/man-1.6g-x86_64-3.txt +-rw-r--r-- 1 root root 218600 2015-11-10 20:21 ./slackware64/ap/man-1.6g-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-10 20:21 ./slackware64/ap/man-1.6g-x86_64-3.txz.asc +-rw-r--r-- 1 root root 490 2016-05-11 06:54 ./slackware64/ap/man-pages-4.06-noarch-1.txt +-rw-r--r-- 1 root root 3263112 2016-05-11 06:54 ./slackware64/ap/man-pages-4.06-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-05-11 06:54 ./slackware64/ap/man-pages-4.06-noarch-1.txz.asc +-rw-r--r-- 1 root root 370 2016-06-24 21:51 ./slackware64/ap/mariadb-10.0.26-x86_64-1.txt +-rw-r--r-- 1 root root 26455968 2016-06-24 21:51 ./slackware64/ap/mariadb-10.0.26-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 21:51 ./slackware64/ap/mariadb-10.0.26-x86_64-1.txz.asc +-rw-r--r-- 1 root root 451 2016-03-26 18:38 ./slackware64/ap/mc-4.8.16-x86_64-2.txt +-rw-r--r-- 1 root root 1714756 2016-03-26 18:38 ./slackware64/ap/mc-4.8.16-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-26 18:38 ./slackware64/ap/mc-4.8.16-x86_64-2.txz.asc +-rw-r--r-- 1 root root 419 2016-05-08 00:33 ./slackware64/ap/moc-2.5.1-x86_64-1.txt +-rw-r--r-- 1 root root 221472 2016-05-08 00:33 ./slackware64/ap/moc-2.5.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-08 00:33 ./slackware64/ap/moc-2.5.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 378 2009-06-25 23:08 ./slackware64/ap/most-5.0.0a-x86_64-2.txt +-rw-r--r-- 1 root root 45504 2009-06-25 23:08 ./slackware64/ap/most-5.0.0a-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-06-25 23:08 ./slackware64/ap/most-5.0.0a-x86_64-2.txz.asc +-rw-r--r-- 1 root root 332 2016-05-24 05:14 ./slackware64/ap/mpg123-1.23.4-x86_64-1.txt +-rw-r--r-- 1 root root 313656 2016-05-24 05:14 ./slackware64/ap/mpg123-1.23.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-24 05:14 ./slackware64/ap/mpg123-1.23.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 432 2016-06-22 18:22 ./slackware64/ap/nano-2.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 464548 2016-06-22 18:22 ./slackware64/ap/nano-2.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-22 18:22 ./slackware64/ap/nano-2.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 514 2013-03-21 20:45 ./slackware64/ap/normalize-0.7.7-x86_64-2.txt +-rw-r--r-- 1 root root 62808 2013-03-21 20:45 ./slackware64/ap/normalize-0.7.7-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-03-21 20:45 ./slackware64/ap/normalize-0.7.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 290 2016-01-10 23:45 ./slackware64/ap/pamixer-1.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 43944 2016-01-10 23:45 ./slackware64/ap/pamixer-1.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:45 ./slackware64/ap/pamixer-1.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 375 2013-10-27 00:04 ./slackware64/ap/pm-utils-1.4.1-x86_64-5.txt +-rw-r--r-- 1 root root 68444 2013-10-27 00:04 ./slackware64/ap/pm-utils-1.4.1-x86_64-5.txz +-rw-r--r-- 1 root root 198 2013-10-27 00:04 ./slackware64/ap/pm-utils-1.4.1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 544 2015-11-07 18:42 ./slackware64/ap/powertop-2.8-x86_64-1.txt +-rw-r--r-- 1 root root 202868 2015-11-07 18:42 ./slackware64/ap/powertop-2.8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-07 18:42 ./slackware64/ap/powertop-2.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 496 2015-12-15 05:42 ./slackware64/ap/qpdf-6.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 544032 2015-12-15 05:42 ./slackware64/ap/qpdf-6.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:42 ./slackware64/ap/qpdf-6.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 364 2015-04-17 19:06 ./slackware64/ap/radeontool-1.6.3-x86_64-1.txt +-rw-r--r-- 1 root root 57772 2015-04-17 19:06 ./slackware64/ap/radeontool-1.6.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 19:06 ./slackware64/ap/radeontool-1.6.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 493 2015-12-22 22:35 ./slackware64/ap/rpm-4.12.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 823888 2015-12-22 22:35 ./slackware64/ap/rpm-4.12.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-22 22:35 ./slackware64/ap/rpm-4.12.0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 268 2008-10-23 19:33 ./slackware64/ap/rzip-2.1-x86_64-1.txt +-rw-r--r-- 1 root root 20372 2008-10-23 19:33 ./slackware64/ap/rzip-2.1-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-23 19:33 ./slackware64/ap/rzip-2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 123 2015-08-03 20:09 ./slackware64/ap/sc-7.16-x86_64-4.txt +-rw-r--r-- 1 root root 202976 2015-08-03 20:09 ./slackware64/ap/sc-7.16-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-08-03 20:09 ./slackware64/ap/sc-7.16-x86_64-4.txz.asc +-rw-r--r-- 1 root root 654 2016-06-21 18:46 ./slackware64/ap/screen-4.4.0-x86_64-1.txt +-rw-r--r-- 1 root root 537660 2016-06-21 18:46 ./slackware64/ap/screen-4.4.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-21 18:46 ./slackware64/ap/screen-4.4.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 455 2008-12-14 23:45 ./slackware64/ap/seejpeg-1.10-x86_64-1.txt +-rw-r--r-- 1 root root 53832 2008-12-14 23:45 ./slackware64/ap/seejpeg-1.10-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-12-14 23:45 ./slackware64/ap/seejpeg-1.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 441 2016-06-15 01:26 ./slackware64/ap/slackpkg-2.82.1-noarch-3.txt +-rw-r--r-- 1 root root 174652 2016-06-15 01:26 ./slackware64/ap/slackpkg-2.82.1-noarch-3.txz +-rw-r--r-- 1 root root 181 2016-06-15 01:26 ./slackware64/ap/slackpkg-2.82.1-noarch-3.txz.asc +-rw-r--r-- 1 root root 294 2016-01-29 18:30 ./slackware64/ap/soma-2.10.4-noarch-1.txt +-rw-r--r-- 1 root root 10764 2016-01-29 18:30 ./slackware64/ap/soma-2.10.4-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-01-29 18:30 ./slackware64/ap/soma-2.10.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 295 2016-01-15 21:34 ./slackware64/ap/sox-14.4.2-x86_64-3.txt +-rw-r--r-- 1 root root 382864 2016-01-15 21:34 ./slackware64/ap/sox-14.4.2-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-01-15 21:34 ./slackware64/ap/sox-14.4.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 484 2016-05-20 17:21 ./slackware64/ap/sqlite-3.13.0-x86_64-1.txt +-rw-r--r-- 1 root root 627028 2016-05-20 17:21 ./slackware64/ap/sqlite-3.13.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-20 17:21 ./slackware64/ap/sqlite-3.13.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 584 2015-11-14 04:57 ./slackware64/ap/squashfs-tools-4.3-x86_64-1.txt +-rw-r--r-- 1 root root 129292 2015-11-14 04:57 ./slackware64/ap/squashfs-tools-4.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-14 04:57 ./slackware64/ap/squashfs-tools-4.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 414 2016-03-25 17:42 ./slackware64/ap/sudo-1.8.16-x86_64-1.txt +-rw-r--r-- 1 root root 580052 2016-03-25 17:42 ./slackware64/ap/sudo-1.8.16-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-25 17:42 ./slackware64/ap/sudo-1.8.16-x86_64-1.txz.asc +-rw-r--r-- 1 root root 444 2016-03-07 20:18 ./slackware64/ap/sysstat-11.2.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 266912 2016-03-07 20:18 ./slackware64/ap/sysstat-11.2.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:18 ./slackware64/ap/sysstat-11.2.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 916 2016-03-08 01:38 ./slackware64/ap/tagfile +-rw-r--r-- 1 root root 506 2015-12-04 20:35 ./slackware64/ap/terminus-font-4.40-noarch-1.txt +-rw-r--r-- 1 root root 2049452 2015-12-04 20:35 ./slackware64/ap/terminus-font-4.40-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-12-04 20:35 ./slackware64/ap/terminus-font-4.40-noarch-1.txz.asc +-rw-r--r-- 1 root root 616 2016-03-04 04:41 ./slackware64/ap/texinfo-6.1-x86_64-1.txt +-rw-r--r-- 1 root root 1237168 2016-03-04 04:41 ./slackware64/ap/texinfo-6.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-04 04:41 ./slackware64/ap/texinfo-6.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 358 2016-05-31 02:50 ./slackware64/ap/tmux-2.1-x86_64-3.txt +-rw-r--r-- 1 root root 220232 2016-05-31 02:50 ./slackware64/ap/tmux-2.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-05-31 02:50 ./slackware64/ap/tmux-2.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 281 2015-11-19 05:57 ./slackware64/ap/usbmuxd-1.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 45520 2015-11-19 05:57 ./slackware64/ap/usbmuxd-1.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:57 ./slackware64/ap/usbmuxd-1.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 375 2015-12-23 02:52 ./slackware64/ap/vbetool-1.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 14916 2015-12-23 02:52 ./slackware64/ap/vbetool-1.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 02:52 ./slackware64/ap/vbetool-1.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 385 2016-06-15 01:48 ./slackware64/ap/vim-7.4.1938-x86_64-1.txt +-rw-r--r-- 1 root root 6475660 2016-06-15 01:48 ./slackware64/ap/vim-7.4.1938-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 01:48 ./slackware64/ap/vim-7.4.1938-x86_64-1.txz.asc +-rw-r--r-- 1 root root 608 2010-07-28 19:59 ./slackware64/ap/vorbis-tools-1.4.0-x86_64-1.txt +-rw-r--r-- 1 root root 176832 2010-07-28 19:59 ./slackware64/ap/vorbis-tools-1.4.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-07-28 19:59 ./slackware64/ap/vorbis-tools-1.4.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 230 2010-07-28 20:01 ./slackware64/ap/workbone-2.40-x86_64-4.txt +-rw-r--r-- 1 root root 12000 2010-07-28 20:01 ./slackware64/ap/workbone-2.40-x86_64-4.txz +-rw-r--r-- 1 root root 198 2010-07-28 20:01 ./slackware64/ap/workbone-2.40-x86_64-4.txz.asc +-rw-r--r-- 1 root root 525 2015-12-15 06:08 ./slackware64/ap/xfsdump-3.1.6-x86_64-1.txt +-rw-r--r-- 1 root root 339516 2015-12-15 06:08 ./slackware64/ap/xfsdump-3.1.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 06:08 ./slackware64/ap/xfsdump-3.1.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 508 2016-03-21 18:18 ./slackware64/ap/zsh-5.2-x86_64-1.txt +-rw-r--r-- 1 root root 2738596 2016-03-21 18:18 ./slackware64/ap/zsh-5.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-21 18:18 ./slackware64/ap/zsh-5.2-x86_64-1.txz.asc +drwxr-xr-x 2 root root 12288 2016-06-24 23:57 ./slackware64/d +-rw-r--r-- 1 root root 361 2015-12-22 23:05 ./slackware64/d/Cython-0.23.4-x86_64-1.txt +-rw-r--r-- 1 root root 2069152 2015-12-22 23:05 ./slackware64/d/Cython-0.23.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-22 23:05 ./slackware64/d/Cython-0.23.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 631 2012-06-11 16:30 ./slackware64/d/autoconf-2.69-noarch-1.txt +-rw-r--r-- 1 root root 723028 2012-06-11 16:30 ./slackware64/d/autoconf-2.69-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-06-11 16:30 ./slackware64/d/autoconf-2.69-noarch-1.txz.asc +-rw-r--r-- 1 root root 627 2015-10-25 16:33 ./slackware64/d/automake-1.15-noarch-1.txt +-rw-r--r-- 1 root root 634072 2015-10-25 16:33 ./slackware64/d/automake-1.15-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 16:33 ./slackware64/d/automake-1.15-noarch-1.txz.asc +-rw-r--r-- 1 root root 443 2016-03-07 04:37 ./slackware64/d/binutils-2.26-x86_64-3.txt +-rw-r--r-- 1 root root 4703900 2016-03-07 04:37 ./slackware64/d/binutils-2.26-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 04:37 ./slackware64/d/binutils-2.26-x86_64-3.txz.asc +-rw-r--r-- 1 root root 471 2015-04-18 20:58 ./slackware64/d/bison-3.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 575032 2015-04-18 20:58 ./slackware64/d/bison-3.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-18 20:58 ./slackware64/d/bison-3.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 314 2015-10-09 15:57 ./slackware64/d/ccache-3.2.4-x86_64-1.txt +-rw-r--r-- 1 root root 94716 2015-10-09 15:57 ./slackware64/d/ccache-3.2.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-09 15:57 ./slackware64/d/ccache-3.2.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 665 2015-03-18 22:38 ./slackware64/d/clisp-2.49-x86_64-3.txt +-rw-r--r-- 1 root root 2696144 2015-03-18 22:38 ./slackware64/d/clisp-2.49-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-18 22:38 ./slackware64/d/clisp-2.49-x86_64-3.txz.asc +-rw-r--r-- 1 root root 398 2016-04-17 17:55 ./slackware64/d/cmake-3.5.2-x86_64-1.txt +-rw-r--r-- 1 root root 9881576 2016-04-17 17:55 ./slackware64/d/cmake-3.5.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-17 17:55 ./slackware64/d/cmake-3.5.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 350 2016-03-07 19:30 ./slackware64/d/cscope-15.8b-x86_64-1.txt +-rw-r--r-- 1 root root 139872 2016-03-07 19:30 ./slackware64/d/cscope-15.8b-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:30 ./slackware64/d/cscope-15.8b-x86_64-1.txz.asc +-rw-r--r-- 1 root root 538 2013-07-07 06:55 ./slackware64/d/cvs-1.11.23-x86_64-2.txt +-rw-r--r-- 1 root root 869032 2013-07-07 06:55 ./slackware64/d/cvs-1.11.23-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-07-07 06:55 ./slackware64/d/cvs-1.11.23-x86_64-2.txz.asc +-rw-r--r-- 1 root root 398 2015-10-15 21:01 ./slackware64/d/dev86-0.16.21-x86_64-1.txt +-rw-r--r-- 1 root root 293600 2015-10-15 21:01 ./slackware64/d/dev86-0.16.21-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 21:01 ./slackware64/d/dev86-0.16.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 483 2013-03-31 22:26 ./slackware64/d/distcc-3.1-x86_64-1.txt +-rw-r--r-- 1 root root 288584 2013-03-31 22:26 ./slackware64/d/distcc-3.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-03-31 22:26 ./slackware64/d/distcc-3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 511 2015-04-15 19:00 ./slackware64/d/doxygen-1.8.9.1-x86_64-1.txt +-rw-r--r-- 1 root root 5089004 2015-04-15 19:00 ./slackware64/d/doxygen-1.8.9.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-15 19:00 ./slackware64/d/doxygen-1.8.9.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 331 2015-12-11 03:41 ./slackware64/d/flex-2.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 288140 2015-12-11 03:41 ./slackware64/d/flex-2.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-11 03:41 ./slackware64/d/flex-2.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 311 2016-03-07 05:17 ./slackware64/d/gcc-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 18463036 2016-03-07 05:17 ./slackware64/d/gcc-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:17 ./slackware64/d/gcc-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 295 2016-03-07 05:17 ./slackware64/d/gcc-g++-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 8011836 2016-03-07 05:17 ./slackware64/d/gcc-g++-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:17 ./slackware64/d/gcc-g++-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 620 2016-03-07 05:17 ./slackware64/d/gcc-gfortran-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 6489792 2016-03-07 05:17 ./slackware64/d/gcc-gfortran-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:17 ./slackware64/d/gcc-gfortran-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 384 2016-03-07 05:18 ./slackware64/d/gcc-gnat-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 14294980 2016-03-07 05:18 ./slackware64/d/gcc-gnat-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:18 ./slackware64/d/gcc-gnat-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 574 2016-03-07 05:19 ./slackware64/d/gcc-go-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 13718988 2016-03-07 05:19 ./slackware64/d/gcc-go-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:19 ./slackware64/d/gcc-go-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 358 2016-03-07 05:18 ./slackware64/d/gcc-java-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 27425128 2016-03-07 05:18 ./slackware64/d/gcc-java-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:18 ./slackware64/d/gcc-java-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 503 2016-03-07 05:18 ./slackware64/d/gcc-objc-5.3.0-x86_64-3.txt +-rw-r--r-- 1 root root 5740284 2016-03-07 05:18 ./slackware64/d/gcc-objc-5.3.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-07 05:18 ./slackware64/d/gcc-objc-5.3.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 757 2016-06-01 17:40 ./slackware64/d/gdb-7.11.1-x86_64-1.txt +-rw-r--r-- 1 root root 3831764 2016-06-01 17:40 ./slackware64/d/gdb-7.11.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-01 17:40 ./slackware64/d/gdb-7.11.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 629 2016-06-13 18:28 ./slackware64/d/gettext-tools-0.19.8.1-x86_64-1.txt +-rw-r--r-- 1 root root 2408164 2016-06-13 18:28 ./slackware64/d/gettext-tools-0.19.8.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-13 18:28 ./slackware64/d/gettext-tools-0.19.8.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 397 2016-06-14 19:01 ./slackware64/d/git-2.9.0-x86_64-1.txt +-rw-r--r-- 1 root root 4917320 2016-06-14 19:01 ./slackware64/d/git-2.9.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-14 19:01 ./slackware64/d/git-2.9.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 603 2014-06-26 18:54 ./slackware64/d/gnu-cobol-1.1-x86_64-1.txt +-rw-r--r-- 1 root root 357556 2014-06-26 18:54 ./slackware64/d/gnu-cobol-1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-06-26 18:54 ./slackware64/d/gnu-cobol-1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 562 2010-07-29 00:50 ./slackware64/d/gperf-3.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 98760 2010-07-29 00:50 ./slackware64/d/gperf-3.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-07-29 00:50 ./slackware64/d/gperf-3.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 436 2015-02-06 21:53 ./slackware64/d/guile-2.0.11-x86_64-2.txt +-rw-r--r-- 1 root root 3226020 2015-02-06 21:53 ./slackware64/d/guile-2.0.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-02-06 21:53 ./slackware64/d/guile-2.0.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 288 2015-04-17 17:45 ./slackware64/d/help2man-1.46.5-x86_64-1.txt +-rw-r--r-- 1 root root 149596 2015-04-17 17:45 ./slackware64/d/help2man-1.46.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 17:45 ./slackware64/d/help2man-1.46.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 432 2009-03-04 22:25 ./slackware64/d/indent-2.2.10-x86_64-1.txt +-rw-r--r-- 1 root root 122708 2009-03-04 22:25 ./slackware64/d/indent-2.2.10-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-03-04 22:25 ./slackware64/d/indent-2.2.10-x86_64-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/d/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/d/install.end +-rw-r--r-- 1 root root 233 2015-11-24 02:40 ./slackware64/d/intltool-0.51.0-x86_64-2.txt +-rw-r--r-- 1 root root 47872 2015-11-24 02:40 ./slackware64/d/intltool-0.51.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-24 02:40 ./slackware64/d/intltool-0.51.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 332 2016-06-24 18:28 ./slackware64/d/kernel-headers-4.4.14-x86-1.txt +-rw-r--r-- 1 root root 744180 2016-06-24 18:28 ./slackware64/d/kernel-headers-4.4.14-x86-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 18:28 ./slackware64/d/kernel-headers-4.4.14-x86-1.txz.asc +-rw-r--r-- 1 root root 500 2015-12-10 00:53 ./slackware64/d/libtool-2.4.6-x86_64-4.txt +-rw-r--r-- 1 root root 436232 2015-12-10 00:53 ./slackware64/d/libtool-2.4.6-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-12-10 00:53 ./slackware64/d/libtool-2.4.6-x86_64-4.txz.asc +-rw-r--r-- 1 root root 368 2016-06-22 18:14 ./slackware64/d/llvm-3.8.0-x86_64-2.txt +-rw-r--r-- 1 root root 61026296 2016-06-22 18:14 ./slackware64/d/llvm-3.8.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-22 18:14 ./slackware64/d/llvm-3.8.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 475 2013-09-25 21:40 ./slackware64/d/m4-1.4.17-x86_64-1.txt +-rw-r--r-- 1 root root 223192 2013-09-25 21:40 ./slackware64/d/m4-1.4.17-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-09-25 21:40 ./slackware64/d/m4-1.4.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 468 2016-04-03 18:09 ./slackware64/d/make-4.1-x86_64-2.txt +-rw-r--r-- 1 root root 450152 2016-04-03 18:09 ./slackware64/d/make-4.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-03 18:09 ./slackware64/d/make-4.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 4161 2015-12-23 05:01 ./slackware64/d/maketag +-rw-r--r-- 1 root root 4161 2015-12-23 05:01 ./slackware64/d/maketag.ez +-rw-r--r-- 1 root root 664 2016-05-17 17:56 ./slackware64/d/mercurial-3.8.2-x86_64-1.txt +-rw-r--r-- 1 root root 2736628 2016-05-17 17:56 ./slackware64/d/mercurial-3.8.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-17 17:56 ./slackware64/d/mercurial-3.8.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 310 2016-04-06 01:07 ./slackware64/d/nasm-2.12.01-x86_64-1.txt +-rw-r--r-- 1 root root 430588 2016-04-06 01:07 ./slackware64/d/nasm-2.12.01-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-06 01:07 ./slackware64/d/nasm-2.12.01-x86_64-1.txz.asc +-rw-r--r-- 1 root root 506 2016-01-27 19:36 ./slackware64/d/oprofile-1.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 856676 2016-01-27 19:36 ./slackware64/d/oprofile-1.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-27 19:36 ./slackware64/d/oprofile-1.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 546 2008-11-04 12:43 ./slackware64/d/p2c-1.21alpha2-x86_64-3.txt +-rw-r--r-- 1 root root 314736 2008-11-04 12:43 ./slackware64/d/p2c-1.21alpha2-x86_64-3.txz +-rw-r--r-- 1 root root 197 2008-11-04 12:43 ./slackware64/d/p2c-1.21alpha2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 516 2016-04-30 04:46 ./slackware64/d/perl-5.22.2-x86_64-1.txt +-rw-r--r-- 1 root root 14569348 2016-04-30 04:46 ./slackware64/d/perl-5.22.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-30 04:46 ./slackware64/d/perl-5.22.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 446 2016-06-04 18:23 ./slackware64/d/pkg-config-0.29.1-x86_64-2.txt +-rw-r--r-- 1 root root 45412 2016-06-04 18:23 ./slackware64/d/pkg-config-0.29.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-04 18:23 ./slackware64/d/pkg-config-0.29.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 339 2008-09-21 20:59 ./slackware64/d/pmake-1.111-x86_64-3.txt +-rw-r--r-- 1 root root 82500 2008-09-21 20:59 ./slackware64/d/pmake-1.111-x86_64-3.txz +-rw-r--r-- 1 root root 197 2008-09-21 20:59 ./slackware64/d/pmake-1.111-x86_64-3.txz.asc +-rw-r--r-- 1 root root 438 2016-03-03 19:37 ./slackware64/d/python-2.7.11-x86_64-2.txt +-rw-r--r-- 1 root root 14373488 2016-03-03 19:37 ./slackware64/d/python-2.7.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-03 19:37 ./slackware64/d/python-2.7.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 513 2016-06-08 19:17 ./slackware64/d/python-setuptools-22.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 393924 2016-06-08 19:17 ./slackware64/d/python-setuptools-22.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-08 19:17 ./slackware64/d/python-setuptools-22.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 322 2015-04-18 21:05 ./slackware64/d/rcs-5.9.4-x86_64-1.txt +-rw-r--r-- 1 root root 204476 2015-04-18 21:05 ./slackware64/d/rcs-5.9.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-18 21:05 ./slackware64/d/rcs-5.9.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 410 2016-04-30 19:56 ./slackware64/d/ruby-2.2.5-x86_64-1.txt +-rw-r--r-- 1 root root 7820772 2016-04-30 19:56 ./slackware64/d/ruby-2.2.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-30 19:56 ./slackware64/d/ruby-2.2.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 456 2015-12-04 05:10 ./slackware64/d/scons-2.4.1-x86_64-1.txt +-rw-r--r-- 1 root root 808096 2015-12-04 05:10 ./slackware64/d/scons-2.4.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-04 05:10 ./slackware64/d/scons-2.4.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 467 2015-05-05 18:33 ./slackware64/d/slacktrack-2.17-x86_64-1.txt +-rw-r--r-- 1 root root 99728 2015-05-05 18:33 ./slackware64/d/slacktrack-2.17-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-05-05 18:33 ./slackware64/d/slacktrack-2.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 550 2016-04-06 01:04 ./slackware64/d/strace-4.11-x86_64-1.txt +-rw-r--r-- 1 root root 172520 2016-04-06 01:04 ./slackware64/d/strace-4.11-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-06 01:04 ./slackware64/d/strace-4.11-x86_64-1.txz.asc +-rw-r--r-- 1 root root 597 2016-04-30 18:27 ./slackware64/d/subversion-1.9.4-x86_64-1.txt +-rw-r--r-- 1 root root 4528032 2016-04-30 18:27 ./slackware64/d/subversion-1.9.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-30 18:27 ./slackware64/d/subversion-1.9.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 561 2015-08-07 18:37 ./slackware64/d/swig-3.0.7-x86_64-1.txt +-rw-r--r-- 1 root root 2538492 2015-08-07 18:37 ./slackware64/d/swig-3.0.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-07 18:37 ./slackware64/d/swig-3.0.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 597 2015-12-23 05:01 ./slackware64/d/tagfile +-rw-r--r-- 1 root root 592 2015-03-07 03:16 ./slackware64/d/yasm-1.3.0-x86_64-1.txt +-rw-r--r-- 1 root root 537192 2015-03-07 03:16 ./slackware64/d/yasm-1.3.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-07 03:16 ./slackware64/d/yasm-1.3.0-x86_64-1.txz.asc +drwxr-xr-x 2 root root 4096 2015-08-21 21:34 ./slackware64/e +-rw-r--r-- 1 root root 471 2015-08-20 19:55 ./slackware64/e/emacs-24.5-x86_64-2.txt +-rw-r--r-- 1 root root 40654128 2015-08-20 19:55 ./slackware64/e/emacs-24.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 19:55 ./slackware64/e/emacs-24.5-x86_64-2.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/e/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/e/install.end +-rw-r--r-- 1 root root 961 2015-04-20 02:07 ./slackware64/e/maketag +-rw-r--r-- 1 root root 961 2015-04-20 02:07 ./slackware64/e/maketag.ez +-rw-r--r-- 1 root root 10 2015-04-20 02:07 ./slackware64/e/tagfile +drwxr-xr-x 2 root root 4096 2016-04-01 21:41 ./slackware64/f +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/f/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/f/install.end +-rw-r--r-- 1 root root 502 2006-03-01 02:48 ./slackware64/f/linux-faqs-20060228-noarch-1.txt +-rw-r--r-- 1 root root 287176 2006-03-01 02:48 ./slackware64/f/linux-faqs-20060228-noarch-1.txz +-rw-r--r-- 1 root root 197 2006-03-01 02:48 ./slackware64/f/linux-faqs-20060228-noarch-1.txz.asc +-rw-r--r-- 1 root root 341 2016-04-01 21:10 ./slackware64/f/linux-howtos-20160401-noarch-1.txt +-rw-r--r-- 1 root root 6605036 2016-04-01 21:10 ./slackware64/f/linux-howtos-20160401-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-04-01 21:10 ./slackware64/f/linux-howtos-20160401-noarch-1.txz.asc +-rw-r--r-- 1 root root 1077 2015-04-20 02:07 ./slackware64/f/maketag +-rw-r--r-- 1 root root 1077 2015-04-20 02:07 ./slackware64/f/maketag.ez +-rw-r--r-- 1 root root 32 2015-04-20 02:07 ./slackware64/f/tagfile +drwxr-xr-x 2 root root 4096 2016-06-24 23:57 ./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 2016-06-24 18:28 ./slackware64/k/kernel-source-4.4.14-noarch-1.txt +-rw-r--r-- 1 root root 90974752 2016-06-24 18:28 ./slackware64/k/kernel-source-4.4.14-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 18:28 ./slackware64/k/kernel-source-4.4.14-noarch-1.txz.asc +-rw-r--r-- 1 root root 1172 2016-06-24 21:06 ./slackware64/k/maketag +-rw-r--r-- 1 root root 1172 2016-06-24 21:06 ./slackware64/k/maketag.ez +-rw-r--r-- 1 root root 18 2016-06-24 21:06 ./slackware64/k/tagfile +drwxr-xr-x 2 root root 36864 2016-06-23 23:07 ./slackware64/kde +-rw-r--r-- 1 root root 322 2015-10-25 09:32 ./slackware64/kde/amarok-2.8.0-x86_64-3.txt +-rw-r--r-- 1 root root 34959092 2015-10-25 09:32 ./slackware64/kde/amarok-2.8.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:32 ./slackware64/kde/amarok-2.8.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 445 2015-10-25 08:44 ./slackware64/kde/amor-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 193648 2015-10-25 08:44 ./slackware64/kde/amor-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:44 ./slackware64/kde/amor-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 333 2015-10-25 08:58 ./slackware64/kde/analitza-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 311352 2015-10-25 08:58 ./slackware64/kde/analitza-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:58 ./slackware64/kde/analitza-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 175 2015-10-25 08:17 ./slackware64/kde/ark-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 366068 2015-10-25 08:17 ./slackware64/kde/ark-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:17 ./slackware64/kde/ark-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 432 2015-10-25 08:58 ./slackware64/kde/artikulate-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2623288 2015-10-25 08:58 ./slackware64/kde/artikulate-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:58 ./slackware64/kde/artikulate-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 194 2015-10-25 08:24 ./slackware64/kde/audiocd-kio-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 97148 2015-10-25 08:24 ./slackware64/kde/audiocd-kio-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:24 ./slackware64/kde/audiocd-kio-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 370 2015-10-25 07:40 ./slackware64/kde/baloo-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 449332 2015-10-25 07:40 ./slackware64/kde/baloo-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:40 ./slackware64/kde/baloo-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 309 2015-10-25 07:40 ./slackware64/kde/baloo-widgets-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 67792 2015-10-25 07:40 ./slackware64/kde/baloo-widgets-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:40 ./slackware64/kde/baloo-widgets-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 181 2015-10-25 08:58 ./slackware64/kde/blinken-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 590284 2015-10-25 08:58 ./slackware64/kde/blinken-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:58 ./slackware64/kde/blinken-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 234 2015-12-23 00:19 ./slackware64/kde/bluedevil-2.1.1-x86_64-3.txt +-rw-r--r-- 1 root root 318076 2015-12-23 00:19 ./slackware64/kde/bluedevil-2.1.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-12-23 00:19 ./slackware64/kde/bluedevil-2.1.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 427 2015-10-25 08:39 ./slackware64/kde/bomber-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 402260 2015-10-25 08:39 ./slackware64/kde/bomber-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:39 ./slackware64/kde/bomber-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 332 2015-10-25 08:38 ./slackware64/kde/bovo-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 137360 2015-10-25 08:38 ./slackware64/kde/bovo-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:38 ./slackware64/kde/bovo-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 562 2016-06-23 06:54 ./slackware64/kde/calligra-2.9.11-x86_64-5.txt +-rw-r--r-- 1 root root 88006184 2016-06-23 06:54 ./slackware64/kde/calligra-2.9.11-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-06-23 06:54 ./slackware64/kde/calligra-2.9.11-x86_64-5.txz.asc +-rw-r--r-- 1 root root 340 2015-10-25 08:59 ./slackware64/kde/cantor-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 565156 2015-10-25 08:59 ./slackware64/kde/cantor-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:59 ./slackware64/kde/cantor-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 175 2015-10-25 07:56 ./slackware64/kde/cervisia-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 551688 2015-10-25 07:56 ./slackware64/kde/cervisia-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:56 ./slackware64/kde/cervisia-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 325 2015-10-25 07:56 ./slackware64/kde/dolphin-plugins-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 132764 2015-10-25 07:56 ./slackware64/kde/dolphin-plugins-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:56 ./slackware64/kde/dolphin-plugins-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 297 2015-10-25 08:24 ./slackware64/kde/dragon-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 433104 2015-10-25 08:24 ./slackware64/kde/dragon-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:24 ./slackware64/kde/dragon-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 352 2015-10-25 08:17 ./slackware64/kde/filelight-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 328528 2015-10-25 08:17 ./slackware64/kde/filelight-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:17 ./slackware64/kde/filelight-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 255 2015-10-25 08:39 ./slackware64/kde/granatier-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1428988 2015-10-25 08:39 ./slackware64/kde/granatier-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:39 ./slackware64/kde/granatier-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 293 2015-10-25 08:03 ./slackware64/kde/gwenview-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2935724 2015-10-25 08:03 ./slackware64/kde/gwenview-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:03 ./slackware64/kde/gwenview-4.14.3-x86_64-2.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/kde/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/kde/install.end +-rw-r--r-- 1 root root 336 2015-10-25 08:25 ./slackware64/kde/juk-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 704064 2015-10-25 08:25 ./slackware64/kde/juk-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:25 ./slackware64/kde/juk-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 382 2015-10-29 17:26 ./slackware64/kde/k3b-2.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 10258424 2015-10-29 17:26 ./slackware64/kde/k3b-2.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-29 17:26 ./slackware64/kde/k3b-2.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 301 2015-10-25 08:16 ./slackware64/kde/kaccessible-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 38984 2015-10-25 08:16 ./slackware64/kde/kaccessible-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:16 ./slackware64/kde/kaccessible-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 330 2015-10-25 07:42 ./slackware64/kde/kactivities-4.13.3-x86_64-2.txt +-rw-r--r-- 1 root root 201120 2015-10-25 07:42 ./slackware64/kde/kactivities-4.13.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:42 ./slackware64/kde/kactivities-4.13.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 441 2015-10-25 08:38 ./slackware64/kde/kajongg-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2739012 2015-10-25 08:38 ./slackware64/kde/kajongg-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:38 ./slackware64/kde/kajongg-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 289 2015-10-25 08:59 ./slackware64/kde/kalgebra-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 332084 2015-10-25 08:59 ./slackware64/kde/kalgebra-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:59 ./slackware64/kde/kalgebra-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 188 2015-10-25 09:00 ./slackware64/kde/kalzium-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 4064920 2015-10-25 09:00 ./slackware64/kde/kalzium-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:00 ./slackware64/kde/kalzium-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 160 2015-10-25 08:03 ./slackware64/kde/kamera-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 64760 2015-10-25 08:03 ./slackware64/kde/kamera-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:03 ./slackware64/kde/kamera-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 436 2015-10-25 09:00 ./slackware64/kde/kanagram-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 4282752 2015-10-25 09:00 ./slackware64/kde/kanagram-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:00 ./slackware64/kde/kanagram-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 456 2015-10-25 08:40 ./slackware64/kde/kapman-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1820788 2015-10-25 08:40 ./slackware64/kde/kapman-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:40 ./slackware64/kde/kapman-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 294 2015-10-25 07:56 ./slackware64/kde/kapptemplate-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1137756 2015-10-25 07:56 ./slackware64/kde/kapptemplate-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:56 ./slackware64/kde/kapptemplate-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 469 2015-10-25 07:44 ./slackware64/kde/kate-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 3256308 2015-10-25 07:44 ./slackware64/kde/kate-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:44 ./slackware64/kde/kate-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 359 2015-10-25 08:43 ./slackware64/kde/katomic-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 638012 2015-10-25 08:43 ./slackware64/kde/katomic-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:43 ./slackware64/kde/katomic-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 295 2015-10-25 09:16 ./slackware64/kde/kaudiocreator-1.3-x86_64-2.txt +-rw-r--r-- 1 root root 293696 2015-10-25 09:16 ./slackware64/kde/kaudiocreator-1.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:16 ./slackware64/kde/kaudiocreator-1.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 266 2015-10-25 08:43 ./slackware64/kde/kblackbox-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 278080 2015-10-25 08:43 ./slackware64/kde/kblackbox-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:43 ./slackware64/kde/kblackbox-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 200 2015-10-25 08:38 ./slackware64/kde/kblocks-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1241996 2015-10-25 08:38 ./slackware64/kde/kblocks-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:38 ./slackware64/kde/kblocks-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 388 2015-10-25 08:40 ./slackware64/kde/kbounce-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1601784 2015-10-25 08:40 ./slackware64/kde/kbounce-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:40 ./slackware64/kde/kbounce-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 214 2015-10-25 08:41 ./slackware64/kde/kbreakout-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1402328 2015-10-25 08:41 ./slackware64/kde/kbreakout-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:41 ./slackware64/kde/kbreakout-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 183 2015-10-25 09:00 ./slackware64/kde/kbruch-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 948392 2015-10-25 09:00 ./slackware64/kde/kbruch-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:00 ./slackware64/kde/kbruch-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 281 2015-10-25 07:56 ./slackware64/kde/kcachegrind-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 333172 2015-10-25 07:56 ./slackware64/kde/kcachegrind-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:56 ./slackware64/kde/kcachegrind-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 264 2015-10-25 08:18 ./slackware64/kde/kcalc-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 163552 2015-10-25 08:18 ./slackware64/kde/kcalc-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:18 ./slackware64/kde/kcalc-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 352 2015-10-25 08:18 ./slackware64/kde/kcharselect-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 89804 2015-10-25 08:18 ./slackware64/kde/kcharselect-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:18 ./slackware64/kde/kcharselect-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 232 2015-10-25 08:04 ./slackware64/kde/kcolorchooser-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 7624 2015-10-25 08:04 ./slackware64/kde/kcolorchooser-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:04 ./slackware64/kde/kcolorchooser-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 237 2015-10-25 08:32 ./slackware64/kde/kcron-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 218948 2015-10-25 08:32 ./slackware64/kde/kcron-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:32 ./slackware64/kde/kcron-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 292 2015-10-25 07:55 ./slackware64/kde/kde-base-artwork-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 7420032 2015-10-25 07:55 ./slackware64/kde/kde-base-artwork-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:55 ./slackware64/kde/kde-base-artwork-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 298 2015-10-25 09:13 ./slackware64/kde/kde-baseapps-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 3496912 2015-10-25 09:13 ./slackware64/kde/kde-baseapps-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:13 ./slackware64/kde/kde-baseapps-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 314 2015-10-25 07:56 ./slackware64/kde/kde-dev-scripts-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 88128 2015-10-25 07:56 ./slackware64/kde/kde-dev-scripts-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:56 ./slackware64/kde/kde-dev-scripts-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 336 2015-10-25 07:57 ./slackware64/kde/kde-dev-utils-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 114996 2015-10-25 07:57 ./slackware64/kde/kde-dev-utils-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:57 ./slackware64/kde/kde-dev-utils-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 244 2016-01-11 02:18 ./slackware64/kde/kde-runtime-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 9111556 2016-01-11 02:18 ./slackware64/kde/kde-runtime-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-01-11 02:18 ./slackware64/kde/kde-runtime-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 243 2015-04-02 20:05 ./slackware64/kde/kde-wallpapers-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 90648996 2015-04-02 20:05 ./slackware64/kde/kde-wallpapers-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 20:05 ./slackware64/kde/kde-wallpapers-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 300 2016-06-23 22:41 ./slackware64/kde/kde-workspace-4.11.22-x86_64-4.txt +-rw-r--r-- 1 root root 17832048 2016-06-23 22:41 ./slackware64/kde/kde-workspace-4.11.22-x86_64-4.txz +-rw-r--r-- 1 root root 181 2016-06-23 22:41 ./slackware64/kde/kde-workspace-4.11.22-x86_64-4.txz.asc +-rw-r--r-- 1 root root 233 2015-10-25 08:35 ./slackware64/kde/kdeartwork-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 136067504 2015-10-25 08:35 ./slackware64/kde/kdeartwork-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:35 ./slackware64/kde/kdeartwork-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 643 2015-11-19 23:23 ./slackware64/kde/kdeconnect-kde-0.8-x86_64-3.txt +-rw-r--r-- 1 root root 302680 2015-11-19 23:23 ./slackware64/kde/kdeconnect-kde-0.8-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-19 23:23 ./slackware64/kde/kdeconnect-kde-0.8-x86_64-3.txz.asc +-rw-r--r-- 1 root root 350 2015-10-25 08:02 ./slackware64/kde/kdegraphics-mobipocket-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 24260 2015-10-25 08:02 ./slackware64/kde/kdegraphics-mobipocket-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:02 ./slackware64/kde/kdegraphics-mobipocket-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 558 2015-10-25 08:03 ./slackware64/kde/kdegraphics-strigi-analyzer-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 17456 2015-10-25 08:03 ./slackware64/kde/kdegraphics-strigi-analyzer-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:03 ./slackware64/kde/kdegraphics-strigi-analyzer-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 452 2015-10-25 08:03 ./slackware64/kde/kdegraphics-thumbnailers-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 37780 2015-10-25 08:03 ./slackware64/kde/kdegraphics-thumbnailers-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:03 ./slackware64/kde/kdegraphics-thumbnailers-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 191 2016-06-15 17:35 ./slackware64/kde/kdelibs-4.14.21-x86_64-1.txt +-rw-r--r-- 1 root root 13121424 2016-06-15 17:35 ./slackware64/kde/kdelibs-4.14.21-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 17:35 ./slackware64/kde/kdelibs-4.14.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 410 2015-10-25 08:26 ./slackware64/kde/kdenetwork-filesharing-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 38124 2015-10-25 08:26 ./slackware64/kde/kdenetwork-filesharing-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:26 ./slackware64/kde/kdenetwork-filesharing-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 455 2015-10-25 08:26 ./slackware64/kde/kdenetwork-strigi-analyzers-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 24136 2015-10-25 08:26 ./slackware64/kde/kdenetwork-strigi-analyzers-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:26 ./slackware64/kde/kdenetwork-strigi-analyzers-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 417 2015-10-25 08:54 ./slackware64/kde/kdepim-4.14.10-x86_64-1.txt +-rw-r--r-- 1 root root 21133472 2015-10-25 08:54 ./slackware64/kde/kdepim-4.14.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:54 ./slackware64/kde/kdepim-4.14.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 508 2015-10-25 08:56 ./slackware64/kde/kdepim-runtime-4.14.10-x86_64-1.txt +-rw-r--r-- 1 root root 2437632 2015-10-25 08:56 ./slackware64/kde/kdepim-runtime-4.14.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:56 ./slackware64/kde/kdepim-runtime-4.14.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 274 2016-02-25 19:03 ./slackware64/kde/kdepimlibs-4.14.10-x86_64-2.txt +-rw-r--r-- 1 root root 4390192 2016-02-25 19:03 ./slackware64/kde/kdepimlibs-4.14.10-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-02-25 19:03 ./slackware64/kde/kdepimlibs-4.14.10-x86_64-2.txz.asc +-rw-r--r-- 1 root root 296 2015-10-25 09:14 ./slackware64/kde/kdeplasma-addons-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2716064 2015-10-25 09:14 ./slackware64/kde/kdeplasma-addons-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:14 ./slackware64/kde/kdeplasma-addons-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 286 2015-10-25 07:57 ./slackware64/kde/kdesdk-kioslaves-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 398112 2015-10-25 07:57 ./slackware64/kde/kdesdk-kioslaves-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:57 ./slackware64/kde/kdesdk-kioslaves-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 380 2015-10-25 07:57 ./slackware64/kde/kdesdk-strigi-analyzers-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 25852 2015-10-25 07:57 ./slackware64/kde/kdesdk-strigi-analyzers-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:57 ./slackware64/kde/kdesdk-strigi-analyzers-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 374 2015-10-25 07:57 ./slackware64/kde/kdesdk-thumbnailers-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 15716 2015-10-25 07:57 ./slackware64/kde/kdesdk-thumbnailers-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:57 ./slackware64/kde/kdesdk-thumbnailers-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 256 2015-10-25 09:23 ./slackware64/kde/kdev-python-1.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 1679824 2015-10-25 09:23 ./slackware64/kde/kdev-python-1.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:23 ./slackware64/kde/kdev-python-1.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 220 2015-10-25 09:22 ./slackware64/kde/kdevelop-4.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 5113860 2015-10-25 09:22 ./slackware64/kde/kdevelop-4.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:22 ./slackware64/kde/kdevelop-4.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 289 2015-10-26 18:24 ./slackware64/kde/kdevelop-pg-qt-1.0.0-x86_64-2.txt +-rw-r--r-- 1 root root 467128 2015-10-26 18:24 ./slackware64/kde/kdevelop-pg-qt-1.0.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-26 18:24 ./slackware64/kde/kdevelop-pg-qt-1.0.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 272 2015-10-25 09:24 ./slackware64/kde/kdevelop-php-1.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 846360 2015-10-25 09:24 ./slackware64/kde/kdevelop-php-1.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:24 ./slackware64/kde/kdevelop-php-1.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 333 2015-10-25 09:24 ./slackware64/kde/kdevelop-php-docs-1.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 48492 2015-10-25 09:24 ./slackware64/kde/kdevelop-php-docs-1.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:24 ./slackware64/kde/kdevelop-php-docs-1.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 247 2015-10-25 09:20 ./slackware64/kde/kdevplatform-1.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 3381556 2015-10-25 09:20 ./slackware64/kde/kdevplatform-1.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:20 ./slackware64/kde/kdevplatform-1.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 260 2015-10-25 09:11 ./slackware64/kde/kdewebdev-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1879716 2015-10-25 09:11 ./slackware64/kde/kdewebdev-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:11 ./slackware64/kde/kdewebdev-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 326 2015-10-25 08:18 ./slackware64/kde/kdf-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 210724 2015-10-25 08:18 ./slackware64/kde/kdf-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:18 ./slackware64/kde/kdf-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 270 2015-10-25 08:40 ./slackware64/kde/kdiamond-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 4192584 2015-10-25 08:40 ./slackware64/kde/kdiamond-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:40 ./slackware64/kde/kdiamond-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 277 2015-10-25 07:39 ./slackware64/kde/kfilemetadata-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 76392 2015-10-25 07:39 ./slackware64/kde/kfilemetadata-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:39 ./slackware64/kde/kfilemetadata-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 302 2015-10-25 08:18 ./slackware64/kde/kfloppy-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 71004 2015-10-25 08:18 ./slackware64/kde/kfloppy-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:18 ./slackware64/kde/kfloppy-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 336 2015-10-25 08:42 ./slackware64/kde/kfourinline-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 337200 2015-10-25 08:42 ./slackware64/kde/kfourinline-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:42 ./slackware64/kde/kfourinline-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 182 2015-10-25 08:04 ./slackware64/kde/kgamma-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 46464 2015-10-25 08:04 ./slackware64/kde/kgamma-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:04 ./slackware64/kde/kgamma-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 514 2015-10-25 09:00 ./slackware64/kde/kgeography-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 5950308 2015-10-25 09:00 ./slackware64/kde/kgeography-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:00 ./slackware64/kde/kgeography-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 134 2015-10-25 08:27 ./slackware64/kde/kget-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1627484 2015-10-25 08:27 ./slackware64/kde/kget-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:27 ./slackware64/kde/kget-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 354 2015-10-25 08:41 ./slackware64/kde/kgoldrunner-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2103924 2015-10-25 08:41 ./slackware64/kde/kgoldrunner-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:41 ./slackware64/kde/kgoldrunner-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 217 2015-10-25 08:18 ./slackware64/kde/kgpg-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 935444 2015-10-25 08:18 ./slackware64/kde/kgpg-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:18 ./slackware64/kde/kgpg-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 371 2015-10-25 09:00 ./slackware64/kde/khangman-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1182648 2015-10-25 09:00 ./slackware64/kde/khangman-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:00 ./slackware64/kde/khangman-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 238 2015-11-17 00:00 ./slackware64/kde/kig-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 1636236 2015-11-17 00:00 ./slackware64/kde/kig-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-17 00:00 ./slackware64/kde/kig-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 528 2015-10-25 08:39 ./slackware64/kde/kigo-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1449776 2015-10-25 08:39 ./slackware64/kde/kigo-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:39 ./slackware64/kde/kigo-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 198 2015-10-25 08:40 ./slackware64/kde/killbots-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1004108 2015-10-25 08:40 ./slackware64/kde/killbots-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:40 ./slackware64/kde/killbots-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 388 2015-12-02 22:08 ./slackware64/kde/kio-mtp-2063e75_20131020git-x86_64-3.txt +-rw-r--r-- 1 root root 41448 2015-12-02 22:08 ./slackware64/kde/kio-mtp-2063e75_20131020git-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-12-02 22:08 ./slackware64/kde/kio-mtp-2063e75_20131020git-x86_64-3.txz.asc +-rw-r--r-- 1 root root 325 2015-10-25 08:39 ./slackware64/kde/kiriki-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 141500 2015-10-25 08:39 ./slackware64/kde/kiriki-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:39 ./slackware64/kde/kiriki-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 145 2015-10-25 09:02 ./slackware64/kde/kiten-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 11817076 2015-10-25 09:02 ./slackware64/kde/kiten-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:02 ./slackware64/kde/kiten-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 385 2015-10-25 08:43 ./slackware64/kde/kjumpingcube-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 193344 2015-10-25 08:43 ./slackware64/kde/kjumpingcube-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:43 ./slackware64/kde/kjumpingcube-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 354 2015-10-25 09:02 ./slackware64/kde/klettres-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2814800 2015-10-25 09:02 ./slackware64/kde/klettres-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:02 ./slackware64/kde/klettres-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 329 2015-10-25 08:36 ./slackware64/kde/klickety-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 817548 2015-10-25 08:36 ./slackware64/kde/klickety-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:36 ./slackware64/kde/klickety-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 370 2015-10-25 08:37 ./slackware64/kde/klines-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 970856 2015-10-25 08:37 ./slackware64/kde/klines-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:37 ./slackware64/kde/klines-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 123 2015-10-25 08:17 ./slackware64/kde/kmag-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 108460 2015-10-25 08:17 ./slackware64/kde/kmag-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:17 ./slackware64/kde/kmag-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 353 2015-10-25 08:44 ./slackware64/kde/kmahjongg-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1021808 2015-10-25 08:44 ./slackware64/kde/kmahjongg-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:44 ./slackware64/kde/kmahjongg-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 277 2015-10-25 08:39 ./slackware64/kde/kmines-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 649896 2015-10-25 08:39 ./slackware64/kde/kmines-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:39 ./slackware64/kde/kmines-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 251 2016-01-11 02:31 ./slackware64/kde/kmix-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 539572 2016-01-11 02:31 ./slackware64/kde/kmix-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-01-11 02:31 ./slackware64/kde/kmix-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 216 2015-10-25 08:17 ./slackware64/kde/kmousetool-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 56804 2015-10-25 08:17 ./slackware64/kde/kmousetool-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:17 ./slackware64/kde/kmousetool-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 187 2015-10-25 08:17 ./slackware64/kde/kmouth-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 383812 2015-10-25 08:17 ./slackware64/kde/kmouth-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:17 ./slackware64/kde/kmouth-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 484 2015-10-25 09:03 ./slackware64/kde/kmplot-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 797924 2015-10-25 09:03 ./slackware64/kde/kmplot-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:03 ./slackware64/kde/kmplot-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 456 2015-10-25 08:40 ./slackware64/kde/knavalbattle-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 904836 2015-10-25 08:40 ./slackware64/kde/knavalbattle-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:40 ./slackware64/kde/knavalbattle-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 307 2015-10-25 08:41 ./slackware64/kde/knetwalk-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 807600 2015-10-25 08:41 ./slackware64/kde/knetwalk-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:41 ./slackware64/kde/knetwalk-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 346 2015-10-25 08:39 ./slackware64/kde/kolf-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 829860 2015-10-25 08:39 ./slackware64/kde/kolf-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:39 ./slackware64/kde/kolf-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 199 2015-10-25 08:37 ./slackware64/kde/kollision-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 229504 2015-10-25 08:37 ./slackware64/kde/kollision-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:37 ./slackware64/kde/kollision-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 578 2015-10-25 08:04 ./slackware64/kde/kolourpaint-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1168052 2015-10-25 08:04 ./slackware64/kde/kolourpaint-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:04 ./slackware64/kde/kolourpaint-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 178 2015-10-25 07:57 ./slackware64/kde/kompare-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 399028 2015-10-25 07:57 ./slackware64/kde/kompare-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:57 ./slackware64/kde/kompare-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 310 2015-10-25 08:40 ./slackware64/kde/konquest-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 445796 2015-10-25 08:40 ./slackware64/kde/konquest-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:40 ./slackware64/kde/konquest-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 194 2015-10-25 07:42 ./slackware64/kde/konsole-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 420404 2015-10-25 07:42 ./slackware64/kde/konsole-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:42 ./slackware64/kde/konsole-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 436 2015-10-25 08:57 ./slackware64/kde/kopete-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 6622820 2015-10-25 08:57 ./slackware64/kde/kopete-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:57 ./slackware64/kde/kopete-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 444 2015-10-25 08:10 ./slackware64/kde/korundum-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 146768 2015-10-25 08:10 ./slackware64/kde/korundum-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:10 ./slackware64/kde/korundum-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 255 2015-10-25 08:37 ./slackware64/kde/kpat-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 2967348 2015-10-25 08:37 ./slackware64/kde/kpat-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:37 ./slackware64/kde/kpat-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 477 2015-10-25 09:16 ./slackware64/kde/kplayer-0.7.2-x86_64-2.txt +-rw-r--r-- 1 root root 5922252 2015-10-25 09:16 ./slackware64/kde/kplayer-0.7.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:16 ./slackware64/kde/kplayer-0.7.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 297 2015-10-25 08:30 ./slackware64/kde/kppp-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 804436 2015-10-25 08:30 ./slackware64/kde/kppp-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:30 ./slackware64/kde/kppp-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 229 2015-10-25 09:05 ./slackware64/kde/kqtquickcharts-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 39284 2015-10-25 09:05 ./slackware64/kde/kqtquickcharts-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:05 ./slackware64/kde/kqtquickcharts-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 343 2015-10-25 08:31 ./slackware64/kde/krdc-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 477220 2015-10-25 08:31 ./slackware64/kde/krdc-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:31 ./slackware64/kde/krdc-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 382 2015-10-25 08:19 ./slackware64/kde/kremotecontrol-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1192996 2015-10-25 08:19 ./slackware64/kde/kremotecontrol-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:19 ./slackware64/kde/kremotecontrol-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 463 2015-10-25 08:38 ./slackware64/kde/kreversi-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 390580 2015-10-25 08:38 ./slackware64/kde/kreversi-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:38 ./slackware64/kde/kreversi-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 341 2015-10-25 08:31 ./slackware64/kde/krfb-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 444444 2015-10-25 08:31 ./slackware64/kde/krfb-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:31 ./slackware64/kde/krfb-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 376 2015-10-25 08:13 ./slackware64/kde/kross-interpreters-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 130312 2015-10-25 08:13 ./slackware64/kde/kross-interpreters-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:13 ./slackware64/kde/kross-interpreters-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 171 2015-10-25 08:05 ./slackware64/kde/kruler-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 121020 2015-10-25 08:05 ./slackware64/kde/kruler-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:05 ./slackware64/kde/kruler-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 258 2015-10-25 08:05 ./slackware64/kde/ksaneplugin-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 18040 2015-10-25 08:05 ./slackware64/kde/ksaneplugin-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:05 ./slackware64/kde/ksaneplugin-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 429 2015-10-25 09:55 ./slackware64/kde/kscreen-1.0.2.1-x86_64-2.txt +-rw-r--r-- 1 root root 139004 2015-10-25 09:55 ./slackware64/kde/kscreen-1.0.2.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:55 ./slackware64/kde/kscreen-1.0.2.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 297 2015-10-25 08:37 ./slackware64/kde/kshisen-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 144200 2015-10-25 08:37 ./slackware64/kde/kshisen-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:37 ./slackware64/kde/kshisen-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 161 2015-10-25 08:42 ./slackware64/kde/ksirk-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 3233632 2015-10-25 08:42 ./slackware64/kde/ksirk-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:42 ./slackware64/kde/ksirk-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 424 2015-10-25 08:37 ./slackware64/kde/ksnakeduel-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 345820 2015-10-25 08:37 ./slackware64/kde/ksnakeduel-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:37 ./slackware64/kde/ksnakeduel-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 186 2015-10-25 08:05 ./slackware64/kde/ksnapshot-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 304696 2015-10-25 08:05 ./slackware64/kde/ksnapshot-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:05 ./slackware64/kde/ksnapshot-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 328 2015-10-25 08:44 ./slackware64/kde/kspaceduel-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 200640 2015-10-25 08:44 ./slackware64/kde/kspaceduel-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:44 ./slackware64/kde/kspaceduel-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 303 2015-10-25 08:37 ./slackware64/kde/ksquares-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 94524 2015-10-25 08:37 ./slackware64/kde/ksquares-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:37 ./slackware64/kde/ksquares-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 152 2015-10-25 09:04 ./slackware64/kde/kstars-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 12669276 2015-10-25 09:04 ./slackware64/kde/kstars-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:04 ./slackware64/kde/kstars-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 316 2015-10-25 08:36 ./slackware64/kde/ksudoku-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1440764 2015-10-25 08:36 ./slackware64/kde/ksudoku-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:36 ./slackware64/kde/ksudoku-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 595 2015-10-25 08:33 ./slackware64/kde/ksystemlog-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 471232 2015-10-25 08:33 ./slackware64/kde/ksystemlog-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:33 ./slackware64/kde/ksystemlog-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 418 2015-10-25 08:44 ./slackware64/kde/kteatime-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 120748 2015-10-25 08:44 ./slackware64/kde/kteatime-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:44 ./slackware64/kde/kteatime-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 237 2015-10-25 08:19 ./slackware64/kde/ktimer-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 161564 2015-10-25 08:19 ./slackware64/kde/ktimer-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:19 ./slackware64/kde/ktimer-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 546 2015-10-25 09:28 ./slackware64/kde/ktorrent-4.3.1-x86_64-2.txt +-rw-r--r-- 1 root root 2479256 2015-10-25 09:28 ./slackware64/kde/ktorrent-4.3.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:28 ./slackware64/kde/ktorrent-4.3.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 181 2016-03-24 17:38 ./slackware64/kde/ktouch-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 2095980 2016-03-24 17:38 ./slackware64/kde/ktouch-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-24 17:38 ./slackware64/kde/ktouch-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 323 2015-10-25 08:43 ./slackware64/kde/ktuberling-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 4306216 2015-10-25 08:43 ./slackware64/kde/ktuberling-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:43 ./slackware64/kde/ktuberling-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 194 2015-10-25 09:05 ./slackware64/kde/kturtle-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 256380 2015-10-25 09:05 ./slackware64/kde/kturtle-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:05 ./slackware64/kde/kturtle-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 161 2015-10-25 08:44 ./slackware64/kde/ktux-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 121044 2015-10-25 08:44 ./slackware64/kde/ktux-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:44 ./slackware64/kde/ktux-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 489 2015-10-25 08:41 ./slackware64/kde/kubrick-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 126956 2015-10-25 08:41 ./slackware64/kde/kubrick-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:41 ./slackware64/kde/kubrick-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 167 2015-10-25 08:33 ./slackware64/kde/kuser-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 218152 2015-10-25 08:33 ./slackware64/kde/kuser-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:33 ./slackware64/kde/kuser-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 357 2015-10-25 08:19 ./slackware64/kde/kwalletmanager-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 527900 2015-10-25 08:19 ./slackware64/kde/kwalletmanager-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:19 ./slackware64/kde/kwalletmanager-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 375 2015-10-25 09:16 ./slackware64/kde/kwebkitpart-1.3.4-x86_64-2.txt +-rw-r--r-- 1 root root 266432 2015-10-25 09:16 ./slackware64/kde/kwebkitpart-1.3.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:16 ./slackware64/kde/kwebkitpart-1.3.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 285 2015-10-25 09:05 ./slackware64/kde/kwordquiz-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1259296 2015-10-25 09:05 ./slackware64/kde/kwordquiz-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:05 ./slackware64/kde/kwordquiz-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 178 2015-10-25 08:24 ./slackware64/kde/libkcddb-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 208660 2015-10-25 08:24 ./slackware64/kde/libkcddb-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:24 ./slackware64/kde/libkcddb-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 284 2015-10-25 08:24 ./slackware64/kde/libkcompactdisc-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 57608 2015-10-25 08:24 ./slackware64/kde/libkcompactdisc-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:24 ./slackware64/kde/libkcompactdisc-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 317 2015-11-10 20:05 ./slackware64/kde/libkdcraw-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 118280 2015-11-10 20:05 ./slackware64/kde/libkdcraw-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-10 20:05 ./slackware64/kde/libkdcraw-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 217 2015-10-25 08:57 ./slackware64/kde/libkdeedu-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 264700 2015-10-25 08:57 ./slackware64/kde/libkdeedu-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:57 ./slackware64/kde/libkdeedu-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 259 2015-10-25 08:36 ./slackware64/kde/libkdegames-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 5834476 2015-10-25 08:36 ./slackware64/kde/libkdegames-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:36 ./slackware64/kde/libkdegames-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 312 2015-10-25 08:01 ./slackware64/kde/libkexiv2-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 290860 2015-10-25 08:01 ./slackware64/kde/libkexiv2-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:01 ./slackware64/kde/libkexiv2-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 346 2015-10-25 08:01 ./slackware64/kde/libkipi-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 101104 2015-10-25 08:01 ./slackware64/kde/libkipi-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:01 ./slackware64/kde/libkipi-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 312 2015-10-25 08:36 ./slackware64/kde/libkmahjongg-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1654260 2015-10-25 08:36 ./slackware64/kde/libkmahjongg-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:36 ./slackware64/kde/libkmahjongg-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 365 2015-10-25 07:57 ./slackware64/kde/libkomparediff2-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 93056 2015-10-25 07:57 ./slackware64/kde/libkomparediff2-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:57 ./slackware64/kde/libkomparediff2-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 211 2015-10-25 08:01 ./slackware64/kde/libksane-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 97056 2015-10-25 08:01 ./slackware64/kde/libksane-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:01 ./slackware64/kde/libksane-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 393 2015-10-25 08:01 ./slackware64/kde/libkscreen-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 85216 2015-10-25 08:01 ./slackware64/kde/libkscreen-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:01 ./slackware64/kde/libkscreen-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 487 2015-10-25 08:26 ./slackware64/kde/libktorrent-1.3.1-x86_64-3.txt +-rw-r--r-- 1 root root 645128 2015-10-25 08:26 ./slackware64/kde/libktorrent-1.3.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:26 ./slackware64/kde/libktorrent-1.3.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 198 2015-10-25 09:25 ./slackware64/kde/libmm-qt-1.0.1-x86_64-2.txt +-rw-r--r-- 1 root root 148780 2015-10-25 09:25 ./slackware64/kde/libmm-qt-1.0.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:25 ./slackware64/kde/libmm-qt-1.0.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 202 2015-10-25 09:25 ./slackware64/kde/libnm-qt-0.9.8.3-x86_64-2.txt +-rw-r--r-- 1 root root 407796 2015-10-25 09:25 ./slackware64/kde/libnm-qt-0.9.8.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:25 ./slackware64/kde/libnm-qt-0.9.8.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 592 2015-10-25 07:58 ./slackware64/kde/lokalize-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1086072 2015-10-25 07:58 ./slackware64/kde/lokalize-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:58 ./slackware64/kde/lokalize-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 351 2016-03-21 03:13 ./slackware64/kde/lskat-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 939400 2016-03-21 03:13 ./slackware64/kde/lskat-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-21 03:13 ./slackware64/kde/lskat-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 14211 2016-03-19 18:19 ./slackware64/kde/maketag +-rw-r--r-- 1 root root 14211 2016-03-19 18:19 ./slackware64/kde/maketag.ez +-rw-r--r-- 1 root root 549 2015-10-25 09:08 ./slackware64/kde/marble-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 16770272 2015-10-25 09:08 ./slackware64/kde/marble-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:08 ./slackware64/kde/marble-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 359 2015-10-25 08:24 ./slackware64/kde/mplayerthumbs-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 45448 2015-10-25 08:24 ./slackware64/kde/mplayerthumbs-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:24 ./slackware64/kde/mplayerthumbs-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 270 2015-10-25 07:40 ./slackware64/kde/nepomuk-core-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 827696 2015-10-25 07:40 ./slackware64/kde/nepomuk-core-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:40 ./slackware64/kde/nepomuk-core-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 325 2015-10-25 07:41 ./slackware64/kde/nepomuk-widgets-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 80620 2015-10-25 07:41 ./slackware64/kde/nepomuk-widgets-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:41 ./slackware64/kde/nepomuk-widgets-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 180 2015-10-25 07:59 ./slackware64/kde/okteta-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 754356 2015-10-25 07:59 ./slackware64/kde/okteta-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:59 ./slackware64/kde/okteta-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 152 2015-10-25 08:02 ./slackware64/kde/okular-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1639556 2015-10-25 08:02 ./slackware64/kde/okular-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:02 ./slackware64/kde/okular-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 646 2015-10-25 09:17 ./slackware64/kde/oxygen-gtk2-1.4.6-x86_64-2.txt +-rw-r--r-- 1 root root 422148 2015-10-25 09:17 ./slackware64/kde/oxygen-gtk2-1.4.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:17 ./slackware64/kde/oxygen-gtk2-1.4.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 329 2015-10-25 08:32 ./slackware64/kde/oxygen-icons-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 29481192 2015-10-25 08:32 ./slackware64/kde/oxygen-icons-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:32 ./slackware64/kde/oxygen-icons-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 206 2015-10-25 09:09 ./slackware64/kde/pairs-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 3848028 2015-10-25 09:09 ./slackware64/kde/pairs-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:09 ./slackware64/kde/pairs-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 414 2015-10-25 08:43 ./slackware64/kde/palapeli-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1876068 2015-10-25 08:43 ./slackware64/kde/palapeli-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:43 ./slackware64/kde/palapeli-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 156 2015-10-25 09:09 ./slackware64/kde/parley-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 4765984 2015-10-25 09:09 ./slackware64/kde/parley-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:09 ./slackware64/kde/parley-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 391 2015-10-26 18:28 ./slackware64/kde/partitionmanager-1.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 2108432 2015-10-26 18:28 ./slackware64/kde/partitionmanager-1.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-26 18:28 ./slackware64/kde/partitionmanager-1.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 154 2015-10-25 08:11 ./slackware64/kde/perlkde-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 42764 2015-10-25 08:11 ./slackware64/kde/perlkde-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:11 ./slackware64/kde/perlkde-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 305 2015-10-25 08:08 ./slackware64/kde/perlqt-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 501080 2015-10-25 08:08 ./slackware64/kde/perlqt-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:08 ./slackware64/kde/perlqt-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 282 2015-10-25 08:43 ./slackware64/kde/picmi-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 789960 2015-10-25 08:43 ./slackware64/kde/picmi-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:43 ./slackware64/kde/picmi-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 309 2015-10-25 09:26 ./slackware64/kde/plasma-nm-0.9.3.6-x86_64-1.txt +-rw-r--r-- 1 root root 805920 2015-10-25 09:26 ./slackware64/kde/plasma-nm-0.9.3.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:26 ./slackware64/kde/plasma-nm-0.9.3.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 291 2015-10-25 09:15 ./slackware64/kde/polkit-kde-agent-1-9d74ae3_20120104git-x86_64-2.txt +-rw-r--r-- 1 root root 33300 2015-10-25 09:15 ./slackware64/kde/polkit-kde-agent-1-9d74ae3_20120104git-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:15 ./slackware64/kde/polkit-kde-agent-1-9d74ae3_20120104git-x86_64-2.txz.asc +-rw-r--r-- 1 root root 340 2015-10-25 09:15 ./slackware64/kde/polkit-kde-kcmodules-1-001bdf7_20120111git-x86_64-2.txt +-rw-r--r-- 1 root root 76464 2015-10-25 09:15 ./slackware64/kde/polkit-kde-kcmodules-1-001bdf7_20120111git-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:15 ./slackware64/kde/polkit-kde-kcmodules-1-001bdf7_20120111git-x86_64-2.txz.asc +-rw-r--r-- 1 root root 369 2015-10-25 07:59 ./slackware64/kde/poxml-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 62928 2015-10-25 07:59 ./slackware64/kde/poxml-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 07:59 ./slackware64/kde/poxml-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 422 2015-10-25 08:19 ./slackware64/kde/print-manager-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 237912 2015-10-25 08:19 ./slackware64/kde/print-manager-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:19 ./slackware64/kde/print-manager-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 148 2015-10-25 08:13 ./slackware64/kde/pykde4-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 2957504 2015-10-25 08:13 ./slackware64/kde/pykde4-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:13 ./slackware64/kde/pykde4-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 448 2015-10-25 08:08 ./slackware64/kde/qtruby-4.14.3-x86_64-4.txt +-rw-r--r-- 1 root root 423604 2015-10-25 08:08 ./slackware64/kde/qtruby-4.14.3-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:08 ./slackware64/kde/qtruby-4.14.3-x86_64-4.txz.asc +-rw-r--r-- 1 root root 146 2015-10-25 09:10 ./slackware64/kde/rocs-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1391768 2015-10-25 09:10 ./slackware64/kde/rocs-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:10 ./slackware64/kde/rocs-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 207 2015-10-25 09:27 ./slackware64/kde/skanlite-1.1-x86_64-2.txt +-rw-r--r-- 1 root root 2547204 2015-10-25 09:27 ./slackware64/kde/skanlite-1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:27 ./slackware64/kde/skanlite-1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 309 2015-10-25 08:05 ./slackware64/kde/smokegen-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 330548 2015-10-25 08:05 ./slackware64/kde/smokegen-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:05 ./slackware64/kde/smokegen-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 156 2015-10-25 08:10 ./slackware64/kde/smokekde-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1824396 2015-10-25 08:10 ./slackware64/kde/smokekde-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:10 ./slackware64/kde/smokekde-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 184 2015-10-25 08:07 ./slackware64/kde/smokeqt-4.14.3-x86_64-3.txt +-rw-r--r-- 1 root root 2832912 2015-10-25 08:07 ./slackware64/kde/smokeqt-4.14.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:07 ./slackware64/kde/smokeqt-4.14.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 410 2015-11-12 19:31 ./slackware64/kde/step-4.14.3-x86_64-4.txt +-rw-r--r-- 1 root root 562776 2015-11-12 19:31 ./slackware64/kde/step-4.14.3-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-11-12 19:31 ./slackware64/kde/step-4.14.3-x86_64-4.txz.asc +-rw-r--r-- 1 root root 353 2015-10-25 08:20 ./slackware64/kde/superkaramba-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 278652 2015-10-25 08:20 ./slackware64/kde/superkaramba-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:20 ./slackware64/kde/superkaramba-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 164 2015-10-25 08:05 ./slackware64/kde/svgpart-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 15088 2015-10-25 08:05 ./slackware64/kde/svgpart-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:05 ./slackware64/kde/svgpart-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 279 2015-10-25 08:20 ./slackware64/kde/sweeper-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 97880 2015-10-25 08:20 ./slackware64/kde/sweeper-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:20 ./slackware64/kde/sweeper-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 2756 2016-03-19 18:19 ./slackware64/kde/tagfile +-rw-r--r-- 1 root root 209 2015-10-25 08:01 ./slackware64/kde/umbrello-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 1686936 2015-10-25 08:01 ./slackware64/kde/umbrello-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:01 ./slackware64/kde/umbrello-4.14.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 316 2015-10-25 09:25 ./slackware64/kde/wicd-kde-0.3.0_bcf27d8-x86_64-2.txt +-rw-r--r-- 1 root root 118476 2015-10-25 09:25 ./slackware64/kde/wicd-kde-0.3.0_bcf27d8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 09:25 ./slackware64/kde/wicd-kde-0.3.0_bcf27d8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 296 2015-10-25 08:26 ./slackware64/kde/zeroconf-ioslave-4.14.3-x86_64-2.txt +-rw-r--r-- 1 root root 39136 2015-10-25 08:26 ./slackware64/kde/zeroconf-ioslave-4.14.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-25 08:26 ./slackware64/kde/zeroconf-ioslave-4.14.3-x86_64-2.txz.asc +drwxr-xr-x 2 root root 20480 2016-03-10 03:11 ./slackware64/kdei +-rw-r--r-- 1 root root 254 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-bs-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 359436 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-bs-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-bs-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-ca-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 538620 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-ca-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-ca-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 383 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-ca@valencia-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 371040 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-ca@valencia-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:39 ./slackware64/kdei/calligra-l10n-ca@valencia-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 252 2016-03-09 21:40 ./slackware64/kdei/calligra-l10n-cs-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 223960 2016-03-09 21:40 ./slackware64/kdei/calligra-l10n-cs-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:40 ./slackware64/kdei/calligra-l10n-cs-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 253 2016-03-09 21:40 ./slackware64/kdei/calligra-l10n-da-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 322368 2016-03-09 21:40 ./slackware64/kdei/calligra-l10n-da-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:40 ./slackware64/kdei/calligra-l10n-da-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 253 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-de-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 584756 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-de-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-de-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 252 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-el-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 307752 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-el-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-el-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 295 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-en_GB-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 258892 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-en_GB-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:41 ./slackware64/kdei/calligra-l10n-en_GB-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-es-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 1154116 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-es-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-es-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 255 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-et-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 590892 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-et-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-et-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-fi-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 302188 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-fi-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:42 ./slackware64/kdei/calligra-l10n-fi-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 253 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-fr-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 1690256 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-fr-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-fr-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 255 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-gl-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 353036 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-gl-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-gl-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 256 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-hu-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 261832 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-hu-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-hu-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-it-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 588068 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-it-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-it-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 255 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-ja-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 279256 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-ja-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:43 ./slackware64/kdei/calligra-l10n-ja-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 253 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-kk-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 309908 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-kk-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-kk-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 266 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-nb-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 332892 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-nb-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-nb-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 252 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-nl-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 1503020 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-nl-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-nl-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 253 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-pl-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 379864 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-pl-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-pl-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 257 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-pt-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 620424 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-pt-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:44 ./slackware64/kdei/calligra-l10n-pt-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 300 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-pt_BR-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 603216 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-pt_BR-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-pt_BR-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-ru-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 392340 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-ru-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-ru-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 253 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-sk-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 359916 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-sk-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-sk-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-sv-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 1915444 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-sv-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-sv-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 254 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-tr-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 341728 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-tr-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:45 ./slackware64/kdei/calligra-l10n-tr-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 256 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-uk-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 2136708 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-uk-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-uk-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 301 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-zh_CN-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 230000 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-zh_CN-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-zh_CN-2.9.11-noarch-1.txz.asc +-rw-r--r-- 1 root root 290 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-zh_TW-2.9.11-noarch-1.txt +-rw-r--r-- 1 root root 292064 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-zh_TW-2.9.11-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 21:46 ./slackware64/kdei/calligra-l10n-zh_TW-2.9.11-noarch-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/kdei/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/kdei/install.end +-rw-r--r-- 1 root root 188 2015-04-02 22:38 ./slackware64/kdei/kde-l10n-ar-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2188644 2015-04-02 22:38 ./slackware64/kdei/kde-l10n-ar-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:38 ./slackware64/kdei/kde-l10n-ar-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 191 2015-04-02 22:39 ./slackware64/kdei/kde-l10n-bg-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1128448 2015-04-02 22:39 ./slackware64/kdei/kde-l10n-bg-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:39 ./slackware64/kdei/kde-l10n-bg-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 22:39 ./slackware64/kdei/kde-l10n-bs-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2301656 2015-04-02 22:39 ./slackware64/kdei/kde-l10n-bs-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:39 ./slackware64/kdei/kde-l10n-bs-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 22:42 ./slackware64/kdei/kde-l10n-ca-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 14021420 2015-04-02 22:42 ./slackware64/kdei/kde-l10n-ca-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:42 ./slackware64/kdei/kde-l10n-ca-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 309 2015-04-02 22:43 ./slackware64/kdei/kde-l10n-ca@valencia-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2291592 2015-04-02 22:43 ./slackware64/kdei/kde-l10n-ca@valencia-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:43 ./slackware64/kdei/kde-l10n-ca@valencia-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 22:43 ./slackware64/kdei/kde-l10n-cs-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2811356 2015-04-02 22:43 ./slackware64/kdei/kde-l10n-cs-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:43 ./slackware64/kdei/kde-l10n-cs-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 22:44 ./slackware64/kdei/kde-l10n-da-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 12530056 2015-04-02 22:44 ./slackware64/kdei/kde-l10n-da-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:44 ./slackware64/kdei/kde-l10n-da-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 22:48 ./slackware64/kdei/kde-l10n-de-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 38400824 2015-04-02 22:48 ./slackware64/kdei/kde-l10n-de-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:48 ./slackware64/kdei/kde-l10n-de-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 22:49 ./slackware64/kdei/kde-l10n-el-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 4343584 2015-04-02 22:49 ./slackware64/kdei/kde-l10n-el-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:49 ./slackware64/kdei/kde-l10n-el-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 230 2015-04-02 22:49 ./slackware64/kdei/kde-l10n-en_GB-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2631244 2015-04-02 22:49 ./slackware64/kdei/kde-l10n-en_GB-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:49 ./slackware64/kdei/kde-l10n-en_GB-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 22:53 ./slackware64/kdei/kde-l10n-es-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 23484552 2015-04-02 22:53 ./slackware64/kdei/kde-l10n-es-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:53 ./slackware64/kdei/kde-l10n-es-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 190 2015-04-02 22:56 ./slackware64/kdei/kde-l10n-et-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 7350924 2015-04-02 22:56 ./slackware64/kdei/kde-l10n-et-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:56 ./slackware64/kdei/kde-l10n-et-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-eu-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1514764 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-eu-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-eu-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-fa-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 837448 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-fa-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-fa-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-fi-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2306424 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-fi-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 22:57 ./slackware64/kdei/kde-l10n-fi-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:01 ./slackware64/kdei/kde-l10n-fr-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 45490664 2015-04-02 23:01 ./slackware64/kdei/kde-l10n-fr-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:01 ./slackware64/kdei/kde-l10n-fr-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 23:01 ./slackware64/kdei/kde-l10n-ga-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2040172 2015-04-02 23:01 ./slackware64/kdei/kde-l10n-ga-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:01 ./slackware64/kdei/kde-l10n-ga-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 190 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-gl-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 4253996 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-gl-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-gl-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-he-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1237280 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-he-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-he-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-hi-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 795564 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-hi-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:03 ./slackware64/kdei/kde-l10n-hi-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 190 2015-04-02 23:04 ./slackware64/kdei/kde-l10n-hr-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 856148 2015-04-02 23:04 ./slackware64/kdei/kde-l10n-hr-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:04 ./slackware64/kdei/kde-l10n-hr-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 191 2015-04-02 23:04 ./slackware64/kdei/kde-l10n-hu-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 3941980 2015-04-02 23:04 ./slackware64/kdei/kde-l10n-hu-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:04 ./slackware64/kdei/kde-l10n-hu-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 193 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-ia-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1287844 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-ia-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-ia-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 192 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-id-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 420304 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-id-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-id-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 191 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-is-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 765880 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-is-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:05 ./slackware64/kdei/kde-l10n-is-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:09 ./slackware64/kdei/kde-l10n-it-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 10184368 2015-04-02 23:09 ./slackware64/kdei/kde-l10n-it-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:09 ./slackware64/kdei/kde-l10n-it-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 190 2015-04-02 23:09 ./slackware64/kdei/kde-l10n-ja-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1800044 2015-04-02 23:09 ./slackware64/kdei/kde-l10n-ja-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:09 ./slackware64/kdei/kde-l10n-ja-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-kk-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2311304 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-kk-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-kk-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-km-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1718524 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-km-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-km-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-ko-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1681148 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-ko-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:10 ./slackware64/kdei/kde-l10n-ko-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 192 2015-04-02 23:11 ./slackware64/kdei/kde-l10n-lt-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 12341564 2015-04-02 23:11 ./slackware64/kdei/kde-l10n-lt-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:11 ./slackware64/kdei/kde-l10n-lt-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:11 ./slackware64/kdei/kde-l10n-lv-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1610900 2015-04-02 23:11 ./slackware64/kdei/kde-l10n-lv-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:11 ./slackware64/kdei/kde-l10n-lv-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:12 ./slackware64/kdei/kde-l10n-mr-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 862384 2015-04-02 23:12 ./slackware64/kdei/kde-l10n-mr-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:12 ./slackware64/kdei/kde-l10n-mr-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 201 2015-04-02 23:13 ./slackware64/kdei/kde-l10n-nb-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2558224 2015-04-02 23:13 ./slackware64/kdei/kde-l10n-nb-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:13 ./slackware64/kdei/kde-l10n-nb-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 203 2015-04-02 23:13 ./slackware64/kdei/kde-l10n-nds-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2824672 2015-04-02 23:13 ./slackware64/kdei/kde-l10n-nds-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:13 ./slackware64/kdei/kde-l10n-nds-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 187 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-nl-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 15839108 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-nl-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-nl-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 201 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-nn-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1541184 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-nn-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-nn-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-pa-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 974196 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-pa-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:17 ./slackware64/kdei/kde-l10n-pa-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:19 ./slackware64/kdei/kde-l10n-pl-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 19876620 2015-04-02 23:19 ./slackware64/kdei/kde-l10n-pl-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:19 ./slackware64/kdei/kde-l10n-pl-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 192 2015-04-02 23:23 ./slackware64/kdei/kde-l10n-pt-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 5904856 2015-04-02 23:23 ./slackware64/kdei/kde-l10n-pt-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:23 ./slackware64/kdei/kde-l10n-pt-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 238 2015-04-02 23:26 ./slackware64/kdei/kde-l10n-pt_BR-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 27344352 2015-04-02 23:26 ./slackware64/kdei/kde-l10n-pt_BR-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:26 ./slackware64/kdei/kde-l10n-pt_BR-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 190 2015-04-02 23:27 ./slackware64/kdei/kde-l10n-ro-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2278872 2015-04-02 23:27 ./slackware64/kdei/kde-l10n-ro-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:27 ./slackware64/kdei/kde-l10n-ro-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:29 ./slackware64/kdei/kde-l10n-ru-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 23145068 2015-04-02 23:29 ./slackware64/kdei/kde-l10n-ru-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:29 ./slackware64/kdei/kde-l10n-ru-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:30 ./slackware64/kdei/kde-l10n-sk-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2341900 2015-04-02 23:30 ./slackware64/kdei/kde-l10n-sk-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:30 ./slackware64/kdei/kde-l10n-sk-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 191 2015-04-02 23:30 ./slackware64/kdei/kde-l10n-sl-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2937328 2015-04-02 23:30 ./slackware64/kdei/kde-l10n-sl-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:30 ./slackware64/kdei/kde-l10n-sl-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:34 ./slackware64/kdei/kde-l10n-sr-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 10490020 2015-04-02 23:34 ./slackware64/kdei/kde-l10n-sr-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:34 ./slackware64/kdei/kde-l10n-sr-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:37 ./slackware64/kdei/kde-l10n-sv-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 16541096 2015-04-02 23:37 ./slackware64/kdei/kde-l10n-sv-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:37 ./slackware64/kdei/kde-l10n-sv-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:38 ./slackware64/kdei/kde-l10n-tr-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 3499008 2015-04-02 23:38 ./slackware64/kdei/kde-l10n-tr-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:38 ./slackware64/kdei/kde-l10n-tr-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 188 2015-04-02 23:38 ./slackware64/kdei/kde-l10n-ug-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 957396 2015-04-02 23:38 ./slackware64/kdei/kde-l10n-ug-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:38 ./slackware64/kdei/kde-l10n-ug-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 191 2015-04-02 23:42 ./slackware64/kdei/kde-l10n-uk-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 28681456 2015-04-02 23:42 ./slackware64/kdei/kde-l10n-uk-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:42 ./slackware64/kdei/kde-l10n-uk-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 189 2015-04-02 23:42 ./slackware64/kdei/kde-l10n-wa-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 1259220 2015-04-02 23:42 ./slackware64/kdei/kde-l10n-wa-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:42 ./slackware64/kdei/kde-l10n-wa-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 236 2015-04-02 23:43 ./slackware64/kdei/kde-l10n-zh_CN-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 3107584 2015-04-02 23:43 ./slackware64/kdei/kde-l10n-zh_CN-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:43 ./slackware64/kdei/kde-l10n-zh_CN-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 225 2015-04-02 23:43 ./slackware64/kdei/kde-l10n-zh_TW-4.14.3-noarch-1.txt +-rw-r--r-- 1 root root 2286528 2015-04-02 23:43 ./slackware64/kdei/kde-l10n-zh_TW-4.14.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:43 ./slackware64/kdei/kde-l10n-zh_TW-4.14.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 7544 2015-10-29 19:47 ./slackware64/kdei/maketag +-rw-r--r-- 1 root root 7544 2015-10-29 19:47 ./slackware64/kdei/maketag.ez +-rw-r--r-- 1 root root 1500 2015-10-29 19:47 ./slackware64/kdei/tagfile +drwxr-xr-x 2 root root 53248 2016-06-24 23:57 ./slackware64/l +-rw-r--r-- 1 root root 338 2015-11-19 05:33 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-3.txt +-rw-r--r-- 1 root root 149000 2015-11-19 05:33 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:33 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 331 2016-02-22 20:18 ./slackware64/l/GConf-3.2.6-x86_64-3.txt +-rw-r--r-- 1 root root 927548 2016-02-22 20:18 ./slackware64/l/GConf-3.2.6-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-02-22 20:18 ./slackware64/l/GConf-3.2.6-x86_64-3.txz.asc +-rw-r--r-- 1 root root 333 2016-05-31 18:05 ./slackware64/l/LibRaw-0.17.2-x86_64-1.txt +-rw-r--r-- 1 root root 333712 2016-05-31 18:05 ./slackware64/l/LibRaw-0.17.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-31 18:05 ./slackware64/l/LibRaw-0.17.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 571 2016-03-17 00:50 ./slackware64/l/M2Crypto-0.23.0-x86_64-1.txt +-rw-r--r-- 1 root root 220292 2016-03-17 00:50 ./slackware64/l/M2Crypto-0.23.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-17 00:50 ./slackware64/l/M2Crypto-0.23.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 276 2015-08-13 18:14 ./slackware64/l/PyQt-4.11.4-x86_64-1.txt +-rw-r--r-- 1 root root 8601424 2015-08-13 18:14 ./slackware64/l/PyQt-4.11.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-13 18:14 ./slackware64/l/PyQt-4.11.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 670 2016-04-11 23:54 ./slackware64/l/QScintilla-2.9.1-x86_64-1.txt +-rw-r--r-- 1 root root 1589168 2016-04-11 23:54 ./slackware64/l/QScintilla-2.9.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-11 23:54 ./slackware64/l/QScintilla-2.9.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 515 2016-01-15 22:26 ./slackware64/l/a52dec-0.7.4-x86_64-2.txt +-rw-r--r-- 1 root root 52940 2016-01-15 22:26 ./slackware64/l/a52dec-0.7.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-01-15 22:26 ./slackware64/l/a52dec-0.7.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 995 2013-06-23 19:03 ./slackware64/l/aalib-1.4rc5-x86_64-5.txt +-rw-r--r-- 1 root root 157672 2013-06-23 19:03 ./slackware64/l/aalib-1.4rc5-x86_64-5.txz +-rw-r--r-- 1 root root 198 2013-06-23 19:03 ./slackware64/l/aalib-1.4rc5-x86_64-5.txz.asc +-rw-r--r-- 1 root root 323 2015-10-27 22:25 ./slackware64/l/adwaita-icon-theme-3.18.0-noarch-1.txt +-rw-r--r-- 1 root root 11966372 2015-10-27 22:25 ./slackware64/l/adwaita-icon-theme-3.18.0-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-10-27 22:25 ./slackware64/l/adwaita-icon-theme-3.18.0-noarch-1.txz.asc +-rw-r--r-- 1 root root 383 2015-11-16 23:50 ./slackware64/l/akonadi-1.13.0-x86_64-2.txt +-rw-r--r-- 1 root root 899656 2015-11-16 23:50 ./slackware64/l/akonadi-1.13.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-16 23:50 ./slackware64/l/akonadi-1.13.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 402 2016-04-15 01:34 ./slackware64/l/alsa-lib-1.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 434732 2016-04-15 01:34 ./slackware64/l/alsa-lib-1.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-15 01:34 ./slackware64/l/alsa-lib-1.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 503 2015-03-19 04:03 ./slackware64/l/alsa-oss-1.0.28-x86_64-1.txt +-rw-r--r-- 1 root root 32596 2015-03-19 04:03 ./slackware64/l/alsa-oss-1.0.28-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-19 04:03 ./slackware64/l/alsa-oss-1.0.28-x86_64-1.txz.asc +-rw-r--r-- 1 root root 403 2016-04-01 19:20 ./slackware64/l/alsa-plugins-1.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 59152 2016-04-01 19:20 ./slackware64/l/alsa-plugins-1.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-01 19:20 ./slackware64/l/alsa-plugins-1.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 275 2015-10-23 19:18 ./slackware64/l/apr-1.5.2-x86_64-1.txt +-rw-r--r-- 1 root root 234776 2015-10-23 19:18 ./slackware64/l/apr-1.5.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-23 19:18 ./slackware64/l/apr-1.5.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 483 2015-11-18 01:53 ./slackware64/l/apr-util-1.5.4-x86_64-2.txt +-rw-r--r-- 1 root root 125180 2015-11-18 01:53 ./slackware64/l/apr-util-1.5.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-18 01:53 ./slackware64/l/apr-util-1.5.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 251 2016-03-07 19:39 ./slackware64/l/aspell-0.60.6.1-x86_64-1.txt +-rw-r--r-- 1 root root 599828 2016-03-07 19:39 ./slackware64/l/aspell-0.60.6.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:39 ./slackware64/l/aspell-0.60.6.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 175 2016-06-06 20:13 ./slackware64/l/aspell-en-7.1_0-x86_64-1.txt +-rw-r--r-- 1 root root 1030136 2016-06-06 20:13 ./slackware64/l/aspell-en-7.1_0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-06 20:13 ./slackware64/l/aspell-en-7.1_0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 269 2015-10-28 01:51 ./slackware64/l/at-spi2-atk-2.18.1-x86_64-1.txt +-rw-r--r-- 1 root root 74260 2015-10-28 01:51 ./slackware64/l/at-spi2-atk-2.18.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-28 01:51 ./slackware64/l/at-spi2-atk-2.18.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 457 2015-11-11 19:18 ./slackware64/l/at-spi2-core-2.18.3-x86_64-1.txt +-rw-r--r-- 1 root root 242264 2015-11-11 19:18 ./slackware64/l/at-spi2-core-2.18.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-11 19:18 ./slackware64/l/at-spi2-core-2.18.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 173 2015-10-28 01:49 ./slackware64/l/atk-2.18.0-x86_64-1.txt +-rw-r--r-- 1 root root 340564 2015-10-28 01:49 ./slackware64/l/atk-2.18.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-28 01:49 ./slackware64/l/atk-2.18.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 239 2016-01-10 23:41 ./slackware64/l/atkmm-2.24.2-x86_64-1.txt +-rw-r--r-- 1 root root 114736 2016-01-10 23:41 ./slackware64/l/atkmm-2.24.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:41 ./slackware64/l/atkmm-2.24.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 373 2015-04-01 03:42 ./slackware64/l/attica-0.4.2-x86_64-1.txt +-rw-r--r-- 1 root root 220336 2015-04-01 03:42 ./slackware64/l/attica-0.4.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-01 03:42 ./slackware64/l/attica-0.4.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 315 2013-03-21 20:40 ./slackware64/l/audiofile-0.3.6-x86_64-1.txt +-rw-r--r-- 1 root root 807488 2013-03-21 20:40 ./slackware64/l/audiofile-0.3.6-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-03-21 20:40 ./slackware64/l/audiofile-0.3.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 454 2009-01-22 19:43 ./slackware64/l/automoc4-0.9.88-x86_64-1.txt +-rw-r--r-- 1 root root 25480 2009-01-22 19:43 ./slackware64/l/automoc4-0.9.88-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-01-22 19:43 ./slackware64/l/automoc4-0.9.88-x86_64-1.txz.asc +-rw-r--r-- 1 root root 517 2015-11-24 02:49 ./slackware64/l/babl-0.1.14-x86_64-1.txt +-rw-r--r-- 1 root root 247976 2015-11-24 02:49 ./slackware64/l/babl-0.1.14-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-24 02:49 ./slackware64/l/babl-0.1.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 433 2015-11-17 23:32 ./slackware64/l/boost-1.59.0-x86_64-1.txt +-rw-r--r-- 1 root root 8066336 2015-11-17 23:32 ./slackware64/l/boost-1.59.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-17 23:32 ./slackware64/l/boost-1.59.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 394 2016-06-20 16:40 ./slackware64/l/cairo-1.14.6-x86_64-2.txt +-rw-r--r-- 1 root root 725188 2016-06-20 16:40 ./slackware64/l/cairo-1.14.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-20 16:40 ./slackware64/l/cairo-1.14.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 403 2016-01-10 23:41 ./slackware64/l/cairomm-1.12.0-x86_64-1.txt +-rw-r--r-- 1 root root 111236 2016-01-10 23:41 ./slackware64/l/cairomm-1.12.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:41 ./slackware64/l/cairomm-1.12.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 472 2011-03-29 04:29 ./slackware64/l/chmlib-0.40-x86_64-2.txt +-rw-r--r-- 1 root root 33136 2011-03-29 04:29 ./slackware64/l/chmlib-0.40-x86_64-2.txz +-rw-r--r-- 1 root root 198 2011-03-29 04:29 ./slackware64/l/chmlib-0.40-x86_64-2.txz.asc +-rw-r--r-- 1 root root 279 2013-05-07 04:47 ./slackware64/l/clucene-2.3.3.4-x86_64-2.txt +-rw-r--r-- 1 root root 733688 2013-05-07 04:47 ./slackware64/l/clucene-2.3.3.4-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-05-07 04:47 ./slackware64/l/clucene-2.3.3.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 364 2008-09-29 19:55 ./slackware64/l/db42-4.2.52-x86_64-3.txt +-rw-r--r-- 1 root root 380400 2008-09-29 19:55 ./slackware64/l/db42-4.2.52-x86_64-3.txz +-rw-r--r-- 1 root root 197 2008-09-29 19:55 ./slackware64/l/db42-4.2.52-x86_64-3.txz.asc +-rw-r--r-- 1 root root 363 2012-08-15 01:38 ./slackware64/l/db44-4.4.20-x86_64-3.txt +-rw-r--r-- 1 root root 726760 2012-08-15 01:38 ./slackware64/l/db44-4.4.20-x86_64-3.txz +-rw-r--r-- 1 root root 198 2012-08-15 01:38 ./slackware64/l/db44-4.4.20-x86_64-3.txz.asc +-rw-r--r-- 1 root root 363 2012-08-23 04:07 ./slackware64/l/db48-4.8.30-x86_64-2.txt +-rw-r--r-- 1 root root 947872 2012-08-23 04:07 ./slackware64/l/db48-4.8.30-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-08-23 04:07 ./slackware64/l/db48-4.8.30-x86_64-2.txz.asc +-rw-r--r-- 1 root root 222 2016-03-04 04:25 ./slackware64/l/dbus-glib-0.106-x86_64-1.txt +-rw-r--r-- 1 root root 148452 2016-03-04 04:25 ./slackware64/l/dbus-glib-0.106-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-04 04:25 ./slackware64/l/dbus-glib-0.106-x86_64-1.txz.asc +-rw-r--r-- 1 root root 246 2016-03-27 17:14 ./slackware64/l/dbus-python-1.2.4-x86_64-1.txt +-rw-r--r-- 1 root root 125696 2016-03-27 17:14 ./slackware64/l/dbus-python-1.2.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-27 17:14 ./slackware64/l/dbus-python-1.2.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 268 2015-08-07 17:49 ./slackware64/l/dconf-0.24.0-x86_64-1.txt +-rw-r--r-- 1 root root 108660 2015-08-07 17:49 ./slackware64/l/dconf-0.24.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-07 17:49 ./slackware64/l/dconf-0.24.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 387 2015-12-15 20:15 ./slackware64/l/dconf-editor-3.18.2-x86_64-1.txt +-rw-r--r-- 1 root root 152412 2015-12-15 20:15 ./slackware64/l/dconf-editor-3.18.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 20:15 ./slackware64/l/dconf-editor-3.18.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 655 2015-04-18 22:41 ./slackware64/l/desktop-file-utils-0.22-x86_64-1.txt +-rw-r--r-- 1 root root 55092 2015-04-18 22:41 ./slackware64/l/desktop-file-utils-0.22-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-18 22:41 ./slackware64/l/desktop-file-utils-0.22-x86_64-1.txz.asc +-rw-r--r-- 1 root root 561 2015-12-23 03:54 ./slackware64/l/djvulibre-3.5.27-x86_64-1.txt +-rw-r--r-- 1 root root 968072 2015-12-23 03:54 ./slackware64/l/djvulibre-3.5.27-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 03:54 ./slackware64/l/djvulibre-3.5.27-x86_64-1.txz.asc +-rw-r--r-- 1 root root 322 2015-10-15 21:02 ./slackware64/l/ebook-tools-0.2.2-x86_64-3.txt +-rw-r--r-- 1 root root 22364 2015-10-15 21:02 ./slackware64/l/ebook-tools-0.2.2-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-10-15 21:02 ./slackware64/l/ebook-tools-0.2.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 257 2015-11-12 19:28 ./slackware64/l/eigen2-2.0.17-x86_64-1.txt +-rw-r--r-- 1 root root 162872 2015-11-12 19:28 ./slackware64/l/eigen2-2.0.17-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-12 19:28 ./slackware64/l/eigen2-2.0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 265 2015-12-01 22:37 ./slackware64/l/eigen3-3.2.7-x86_64-2.txt +-rw-r--r-- 1 root root 511336 2015-12-01 22:37 ./slackware64/l/eigen3-3.2.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-12-01 22:37 ./slackware64/l/eigen3-3.2.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 544 2015-08-19 18:43 ./slackware64/l/elfutils-0.163-x86_64-1.txt +-rw-r--r-- 1 root root 715612 2015-08-19 18:43 ./slackware64/l/elfutils-0.163-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-19 18:43 ./slackware64/l/elfutils-0.163-x86_64-1.txz.asc +-rw-r--r-- 1 root root 346 2013-02-11 00:11 ./slackware64/l/enchant-1.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 63172 2013-02-11 00:11 ./slackware64/l/enchant-1.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-02-11 00:11 ./slackware64/l/enchant-1.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 505 2013-03-21 20:42 ./slackware64/l/esound-0.2.41-x86_64-2.txt +-rw-r--r-- 1 root root 99748 2013-03-21 20:42 ./slackware64/l/esound-0.2.41-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-03-21 20:42 ./slackware64/l/esound-0.2.41-x86_64-2.txz.asc +-rw-r--r-- 1 root root 257 2015-10-15 17:09 ./slackware64/l/exiv2-0.25-x86_64-1.txt +-rw-r--r-- 1 root root 1535732 2015-10-15 17:09 ./slackware64/l/exiv2-0.25-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 17:09 ./slackware64/l/exiv2-0.25-x86_64-1.txz.asc +-rw-r--r-- 1 root root 264 2013-04-29 01:00 ./slackware64/l/expat-2.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 117740 2013-04-29 01:00 ./slackware64/l/expat-2.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-04-29 01:00 ./slackware64/l/expat-2.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 504 2015-03-07 02:58 ./slackware64/l/fftw-3.3.4-x86_64-1.txt +-rw-r--r-- 1 root root 2304520 2015-03-07 02:58 ./slackware64/l/fftw-3.3.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-07 02:58 ./slackware64/l/fftw-3.3.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 494 2016-02-09 19:03 ./slackware64/l/freetype-2.6.3-x86_64-1.txt +-rw-r--r-- 1 root root 479948 2016-02-09 19:03 ./slackware64/l/freetype-2.6.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-09 19:03 ./slackware64/l/freetype-2.6.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 383 2016-03-07 19:47 ./slackware64/l/fribidi-0.19.7-x86_64-1.txt +-rw-r--r-- 1 root root 75484 2016-03-07 19:47 ./slackware64/l/fribidi-0.19.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:47 ./slackware64/l/fribidi-0.19.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 391 2016-03-07 19:25 ./slackware64/l/fuse-2.9.5-x86_64-1.txt +-rw-r--r-- 1 root root 135792 2016-03-07 19:25 ./slackware64/l/fuse-2.9.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:25 ./slackware64/l/fuse-2.9.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 297 2012-09-23 18:03 ./slackware64/l/gamin-0.1.10-x86_64-5.txt +-rw-r--r-- 1 root root 108204 2012-09-23 18:03 ./slackware64/l/gamin-0.1.10-x86_64-5.txz +-rw-r--r-- 1 root root 198 2012-09-23 18:03 ./slackware64/l/gamin-0.1.10-x86_64-5.txz.asc +-rw-r--r-- 1 root root 241 2015-09-22 16:35 ./slackware64/l/gc-7.4.2-x86_64-3.txt +-rw-r--r-- 1 root root 275080 2015-09-22 16:35 ./slackware64/l/gc-7.4.2-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-09-22 16:35 ./slackware64/l/gc-7.4.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 343 2015-11-21 18:19 ./slackware64/l/gcr-3.16.0-x86_64-2.txt +-rw-r--r-- 1 root root 780836 2015-11-21 18:19 ./slackware64/l/gcr-3.16.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:19 ./slackware64/l/gcr-3.16.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 469 2016-06-16 21:16 ./slackware64/l/gd-2.2.1-x86_64-1.txt +-rw-r--r-- 1 root root 147984 2016-06-16 21:16 ./slackware64/l/gd-2.2.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-16 21:16 ./slackware64/l/gd-2.2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 186 2016-05-17 18:14 ./slackware64/l/gdbm-1.12-x86_64-1.txt +-rw-r--r-- 1 root root 174848 2016-05-17 18:14 ./slackware64/l/gdbm-1.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-17 18:14 ./slackware64/l/gdbm-1.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 538 2015-12-15 05:04 ./slackware64/l/gdk-pixbuf2-2.32.3-x86_64-1.txt +-rw-r--r-- 1 root root 648104 2015-12-15 05:04 ./slackware64/l/gdk-pixbuf2-2.32.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:04 ./slackware64/l/gdk-pixbuf2-2.32.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 406 2015-03-23 00:27 ./slackware64/l/gegl-0.2.0-x86_64-3.txt +-rw-r--r-- 1 root root 478312 2015-03-23 00:27 ./slackware64/l/gegl-0.2.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-23 00:27 ./slackware64/l/gegl-0.2.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 320 2015-04-05 23:13 ./slackware64/l/giflib-5.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 238792 2015-04-05 23:13 ./slackware64/l/giflib-5.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-05 23:13 ./slackware64/l/giflib-5.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 446 2015-06-30 19:35 ./slackware64/l/glade3-3.8.5-x86_64-2.txt +-rw-r--r-- 1 root root 1784152 2015-06-30 19:35 ./slackware64/l/glade3-3.8.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-06-30 19:35 ./slackware64/l/glade3-3.8.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 302 2008-09-28 19:59 ./slackware64/l/glib-1.2.10-x86_64-3.txt +-rw-r--r-- 1 root root 146248 2008-09-28 19:59 ./slackware64/l/glib-1.2.10-x86_64-3.txz +-rw-r--r-- 1 root root 197 2008-09-28 19:59 ./slackware64/l/glib-1.2.10-x86_64-3.txz.asc +-rw-r--r-- 1 root root 300 2015-10-27 22:18 ./slackware64/l/glib-networking-2.46.1-x86_64-1.txt +-rw-r--r-- 1 root root 104092 2015-10-27 22:18 ./slackware64/l/glib-networking-2.46.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-27 22:18 ./slackware64/l/glib-networking-2.46.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 235 2015-12-01 18:38 ./slackware64/l/glib2-2.46.2-x86_64-2.txt +-rw-r--r-- 1 root root 3658736 2015-12-01 18:38 ./slackware64/l/glib2-2.46.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-12-01 18:38 ./slackware64/l/glib2-2.46.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 389 2016-02-20 17:52 ./slackware64/l/glibc-2.23-x86_64-1.txt +-rw-r--r-- 1 root root 5938324 2016-02-20 17:52 ./slackware64/l/glibc-2.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-20 17:52 ./slackware64/l/glibc-2.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 353 2016-02-20 17:52 ./slackware64/l/glibc-i18n-2.23-x86_64-1.txt +-rw-r--r-- 1 root root 7372836 2016-02-20 17:52 ./slackware64/l/glibc-i18n-2.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-20 17:52 ./slackware64/l/glibc-i18n-2.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 508 2016-02-20 17:51 ./slackware64/l/glibc-profile-2.23-x86_64-1.txt +-rw-r--r-- 1 root root 1409148 2016-02-20 17:51 ./slackware64/l/glibc-profile-2.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-20 17:51 ./slackware64/l/glibc-profile-2.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 359 2016-04-15 20:00 ./slackware64/l/glibmm-2.46.4-x86_64-1.txt +-rw-r--r-- 1 root root 998456 2016-04-15 20:00 ./slackware64/l/glibmm-2.46.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-15 20:00 ./slackware64/l/glibmm-2.46.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 297 2015-03-19 01:38 ./slackware64/l/gmime-2.6.20-x86_64-1.txt +-rw-r--r-- 1 root root 304020 2015-03-19 01:38 ./slackware64/l/gmime-2.6.20-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-19 01:38 ./slackware64/l/gmime-2.6.20-x86_64-1.txz.asc +-rw-r--r-- 1 root root 579 2013-03-26 03:46 ./slackware64/l/gmm-4.2-noarch-1.txt +-rw-r--r-- 1 root root 109496 2013-03-26 03:46 ./slackware64/l/gmm-4.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2013-03-26 03:46 ./slackware64/l/gmm-4.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 312 2016-06-21 18:42 ./slackware64/l/gmp-6.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 417912 2016-06-21 18:42 ./slackware64/l/gmp-6.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-21 18:42 ./slackware64/l/gmp-6.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 455 2015-11-10 21:12 ./slackware64/l/gnome-keyring-3.16.0-x86_64-2.txt +-rw-r--r-- 1 root root 668072 2015-11-10 21:12 ./slackware64/l/gnome-keyring-3.16.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-10 21:12 ./slackware64/l/gnome-keyring-3.16.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 359 2015-10-28 01:54 ./slackware64/l/gnome-themes-standard-3.18.0-x86_64-1.txt +-rw-r--r-- 1 root root 2384820 2015-10-28 01:54 ./slackware64/l/gnome-themes-standard-3.18.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-28 01:54 ./slackware64/l/gnome-themes-standard-3.18.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 280 2016-04-01 18:35 ./slackware64/l/gnu-efi-3.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 109308 2016-04-01 18:35 ./slackware64/l/gnu-efi-3.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-01 18:35 ./slackware64/l/gnu-efi-3.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 635 2015-10-27 22:21 ./slackware64/l/gobject-introspection-1.46.0-x86_64-1.txt +-rw-r--r-- 1 root root 1101032 2015-10-27 22:21 ./slackware64/l/gobject-introspection-1.46.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-27 22:21 ./slackware64/l/gobject-introspection-1.46.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 440 2015-04-02 19:26 ./slackware64/l/grantlee-0.5.1-x86_64-1.txt +-rw-r--r-- 1 root root 284092 2015-04-02 19:26 ./slackware64/l/grantlee-0.5.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 19:26 ./slackware64/l/grantlee-0.5.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 470 2015-10-27 22:21 ./slackware64/l/gsettings-desktop-schemas-3.18.1-x86_64-1.txt +-rw-r--r-- 1 root root 449296 2015-10-27 22:21 ./slackware64/l/gsettings-desktop-schemas-3.18.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-27 22:21 ./slackware64/l/gsettings-desktop-schemas-3.18.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 414 2015-11-12 19:15 ./slackware64/l/gsl-2.1-x86_64-1.txt +-rw-r--r-- 1 root root 1284736 2015-11-12 19:15 ./slackware64/l/gsl-2.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-12 19:15 ./slackware64/l/gsl-2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 609 2016-04-15 19:52 ./slackware64/l/gst-plugins-base-1.6.4-x86_64-1.txt +-rw-r--r-- 1 root root 1748516 2016-04-15 19:52 ./slackware64/l/gst-plugins-base-1.6.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-15 19:52 ./slackware64/l/gst-plugins-base-1.6.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 624 2015-07-06 17:55 ./slackware64/l/gst-plugins-base0-0.10.36-x86_64-2.txt +-rw-r--r-- 1 root root 1362652 2015-07-06 17:55 ./slackware64/l/gst-plugins-base0-0.10.36-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-07-06 17:55 ./slackware64/l/gst-plugins-base0-0.10.36-x86_64-2.txz.asc +-rw-r--r-- 1 root root 444 2016-04-15 19:56 ./slackware64/l/gst-plugins-good-1.6.4-x86_64-1.txt +-rw-r--r-- 1 root root 1675084 2016-04-15 19:56 ./slackware64/l/gst-plugins-good-1.6.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-15 19:56 ./slackware64/l/gst-plugins-good-1.6.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 459 2016-01-11 01:39 ./slackware64/l/gst-plugins-good0-0.10.31-x86_64-2.txt +-rw-r--r-- 1 root root 1037972 2016-01-11 01:39 ./slackware64/l/gst-plugins-good0-0.10.31-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-01-11 01:39 ./slackware64/l/gst-plugins-good0-0.10.31-x86_64-2.txz.asc +-rw-r--r-- 1 root root 602 2016-04-15 19:50 ./slackware64/l/gstreamer-1.6.4-x86_64-1.txt +-rw-r--r-- 1 root root 1777076 2016-04-15 19:50 ./slackware64/l/gstreamer-1.6.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-15 19:50 ./slackware64/l/gstreamer-1.6.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 617 2015-03-22 22:40 ./slackware64/l/gstreamer0-0.10.36-x86_64-1.txt +-rw-r--r-- 1 root root 1365336 2015-03-22 22:40 ./slackware64/l/gstreamer0-0.10.36-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-22 22:40 ./slackware64/l/gstreamer0-0.10.36-x86_64-1.txz.asc +-rw-r--r-- 1 root root 351 2009-06-09 02:23 ./slackware64/l/gtk+-1.2.10-x86_64-5.txt +-rw-r--r-- 1 root root 1046588 2009-06-09 02:23 ./slackware64/l/gtk+-1.2.10-x86_64-5.txz +-rw-r--r-- 1 root root 197 2009-06-09 02:23 ./slackware64/l/gtk+-1.2.10-x86_64-5.txz.asc +-rw-r--r-- 1 root root 335 2016-03-07 19:06 ./slackware64/l/gtk+2-2.24.30-x86_64-1.txt +-rw-r--r-- 1 root root 7088248 2016-03-07 19:06 ./slackware64/l/gtk+2-2.24.30-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:06 ./slackware64/l/gtk+2-2.24.30-x86_64-1.txz.asc +-rw-r--r-- 1 root root 335 2016-03-10 20:32 ./slackware64/l/gtk+3-3.18.9-x86_64-1.txt +-rw-r--r-- 1 root root 9884620 2016-03-10 20:32 ./slackware64/l/gtk+3-3.18.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-10 20:32 ./slackware64/l/gtk+3-3.18.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 343 2016-01-13 20:41 ./slackware64/l/gtkmm2-2.24.4-x86_64-1.txt +-rw-r--r-- 1 root root 1242080 2016-01-13 20:41 ./slackware64/l/gtkmm2-2.24.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-13 20:41 ./slackware64/l/gtkmm2-2.24.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 343 2016-04-15 20:19 ./slackware64/l/gtkmm3-3.18.1-x86_64-1.txt +-rw-r--r-- 1 root root 1556308 2016-04-15 20:19 ./slackware64/l/gtkmm3-3.18.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-15 20:19 ./slackware64/l/gtkmm3-3.18.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 330 2015-11-21 18:27 ./slackware64/l/gtkspell-2.0.16-x86_64-3.txt +-rw-r--r-- 1 root root 36576 2015-11-21 18:27 ./slackware64/l/gtkspell-2.0.16-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:27 ./slackware64/l/gtkspell-2.0.16-x86_64-3.txz.asc +-rw-r--r-- 1 root root 429 2016-03-07 19:18 ./slackware64/l/gvfs-1.26.3-x86_64-1.txt +-rw-r--r-- 1 root root 1108720 2016-03-07 19:18 ./slackware64/l/gvfs-1.26.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:18 ./slackware64/l/gvfs-1.26.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 248 2016-06-02 18:01 ./slackware64/l/harfbuzz-1.2.7-x86_64-1.txt +-rw-r--r-- 1 root root 300620 2016-06-02 18:01 ./slackware64/l/harfbuzz-1.2.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-02 18:01 ./slackware64/l/harfbuzz-1.2.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 379 2012-04-08 20:58 ./slackware64/l/herqq-1.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 408260 2012-04-08 20:58 ./slackware64/l/herqq-1.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-04-08 20:58 ./slackware64/l/herqq-1.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 509 2016-06-13 01:48 ./slackware64/l/hicolor-icon-theme-0.15-noarch-1.txt +-rw-r--r-- 1 root root 12644 2016-06-13 01:48 ./slackware64/l/hicolor-icon-theme-0.15-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-06-13 01:48 ./slackware64/l/hicolor-icon-theme-0.15-noarch-1.txz.asc +-rw-r--r-- 1 root root 514 2015-03-19 22:11 ./slackware64/l/hunspell-1.3.3-x86_64-1.txt +-rw-r--r-- 1 root root 243732 2015-03-19 22:11 ./slackware64/l/hunspell-1.3.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-19 22:11 ./slackware64/l/hunspell-1.3.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 464 2009-08-22 19:44 ./slackware64/l/icon-naming-utils-0.8.90-x86_64-2.txt +-rw-r--r-- 1 root root 14068 2009-08-22 19:44 ./slackware64/l/icon-naming-utils-0.8.90-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-08-22 19:44 ./slackware64/l/icon-naming-utils-0.8.90-x86_64-2.txz.asc +-rw-r--r-- 1 root root 299 2016-05-02 18:50 ./slackware64/l/icu4c-56.1-x86_64-2.txt +-rw-r--r-- 1 root root 8283932 2016-05-02 18:50 ./slackware64/l/icu4c-56.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-05-02 18:50 ./slackware64/l/icu4c-56.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 371 2015-03-07 03:05 ./slackware64/l/ilmbase-2.2.0-x86_64-1.txt +-rw-r--r-- 1 root root 130928 2015-03-07 03:05 ./slackware64/l/ilmbase-2.2.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-07 03:05 ./slackware64/l/ilmbase-2.2.0-x86_64-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/l/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/l/install.end +-rw-r--r-- 1 root root 392 2016-04-04 17:33 ./slackware64/l/iso-codes-3.67-noarch-1.txt +-rw-r--r-- 1 root root 2237728 2016-04-04 17:33 ./slackware64/l/iso-codes-3.67-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-04-04 17:33 ./slackware64/l/iso-codes-3.67-noarch-1.txz.asc +-rw-r--r-- 1 root root 390 2015-10-15 22:00 ./slackware64/l/jasper-1.900.1-x86_64-5.txt +-rw-r--r-- 1 root root 160800 2015-10-15 22:00 ./slackware64/l/jasper-1.900.1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2015-10-15 22:00 ./slackware64/l/jasper-1.900.1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 261 2015-04-02 23:45 ./slackware64/l/jemalloc-3.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 194856 2015-04-02 23:45 ./slackware64/l/jemalloc-3.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:45 ./slackware64/l/jemalloc-3.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 349 2012-07-20 00:57 ./slackware64/l/js185-1.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 1353376 2012-07-20 00:57 ./slackware64/l/js185-1.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-07-20 00:57 ./slackware64/l/js185-1.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 266 2016-01-10 23:34 ./slackware64/l/json-c-0.12-x86_64-1.txt +-rw-r--r-- 1 root root 111244 2016-01-10 23:34 ./slackware64/l/json-c-0.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:34 ./slackware64/l/json-c-0.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 452 2015-04-02 23:42 ./slackware64/l/judy-1.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 132912 2015-04-02 23:42 ./slackware64/l/judy-1.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 23:42 ./slackware64/l/judy-1.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 341 2016-01-10 23:44 ./slackware64/l/keybinder-0.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 34096 2016-01-10 23:44 ./slackware64/l/keybinder-0.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:44 ./slackware64/l/keybinder-0.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 413 2015-12-18 04:42 ./slackware64/l/keyutils-1.5.9-x86_64-1.txt +-rw-r--r-- 1 root root 79076 2015-12-18 04:42 ./slackware64/l/keyutils-1.5.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 04:42 ./slackware64/l/keyutils-1.5.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 210 2015-03-24 21:40 ./slackware64/l/lcms-1.19-x86_64-3.txt +-rw-r--r-- 1 root root 178088 2015-03-24 21:40 ./slackware64/l/lcms-1.19-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-24 21:40 ./slackware64/l/lcms-1.19-x86_64-3.txz.asc +-rw-r--r-- 1 root root 233 2016-05-31 18:18 ./slackware64/l/lcms2-2.7-x86_64-2.txt +-rw-r--r-- 1 root root 186264 2016-05-31 18:18 ./slackware64/l/lcms2-2.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-05-31 18:18 ./slackware64/l/lcms2-2.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 505 2010-05-11 01:13 ./slackware64/l/libaio-0.3.109-x86_64-1.txt +-rw-r--r-- 1 root root 13524 2010-05-11 01:13 ./slackware64/l/libaio-0.3.109-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-05-11 01:13 ./slackware64/l/libaio-0.3.109-x86_64-1.txz.asc +-rw-r--r-- 1 root root 428 2016-01-15 21:53 ./slackware64/l/libao-1.2.0-x86_64-3.txt +-rw-r--r-- 1 root root 58356 2016-01-15 21:53 ./slackware64/l/libao-1.2.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-01-15 21:53 ./slackware64/l/libao-1.2.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 404 2016-06-20 18:11 ./slackware64/l/libarchive-3.2.1-x86_64-1.txt +-rw-r--r-- 1 root root 458952 2016-06-20 18:11 ./slackware64/l/libarchive-3.2.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-20 18:11 ./slackware64/l/libarchive-3.2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 361 2010-08-06 00:25 ./slackware64/l/libart_lgpl-2.3.21-x86_64-1.txt +-rw-r--r-- 1 root root 76832 2010-08-06 00:25 ./slackware64/l/libart_lgpl-2.3.21-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-06 00:25 ./slackware64/l/libart_lgpl-2.3.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 370 2016-01-10 23:34 ./slackware64/l/libasyncns-0.8-x86_64-1.txt +-rw-r--r-- 1 root root 22912 2016-01-10 23:34 ./slackware64/l/libasyncns-0.8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:34 ./slackware64/l/libasyncns-0.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 555 2015-11-19 05:43 ./slackware64/l/libatasmart-0.19-x86_64-2.txt +-rw-r--r-- 1 root root 34916 2015-11-19 05:43 ./slackware64/l/libatasmart-0.19-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:43 ./slackware64/l/libatasmart-0.19-x86_64-2.txz.asc +-rw-r--r-- 1 root root 287 2015-04-02 15:32 ./slackware64/l/libbluedevil-2.1-x86_64-1.txt +-rw-r--r-- 1 root root 56660 2015-04-02 15:32 ./slackware64/l/libbluedevil-2.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 15:32 ./slackware64/l/libbluedevil-2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 359 2012-06-19 18:43 ./slackware64/l/libcaca-0.99.beta18-x86_64-2.txt +-rw-r--r-- 1 root root 538064 2012-06-19 18:43 ./slackware64/l/libcaca-0.99.beta18-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-06-19 18:43 ./slackware64/l/libcaca-0.99.beta18-x86_64-2.txz.asc +-rw-r--r-- 1 root root 479 2016-01-15 21:50 ./slackware64/l/libcanberra-0.30-x86_64-5.txt +-rw-r--r-- 1 root root 96868 2016-01-15 21:50 ./slackware64/l/libcanberra-0.30-x86_64-5.txz +-rw-r--r-- 1 root root 181 2016-01-15 21:50 ./slackware64/l/libcanberra-0.30-x86_64-5.txz.asc +-rw-r--r-- 1 root root 380 2012-06-24 23:19 ./slackware64/l/libcap-2.22-x86_64-1.txt +-rw-r--r-- 1 root root 58728 2012-06-24 23:19 ./slackware64/l/libcap-2.22-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-06-24 23:19 ./slackware64/l/libcap-2.22-x86_64-1.txz.asc +-rw-r--r-- 1 root root 474 2016-02-11 20:26 ./slackware64/l/libcap-ng-0.7.7-x86_64-1.txt +-rw-r--r-- 1 root root 60344 2016-02-11 20:26 ./slackware64/l/libcap-ng-0.7.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-11 20:26 ./slackware64/l/libcap-ng-0.7.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 328 2015-03-31 23:55 ./slackware64/l/libcddb-1.3.2-x86_64-3.txt +-rw-r--r-- 1 root root 69916 2015-03-31 23:55 ./slackware64/l/libcddb-1.3.2-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-31 23:55 ./slackware64/l/libcddb-1.3.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 554 2015-03-31 23:37 ./slackware64/l/libcdio-0.93-x86_64-1.txt +-rw-r--r-- 1 root root 280988 2015-03-31 23:37 ./slackware64/l/libcdio-0.93-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-31 23:37 ./slackware64/l/libcdio-0.93-x86_64-1.txz.asc +-rw-r--r-- 1 root root 461 2015-03-31 23:39 ./slackware64/l/libcdio-paranoia-10.2+0.93+1-x86_64-1.txt +-rw-r--r-- 1 root root 81684 2015-03-31 23:39 ./slackware64/l/libcdio-paranoia-10.2+0.93+1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-31 23:39 ./slackware64/l/libcdio-paranoia-10.2+0.93+1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 402 2015-12-23 03:51 ./slackware64/l/libcroco-0.6.11-x86_64-1.txt +-rw-r--r-- 1 root root 215920 2015-12-23 03:51 ./slackware64/l/libcroco-0.6.11-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 03:51 ./slackware64/l/libcroco-0.6.11-x86_64-1.txz.asc +-rw-r--r-- 1 root root 459 2012-07-30 17:17 ./slackware64/l/libdbusmenu-qt-0.9.2-x86_64-2.txt +-rw-r--r-- 1 root root 139824 2012-07-30 17:17 ./slackware64/l/libdbusmenu-qt-0.9.2-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-07-30 17:17 ./slackware64/l/libdbusmenu-qt-0.9.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 480 2015-04-02 17:00 ./slackware64/l/libdiscid-0.6.1-x86_64-1.txt +-rw-r--r-- 1 root root 25668 2015-04-02 17:00 ./slackware64/l/libdiscid-0.6.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 17:00 ./slackware64/l/libdiscid-0.6.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 402 2015-04-03 17:09 ./slackware64/l/libdvdnav-5.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 52208 2015-04-03 17:09 ./slackware64/l/libdvdnav-5.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-03 17:09 ./slackware64/l/libdvdnav-5.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 398 2015-04-13 19:08 ./slackware64/l/libdvdread-5.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 86960 2015-04-13 19:08 ./slackware64/l/libdvdread-5.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-13 19:08 ./slackware64/l/libdvdread-5.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 546 2016-03-21 20:04 ./slackware64/l/libevent-2.0.22-x86_64-1.txt +-rw-r--r-- 1 root root 236624 2016-03-21 20:04 ./slackware64/l/libevent-2.0.22-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-21 20:04 ./slackware64/l/libevent-2.0.22-x86_64-1.txz.asc +-rw-r--r-- 1 root root 397 2012-07-18 03:10 ./slackware64/l/libexif-0.6.21-x86_64-1.txt +-rw-r--r-- 1 root root 322468 2012-07-18 03:10 ./slackware64/l/libexif-0.6.21-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-07-18 03:10 ./slackware64/l/libexif-0.6.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 306 2015-04-01 03:44 ./slackware64/l/libfakekey-0.1-x86_64-1.txt +-rw-r--r-- 1 root root 11884 2015-04-01 03:44 ./slackware64/l/libfakekey-0.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-01 03:44 ./slackware64/l/libfakekey-0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 507 2015-03-19 01:16 ./slackware64/l/libffi-3.2.1-x86_64-1.txt +-rw-r--r-- 1 root root 44464 2015-03-19 01:16 ./slackware64/l/libffi-3.2.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-19 01:16 ./slackware64/l/libffi-3.2.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 349 2015-03-24 19:37 ./slackware64/l/libglade-2.6.4-x86_64-5.txt +-rw-r--r-- 1 root root 92248 2015-03-24 19:37 ./slackware64/l/libglade-2.6.4-x86_64-5.txz +-rw-r--r-- 1 root root 181 2015-03-24 19:37 ./slackware64/l/libglade-2.6.4-x86_64-5.txz.asc +-rw-r--r-- 1 root root 412 2015-03-21 19:27 ./slackware64/l/libgnome-keyring-3.12.0-x86_64-1.txt +-rw-r--r-- 1 root root 140324 2015-03-21 19:27 ./slackware64/l/libgnome-keyring-3.12.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-21 19:27 ./slackware64/l/libgnome-keyring-3.12.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 293 2016-04-30 18:15 ./slackware64/l/libgphoto2-2.5.10-x86_64-1.txt +-rw-r--r-- 1 root root 1517744 2016-04-30 18:15 ./slackware64/l/libgphoto2-2.5.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-30 18:15 ./slackware64/l/libgphoto2-2.5.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 518 2015-11-19 05:27 ./slackware64/l/libgpod-0.8.3-x86_64-2.txt +-rw-r--r-- 1 root root 304380 2015-11-19 05:27 ./slackware64/l/libgpod-0.8.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:27 ./slackware64/l/libgpod-0.8.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 336 2016-03-07 19:20 ./slackware64/l/libgsf-1.14.36-x86_64-1.txt +-rw-r--r-- 1 root root 309152 2016-03-07 19:20 ./slackware64/l/libgsf-1.14.36-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:20 ./slackware64/l/libgsf-1.14.36-x86_64-1.txz.asc +-rw-r--r-- 1 root root 462 2016-02-25 18:36 ./slackware64/l/libical-2.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 226196 2016-02-25 18:36 ./slackware64/l/libical-2.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-25 18:36 ./slackware64/l/libical-2.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 318 2011-02-08 21:00 ./slackware64/l/libid3tag-0.15.1b-x86_64-4.txt +-rw-r--r-- 1 root root 36076 2011-02-08 21:00 ./slackware64/l/libid3tag-0.15.1b-x86_64-4.txz +-rw-r--r-- 1 root root 198 2011-02-08 21:00 ./slackware64/l/libid3tag-0.15.1b-x86_64-4.txz.asc +-rw-r--r-- 1 root root 338 2010-08-07 02:50 ./slackware64/l/libidl-0.8.14-x86_64-1.txt +-rw-r--r-- 1 root root 88332 2010-08-07 02:50 ./slackware64/l/libidl-0.8.14-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-07 02:50 ./slackware64/l/libidl-0.8.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 336 2015-04-30 03:18 ./slackware64/l/libidn-1.30-x86_64-1.txt +-rw-r--r-- 1 root root 304320 2015-04-30 03:18 ./slackware64/l/libidn-1.30-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-30 03:18 ./slackware64/l/libidn-1.30-x86_64-1.txz.asc +-rw-r--r-- 1 root root 380 2012-06-19 05:28 ./slackware64/l/libieee1284-0.2.11-x86_64-3.txt +-rw-r--r-- 1 root root 76096 2012-06-19 05:28 ./slackware64/l/libieee1284-0.2.11-x86_64-3.txz +-rw-r--r-- 1 root root 198 2012-06-19 05:28 ./slackware64/l/libieee1284-0.2.11-x86_64-3.txz.asc +-rw-r--r-- 1 root root 400 2015-04-17 23:46 ./slackware64/l/libimobiledevice-1.2.0-x86_64-1.txt +-rw-r--r-- 1 root root 159744 2015-04-17 23:46 ./slackware64/l/libimobiledevice-1.2.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 23:46 ./slackware64/l/libimobiledevice-1.2.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 469 2015-11-21 18:11 ./slackware64/l/libiodbc-3.52.10-x86_64-2.txt +-rw-r--r-- 1 root root 266472 2015-11-21 18:11 ./slackware64/l/libiodbc-3.52.10-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:11 ./slackware64/l/libiodbc-3.52.10-x86_64-2.txz.asc +-rw-r--r-- 1 root root 551 2016-06-15 18:18 ./slackware64/l/libjpeg-turbo-1.5.0-x86_64-1.txt +-rw-r--r-- 1 root root 318740 2016-06-15 18:18 ./slackware64/l/libjpeg-turbo-1.5.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 18:18 ./slackware64/l/libjpeg-turbo-1.5.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 357 2010-12-15 01:07 ./slackware64/l/libkarma-0.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 57356 2010-12-15 01:07 ./slackware64/l/libkarma-0.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 198 2010-12-15 01:07 ./slackware64/l/libkarma-0.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 195 2015-03-07 03:09 ./slackware64/l/liblastfm-1.0.9-x86_64-1.txt +-rw-r--r-- 1 root root 182360 2015-03-07 03:09 ./slackware64/l/liblastfm-1.0.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-07 03:09 ./slackware64/l/liblastfm-1.0.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 600 2008-10-09 14:07 ./slackware64/l/libmad-0.15.1b-x86_64-3.txt +-rw-r--r-- 1 root root 70860 2008-10-09 14:07 ./slackware64/l/libmad-0.15.1b-x86_64-3.txz +-rw-r--r-- 1 root root 197 2008-10-09 14:07 ./slackware64/l/libmad-0.15.1b-x86_64-3.txz.asc +-rw-r--r-- 1 root root 552 2009-04-05 13:37 ./slackware64/l/libmcrypt-2.5.8-x86_64-1.txt +-rw-r--r-- 1 root root 81464 2009-04-05 13:37 ./slackware64/l/libmcrypt-2.5.8-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-04-05 13:37 ./slackware64/l/libmcrypt-2.5.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 509 2010-08-09 18:06 ./slackware64/l/libmcs-0.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 16208 2010-08-09 18:06 ./slackware64/l/libmcs-0.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-09 18:06 ./slackware64/l/libmcs-0.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 484 2015-08-18 19:10 ./slackware64/l/libmng-2.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 214496 2015-08-18 19:10 ./slackware64/l/libmng-2.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-18 19:10 ./slackware64/l/libmng-2.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 399 2010-08-09 17:50 ./slackware64/l/libmowgli-0.7.1-x86_64-1.txt +-rw-r--r-- 1 root root 32144 2010-08-09 17:50 ./slackware64/l/libmowgli-0.7.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-09 17:50 ./slackware64/l/libmowgli-0.7.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 376 2015-04-25 00:03 ./slackware64/l/libmpc-1.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 85320 2015-04-25 00:03 ./slackware64/l/libmpc-1.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-25 00:03 ./slackware64/l/libmpc-1.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 315 2012-07-04 00:39 ./slackware64/l/libmsn-4.2.1-x86_64-2.txt +-rw-r--r-- 1 root root 258708 2012-07-04 00:39 ./slackware64/l/libmsn-4.2.1-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-07-04 00:39 ./slackware64/l/libmsn-4.2.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 602 2016-05-17 17:53 ./slackware64/l/libmtp-1.1.11-x86_64-1.txt +-rw-r--r-- 1 root root 206616 2016-05-17 17:53 ./slackware64/l/libmtp-1.1.11-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-17 17:53 ./slackware64/l/libmtp-1.1.11-x86_64-1.txz.asc +-rw-r--r-- 1 root root 374 2015-12-15 00:40 ./slackware64/l/libnih-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 165556 2015-12-15 00:40 ./slackware64/l/libnih-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-12-15 00:40 ./slackware64/l/libnih-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 540 2010-08-09 18:34 ./slackware64/l/libnjb-2.2.6-x86_64-5.txt +-rw-r--r-- 1 root root 223428 2010-08-09 18:34 ./slackware64/l/libnjb-2.2.6-x86_64-5.txz +-rw-r--r-- 1 root root 198 2010-08-09 18:34 ./slackware64/l/libnjb-2.2.6-x86_64-5.txz.asc +-rw-r--r-- 1 root root 330 2013-07-30 21:15 ./slackware64/l/libnl-1.1.4-x86_64-1.txt +-rw-r--r-- 1 root root 541564 2013-07-30 21:15 ./slackware64/l/libnl-1.1.4-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-07-30 21:15 ./slackware64/l/libnl-1.1.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 520 2016-03-07 19:45 ./slackware64/l/libnl3-3.2.27-x86_64-1.txt +-rw-r--r-- 1 root root 323300 2016-03-07 19:45 ./slackware64/l/libnl3-3.2.27-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:45 ./slackware64/l/libnl3-3.2.27-x86_64-1.txz.asc +-rw-r--r-- 1 root root 244 2015-03-23 01:30 ./slackware64/l/libnotify-0.7.6-x86_64-1.txt +-rw-r--r-- 1 root root 46672 2015-03-23 01:30 ./slackware64/l/libnotify-0.7.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-23 01:30 ./slackware64/l/libnotify-0.7.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 315 2016-03-19 20:41 ./slackware64/l/libodfgen-0.1.6-x86_64-1.txt +-rw-r--r-- 1 root root 285900 2016-03-19 20:41 ./slackware64/l/libodfgen-0.1.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:41 ./slackware64/l/libodfgen-0.1.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 305 2015-04-02 17:02 ./slackware64/l/libogg-1.3.2-x86_64-1.txt +-rw-r--r-- 1 root root 187536 2015-04-02 17:02 ./slackware64/l/libogg-1.3.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 17:02 ./slackware64/l/libogg-1.3.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 580 2011-03-09 20:23 ./slackware64/l/liboggz-1.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 181980 2011-03-09 20:23 ./slackware64/l/liboggz-1.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2011-03-09 20:23 ./slackware64/l/liboggz-1.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 576 2010-08-09 18:38 ./slackware64/l/liboil-0.3.17-x86_64-1.txt +-rw-r--r-- 1 root root 162476 2010-08-09 18:38 ./slackware64/l/liboil-0.3.17-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-09 18:38 ./slackware64/l/liboil-0.3.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 432 2015-08-07 18:58 ./slackware64/l/libpcap-1.7.4-x86_64-1.txt +-rw-r--r-- 1 root root 280168 2015-08-07 18:58 ./slackware64/l/libpcap-1.7.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-07 18:58 ./slackware64/l/libpcap-1.7.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 337 2015-04-17 19:25 ./slackware64/l/libplist-1.12-x86_64-1.txt +-rw-r--r-- 1 root root 53340 2015-04-17 19:25 ./slackware64/l/libplist-1.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 19:25 ./slackware64/l/libplist-1.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 492 2016-06-24 21:34 ./slackware64/l/libpng-1.6.23-x86_64-1.txt +-rw-r--r-- 1 root root 309952 2016-06-24 21:34 ./slackware64/l/libpng-1.6.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 21:34 ./slackware64/l/libpng-1.6.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 500 2016-02-22 20:03 ./slackware64/l/libproxy-0.4.12-x86_64-1.txt +-rw-r--r-- 1 root root 97296 2016-02-22 20:03 ./slackware64/l/libproxy-0.4.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-22 20:03 ./slackware64/l/libproxy-0.4.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 351 2015-12-15 05:26 ./slackware64/l/libraw1394-2.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 69940 2015-12-15 05:26 ./slackware64/l/libraw1394-2.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:26 ./slackware64/l/libraw1394-2.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 405 2016-03-19 20:37 ./slackware64/l/librevenge-0.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 293484 2016-03-19 20:37 ./slackware64/l/librevenge-0.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:37 ./slackware64/l/librevenge-0.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 174 2016-06-24 21:38 ./slackware64/l/librsvg-2.40.16-x86_64-1.txt +-rw-r--r-- 1 root root 147952 2016-06-24 21:38 ./slackware64/l/librsvg-2.40.16-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 21:38 ./slackware64/l/librsvg-2.40.16-x86_64-1.txz.asc +-rw-r--r-- 1 root root 653 2013-02-11 09:29 ./slackware64/l/libsamplerate-0.1.8-x86_64-1.txt +-rw-r--r-- 1 root root 994212 2013-02-11 09:29 ./slackware64/l/libsamplerate-0.1.8-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-02-11 09:29 ./slackware64/l/libsamplerate-0.1.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 250 2016-03-26 18:11 ./slackware64/l/libsecret-0.18.5-x86_64-1.txt +-rw-r--r-- 1 root root 198924 2016-03-26 18:11 ./slackware64/l/libsecret-0.18.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-26 18:11 ./slackware64/l/libsecret-0.18.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 624 2016-01-10 23:40 ./slackware64/l/libsigc++-2.6.2-x86_64-1.txt +-rw-r--r-- 1 root root 125492 2016-01-10 23:40 ./slackware64/l/libsigc++-2.6.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:40 ./slackware64/l/libsigc++-2.6.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 607 2015-04-01 20:31 ./slackware64/l/libsigsegv-2.10-x86_64-1.txt +-rw-r--r-- 1 root root 33500 2015-04-01 20:31 ./slackware64/l/libsigsegv-2.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-01 20:31 ./slackware64/l/libsigsegv-2.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 370 2016-02-07 17:31 ./slackware64/l/libsndfile-1.0.26-x86_64-1.txt +-rw-r--r-- 1 root root 281336 2016-02-07 17:31 ./slackware64/l/libsndfile-1.0.26-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-07 17:31 ./slackware64/l/libsndfile-1.0.26-x86_64-1.txz.asc +-rw-r--r-- 1 root root 350 2015-11-18 01:56 ./slackware64/l/libsoup-2.52.2-x86_64-2.txt +-rw-r--r-- 1 root root 550732 2015-11-18 01:56 ./slackware64/l/libsoup-2.52.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-18 01:56 ./slackware64/l/libsoup-2.52.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 413 2013-03-22 06:34 ./slackware64/l/libspectre-0.2.7-x86_64-1.txt +-rw-r--r-- 1 root root 38464 2013-03-22 06:34 ./slackware64/l/libspectre-0.2.7-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-03-22 06:34 ./slackware64/l/libspectre-0.2.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 406 2016-02-26 18:09 ./slackware64/l/libssh-0.7.3-x86_64-1.txt +-rw-r--r-- 1 root root 192884 2016-02-26 18:09 ./slackware64/l/libssh-0.7.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-26 18:09 ./slackware64/l/libssh-0.7.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 251 2016-02-26 18:13 ./slackware64/l/libssh2-1.7.0-x86_64-1.txt +-rw-r--r-- 1 root root 222388 2016-02-26 18:13 ./slackware64/l/libssh2-1.7.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-26 18:13 ./slackware64/l/libssh2-1.7.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 426 2016-04-11 17:05 ./slackware64/l/libtasn1-4.8-x86_64-1.txt +-rw-r--r-- 1 root root 127112 2016-04-11 17:05 ./slackware64/l/libtasn1-4.8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-11 17:05 ./slackware64/l/libtasn1-4.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 477 2008-09-28 22:17 ./slackware64/l/libtermcap-1.2.3-x86_64-7.txt +-rw-r--r-- 1 root root 59224 2008-09-28 22:17 ./slackware64/l/libtermcap-1.2.3-x86_64-7.txz +-rw-r--r-- 1 root root 197 2008-09-28 22:17 ./slackware64/l/libtermcap-1.2.3-x86_64-7.txz.asc +-rw-r--r-- 1 root root 625 2010-02-17 23:33 ./slackware64/l/libtheora-1.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 183020 2010-02-17 23:33 ./slackware64/l/libtheora-1.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 197 2010-02-17 23:33 ./slackware64/l/libtheora-1.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 394 2016-05-26 22:41 ./slackware64/l/libtiff-4.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 468872 2016-05-26 22:41 ./slackware64/l/libtiff-4.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-26 22:41 ./slackware64/l/libtiff-4.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 372 2013-10-09 22:04 ./slackware64/l/libunistring-0.9.3-x86_64-1.txt +-rw-r--r-- 1 root root 407300 2013-10-09 22:04 ./slackware64/l/libunistring-0.9.3-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-09 22:04 ./slackware64/l/libunistring-0.9.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 278 2015-11-19 05:54 ./slackware64/l/libusb-1.0.20-x86_64-1.txt +-rw-r--r-- 1 root root 69612 2015-11-19 05:54 ./slackware64/l/libusb-1.0.20-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:54 ./slackware64/l/libusb-1.0.20-x86_64-1.txz.asc +-rw-r--r-- 1 root root 446 2015-11-19 05:55 ./slackware64/l/libusb-compat-0.1.5-x86_64-2.txt +-rw-r--r-- 1 root root 29440 2015-11-19 05:55 ./slackware64/l/libusb-compat-0.1.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:55 ./slackware64/l/libusb-compat-0.1.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 322 2015-04-17 20:55 ./slackware64/l/libusbmuxd-1.0.10-x86_64-1.txt +-rw-r--r-- 1 root root 28168 2015-04-17 20:55 ./slackware64/l/libusbmuxd-1.0.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 20:55 ./slackware64/l/libusbmuxd-1.0.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 316 2016-03-19 20:39 ./slackware64/l/libvisio-0.1.5-x86_64-1.txt +-rw-r--r-- 1 root root 586076 2016-03-19 20:39 ./slackware64/l/libvisio-0.1.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:39 ./slackware64/l/libvisio-0.1.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 544 2012-07-18 04:06 ./slackware64/l/libvisual-0.4.0-x86_64-3.txt +-rw-r--r-- 1 root root 130960 2012-07-18 04:06 ./slackware64/l/libvisual-0.4.0-x86_64-3.txz +-rw-r--r-- 1 root root 198 2012-07-18 04:06 ./slackware64/l/libvisual-0.4.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 722 2009-06-10 01:25 ./slackware64/l/libvisual-plugins-0.4.0-x86_64-2.txt +-rw-r--r-- 1 root root 220752 2009-06-10 01:25 ./slackware64/l/libvisual-plugins-0.4.0-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-06-10 01:25 ./slackware64/l/libvisual-plugins-0.4.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 362 2015-08-20 18:10 ./slackware64/l/libvncserver-0.9.10-x86_64-2.txt +-rw-r--r-- 1 root root 233596 2015-08-20 18:10 ./slackware64/l/libvncserver-0.9.10-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 18:10 ./slackware64/l/libvncserver-0.9.10-x86_64-2.txz.asc +-rw-r--r-- 1 root root 560 2015-04-02 17:07 ./slackware64/l/libvorbis-1.3.5-x86_64-1.txt +-rw-r--r-- 1 root root 287296 2015-04-02 17:07 ./slackware64/l/libvorbis-1.3.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-02 17:07 ./slackware64/l/libvorbis-1.3.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 435 2015-11-11 17:47 ./slackware64/l/libvpx-1.5.0-x86_64-1.txt +-rw-r--r-- 1 root root 1102568 2015-11-11 17:47 ./slackware64/l/libvpx-1.5.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-11 17:47 ./slackware64/l/libvpx-1.5.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 288 2015-03-23 02:30 ./slackware64/l/libwmf-0.2.8.4-x86_64-6.txt +-rw-r--r-- 1 root root 754788 2015-03-23 02:30 ./slackware64/l/libwmf-0.2.8.4-x86_64-6.txz +-rw-r--r-- 1 root root 181 2015-03-23 02:30 ./slackware64/l/libwmf-0.2.8.4-x86_64-6.txz.asc +-rw-r--r-- 1 root root 305 2015-03-23 02:30 ./slackware64/l/libwmf-docs-0.2.8.4-noarch-6.txt +-rw-r--r-- 1 root root 206608 2015-03-23 02:30 ./slackware64/l/libwmf-docs-0.2.8.4-noarch-6.txz +-rw-r--r-- 1 root root 181 2015-03-23 02:30 ./slackware64/l/libwmf-docs-0.2.8.4-noarch-6.txz.asc +-rw-r--r-- 1 root root 475 2015-11-21 18:10 ./slackware64/l/libwnck-2.31.0-x86_64-2.txt +-rw-r--r-- 1 root root 379792 2015-11-21 18:10 ./slackware64/l/libwnck-2.31.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:10 ./slackware64/l/libwnck-2.31.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 325 2016-03-19 20:36 ./slackware64/l/libwpd-0.10.1-x86_64-1.txt +-rw-r--r-- 1 root root 164800 2016-03-19 20:36 ./slackware64/l/libwpd-0.10.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:36 ./slackware64/l/libwpd-0.10.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 233 2016-03-07 19:59 ./slackware64/l/libwpg-0.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 138596 2016-03-07 19:59 ./slackware64/l/libwpg-0.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:59 ./slackware64/l/libwpg-0.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 292 2015-04-15 17:43 ./slackware64/l/libxklavier-5.4-x86_64-1.txt +-rw-r--r-- 1 root root 75980 2015-04-15 17:43 ./slackware64/l/libxklavier-5.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-15 17:43 ./slackware64/l/libxklavier-5.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 522 2016-06-03 19:28 ./slackware64/l/libxml2-2.9.4-x86_64-2.txt +-rw-r--r-- 1 root root 1238084 2016-06-03 19:28 ./slackware64/l/libxml2-2.9.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-03 19:28 ./slackware64/l/libxml2-2.9.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 220 2016-05-27 20:12 ./slackware64/l/libxslt-1.1.29-x86_64-1.txt +-rw-r--r-- 1 root root 361956 2016-05-27 20:12 ./slackware64/l/libxslt-1.1.29-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-27 20:12 ./slackware64/l/libxslt-1.1.29-x86_64-1.txz.asc +-rw-r--r-- 1 root root 287 2014-04-17 17:47 ./slackware64/l/libyaml-0.1.6-x86_64-1.txt +-rw-r--r-- 1 root root 108232 2014-04-17 17:47 ./slackware64/l/libyaml-0.1.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-04-17 17:47 ./slackware64/l/libyaml-0.1.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 429 2016-03-19 20:09 ./slackware64/l/libzip-1.0.1-x86_64-2.txt +-rw-r--r-- 1 root root 110604 2016-03-19 20:09 ./slackware64/l/libzip-1.0.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:09 ./slackware64/l/libzip-1.0.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 444 2016-02-08 19:32 ./slackware64/l/loudmouth-1.5.2-x86_64-1.txt +-rw-r--r-- 1 root root 57688 2016-02-08 19:32 ./slackware64/l/loudmouth-1.5.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-08 19:32 ./slackware64/l/loudmouth-1.5.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 273 2015-04-24 16:30 ./slackware64/l/lzo-2.09-x86_64-1.txt +-rw-r--r-- 1 root root 83228 2015-04-24 16:30 ./slackware64/l/lzo-2.09-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-24 16:30 ./slackware64/l/lzo-2.09-x86_64-1.txz.asc +-rw-r--r-- 1 root root 20276 2016-03-03 05:26 ./slackware64/l/maketag +-rw-r--r-- 1 root root 20276 2016-03-03 05:26 ./slackware64/l/maketag.ez +-rw-r--r-- 1 root root 510 2013-07-25 06:34 ./slackware64/l/media-player-info-18-noarch-1.txt +-rw-r--r-- 1 root root 27468 2013-07-25 06:34 ./slackware64/l/media-player-info-18-noarch-1.txz +-rw-r--r-- 1 root root 198 2013-07-25 06:34 ./slackware64/l/media-player-info-18-noarch-1.txz.asc +-rw-r--r-- 1 root root 468 2011-02-16 21:33 ./slackware64/l/mhash-0.9.9.9-x86_64-3.txt +-rw-r--r-- 1 root root 121720 2011-02-16 21:33 ./slackware64/l/mhash-0.9.9.9-x86_64-3.txz +-rw-r--r-- 1 root root 198 2011-02-16 21:33 ./slackware64/l/mhash-0.9.9.9-x86_64-3.txz.asc +-rw-r--r-- 1 root root 550 2008-10-10 09:58 ./slackware64/l/mm-1.4.2-x86_64-2.txt +-rw-r--r-- 1 root root 32612 2008-10-10 09:58 ./slackware64/l/mm-1.4.2-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-10-10 09:58 ./slackware64/l/mm-1.4.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 564 2016-03-09 18:00 ./slackware64/l/mozilla-nss-3.23-x86_64-1.txt +-rw-r--r-- 1 root root 1743080 2016-03-09 18:00 ./slackware64/l/mozilla-nss-3.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 18:00 ./slackware64/l/mozilla-nss-3.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 587 2016-03-07 18:51 ./slackware64/l/mpfr-3.1.4-x86_64-1.txt +-rw-r--r-- 1 root root 335116 2016-03-07 18:51 ./slackware64/l/mpfr-3.1.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 18:51 ./slackware64/l/mpfr-3.1.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 446 2015-04-30 19:08 ./slackware64/l/ncurses-5.9-x86_64-4.txt +-rw-r--r-- 1 root root 962560 2015-04-30 19:08 ./slackware64/l/ncurses-5.9-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-04-30 19:08 ./slackware64/l/ncurses-5.9-x86_64-4.txz.asc +-rw-r--r-- 1 root root 343 2016-03-03 19:32 ./slackware64/l/neon-0.30.1-x86_64-2.txt +-rw-r--r-- 1 root root 210608 2016-03-03 19:32 ./slackware64/l/neon-0.30.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-03 19:32 ./slackware64/l/neon-0.30.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 231 2015-09-05 16:29 ./slackware64/l/netpbm-10.66.02-x86_64-4.txt +-rw-r--r-- 1 root root 1651076 2015-09-05 16:29 ./slackware64/l/netpbm-10.66.02-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-09-05 16:29 ./slackware64/l/netpbm-10.66.02-x86_64-4.txz.asc +-rw-r--r-- 1 root root 423 2016-03-29 21:00 ./slackware64/l/newt-0.52.19-x86_64-1.txt +-rw-r--r-- 1 root root 92504 2016-03-29 21:00 ./slackware64/l/newt-0.52.19-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-29 21:00 ./slackware64/l/newt-0.52.19-x86_64-1.txz.asc +-rw-r--r-- 1 root root 354 2015-09-17 18:54 ./slackware64/l/notify-python-0.1.1-x86_64-5.txt +-rw-r--r-- 1 root root 19384 2015-09-17 18:54 ./slackware64/l/notify-python-0.1.1-x86_64-5.txz +-rw-r--r-- 1 root root 181 2015-09-17 18:54 ./slackware64/l/notify-python-0.1.1-x86_64-5.txz.asc +-rw-r--r-- 1 root root 457 2015-03-07 03:08 ./slackware64/l/openexr-2.2.0-x86_64-1.txt +-rw-r--r-- 1 root root 2996120 2015-03-07 03:08 ./slackware64/l/openexr-2.2.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-07 03:08 ./slackware64/l/openexr-2.2.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 226 2015-03-23 02:37 ./slackware64/l/openjpeg-2.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 427860 2015-03-23 02:37 ./slackware64/l/openjpeg-2.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-23 02:37 ./slackware64/l/openjpeg-2.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 445 2015-10-31 20:26 ./slackware64/l/orc-0.4.24-x86_64-1.txt +-rw-r--r-- 1 root root 209596 2015-10-31 20:26 ./slackware64/l/orc-0.4.24-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-31 20:26 ./slackware64/l/orc-0.4.24-x86_64-1.txz.asc +-rw-r--r-- 1 root root 429 2015-10-28 01:42 ./slackware64/l/pango-1.38.1-x86_64-1.txt +-rw-r--r-- 1 root root 461424 2015-10-28 01:42 ./slackware64/l/pango-1.38.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-28 01:42 ./slackware64/l/pango-1.38.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 178 2016-01-10 23:41 ./slackware64/l/pangomm-2.38.1-x86_64-1.txt +-rw-r--r-- 1 root root 119596 2016-01-10 23:41 ./slackware64/l/pangomm-2.38.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:41 ./slackware64/l/pangomm-2.38.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 384 2015-09-07 17:09 ./slackware64/l/parted-3.2-x86_64-2.txt +-rw-r--r-- 1 root root 489804 2015-09-07 17:09 ./slackware64/l/parted-3.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-09-07 17:09 ./slackware64/l/parted-3.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 311 2016-06-20 19:17 ./slackware64/l/pcre-8.39-x86_64-1.txt +-rw-r--r-- 1 root root 801252 2016-06-20 19:17 ./slackware64/l/pcre-8.39-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-20 19:17 ./slackware64/l/pcre-8.39-x86_64-1.txz.asc +-rw-r--r-- 1 root root 425 2016-01-11 02:05 ./slackware64/l/phonon-4.8.3-x86_64-2.txt +-rw-r--r-- 1 root root 229772 2016-01-11 02:05 ./slackware64/l/phonon-4.8.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-01-11 02:05 ./slackware64/l/phonon-4.8.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 447 2015-04-01 03:43 ./slackware64/l/phonon-gstreamer-4.8.2-x86_64-1.txt +-rw-r--r-- 1 root root 116872 2015-04-01 03:43 ./slackware64/l/phonon-gstreamer-4.8.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-01 03:43 ./slackware64/l/phonon-gstreamer-4.8.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 416 2015-11-10 21:14 ./slackware64/l/pilot-link-0.12.5-x86_64-10.txt +-rw-r--r-- 1 root root 552816 2015-11-10 21:14 ./slackware64/l/pilot-link-0.12.5-x86_64-10.txz +-rw-r--r-- 1 root root 181 2015-11-10 21:14 ./slackware64/l/pilot-link-0.12.5-x86_64-10.txz.asc +-rw-r--r-- 1 root root 450 2016-03-26 17:43 ./slackware64/l/polkit-0.113-x86_64-2.txt +-rw-r--r-- 1 root root 380020 2016-03-26 17:43 ./slackware64/l/polkit-0.113-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-26 17:43 ./slackware64/l/polkit-0.113-x86_64-2.txz.asc +-rw-r--r-- 1 root root 367 2016-03-25 17:56 ./slackware64/l/polkit-gnome-0.105-x86_64-1.txt +-rw-r--r-- 1 root root 68012 2016-03-25 17:56 ./slackware64/l/polkit-gnome-0.105-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-25 17:56 ./slackware64/l/polkit-gnome-0.105-x86_64-1.txz.asc +-rw-r--r-- 1 root root 442 2012-04-08 21:00 ./slackware64/l/polkit-qt-1-0.103.0-x86_64-1.txt +-rw-r--r-- 1 root root 71556 2012-04-08 21:00 ./slackware64/l/polkit-qt-1-0.103.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-04-08 21:00 ./slackware64/l/polkit-qt-1-0.103.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 536 2016-06-23 06:22 ./slackware64/l/poppler-0.45.0-x86_64-1.txt +-rw-r--r-- 1 root root 1383692 2016-06-23 06:22 ./slackware64/l/poppler-0.45.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-23 06:22 ./slackware64/l/poppler-0.45.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 601 2015-03-23 02:48 ./slackware64/l/poppler-data-0.4.7-noarch-1.txt +-rw-r--r-- 1 root root 1463536 2015-03-23 02:48 ./slackware64/l/poppler-data-0.4.7-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-03-23 02:48 ./slackware64/l/poppler-data-0.4.7-noarch-1.txz.asc +-rw-r--r-- 1 root root 592 2013-05-18 02:20 ./slackware64/l/popt-1.16-x86_64-2.txt +-rw-r--r-- 1 root root 58832 2013-05-18 02:20 ./slackware64/l/popt-1.16-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-05-18 02:20 ./slackware64/l/popt-1.16-x86_64-2.txz.asc +-rw-r--r-- 1 root root 339 2016-06-22 19:50 ./slackware64/l/pulseaudio-9.0-x86_64-1.txt +-rw-r--r-- 1 root root 1400912 2016-06-22 19:50 ./slackware64/l/pulseaudio-9.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-22 19:50 ./slackware64/l/pulseaudio-9.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 286 2015-03-23 06:57 ./slackware64/l/pycairo-1.10.0-x86_64-1.txt +-rw-r--r-- 1 root root 50136 2015-03-23 06:57 ./slackware64/l/pycairo-1.10.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-23 06:57 ./slackware64/l/pycairo-1.10.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 239 2015-12-23 20:51 ./slackware64/l/pycups-1.9.73-x86_64-1.txt +-rw-r--r-- 1 root root 67124 2015-12-23 20:51 ./slackware64/l/pycups-1.9.73-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 20:51 ./slackware64/l/pycups-1.9.73-x86_64-1.txz.asc +-rw-r--r-- 1 root root 391 2016-03-07 19:26 ./slackware64/l/pycurl-7.43.0-x86_64-1.txt +-rw-r--r-- 1 root root 74960 2016-03-07 19:26 ./slackware64/l/pycurl-7.43.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:26 ./slackware64/l/pycurl-7.43.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 398 2012-09-04 17:58 ./slackware64/l/pygobject-2.28.6-x86_64-2.txt +-rw-r--r-- 1 root root 410788 2012-09-04 17:58 ./slackware64/l/pygobject-2.28.6-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-09-04 17:58 ./slackware64/l/pygobject-2.28.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 408 2015-10-28 01:52 ./slackware64/l/pygobject3-3.18.2-x86_64-1.txt +-rw-r--r-- 1 root root 265844 2015-10-28 01:52 ./slackware64/l/pygobject3-3.18.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-28 01:52 ./slackware64/l/pygobject3-3.18.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 320 2015-06-30 22:51 ./slackware64/l/pygtk-2.24.0-x86_64-2.txt +-rw-r--r-- 1 root root 1747452 2015-06-30 22:51 ./slackware64/l/pygtk-2.24.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-06-30 22:51 ./slackware64/l/pygtk-2.24.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 392 2012-06-19 20:13 ./slackware64/l/pyrex-0.9.9-x86_64-2.txt +-rw-r--r-- 1 root root 249900 2012-06-19 20:13 ./slackware64/l/pyrex-0.9.9-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-06-19 20:13 ./slackware64/l/pyrex-0.9.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 532 2015-10-15 20:51 ./slackware64/l/python-pillow-3.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 535276 2015-10-15 20:51 ./slackware64/l/python-pillow-3.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:51 ./slackware64/l/python-pillow-3.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 567 2016-04-13 20:06 ./slackware64/l/qca-2.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 697696 2016-04-13 20:06 ./slackware64/l/qca-2.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-13 20:06 ./slackware64/l/qca-2.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 395 2010-07-12 21:11 ./slackware64/l/qimageblitz-0.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 68836 2010-07-12 21:11 ./slackware64/l/qimageblitz-0.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-07-12 21:11 ./slackware64/l/qimageblitz-0.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 510 2013-02-11 03:09 ./slackware64/l/qjson-0.8.1-x86_64-1.txt +-rw-r--r-- 1 root root 86924 2013-02-11 03:09 ./slackware64/l/qjson-0.8.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-02-11 03:09 ./slackware64/l/qjson-0.8.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 263 2016-03-02 06:41 ./slackware64/l/qt-4.8.7-x86_64-4.txt +-rw-r--r-- 1 root root 32606848 2016-03-02 06:41 ./slackware64/l/qt-4.8.7-x86_64-4.txz +-rw-r--r-- 1 root root 181 2016-03-02 06:41 ./slackware64/l/qt-4.8.7-x86_64-4.txz.asc +-rw-r--r-- 1 root root 546 2015-04-08 18:13 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-1.txt +-rw-r--r-- 1 root root 245444 2015-04-08 18:13 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-08 18:13 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 489 2013-06-22 19:59 ./slackware64/l/qtscriptgenerator-0.2.0-x86_64-2.txt +-rw-r--r-- 1 root root 4451332 2013-06-22 19:59 ./slackware64/l/qtscriptgenerator-0.2.0-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-06-22 19:59 ./slackware64/l/qtscriptgenerator-0.2.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 557 2015-11-18 02:04 ./slackware64/l/raptor2-2.0.15-x86_64-2.txt +-rw-r--r-- 1 root root 341508 2015-11-18 02:04 ./slackware64/l/raptor2-2.0.15-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-18 02:04 ./slackware64/l/raptor2-2.0.15-x86_64-2.txz.asc +-rw-r--r-- 1 root root 428 2013-03-22 11:20 ./slackware64/l/rasqal-0.9.30-x86_64-1.txt +-rw-r--r-- 1 root root 275320 2013-03-22 11:20 ./slackware64/l/rasqal-0.9.30-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-03-22 11:20 ./slackware64/l/rasqal-0.9.30-x86_64-1.txz.asc +-rw-r--r-- 1 root root 559 2015-11-07 18:54 ./slackware64/l/readline-6.3-x86_64-2.txt +-rw-r--r-- 1 root root 277712 2015-11-07 18:54 ./slackware64/l/readline-6.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-07 18:54 ./slackware64/l/readline-6.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 528 2013-03-22 11:22 ./slackware64/l/redland-1.0.16-x86_64-1.txt +-rw-r--r-- 1 root root 291712 2013-03-22 11:22 ./slackware64/l/redland-1.0.16-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-03-22 11:22 ./slackware64/l/redland-1.0.16-x86_64-1.txz.asc +-rw-r--r-- 1 root root 416 2015-12-22 23:14 ./slackware64/l/sbc-1.3-x86_64-1.txt +-rw-r--r-- 1 root root 53784 2015-12-22 23:14 ./slackware64/l/sbc-1.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-22 23:14 ./slackware64/l/sbc-1.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 487 2016-06-08 17:01 ./slackware64/l/sdl-1.2.15-x86_64-4.txt +-rw-r--r-- 1 root root 562648 2016-06-08 17:01 ./slackware64/l/sdl-1.2.15-x86_64-4.txz +-rw-r--r-- 1 root root 181 2016-06-08 17:01 ./slackware64/l/sdl-1.2.15-x86_64-4.txz.asc +-rw-r--r-- 1 root root 673 2016-03-15 23:19 ./slackware64/l/seamonkey-solibs-2.40-x86_64-1.txt +-rw-r--r-- 1 root root 1306196 2016-03-15 23:19 ./slackware64/l/seamonkey-solibs-2.40-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-15 23:19 ./slackware64/l/seamonkey-solibs-2.40-x86_64-1.txz.asc +-rw-r--r-- 1 root root 485 2015-10-23 23:11 ./slackware64/l/serf-1.3.8-x86_64-1.txt +-rw-r--r-- 1 root root 62876 2015-10-23 23:11 ./slackware64/l/serf-1.3.8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-23 23:11 ./slackware64/l/serf-1.3.8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 583 2016-02-26 19:08 ./slackware64/l/sg3_utils-1.42-x86_64-1.txt +-rw-r--r-- 1 root root 716760 2016-02-26 19:08 ./slackware64/l/sg3_utils-1.42-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-26 19:08 ./slackware64/l/sg3_utils-1.42-x86_64-1.txz.asc +-rw-r--r-- 1 root root 642 2015-04-01 03:42 ./slackware64/l/shared-desktop-ontologies-0.11.0-x86_64-1.txt +-rw-r--r-- 1 root root 96788 2015-04-01 03:42 ./slackware64/l/shared-desktop-ontologies-0.11.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-01 03:42 ./slackware64/l/shared-desktop-ontologies-0.11.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 488 2016-03-08 20:22 ./slackware64/l/shared-mime-info-1.6-x86_64-1.txt +-rw-r--r-- 1 root root 446864 2016-03-08 20:22 ./slackware64/l/shared-mime-info-1.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-08 20:22 ./slackware64/l/shared-mime-info-1.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 395 2016-06-22 18:26 ./slackware64/l/sip-4.18-x86_64-1.txt +-rw-r--r-- 1 root root 510380 2016-06-22 18:26 ./slackware64/l/sip-4.18-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-22 18:26 ./slackware64/l/sip-4.18-x86_64-1.txz.asc +-rw-r--r-- 1 root root 538 2015-03-23 01:02 ./slackware64/l/slang-2.3.0-x86_64-1.txt +-rw-r--r-- 1 root root 485196 2015-03-23 01:02 ./slackware64/l/slang-2.3.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-23 01:02 ./slackware64/l/slang-2.3.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 549 2008-10-13 21:08 ./slackware64/l/slang1-1.4.9-x86_64-1.txt +-rw-r--r-- 1 root root 191920 2008-10-13 21:08 ./slackware64/l/slang1-1.4.9-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-13 21:08 ./slackware64/l/slang1-1.4.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 389 2015-04-01 03:42 ./slackware64/l/soprano-2.9.4-x86_64-1.txt +-rw-r--r-- 1 root root 571820 2015-04-01 03:42 ./slackware64/l/soprano-2.9.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-01 03:42 ./slackware64/l/soprano-2.9.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 481 2012-07-20 00:58 ./slackware64/l/sound-theme-freedesktop-0.7-noarch-1.txt +-rw-r--r-- 1 root root 389900 2012-07-20 00:58 ./slackware64/l/sound-theme-freedesktop-0.7-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-07-20 00:58 ./slackware64/l/sound-theme-freedesktop-0.7-noarch-1.txz.asc +-rw-r--r-- 1 root root 232 2016-01-10 23:34 ./slackware64/l/speexdsp-1.2rc3-x86_64-1.txt +-rw-r--r-- 1 root root 457028 2016-01-10 23:34 ./slackware64/l/speexdsp-1.2rc3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:34 ./slackware64/l/speexdsp-1.2rc3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 359 2013-09-07 21:26 ./slackware64/l/startup-notification-0.12-x86_64-2.txt +-rw-r--r-- 1 root root 29808 2013-09-07 21:26 ./slackware64/l/startup-notification-0.12-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-09-07 21:26 ./slackware64/l/startup-notification-0.12-x86_64-2.txz.asc +-rw-r--r-- 1 root root 509 2015-10-22 17:17 ./slackware64/l/strigi-0.7.8-x86_64-2.txt +-rw-r--r-- 1 root root 696288 2015-10-22 17:17 ./slackware64/l/strigi-0.7.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-22 17:17 ./slackware64/l/strigi-0.7.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 344 2015-03-19 17:58 ./slackware64/l/svgalib-1.9.25-x86_64-3.txt +-rw-r--r-- 1 root root 601292 2015-03-19 17:58 ./slackware64/l/svgalib-1.9.25-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-19 17:58 ./slackware64/l/svgalib-1.9.25-x86_64-3.txz.asc +-rw-r--r-- 1 root root 745 2015-11-19 06:00 ./slackware64/l/system-config-printer-1.3.13-x86_64-2.txt +-rw-r--r-- 1 root root 676440 2015-11-19 06:00 ./slackware64/l/system-config-printer-1.3.13-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 06:00 ./slackware64/l/system-config-printer-1.3.13-x86_64-2.txz.asc +-rw-r--r-- 1 root root 357 2012-08-10 19:13 ./slackware64/l/t1lib-5.1.2-x86_64-3.txt +-rw-r--r-- 1 root root 515356 2012-08-10 19:13 ./slackware64/l/t1lib-5.1.2-x86_64-3.txz +-rw-r--r-- 1 root root 198 2012-08-10 19:13 ./slackware64/l/t1lib-5.1.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 3694 2016-03-03 05:26 ./slackware64/l/tagfile +-rw-r--r-- 1 root root 340 2016-03-19 20:45 ./slackware64/l/taglib-1.10-x86_64-1.txt +-rw-r--r-- 1 root root 374360 2016-03-19 20:45 ./slackware64/l/taglib-1.10-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:45 ./slackware64/l/taglib-1.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 521 2009-10-03 00:39 ./slackware64/l/taglib-extras-1.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 28432 2009-10-03 00:39 ./slackware64/l/taglib-extras-1.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-10-03 00:39 ./slackware64/l/taglib-extras-1.0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 523 2009-03-06 09:44 ./slackware64/l/tango-icon-theme-0.8.90-noarch-1.txt +-rw-r--r-- 1 root root 1245240 2009-03-06 09:44 ./slackware64/l/tango-icon-theme-0.8.90-noarch-1.txz +-rw-r--r-- 1 root root 197 2009-03-06 09:44 ./slackware64/l/tango-icon-theme-0.8.90-noarch-1.txz.asc +-rw-r--r-- 1 root root 541 2008-10-23 08:28 ./slackware64/l/tango-icon-theme-extras-0.1.0-noarch-1.txt +-rw-r--r-- 1 root root 55540 2008-10-23 08:28 ./slackware64/l/tango-icon-theme-extras-0.1.0-noarch-1.txz +-rw-r--r-- 1 root root 197 2008-10-23 08:28 ./slackware64/l/tango-icon-theme-extras-0.1.0-noarch-1.txz.asc +-rw-r--r-- 1 root root 386 2016-03-26 22:22 ./slackware64/l/urwid-1.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 288836 2016-03-26 22:22 ./slackware64/l/urwid-1.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-26 22:22 ./slackware64/l/urwid-1.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 553 2016-03-07 20:11 ./slackware64/l/v4l-utils-1.10.0-x86_64-1.txt +-rw-r--r-- 1 root root 712628 2016-03-07 20:11 ./slackware64/l/v4l-utils-1.10.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:11 ./slackware64/l/v4l-utils-1.10.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 427 2015-11-21 18:22 ./slackware64/l/virtuoso-ose-6.1.8-x86_64-3.txt +-rw-r--r-- 1 root root 7787864 2015-11-21 18:22 ./slackware64/l/virtuoso-ose-6.1.8-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:22 ./slackware64/l/virtuoso-ose-6.1.8-x86_64-3.txz.asc +-rw-r--r-- 1 root root 256 2015-11-21 18:24 ./slackware64/l/vte-0.28.2-x86_64-4.txt +-rw-r--r-- 1 root root 376880 2015-11-21 18:24 ./slackware64/l/vte-0.28.2-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:24 ./slackware64/l/vte-0.28.2-x86_64-4.txz.asc +-rw-r--r-- 1 root root 381 2016-03-19 20:48 ./slackware64/l/wavpack-4.75.2-x86_64-1.txt +-rw-r--r-- 1 root root 135988 2016-03-19 20:48 ./slackware64/l/wavpack-4.75.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:48 ./slackware64/l/wavpack-4.75.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 416 2015-12-30 23:25 ./slackware64/l/xapian-core-1.2.22-x86_64-1.txt +-rw-r--r-- 1 root root 2489500 2015-12-30 23:25 ./slackware64/l/xapian-core-1.2.22-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-30 23:25 ./slackware64/l/xapian-core-1.2.22-x86_64-1.txz.asc +-rw-r--r-- 1 root root 359 2013-08-20 23:23 ./slackware64/l/zlib-1.2.8-x86_64-1.txt +-rw-r--r-- 1 root root 98756 2013-08-20 23:23 ./slackware64/l/zlib-1.2.8-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-08-20 23:23 ./slackware64/l/zlib-1.2.8-x86_64-1.txz.asc +drwxr-xr-x 2 root root 24576 2016-06-24 23:57 ./slackware64/n +-rw-r--r-- 1 root root 369 2016-03-31 20:47 ./slackware64/n/ModemManager-1.4.14-x86_64-1.txt +-rw-r--r-- 1 root root 836544 2016-03-31 20:47 ./slackware64/n/ModemManager-1.4.14-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-31 20:47 ./slackware64/n/ModemManager-1.4.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 603 2016-06-13 03:28 ./slackware64/n/NetworkManager-1.2.2-x86_64-2.txt +-rw-r--r-- 1 root root 3992360 2016-06-13 03:28 ./slackware64/n/NetworkManager-1.2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-13 03:28 ./slackware64/n/NetworkManager-1.2.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 645 2015-10-23 21:06 ./slackware64/n/alpine-2.20-x86_64-2.txt +-rw-r--r-- 1 root root 1965088 2015-10-23 21:06 ./slackware64/n/alpine-2.20-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-23 21:06 ./slackware64/n/alpine-2.20-x86_64-2.txz.asc +-rw-r--r-- 1 root root 416 2013-04-18 21:05 ./slackware64/n/autofs-5.0.7-x86_64-2.txt +-rw-r--r-- 1 root root 338192 2013-04-18 21:05 ./slackware64/n/autofs-5.0.7-x86_64-2.txz +-rw-r--r-- 1 root root 198 2013-04-18 21:05 ./slackware64/n/autofs-5.0.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 686 2008-10-23 23:09 ./slackware64/n/biff+comsat-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 10972 2008-10-23 23:09 ./slackware64/n/biff+comsat-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-23 23:09 ./slackware64/n/biff+comsat-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 336 2016-05-26 22:46 ./slackware64/n/bind-9.10.4_P1-x86_64-1.txt +-rw-r--r-- 1 root root 2379756 2016-05-26 22:46 ./slackware64/n/bind-9.10.4_P1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-26 22:46 ./slackware64/n/bind-9.10.4_P1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 347 2016-05-31 19:07 ./slackware64/n/bluez-5.40-x86_64-1.txt +-rw-r--r-- 1 root root 984604 2016-05-31 19:07 ./slackware64/n/bluez-5.40-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-31 19:07 ./slackware64/n/bluez-5.40-x86_64-1.txz.asc +-rw-r--r-- 1 root root 367 2008-10-23 23:26 ./slackware64/n/bluez-firmware-1.2-x86_64-1.txt +-rw-r--r-- 1 root root 71980 2008-10-23 23:26 ./slackware64/n/bluez-firmware-1.2-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-23 23:26 ./slackware64/n/bluez-firmware-1.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 420 2008-10-14 11:45 ./slackware64/n/bootp-2.4.3-x86_64-2.txt +-rw-r--r-- 1 root root 49328 2008-10-14 11:45 ./slackware64/n/bootp-2.4.3-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-10-14 11:45 ./slackware64/n/bootp-2.4.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 591 2015-10-31 00:00 ./slackware64/n/bridge-utils-1.5-x86_64-1.txt +-rw-r--r-- 1 root root 29572 2015-10-31 00:00 ./slackware64/n/bridge-utils-1.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-31 00:00 ./slackware64/n/bridge-utils-1.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 613 2008-10-25 11:36 ./slackware64/n/bsd-finger-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 18984 2008-10-25 11:36 ./slackware64/n/bsd-finger-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-25 11:36 ./slackware64/n/bsd-finger-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 430 2016-04-20 16:47 ./slackware64/n/ca-certificates-20160104-noarch-1.txt +-rw-r--r-- 1 root root 160580 2016-04-20 16:47 ./slackware64/n/ca-certificates-20160104-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-04-20 16:47 ./slackware64/n/ca-certificates-20160104-noarch-1.txz.asc +-rw-r--r-- 1 root root 606 2016-02-11 20:29 ./slackware64/n/cifs-utils-6.4-x86_64-2.txt +-rw-r--r-- 1 root root 188268 2016-02-11 20:29 ./slackware64/n/cifs-utils-6.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-02-11 20:29 ./slackware64/n/cifs-utils-6.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 536 2016-03-04 16:25 ./slackware64/n/conntrack-tools-1.4.3-x86_64-1.txt +-rw-r--r-- 1 root root 144116 2016-03-04 16:25 ./slackware64/n/conntrack-tools-1.4.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-04 16:25 ./slackware64/n/conntrack-tools-1.4.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 415 2016-03-17 00:51 ./slackware64/n/crda-3.18-x86_64-3.txt +-rw-r--r-- 1 root root 64624 2016-03-17 00:51 ./slackware64/n/crda-3.18-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-03-17 00:51 ./slackware64/n/crda-3.18-x86_64-3.txz.asc +-rw-r--r-- 1 root root 555 2016-05-30 17:57 ./slackware64/n/curl-7.49.1-x86_64-1.txt +-rw-r--r-- 1 root root 1097604 2016-05-30 17:57 ./slackware64/n/curl-7.49.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-30 17:57 ./slackware64/n/curl-7.49.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 375 2015-10-24 04:35 ./slackware64/n/cyrus-sasl-2.1.26-x86_64-1.txt +-rw-r--r-- 1 root root 436556 2015-10-24 04:35 ./slackware64/n/cyrus-sasl-2.1.26-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-24 04:35 ./slackware64/n/cyrus-sasl-2.1.26-x86_64-1.txz.asc +-rw-r--r-- 1 root root 644 2016-03-30 17:29 ./slackware64/n/dhcp-4.3.4-x86_64-1.txt +-rw-r--r-- 1 root root 1291464 2016-03-30 17:29 ./slackware64/n/dhcp-4.3.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-30 17:29 ./slackware64/n/dhcp-4.3.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 443 2015-11-19 06:04 ./slackware64/n/dhcpcd-6.8.2-x86_64-2.txt +-rw-r--r-- 1 root root 145752 2015-11-19 06:04 ./slackware64/n/dhcpcd-6.8.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 06:04 ./slackware64/n/dhcpcd-6.8.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 494 2016-01-12 20:57 ./slackware64/n/dirmngr-1.1.1-x86_64-3.txt +-rw-r--r-- 1 root root 203668 2016-01-12 20:57 ./slackware64/n/dirmngr-1.1.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-01-12 20:57 ./slackware64/n/dirmngr-1.1.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 396 2016-05-18 18:39 ./slackware64/n/dnsmasq-2.76-x86_64-1.txt +-rw-r--r-- 1 root root 325680 2016-05-18 18:39 ./slackware64/n/dnsmasq-2.76-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-18 18:39 ./slackware64/n/dnsmasq-2.76-x86_64-1.txz.asc +-rw-r--r-- 1 root root 426 2013-10-08 05:03 ./slackware64/n/ebtables-2.0.10-x86_64-1.txt +-rw-r--r-- 1 root root 80376 2013-10-08 05:03 ./slackware64/n/ebtables-2.0.10-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 05:03 ./slackware64/n/ebtables-2.0.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 224 2009-08-13 19:06 ./slackware64/n/elm-2.5.8-x86_64-3.txt +-rw-r--r-- 1 root root 254788 2009-08-13 19:06 ./slackware64/n/elm-2.5.8-x86_64-3.txz +-rw-r--r-- 1 root root 197 2009-08-13 19:06 ./slackware64/n/elm-2.5.8-x86_64-3.txz.asc +-rw-r--r-- 1 root root 321 2016-04-08 15:53 ./slackware64/n/epic5-2.0-x86_64-1.txt +-rw-r--r-- 1 root root 781000 2016-04-08 15:53 ./slackware64/n/epic5-2.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-08 15:53 ./slackware64/n/epic5-2.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 441 2016-03-15 17:38 ./slackware64/n/ethtool-4.5-x86_64-1.txt +-rw-r--r-- 1 root root 98996 2016-03-15 17:38 ./slackware64/n/ethtool-4.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-15 17:38 ./slackware64/n/ethtool-4.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 607 2016-03-02 04:44 ./slackware64/n/fetchmail-6.3.26-x86_64-2.txt +-rw-r--r-- 1 root root 628840 2016-03-02 04:44 ./slackware64/n/fetchmail-6.3.26-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-02 04:44 ./slackware64/n/fetchmail-6.3.26-x86_64-2.txz.asc +-rw-r--r-- 1 root root 363 2015-04-18 22:25 ./slackware64/n/getmail-4.47.0-x86_64-1.txt +-rw-r--r-- 1 root root 172056 2015-04-18 22:25 ./slackware64/n/getmail-4.47.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-18 22:25 ./slackware64/n/getmail-4.47.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 371 2016-03-09 18:52 ./slackware64/n/gnupg-1.4.20-x86_64-1.txt +-rw-r--r-- 1 root root 1165084 2016-03-09 18:52 ./slackware64/n/gnupg-1.4.20-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 18:52 ./slackware64/n/gnupg-1.4.20-x86_64-1.txz.asc +-rw-r--r-- 1 root root 601 2016-04-24 03:23 ./slackware64/n/gnupg2-2.0.30-x86_64-1.txt +-rw-r--r-- 1 root root 1753940 2016-04-24 03:23 ./slackware64/n/gnupg2-2.0.30-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-24 03:23 ./slackware64/n/gnupg2-2.0.30-x86_64-1.txz.asc +-rw-r--r-- 1 root root 493 2016-06-07 17:39 ./slackware64/n/gnutls-3.4.13-x86_64-1.txt +-rw-r--r-- 1 root root 2312316 2016-06-07 17:39 ./slackware64/n/gnutls-3.4.13-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-07 17:39 ./slackware64/n/gnutls-3.4.13-x86_64-1.txz.asc +-rw-r--r-- 1 root root 287 2015-12-18 03:24 ./slackware64/n/gpa-0.9.9-x86_64-1.txt +-rw-r--r-- 1 root root 277460 2015-12-18 03:24 ./slackware64/n/gpa-0.9.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 03:24 ./slackware64/n/gpa-0.9.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 539 2015-12-18 03:20 ./slackware64/n/gpgme-1.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 281804 2015-12-18 03:20 ./slackware64/n/gpgme-1.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 03:20 ./slackware64/n/gpgme-1.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 435 2012-07-04 16:47 ./slackware64/n/htdig-3.2.0b6-x86_64-4.txt +-rw-r--r-- 1 root root 946364 2012-07-04 16:47 ./slackware64/n/htdig-3.2.0b6-x86_64-4.txz +-rw-r--r-- 1 root root 198 2012-07-04 16:47 ./slackware64/n/htdig-3.2.0b6-x86_64-4.txz.asc +-rw-r--r-- 1 root root 514 2016-04-11 18:32 ./slackware64/n/httpd-2.4.20-x86_64-1.txt +-rw-r--r-- 1 root root 3538396 2016-04-11 18:32 ./slackware64/n/httpd-2.4.20-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-11 18:32 ./slackware64/n/httpd-2.4.20-x86_64-1.txz.asc +-rw-r--r-- 1 root root 366 2015-10-13 17:47 ./slackware64/n/icmpinfo-1.11-x86_64-2.txt +-rw-r--r-- 1 root root 9516 2015-10-13 17:47 ./slackware64/n/icmpinfo-1.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-13 17:47 ./slackware64/n/icmpinfo-1.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 441 2011-03-25 21:45 ./slackware64/n/idnkit-1.0-x86_64-1.txt +-rw-r--r-- 1 root root 140632 2011-03-25 21:45 ./slackware64/n/idnkit-1.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2011-03-25 21:45 ./slackware64/n/idnkit-1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 414 2012-06-01 21:49 ./slackware64/n/iftop-1.0pre2-x86_64-1.txt +-rw-r--r-- 1 root root 38604 2012-06-01 21:49 ./slackware64/n/iftop-1.0pre2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-06-01 21:49 ./slackware64/n/iftop-1.0pre2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 293 2015-10-23 21:06 ./slackware64/n/imapd-2.20-x86_64-2.txt +-rw-r--r-- 1 root root 469644 2015-10-23 21:06 ./slackware64/n/imapd-2.20-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-23 21:06 ./slackware64/n/imapd-2.20-x86_64-2.txz.asc +-rw-r--r-- 1 root root 454 2016-01-12 19:51 ./slackware64/n/inetd-1.79s-x86_64-9.txt +-rw-r--r-- 1 root root 21132 2016-01-12 19:51 ./slackware64/n/inetd-1.79s-x86_64-9.txz +-rw-r--r-- 1 root root 181 2016-01-12 19:51 ./slackware64/n/inetd-1.79s-x86_64-9.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/n/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/n/install.end +-rw-r--r-- 1 root root 478 2016-03-04 17:41 ./slackware64/n/iproute2-4.4.0-x86_64-1.txt +-rw-r--r-- 1 root root 610372 2016-03-04 17:41 ./slackware64/n/iproute2-4.4.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-04 17:41 ./slackware64/n/iproute2-4.4.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 444 2013-10-08 04:48 ./slackware64/n/ipset-6.20-x86_64-1.txt +-rw-r--r-- 1 root root 74668 2013-10-08 04:48 ./slackware64/n/ipset-6.20-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:48 ./slackware64/n/ipset-6.20-x86_64-1.txz.asc +-rw-r--r-- 1 root root 670 2016-03-28 18:32 ./slackware64/n/iptables-1.6.0-x86_64-2.txt +-rw-r--r-- 1 root root 370504 2016-03-28 18:32 ./slackware64/n/iptables-1.6.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-28 18:32 ./slackware64/n/iptables-1.6.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 588 2013-10-15 22:28 ./slackware64/n/iptraf-ng-1.1.4-x86_64-1.txt +-rw-r--r-- 1 root root 279492 2013-10-15 22:28 ./slackware64/n/iptraf-ng-1.1.4-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-15 22:28 ./slackware64/n/iptraf-ng-1.1.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 423 2015-08-20 18:42 ./slackware64/n/iputils-s20140519-x86_64-1.txt +-rw-r--r-- 1 root root 103132 2015-08-20 18:42 ./slackware64/n/iputils-s20140519-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 18:42 ./slackware64/n/iputils-s20140519-x86_64-1.txz.asc +-rw-r--r-- 1 root root 479 2008-11-04 11:29 ./slackware64/n/ipw2100-fw-1.3-fw-1.txt +-rw-r--r-- 1 root root 119440 2008-11-04 11:29 ./slackware64/n/ipw2100-fw-1.3-fw-1.txz +-rw-r--r-- 1 root root 197 2008-11-04 11:29 ./slackware64/n/ipw2100-fw-1.3-fw-1.txz.asc +-rw-r--r-- 1 root root 532 2010-05-03 03:32 ./slackware64/n/ipw2200-fw-3.1-fw-1.txt +-rw-r--r-- 1 root root 118824 2010-05-03 03:32 ./slackware64/n/ipw2200-fw-3.1-fw-1.txz +-rw-r--r-- 1 root root 198 2010-05-03 03:32 ./slackware64/n/ipw2200-fw-3.1-fw-1.txz.asc +-rw-r--r-- 1 root root 333 2016-03-24 21:13 ./slackware64/n/irssi-0.8.19-x86_64-1.txt +-rw-r--r-- 1 root root 593316 2016-03-24 21:13 ./slackware64/n/irssi-0.8.19-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-24 21:13 ./slackware64/n/irssi-0.8.19-x86_64-1.txz.asc +-rw-r--r-- 1 root root 426 2015-12-15 05:25 ./slackware64/n/iw-4.3-x86_64-1.txt +-rw-r--r-- 1 root root 57520 2015-12-15 05:25 ./slackware64/n/iw-4.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:25 ./slackware64/n/iw-4.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 582 2016-05-20 17:23 ./slackware64/n/lftp-4.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 819176 2016-05-20 17:23 ./slackware64/n/lftp-4.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-20 17:23 ./slackware64/n/lftp-4.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 252 2015-12-18 03:15 ./slackware64/n/libassuan-2.4.2-x86_64-1.txt +-rw-r--r-- 1 root root 114008 2015-12-18 03:15 ./slackware64/n/libassuan-2.4.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 03:15 ./slackware64/n/libassuan-2.4.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 245 2016-06-15 18:21 ./slackware64/n/libgcrypt-1.7.1-x86_64-1.txt +-rw-r--r-- 1 root root 511376 2016-06-15 18:21 ./slackware64/n/libgcrypt-1.7.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 18:21 ./slackware64/n/libgcrypt-1.7.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 393 2016-06-15 18:20 ./slackware64/n/libgpg-error-1.23-x86_64-1.txt +-rw-r--r-- 1 root root 161840 2016-06-15 18:20 ./slackware64/n/libgpg-error-1.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 18:20 ./slackware64/n/libgpg-error-1.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 332 2015-12-18 03:16 ./slackware64/n/libksba-1.3.3-x86_64-1.txt +-rw-r--r-- 1 root root 139380 2015-12-18 03:16 ./slackware64/n/libksba-1.3.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 03:16 ./slackware64/n/libksba-1.3.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 341 2015-11-19 05:48 ./slackware64/n/libmbim-1.12.2-x86_64-2.txt +-rw-r--r-- 1 root root 107012 2015-11-19 05:48 ./slackware64/n/libmbim-1.12.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 05:48 ./slackware64/n/libmbim-1.12.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 537 2013-10-08 04:31 ./slackware64/n/libmnl-1.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 17768 2013-10-08 04:31 ./slackware64/n/libmnl-1.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:31 ./slackware64/n/libmnl-1.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 333 2016-05-17 17:29 ./slackware64/n/libndp-1.6-x86_64-1.txt +-rw-r--r-- 1 root root 24752 2016-05-17 17:29 ./slackware64/n/libndp-1.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-17 17:29 ./slackware64/n/libndp-1.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 413 2013-10-08 04:31 ./slackware64/n/libnetfilter_acct-1.0.2-x86_64-1.txt +-rw-r--r-- 1 root root 13992 2013-10-08 04:31 ./slackware64/n/libnetfilter_acct-1.0.2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:31 ./slackware64/n/libnetfilter_acct-1.0.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 532 2016-03-04 16:22 ./slackware64/n/libnetfilter_conntrack-1.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 47572 2016-03-04 16:22 ./slackware64/n/libnetfilter_conntrack-1.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-04 16:22 ./slackware64/n/libnetfilter_conntrack-1.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 618 2013-10-08 04:31 ./slackware64/n/libnetfilter_cthelper-1.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 12896 2013-10-08 04:31 ./slackware64/n/libnetfilter_cthelper-1.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:31 ./slackware64/n/libnetfilter_cthelper-1.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 585 2013-10-08 04:33 ./slackware64/n/libnetfilter_cttimeout-1.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 13032 2013-10-08 04:33 ./slackware64/n/libnetfilter_cttimeout-1.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:33 ./slackware64/n/libnetfilter_cttimeout-1.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 578 2013-10-08 04:34 ./slackware64/n/libnetfilter_log-1.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 15388 2013-10-08 04:34 ./slackware64/n/libnetfilter_log-1.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:34 ./slackware64/n/libnetfilter_log-1.0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 553 2013-10-08 04:35 ./slackware64/n/libnetfilter_queue-1.0.2-x86_64-1.txt +-rw-r--r-- 1 root root 17800 2013-10-08 04:35 ./slackware64/n/libnetfilter_queue-1.0.2-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:35 ./slackware64/n/libnetfilter_queue-1.0.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 519 2013-10-08 04:31 ./slackware64/n/libnfnetlink-1.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 21348 2013-10-08 04:31 ./slackware64/n/libnfnetlink-1.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:31 ./slackware64/n/libnfnetlink-1.0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 403 2016-06-01 19:22 ./slackware64/n/libnftnl-1.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 55564 2016-06-01 19:22 ./slackware64/n/libnftnl-1.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-01 19:22 ./slackware64/n/libnftnl-1.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 298 2015-03-21 21:30 ./slackware64/n/libqmi-1.12.6-x86_64-1.txt +-rw-r--r-- 1 root root 423392 2015-03-21 21:30 ./slackware64/n/libqmi-1.12.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-21 21:30 ./slackware64/n/libqmi-1.12.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 540 2015-12-22 21:58 ./slackware64/n/libtirpc-1.0.1-x86_64-2.txt +-rw-r--r-- 1 root root 134668 2015-12-22 21:58 ./slackware64/n/libtirpc-1.0.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-12-22 21:58 ./slackware64/n/libtirpc-1.0.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 446 2016-03-02 04:42 ./slackware64/n/links-2.12-x86_64-2.txt +-rw-r--r-- 1 root root 2873272 2016-03-02 04:42 ./slackware64/n/links-2.12-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-02 04:42 ./slackware64/n/links-2.12-x86_64-2.txz.asc +-rw-r--r-- 1 root root 498 2016-03-09 19:10 ./slackware64/n/lynx-2.8.8rel.2-x86_64-1.txt +-rw-r--r-- 1 root root 1559916 2016-03-09 19:10 ./slackware64/n/lynx-2.8.8rel.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-09 19:10 ./slackware64/n/lynx-2.8.8rel.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 567 2016-02-29 19:37 ./slackware64/n/mailx-12.5-x86_64-2.txt +-rw-r--r-- 1 root root 241512 2016-02-29 19:37 ./slackware64/n/mailx-12.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-02-29 19:37 ./slackware64/n/mailx-12.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 11213 2016-02-29 20:49 ./slackware64/n/maketag +-rw-r--r-- 1 root root 11213 2016-02-29 20:49 ./slackware64/n/maketag.ez +-rw-r--r-- 1 root root 418 2016-02-08 19:34 ./slackware64/n/mcabber-1.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 239628 2016-02-08 19:34 ./slackware64/n/mcabber-1.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-08 19:34 ./slackware64/n/mcabber-1.0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 468 2010-08-12 01:05 ./slackware64/n/metamail-2.7-x86_64-5.txt +-rw-r--r-- 1 root root 126392 2010-08-12 01:05 ./slackware64/n/metamail-2.7-x86_64-5.txz +-rw-r--r-- 1 root root 198 2010-08-12 01:05 ./slackware64/n/metamail-2.7-x86_64-5.txz.asc +-rw-r--r-- 1 root root 593 2015-12-15 05:03 ./slackware64/n/mobile-broadband-provider-info-20151214-x86_64-1.txt +-rw-r--r-- 1 root root 45172 2015-12-15 05:03 ./slackware64/n/mobile-broadband-provider-info-20151214-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 05:03 ./slackware64/n/mobile-broadband-provider-info-20151214-x86_64-1.txz.asc +-rw-r--r-- 1 root root 325 2016-03-26 18:26 ./slackware64/n/mtr-0.86-x86_64-1.txt +-rw-r--r-- 1 root root 53084 2016-03-26 18:26 ./slackware64/n/mtr-0.86-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-26 18:26 ./slackware64/n/mtr-0.86-x86_64-1.txz.asc +-rw-r--r-- 1 root root 411 2016-05-04 23:10 ./slackware64/n/mutt-1.6.1-x86_64-1.txt +-rw-r--r-- 1 root root 1005636 2016-05-04 23:10 ./slackware64/n/mutt-1.6.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-04 23:10 ./slackware64/n/mutt-1.6.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 628 2008-10-28 20:33 ./slackware64/n/nc-1.10-x86_64-1.txt +-rw-r--r-- 1 root root 53592 2008-10-28 20:33 ./slackware64/n/nc-1.10-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-28 20:33 ./slackware64/n/nc-1.10-x86_64-1.txz.asc +-rw-r--r-- 1 root root 337 2011-01-22 04:13 ./slackware64/n/ncftp-3.2.5-x86_64-1.txt +-rw-r--r-- 1 root root 272456 2011-01-22 04:13 ./slackware64/n/ncftp-3.2.5-x86_64-1.txz +-rw-r--r-- 1 root root 198 2011-01-22 04:13 ./slackware64/n/ncftp-3.2.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 451 2016-06-03 20:13 ./slackware64/n/net-snmp-5.7.3-x86_64-3.txt +-rw-r--r-- 1 root root 1539680 2016-06-03 20:13 ./slackware64/n/net-snmp-5.7.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-06-03 20:13 ./slackware64/n/net-snmp-5.7.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 449 2012-07-26 21:08 ./slackware64/n/net-tools-1.60.20120726git-x86_64-1.txt +-rw-r--r-- 1 root root 134664 2012-07-26 21:08 ./slackware64/n/net-tools-1.60.20120726git-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-07-26 21:08 ./slackware64/n/net-tools-1.60.20120726git-x86_64-1.txz.asc +-rw-r--r-- 1 root root 581 2015-10-23 19:34 ./slackware64/n/netatalk-2.2.3-x86_64-6.txt +-rw-r--r-- 1 root root 732960 2015-10-23 19:34 ./slackware64/n/netatalk-2.2.3-x86_64-6.txz +-rw-r--r-- 1 root root 181 2015-10-23 19:34 ./slackware64/n/netatalk-2.2.3-x86_64-6.txz.asc +-rw-r--r-- 1 root root 649 2008-10-28 20:59 ./slackware64/n/netdate-bsd4-x86_64-1.txt +-rw-r--r-- 1 root root 8812 2008-10-28 20:59 ./slackware64/n/netdate-bsd4-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-28 20:59 ./slackware64/n/netdate-bsd4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 518 2009-05-23 04:52 ./slackware64/n/netkit-bootparamd-0.17-x86_64-2.txt +-rw-r--r-- 1 root root 9232 2009-05-23 04:52 ./slackware64/n/netkit-bootparamd-0.17-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-05-23 04:52 ./slackware64/n/netkit-bootparamd-0.17-x86_64-2.txz.asc +-rw-r--r-- 1 root root 444 2015-03-20 17:24 ./slackware64/n/netkit-ftp-0.17-x86_64-2.txt +-rw-r--r-- 1 root root 48300 2015-03-20 17:24 ./slackware64/n/netkit-ftp-0.17-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-03-20 17:24 ./slackware64/n/netkit-ftp-0.17-x86_64-2.txz.asc +-rw-r--r-- 1 root root 478 2009-05-23 04:52 ./slackware64/n/netkit-ntalk-0.17-x86_64-3.txt +-rw-r--r-- 1 root root 26168 2009-05-23 04:52 ./slackware64/n/netkit-ntalk-0.17-x86_64-3.txz +-rw-r--r-- 1 root root 197 2009-05-23 04:52 ./slackware64/n/netkit-ntalk-0.17-x86_64-3.txz.asc +-rw-r--r-- 1 root root 636 2008-09-23 22:51 ./slackware64/n/netkit-routed-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 25544 2008-09-23 22:51 ./slackware64/n/netkit-routed-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-23 22:51 ./slackware64/n/netkit-routed-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 423 2008-09-23 22:52 ./slackware64/n/netkit-rsh-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 42092 2008-09-23 22:52 ./slackware64/n/netkit-rsh-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-23 22:52 ./slackware64/n/netkit-rsh-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 696 2008-09-23 22:55 ./slackware64/n/netkit-rusers-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 17720 2008-09-23 22:55 ./slackware64/n/netkit-rusers-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-23 22:55 ./slackware64/n/netkit-rusers-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 462 2008-09-23 22:56 ./slackware64/n/netkit-rwall-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 10388 2008-09-23 22:56 ./slackware64/n/netkit-rwall-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-09-23 22:56 ./slackware64/n/netkit-rwall-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 691 2008-12-14 22:23 ./slackware64/n/netkit-rwho-0.17-x86_64-2.txt +-rw-r--r-- 1 root root 17040 2008-12-14 22:23 ./slackware64/n/netkit-rwho-0.17-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-12-14 22:23 ./slackware64/n/netkit-rwho-0.17-x86_64-2.txz.asc +-rw-r--r-- 1 root root 407 2008-12-14 22:28 ./slackware64/n/netkit-timed-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 30900 2008-12-14 22:28 ./slackware64/n/netkit-timed-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-12-14 22:28 ./slackware64/n/netkit-timed-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 560 2008-10-15 18:12 ./slackware64/n/netpipes-4.2-x86_64-1.txt +-rw-r--r-- 1 root root 70156 2008-10-15 18:12 ./slackware64/n/netpipes-4.2-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-15 18:12 ./slackware64/n/netpipes-4.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 408 2016-03-07 20:09 ./slackware64/n/nettle-3.2-x86_64-1.txt +-rw-r--r-- 1 root root 357844 2016-03-07 20:09 ./slackware64/n/nettle-3.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 20:09 ./slackware64/n/nettle-3.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 306 2016-03-07 22:26 ./slackware64/n/netwatch-1.3.1_2-x86_64-1.txt +-rw-r--r-- 1 root root 93312 2016-03-07 22:26 ./slackware64/n/netwatch-1.3.1_2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 22:26 ./slackware64/n/netwatch-1.3.1_2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 583 2015-11-19 23:36 ./slackware64/n/network-scripts-14.2-noarch-1.txt +-rw-r--r-- 1 root root 20728 2015-11-19 23:36 ./slackware64/n/network-scripts-14.2-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-11-19 23:36 ./slackware64/n/network-scripts-14.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 560 2008-10-28 21:07 ./slackware64/n/netwrite-0.17-x86_64-1.txt +-rw-r--r-- 1 root root 6836 2008-10-28 21:07 ./slackware64/n/netwrite-0.17-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-28 21:07 ./slackware64/n/netwrite-0.17-x86_64-1.txz.asc +-rw-r--r-- 1 root root 511 2008-10-28 21:08 ./slackware64/n/newspost-2.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 42084 2008-10-28 21:08 ./slackware64/n/newspost-2.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-28 21:08 ./slackware64/n/newspost-2.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 457 2013-10-08 05:04 ./slackware64/n/nfacct-1.0.1-x86_64-1.txt +-rw-r--r-- 1 root root 12568 2013-10-08 05:04 ./slackware64/n/nfacct-1.0.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 05:04 ./slackware64/n/nfacct-1.0.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 322 2016-04-14 17:49 ./slackware64/n/nfs-utils-1.3.3-x86_64-2.txt +-rw-r--r-- 1 root root 223860 2016-04-14 17:49 ./slackware64/n/nfs-utils-1.3.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-14 17:49 ./slackware64/n/nfs-utils-1.3.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 536 2016-06-04 17:26 ./slackware64/n/nftables-0.6-x86_64-1.txt +-rw-r--r-- 1 root root 125296 2016-06-04 17:26 ./slackware64/n/nftables-0.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-04 17:26 ./slackware64/n/nftables-0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 652 2016-04-09 04:02 ./slackware64/n/nmap-7.12-x86_64-1.txt +-rw-r--r-- 1 root root 5634244 2016-04-09 04:02 ./slackware64/n/nmap-7.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-09 04:02 ./slackware64/n/nmap-7.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 444 2009-11-12 00:31 ./slackware64/n/nn-6.7.3-x86_64-3.txt +-rw-r--r-- 1 root root 303276 2009-11-12 00:31 ./slackware64/n/nn-6.7.3-x86_64-3.txz +-rw-r--r-- 1 root root 197 2009-11-12 00:31 ./slackware64/n/nn-6.7.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 532 2016-06-03 23:08 ./slackware64/n/ntp-4.2.8p8-x86_64-1.txt +-rw-r--r-- 1 root root 1934504 2016-06-03 23:08 ./slackware64/n/ntp-4.2.8p8-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-03 23:08 ./slackware64/n/ntp-4.2.8p8-x86_64-1.txz.asc +-rw-r--r-- 1 root root 532 2015-12-23 22:32 ./slackware64/n/obexftp-0.24-x86_64-1.txt +-rw-r--r-- 1 root root 91416 2015-12-23 22:32 ./slackware64/n/obexftp-0.24-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 22:32 ./slackware64/n/obexftp-0.24-x86_64-1.txz.asc +-rw-r--r-- 1 root root 565 2015-10-23 18:58 ./slackware64/n/openldap-client-2.4.42-x86_64-1.txt +-rw-r--r-- 1 root root 403792 2015-10-23 18:58 ./slackware64/n/openldap-client-2.4.42-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-23 18:58 ./slackware64/n/openldap-client-2.4.42-x86_64-1.txz.asc +-rw-r--r-- 1 root root 538 2015-12-23 22:31 ./slackware64/n/openobex-1.7.1-x86_64-1.txt +-rw-r--r-- 1 root root 143592 2015-12-23 22:31 ./slackware64/n/openobex-1.7.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 22:31 ./slackware64/n/openobex-1.7.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 676 2016-03-10 20:42 ./slackware64/n/openssh-7.2p2-x86_64-1.txt +-rw-r--r-- 1 root root 727932 2016-03-10 20:42 ./slackware64/n/openssh-7.2p2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-10 20:42 ./slackware64/n/openssh-7.2p2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 561 2016-05-03 17:21 ./slackware64/n/openssl-1.0.2h-x86_64-1.txt +-rw-r--r-- 1 root root 3425264 2016-05-03 17:21 ./slackware64/n/openssl-1.0.2h-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-03 17:21 ./slackware64/n/openssl-1.0.2h-x86_64-1.txz.asc +-rw-r--r-- 1 root root 431 2016-05-10 19:14 ./slackware64/n/openvpn-2.3.11-x86_64-1.txt +-rw-r--r-- 1 root root 361468 2016-05-10 19:14 ./slackware64/n/openvpn-2.3.11-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-10 19:14 ./slackware64/n/openvpn-2.3.11-x86_64-1.txz.asc +-rw-r--r-- 1 root root 486 2016-03-07 19:58 ./slackware64/n/p11-kit-0.23.2-x86_64-1.txt +-rw-r--r-- 1 root root 246056 2016-03-07 19:58 ./slackware64/n/p11-kit-0.23.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:58 ./slackware64/n/p11-kit-0.23.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 376 2016-06-24 21:20 ./slackware64/n/php-5.6.23-x86_64-1.txt +-rw-r--r-- 1 root root 12679772 2016-06-24 21:20 ./slackware64/n/php-5.6.23-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-24 21:20 ./slackware64/n/php-5.6.23-x86_64-1.txz.asc +-rw-r--r-- 1 root root 578 2012-07-04 22:12 ./slackware64/n/pidentd-3.0.19-x86_64-2.txt +-rw-r--r-- 1 root root 43488 2012-07-04 22:12 ./slackware64/n/pidentd-3.0.19-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-07-04 22:12 ./slackware64/n/pidentd-3.0.19-x86_64-2.txz.asc +-rw-r--r-- 1 root root 322 2015-12-18 03:19 ./slackware64/n/pinentry-0.9.7-x86_64-1.txt +-rw-r--r-- 1 root root 100460 2015-12-18 03:19 ./slackware64/n/pinentry-0.9.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 03:19 ./slackware64/n/pinentry-0.9.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 545 2015-04-14 18:37 ./slackware64/n/popa3d-1.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 21048 2015-04-14 18:37 ./slackware64/n/popa3d-1.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-14 18:37 ./slackware64/n/popa3d-1.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 451 2015-04-17 16:46 ./slackware64/n/ppp-2.4.7-x86_64-1.txt +-rw-r--r-- 1 root root 389892 2015-04-17 16:46 ./slackware64/n/ppp-2.4.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-17 16:46 ./slackware64/n/ppp-2.4.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 687 2008-10-31 11:09 ./slackware64/n/procmail-3.22-x86_64-2.txt +-rw-r--r-- 1 root root 132440 2008-10-31 11:09 ./slackware64/n/procmail-3.22-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-10-31 11:09 ./slackware64/n/procmail-3.22-x86_64-2.txz.asc +-rw-r--r-- 1 root root 339 2016-04-11 20:37 ./slackware64/n/proftpd-1.3.5b-x86_64-1.txt +-rw-r--r-- 1 root root 1061448 2016-04-11 20:37 ./slackware64/n/proftpd-1.3.5b-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-11 20:37 ./slackware64/n/proftpd-1.3.5b-x86_64-1.txz.asc +-rw-r--r-- 1 root root 580 2012-06-19 20:03 ./slackware64/n/pssh-2.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 38856 2012-06-19 20:03 ./slackware64/n/pssh-2.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-06-19 20:03 ./slackware64/n/pssh-2.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 472 2008-10-14 13:00 ./slackware64/n/pth-2.0.7-x86_64-1.txt +-rw-r--r-- 1 root root 101100 2008-10-14 13:00 ./slackware64/n/pth-2.0.7-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-14 13:00 ./slackware64/n/pth-2.0.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 355 2010-01-25 21:41 ./slackware64/n/rdist-6.1.5-x86_64-2.txt +-rw-r--r-- 1 root root 59660 2010-01-25 21:41 ./slackware64/n/rdist-6.1.5-x86_64-2.txz +-rw-r--r-- 1 root root 197 2010-01-25 21:41 ./slackware64/n/rdist-6.1.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 287 2013-10-08 04:41 ./slackware64/n/rfkill-0.5-x86_64-1.txt +-rw-r--r-- 1 root root 5912 2013-10-08 04:41 ./slackware64/n/rfkill-0.5-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-10-08 04:41 ./slackware64/n/rfkill-0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 499 2015-11-11 22:45 ./slackware64/n/rp-pppoe-3.12-x86_64-1.txt +-rw-r--r-- 1 root root 84272 2015-11-11 22:45 ./slackware64/n/rp-pppoe-3.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-11 22:45 ./slackware64/n/rp-pppoe-3.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 584 2015-12-15 00:51 ./slackware64/n/rpcbind-0.2.3-x86_64-1.txt +-rw-r--r-- 1 root root 42832 2015-12-15 00:51 ./slackware64/n/rpcbind-0.2.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-15 00:51 ./slackware64/n/rpcbind-0.2.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 528 2015-12-23 20:50 ./slackware64/n/rsync-3.1.2-x86_64-1.txt +-rw-r--r-- 1 root root 311156 2015-12-23 20:50 ./slackware64/n/rsync-3.1.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 20:50 ./slackware64/n/rsync-3.1.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 509 2016-06-13 04:30 ./slackware64/n/samba-4.4.4-x86_64-3.txt +-rw-r--r-- 1 root root 11024052 2016-06-13 04:30 ./slackware64/n/samba-4.4.4-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-06-13 04:30 ./slackware64/n/samba-4.4.4-x86_64-3.txz.asc +-rw-r--r-- 1 root root 503 2015-10-23 22:30 ./slackware64/n/sendmail-8.15.2-x86_64-2.txt +-rw-r--r-- 1 root root 1060100 2015-10-23 22:30 ./slackware64/n/sendmail-8.15.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-23 22:30 ./slackware64/n/sendmail-8.15.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 588 2015-10-23 22:30 ./slackware64/n/sendmail-cf-8.15.2-noarch-2.txt +-rw-r--r-- 1 root root 116976 2015-10-23 22:30 ./slackware64/n/sendmail-cf-8.15.2-noarch-2.txz +-rw-r--r-- 1 root root 181 2015-10-23 22:30 ./slackware64/n/sendmail-cf-8.15.2-noarch-2.txz.asc +-rw-r--r-- 1 root root 309 2015-04-20 01:53 ./slackware64/n/slrn-1.0.2-x86_64-1.txt +-rw-r--r-- 1 root root 467204 2015-04-20 01:53 ./slackware64/n/slrn-1.0.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-20 01:53 ./slackware64/n/slrn-1.0.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 415 2012-07-04 04:28 ./slackware64/n/snownews-1.5.12-x86_64-2.txt +-rw-r--r-- 1 root root 126352 2012-07-04 04:28 ./slackware64/n/snownews-1.5.12-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-07-04 04:28 ./slackware64/n/snownews-1.5.12-x86_64-2.txz.asc +-rw-r--r-- 1 root root 510 2016-03-03 21:23 ./slackware64/n/stunnel-5.31-x86_64-1.txt +-rw-r--r-- 1 root root 161580 2016-03-03 21:23 ./slackware64/n/stunnel-5.31-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-03 21:23 ./slackware64/n/stunnel-5.31-x86_64-1.txz.asc +-rw-r--r-- 1 root root 1901 2016-02-29 20:49 ./slackware64/n/tagfile +-rw-r--r-- 1 root root 649 2008-10-13 20:26 ./slackware64/n/tcp_wrappers-7.6-x86_64-1.txt +-rw-r--r-- 1 root root 78592 2008-10-13 20:26 ./slackware64/n/tcp_wrappers-7.6-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-13 20:26 ./slackware64/n/tcp_wrappers-7.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 424 2015-08-07 18:59 ./slackware64/n/tcpdump-4.7.4-x86_64-1.txt +-rw-r--r-- 1 root root 349508 2015-08-07 18:59 ./slackware64/n/tcpdump-4.7.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-07 18:59 ./slackware64/n/tcpdump-4.7.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 557 2009-05-23 06:39 ./slackware64/n/telnet-0.17-x86_64-2.txt +-rw-r--r-- 1 root root 63900 2009-05-23 06:39 ./slackware64/n/telnet-0.17-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-05-23 06:39 ./slackware64/n/telnet-0.17-x86_64-2.txz.asc +-rw-r--r-- 1 root root 555 2015-03-20 17:33 ./slackware64/n/tftp-hpa-5.2-x86_64-2.txt +-rw-r--r-- 1 root root 49980 2015-03-20 17:33 ./slackware64/n/tftp-hpa-5.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-03-20 17:33 ./slackware64/n/tftp-hpa-5.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 490 2015-11-18 02:20 ./slackware64/n/tin-2.2.1-x86_64-3.txt +-rw-r--r-- 1 root root 711116 2015-11-18 02:20 ./slackware64/n/tin-2.2.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-18 02:20 ./slackware64/n/tin-2.2.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 508 2016-01-29 18:44 ./slackware64/n/traceroute-2.0.21-x86_64-1.txt +-rw-r--r-- 1 root root 51104 2016-01-29 18:44 ./slackware64/n/traceroute-2.0.21-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-29 18:44 ./slackware64/n/traceroute-2.0.21-x86_64-1.txz.asc +-rw-r--r-- 1 root root 290 2009-05-23 06:43 ./slackware64/n/trn-3.6-x86_64-2.txt +-rw-r--r-- 1 root root 188992 2009-05-23 06:43 ./slackware64/n/trn-3.6-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-05-23 06:43 ./slackware64/n/trn-3.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 338 2015-12-18 04:44 ./slackware64/n/ulogd-2.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 97488 2015-12-18 04:44 ./slackware64/n/ulogd-2.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-18 04:44 ./slackware64/n/ulogd-2.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 282 2008-10-31 13:45 ./slackware64/n/uucp-1.07-x86_64-1.txt +-rw-r--r-- 1 root root 376540 2008-10-31 13:45 ./slackware64/n/uucp-1.07-x86_64-1.txz +-rw-r--r-- 1 root root 197 2008-10-31 13:45 ./slackware64/n/uucp-1.07-x86_64-1.txz.asc +-rw-r--r-- 1 root root 433 2008-10-31 13:54 ./slackware64/n/vlan-1.9-x86_64-2.txt +-rw-r--r-- 1 root root 24048 2008-10-31 13:54 ./slackware64/n/vlan-1.9-x86_64-2.txz +-rw-r--r-- 1 root root 197 2008-10-31 13:54 ./slackware64/n/vlan-1.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 511 2016-06-13 04:50 ./slackware64/n/vsftpd-3.0.3-x86_64-3.txt +-rw-r--r-- 1 root root 126472 2016-06-13 04:50 ./slackware64/n/vsftpd-3.0.3-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-06-13 04:50 ./slackware64/n/vsftpd-3.0.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 398 2016-06-13 03:32 ./slackware64/n/wget-1.18-x86_64-1.txt +-rw-r--r-- 1 root root 588500 2016-06-13 03:32 ./slackware64/n/wget-1.18-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-13 03:32 ./slackware64/n/wget-1.18-x86_64-1.txz.asc +-rw-r--r-- 1 root root 385 2016-04-30 17:54 ./slackware64/n/whois-5.2.12-x86_64-1.txt +-rw-r--r-- 1 root root 52872 2016-04-30 17:54 ./slackware64/n/whois-5.2.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-30 17:54 ./slackware64/n/whois-5.2.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 682 2012-08-19 16:52 ./slackware64/n/wireless-tools-29-x86_64-9.txt +-rw-r--r-- 1 root root 131376 2012-08-19 16:52 ./slackware64/n/wireless-tools-29-x86_64-9.txz +-rw-r--r-- 1 root root 198 2012-08-19 16:52 ./slackware64/n/wireless-tools-29-x86_64-9.txz.asc +-rw-r--r-- 1 root root 603 2015-12-11 03:21 ./slackware64/n/wpa_supplicant-2.5-x86_64-1.txt +-rw-r--r-- 1 root root 1029204 2015-12-11 03:21 ./slackware64/n/wpa_supplicant-2.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-11 03:21 ./slackware64/n/wpa_supplicant-2.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 407 2016-06-06 18:04 ./slackware64/n/yptools-2.14-x86_64-7.txt +-rw-r--r-- 1 root root 188636 2016-06-06 18:04 ./slackware64/n/yptools-2.14-x86_64-7.txz +-rw-r--r-- 1 root root 181 2016-06-06 18:04 ./slackware64/n/yptools-2.14-x86_64-7.txz.asc +-rw-r--r-- 1 root root 289 2009-05-23 06:55 ./slackware64/n/ytalk-3.3.0-x86_64-2.txt +-rw-r--r-- 1 root root 49704 2009-05-23 06:55 ./slackware64/n/ytalk-3.3.0-x86_64-2.txz +-rw-r--r-- 1 root root 197 2009-05-23 06:55 ./slackware64/n/ytalk-3.3.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 651 2008-11-04 11:50 ./slackware64/n/zd1211-firmware-1.4-fw-1.txt +-rw-r--r-- 1 root root 33896 2008-11-04 11:50 ./slackware64/n/zd1211-firmware-1.4-fw-1.txz +-rw-r--r-- 1 root root 197 2008-11-04 11:50 ./slackware64/n/zd1211-firmware-1.4-fw-1.txz.asc +drwxr-xr-x 2 root root 4096 2015-04-22 00:17 ./slackware64/t +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/t/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/t/install.end +-rw-r--r-- 1 root root 1170 2015-04-20 02:07 ./slackware64/t/maketag +-rw-r--r-- 1 root root 1170 2015-04-20 02:07 ./slackware64/t/maketag.ez +-rw-r--r-- 1 root root 46 2015-04-20 02:07 ./slackware64/t/tagfile +-rw-r--r-- 1 root root 338 2015-03-24 21:23 ./slackware64/t/tetex-3.0-x86_64-10.txt +-rw-r--r-- 1 root root 37170548 2015-03-24 21:23 ./slackware64/t/tetex-3.0-x86_64-10.txz +-rw-r--r-- 1 root root 181 2015-03-24 21:23 ./slackware64/t/tetex-3.0-x86_64-10.txz.asc +-rw-r--r-- 1 root root 524 2015-03-24 21:23 ./slackware64/t/tetex-doc-3.0-x86_64-10.txt +-rw-r--r-- 1 root root 43936604 2015-03-24 21:23 ./slackware64/t/tetex-doc-3.0-x86_64-10.txz +-rw-r--r-- 1 root root 181 2015-03-24 21:23 ./slackware64/t/tetex-doc-3.0-x86_64-10.txz.asc +-rw-r--r-- 1 root root 444 2015-03-28 17:43 ./slackware64/t/transfig-3.2.5e-x86_64-3.txt +-rw-r--r-- 1 root root 260828 2015-03-28 17:43 ./slackware64/t/transfig-3.2.5e-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-03-28 17:43 ./slackware64/t/transfig-3.2.5e-x86_64-3.txz.asc +-rw-r--r-- 1 root root 410 2015-04-15 17:06 ./slackware64/t/xfig-3.2.5c-x86_64-3.txt +-rw-r--r-- 1 root root 3676888 2015-04-15 17:06 ./slackware64/t/xfig-3.2.5c-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-04-15 17:06 ./slackware64/t/xfig-3.2.5c-x86_64-3.txz.asc +drwxr-xr-x 2 root root 4096 2016-03-21 02:59 ./slackware64/tcl +-rw-r--r-- 1 root root 533 2016-03-02 21:15 ./slackware64/tcl/expect-5.45-x86_64-1.txt +-rw-r--r-- 1 root root 298004 2016-03-02 21:15 ./slackware64/tcl/expect-5.45-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-02 21:15 ./slackware64/tcl/expect-5.45-x86_64-1.txz.asc +-rw-r--r-- 1 root root 469 2013-05-14 02:45 ./slackware64/tcl/hfsutils-3.2.6-x86_64-5.txt +-rw-r--r-- 1 root root 142820 2013-05-14 02:45 ./slackware64/tcl/hfsutils-3.2.6-x86_64-5.txz +-rw-r--r-- 1 root root 198 2013-05-14 02:45 ./slackware64/tcl/hfsutils-3.2.6-x86_64-5.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/tcl/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/tcl/install.end +-rw-r--r-- 1 root root 1298 2015-04-20 02:07 ./slackware64/tcl/maketag +-rw-r--r-- 1 root root 1298 2015-04-20 02:07 ./slackware64/tcl/maketag.ez +-rw-r--r-- 1 root root 56 2015-04-20 02:07 ./slackware64/tcl/tagfile +-rw-r--r-- 1 root root 259 2016-03-19 19:53 ./slackware64/tcl/tcl-8.6.5-x86_64-2.txt +-rw-r--r-- 1 root root 2804932 2016-03-19 19:53 ./slackware64/tcl/tcl-8.6.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-19 19:53 ./slackware64/tcl/tcl-8.6.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 555 2013-06-10 20:50 ./slackware64/tcl/tclx-8.4.1-x86_64-3.txt +-rw-r--r-- 1 root root 113148 2013-06-10 20:50 ./slackware64/tcl/tclx-8.4.1-x86_64-3.txz +-rw-r--r-- 1 root root 198 2013-06-10 20:50 ./slackware64/tcl/tclx-8.4.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 406 2013-05-14 02:44 ./slackware64/tcl/tix-8.4.3-x86_64-3.txt +-rw-r--r-- 1 root root 538788 2013-05-14 02:44 ./slackware64/tcl/tix-8.4.3-x86_64-3.txz +-rw-r--r-- 1 root root 198 2013-05-14 02:44 ./slackware64/tcl/tix-8.4.3-x86_64-3.txz.asc +-rw-r--r-- 1 root root 198 2016-03-19 19:57 ./slackware64/tcl/tk-8.6.5-x86_64-2.txt +-rw-r--r-- 1 root root 1747952 2016-03-19 19:57 ./slackware64/tcl/tk-8.6.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-19 19:57 ./slackware64/tcl/tk-8.6.5-x86_64-2.txz.asc +drwxr-xr-x 2 root root 53248 2016-06-13 07:33 ./slackware64/x +-rw-r--r-- 1 root root 258 2010-08-12 20:46 ./slackware64/x/anthy-9100h-x86_64-1.txt +-rw-r--r-- 1 root root 5083544 2010-08-12 20:46 ./slackware64/x/anthy-9100h-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-12 20:46 ./slackware64/x/anthy-9100h-x86_64-1.txz.asc +-rw-r--r-- 1 root root 348 2015-08-20 06:54 ./slackware64/x/appres-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 15048 2015-08-20 06:54 ./slackware64/x/appres-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/appres-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 477 2015-08-20 06:55 ./slackware64/x/bdftopcf-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 16968 2015-08-20 06:55 ./slackware64/x/bdftopcf-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/bdftopcf-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 463 2015-08-20 06:55 ./slackware64/x/beforelight-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 16124 2015-08-20 06:55 ./slackware64/x/beforelight-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/beforelight-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 394 2012-05-04 03:45 ./slackware64/x/bigreqsproto-1.1.2-noarch-1.txt +-rw-r--r-- 1 root root 18592 2012-05-04 03:45 ./slackware64/x/bigreqsproto-1.1.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-05-04 03:45 ./slackware64/x/bigreqsproto-1.1.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 210 2015-08-20 06:55 ./slackware64/x/bitmap-1.0.8-x86_64-2.txt +-rw-r--r-- 1 root root 65276 2015-08-20 06:55 ./slackware64/x/bitmap-1.0.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/bitmap-1.0.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 364 2015-11-21 18:25 ./slackware64/x/compiz-0.8.8-x86_64-4.txt +-rw-r--r-- 1 root root 763944 2015-11-21 18:25 ./slackware64/x/compiz-0.8.8-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:25 ./slackware64/x/compiz-0.8.8-x86_64-4.txz.asc +-rw-r--r-- 1 root root 374 2010-11-13 18:46 ./slackware64/x/compositeproto-0.4.2-noarch-1.txt +-rw-r--r-- 1 root root 15416 2010-11-13 18:46 ./slackware64/x/compositeproto-0.4.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-13 18:46 ./slackware64/x/compositeproto-0.4.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 335 2010-11-13 18:46 ./slackware64/x/damageproto-1.2.1-noarch-1.txt +-rw-r--r-- 1 root root 12556 2010-11-13 18:46 ./slackware64/x/damageproto-1.2.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-13 18:46 ./slackware64/x/damageproto-1.2.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 536 2013-09-21 18:39 ./slackware64/x/dejavu-fonts-ttf-2.34-noarch-1.txt +-rw-r--r-- 1 root root 2333844 2013-09-21 18:39 ./slackware64/x/dejavu-fonts-ttf-2.34-noarch-1.txz +-rw-r--r-- 1 root root 198 2013-09-21 18:39 ./slackware64/x/dejavu-fonts-ttf-2.34-noarch-1.txz.asc +-rw-r--r-- 1 root root 296 2011-02-01 01:02 ./slackware64/x/dmxproto-2.3.1-noarch-1.txt +-rw-r--r-- 1 root root 10900 2011-02-01 01:02 ./slackware64/x/dmxproto-2.3.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2011-02-01 01:02 ./slackware64/x/dmxproto-2.3.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 366 2015-08-20 06:45 ./slackware64/x/dri2proto-2.8-x86_64-2.txt +-rw-r--r-- 1 root root 14232 2015-08-20 06:45 ./slackware64/x/dri2proto-2.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:45 ./slackware64/x/dri2proto-2.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 366 2015-08-20 06:45 ./slackware64/x/dri3proto-1.0-x86_64-2.txt +-rw-r--r-- 1 root root 9964 2015-08-20 06:45 ./slackware64/x/dri3proto-1.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:45 ./slackware64/x/dri3proto-1.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 305 2015-08-20 06:55 ./slackware64/x/editres-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 44636 2015-08-20 06:55 ./slackware64/x/editres-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/editres-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 309 2010-11-13 19:09 ./slackware64/x/encodings-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 578788 2010-11-13 19:09 ./slackware64/x/encodings-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-13 19:09 ./slackware64/x/encodings-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 283 2011-02-01 01:02 ./slackware64/x/evieext-1.1.1-noarch-1.txt +-rw-r--r-- 1 root root 9788 2011-02-01 01:02 ./slackware64/x/evieext-1.1.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2011-02-01 01:02 ./slackware64/x/evieext-1.1.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 363 2015-08-20 06:45 ./slackware64/x/fixesproto-5.0-x86_64-2.txt +-rw-r--r-- 1 root root 14512 2015-08-20 06:45 ./slackware64/x/fixesproto-5.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:45 ./slackware64/x/fixesproto-5.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 413 2010-11-16 20:37 ./slackware64/x/font-adobe-100dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 6186912 2010-11-16 20:37 ./slackware64/x/font-adobe-100dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:37 ./slackware64/x/font-adobe-100dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 400 2010-11-16 20:37 ./slackware64/x/font-adobe-75dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 5474484 2010-11-16 20:37 ./slackware64/x/font-adobe-75dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:37 ./slackware64/x/font-adobe-75dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 504 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-100dpi-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 1469172 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-100dpi-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-100dpi-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 491 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-75dpi-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 1222588 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-75dpi-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-75dpi-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 491 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-type1-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 176264 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-type1-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:37 ./slackware64/x/font-adobe-utopia-type1-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 322 2010-11-13 19:10 ./slackware64/x/font-alias-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 9476 2010-11-13 19:10 ./slackware64/x/font-alias-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-13 19:10 ./slackware64/x/font-alias-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 400 2010-11-16 20:37 ./slackware64/x/font-arabic-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 22036 2010-11-16 20:37 ./slackware64/x/font-arabic-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:37 ./slackware64/x/font-arabic-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-11-16 20:38 ./slackware64/x/font-bh-100dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 3786184 2010-11-16 20:38 ./slackware64/x/font-bh-100dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bh-100dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 361 2010-11-16 20:38 ./slackware64/x/font-bh-75dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 3252044 2010-11-16 20:38 ./slackware64/x/font-bh-75dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bh-75dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 595 2010-11-16 20:38 ./slackware64/x/font-bh-lucidatypewriter-100dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 859668 2010-11-16 20:38 ./slackware64/x/font-bh-lucidatypewriter-100dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bh-lucidatypewriter-100dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 582 2010-11-16 20:38 ./slackware64/x/font-bh-lucidatypewriter-75dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 750652 2010-11-16 20:38 ./slackware64/x/font-bh-lucidatypewriter-75dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bh-lucidatypewriter-75dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 335 2010-11-13 19:11 ./slackware64/x/font-bh-ttf-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 284928 2010-11-13 19:11 ./slackware64/x/font-bh-ttf-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-13 19:11 ./slackware64/x/font-bh-ttf-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 361 2010-11-16 20:38 ./slackware64/x/font-bh-type1-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 531048 2010-11-16 20:38 ./slackware64/x/font-bh-type1-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bh-type1-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 465 2010-11-16 20:38 ./slackware64/x/font-bitstream-100dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 169368 2010-11-16 20:38 ./slackware64/x/font-bitstream-100dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bitstream-100dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 452 2010-11-16 20:38 ./slackware64/x/font-bitstream-75dpi-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 149204 2010-11-16 20:38 ./slackware64/x/font-bitstream-75dpi-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bitstream-75dpi-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 465 2010-11-16 20:38 ./slackware64/x/font-bitstream-speedo-1.0.2-noarch-1.txt +-rw-r--r-- 1 root root 245556 2010-11-16 20:38 ./slackware64/x/font-bitstream-speedo-1.0.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bitstream-speedo-1.0.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 452 2010-11-16 20:38 ./slackware64/x/font-bitstream-type1-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 307796 2010-11-16 20:38 ./slackware64/x/font-bitstream-type1-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-bitstream-type1-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 452 2010-11-16 20:38 ./slackware64/x/font-cronyx-cyrillic-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 310788 2010-11-16 20:38 ./slackware64/x/font-cronyx-cyrillic-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-cronyx-cyrillic-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 400 2010-11-16 20:38 ./slackware64/x/font-cursor-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 13288 2010-11-16 20:38 ./slackware64/x/font-cursor-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-cursor-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 400 2010-11-16 20:38 ./slackware64/x/font-daewoo-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 669124 2010-11-16 20:38 ./slackware64/x/font-daewoo-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-daewoo-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 361 2010-11-16 20:38 ./slackware64/x/font-dec-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 11880 2010-11-16 20:38 ./slackware64/x/font-dec-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:38 ./slackware64/x/font-dec-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-11-16 20:39 ./slackware64/x/font-ibm-type1-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 285888 2010-11-16 20:39 ./slackware64/x/font-ibm-type1-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-ibm-type1-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-11-16 20:39 ./slackware64/x/font-isas-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 805592 2010-11-16 20:39 ./slackware64/x/font-isas-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-isas-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 361 2010-11-16 20:39 ./slackware64/x/font-jis-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 544524 2010-11-16 20:39 ./slackware64/x/font-jis-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-jis-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 387 2010-11-16 20:39 ./slackware64/x/font-micro-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 10008 2010-11-16 20:39 ./slackware64/x/font-micro-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-micro-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 426 2010-11-16 20:39 ./slackware64/x/font-misc-cyrillic-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 74616 2010-11-16 20:39 ./slackware64/x/font-misc-cyrillic-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-misc-cyrillic-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 426 2010-11-16 20:39 ./slackware64/x/font-misc-ethiopic-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 136536 2010-11-16 20:39 ./slackware64/x/font-misc-ethiopic-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-misc-ethiopic-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 400 2010-11-16 20:39 ./slackware64/x/font-misc-meltho-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 743760 2010-11-16 20:39 ./slackware64/x/font-misc-meltho-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-misc-meltho-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-11-16 20:39 ./slackware64/x/font-misc-misc-1.1.2-noarch-1.txt +-rw-r--r-- 1 root root 3522740 2010-11-16 20:39 ./slackware64/x/font-misc-misc-1.1.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-misc-misc-1.1.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-11-16 20:39 ./slackware64/x/font-mutt-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 217564 2010-11-16 20:39 ./slackware64/x/font-mutt-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-mutt-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 452 2010-11-16 20:39 ./slackware64/x/font-schumacher-misc-1.1.2-noarch-1.txt +-rw-r--r-- 1 root root 163056 2010-11-16 20:39 ./slackware64/x/font-schumacher-misc-1.1.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-schumacher-misc-1.1.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 452 2010-11-16 20:39 ./slackware64/x/font-screen-cyrillic-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 17984 2010-11-16 20:39 ./slackware64/x/font-screen-cyrillic-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-screen-cyrillic-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-11-16 20:39 ./slackware64/x/font-sony-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 28432 2010-11-16 20:39 ./slackware64/x/font-sony-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-sony-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 361 2010-11-16 20:39 ./slackware64/x/font-sun-misc-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 34664 2010-11-16 20:39 ./slackware64/x/font-sun-misc-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-sun-misc-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 362 2015-08-20 07:08 ./slackware64/x/font-util-1.3.1-x86_64-2.txt +-rw-r--r-- 1 root root 40124 2015-08-20 07:08 ./slackware64/x/font-util-1.3.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:08 ./slackware64/x/font-util-1.3.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 478 2010-11-16 20:39 ./slackware64/x/font-winitzki-cyrillic-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 13228 2010-11-16 20:39 ./slackware64/x/font-winitzki-cyrillic-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-winitzki-cyrillic-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 426 2010-11-16 20:39 ./slackware64/x/font-xfree86-type1-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 36336 2010-11-16 20:39 ./slackware64/x/font-xfree86-type1-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-16 20:39 ./slackware64/x/font-xfree86-type1-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 374 2010-02-22 20:00 ./slackware64/x/fontcacheproto-0.1.3-noarch-1.txt +-rw-r--r-- 1 root root 5180 2010-02-22 20:00 ./slackware64/x/fontcacheproto-0.1.3-noarch-1.txz +-rw-r--r-- 1 root root 197 2010-02-22 20:00 ./slackware64/x/fontcacheproto-0.1.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 348 2015-03-22 21:42 ./slackware64/x/fontconfig-2.11.1-x86_64-2.txt +-rw-r--r-- 1 root root 267800 2015-03-22 21:42 ./slackware64/x/fontconfig-2.11.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-03-22 21:42 ./slackware64/x/fontconfig-2.11.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 363 2015-03-30 01:33 ./slackware64/x/fontsproto-2.1.3-noarch-1.txt +-rw-r--r-- 1 root root 79036 2015-03-30 01:33 ./slackware64/x/fontsproto-2.1.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-03-30 01:33 ./slackware64/x/fontsproto-2.1.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 372 2015-08-20 06:55 ./slackware64/x/fonttosfnt-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 21372 2015-08-20 06:55 ./slackware64/x/fonttosfnt-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/fonttosfnt-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 475 2014-07-14 21:36 ./slackware64/x/freeglut-2.8.1-x86_64-1.txt +-rw-r--r-- 1 root root 125536 2014-07-14 21:36 ./slackware64/x/freeglut-2.8.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-07-14 21:36 ./slackware64/x/freeglut-2.8.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 363 2015-08-20 06:55 ./slackware64/x/fslsfonts-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 19536 2015-08-20 06:55 ./slackware64/x/fslsfonts-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/fslsfonts-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 371 2015-08-20 06:55 ./slackware64/x/fstobdf-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 19500 2015-08-20 06:55 ./slackware64/x/fstobdf-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/fstobdf-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 357 2014-07-15 02:11 ./slackware64/x/gccmakedep-1.0.3-noarch-1.txt +-rw-r--r-- 1 root root 5724 2014-07-15 02:11 ./slackware64/x/gccmakedep-1.0.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2014-07-15 02:11 ./slackware64/x/gccmakedep-1.0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 385 2015-11-23 19:32 ./slackware64/x/glew-1.13.0-x86_64-1.txt +-rw-r--r-- 1 root root 355516 2015-11-23 19:32 ./slackware64/x/glew-1.13.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-23 19:32 ./slackware64/x/glew-1.13.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 323 2014-07-15 02:09 ./slackware64/x/glproto-1.4.17-noarch-1.txt +-rw-r--r-- 1 root root 27780 2014-07-15 02:09 ./slackware64/x/glproto-1.4.17-noarch-1.txz +-rw-r--r-- 1 root root 181 2014-07-15 02:09 ./slackware64/x/glproto-1.4.17-noarch-1.txz.asc +-rw-r--r-- 1 root root 138 2013-02-21 06:27 ./slackware64/x/glu-9.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 186564 2013-02-21 06:27 ./slackware64/x/glu-9.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-02-21 06:27 ./slackware64/x/glu-9.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 348 2015-08-20 06:55 ./slackware64/x/iceauth-1.0.7-x86_64-2.txt +-rw-r--r-- 1 root root 27756 2015-08-20 06:55 ./slackware64/x/iceauth-1.0.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/iceauth-1.0.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 307 2015-08-20 06:55 ./slackware64/x/ico-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 22912 2015-08-20 06:55 ./slackware64/x/ico-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/ico-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 292 2015-08-20 06:47 ./slackware64/x/imake-1.0.7-x86_64-2.txt +-rw-r--r-- 1 root root 40604 2015-08-20 06:47 ./slackware64/x/imake-1.0.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:47 ./slackware64/x/imake-1.0.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 359 2016-04-04 17:30 ./slackware64/x/inputproto-2.3.2-noarch-1.txt +-rw-r--r-- 1 root root 91564 2016-04-04 17:30 ./slackware64/x/inputproto-2.3.2-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-04-04 17:30 ./slackware64/x/inputproto-2.3.2-noarch-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/x/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/x/install.end +-rw-r--r-- 1 root root 413 2015-11-19 06:01 ./slackware64/x/intel-gpu-tools-1.9-x86_64-2.txt +-rw-r--r-- 1 root root 495468 2015-11-19 06:01 ./slackware64/x/intel-gpu-tools-1.9-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 06:01 ./slackware64/x/intel-gpu-tools-1.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 327 2015-08-20 06:46 ./slackware64/x/kbproto-1.0.7-noarch-1.txt +-rw-r--r-- 1 root root 213692 2015-08-20 06:46 ./slackware64/x/kbproto-1.0.7-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:46 ./slackware64/x/kbproto-1.0.7-noarch-1.txz.asc +-rw-r--r-- 1 root root 289 2015-08-20 06:49 ./slackware64/x/libFS-1.0.7-x86_64-1.txt +-rw-r--r-- 1 root root 40172 2015-08-20 06:49 ./slackware64/x/libFS-1.0.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:49 ./slackware64/x/libFS-1.0.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 304 2015-08-20 06:49 ./slackware64/x/libICE-1.0.9-x86_64-2.txt +-rw-r--r-- 1 root root 120980 2015-08-20 06:49 ./slackware64/x/libICE-1.0.9-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:49 ./slackware64/x/libICE-1.0.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 288 2015-08-20 06:49 ./slackware64/x/libSM-1.2.2-x86_64-2.txt +-rw-r--r-- 1 root root 76060 2015-08-20 06:49 ./slackware64/x/libSM-1.2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:49 ./slackware64/x/libSM-1.2.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 305 2015-08-20 06:51 ./slackware64/x/libX11-1.6.3-x86_64-2.txt +-rw-r--r-- 1 root root 2644200 2015-08-20 06:51 ./slackware64/x/libX11-1.6.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:51 ./slackware64/x/libX11-1.6.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 405 2015-08-20 06:51 ./slackware64/x/libXScrnSaver-1.2.2-x86_64-2.txt +-rw-r--r-- 1 root root 24124 2015-08-20 06:51 ./slackware64/x/libXScrnSaver-1.2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:51 ./slackware64/x/libXScrnSaver-1.2.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 469 2015-08-20 06:51 ./slackware64/x/libXau-1.0.8-x86_64-2.txt +-rw-r--r-- 1 root root 25860 2015-08-20 06:51 ./slackware64/x/libXau-1.0.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:51 ./slackware64/x/libXau-1.0.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 208 2015-08-20 06:51 ./slackware64/x/libXaw-1.0.13-x86_64-1.txt +-rw-r--r-- 1 root root 404736 2015-08-20 06:51 ./slackware64/x/libXaw-1.0.13-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:51 ./slackware64/x/libXaw-1.0.13-x86_64-1.txz.asc +-rw-r--r-- 1 root root 512 2015-08-20 06:51 ./slackware64/x/libXaw3d-1.6.2-x86_64-3.txt +-rw-r--r-- 1 root root 182752 2015-08-20 06:51 ./slackware64/x/libXaw3d-1.6.2-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:51 ./slackware64/x/libXaw3d-1.6.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 557 2015-08-27 18:39 ./slackware64/x/libXaw3dXft-1.6.2d-x86_64-2.txt +-rw-r--r-- 1 root root 180524 2015-08-27 18:39 ./slackware64/x/libXaw3dXft-1.6.2d-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-27 18:39 ./slackware64/x/libXaw3dXft-1.6.2d-x86_64-2.txz.asc +-rw-r--r-- 1 root root 310 2015-08-20 06:51 ./slackware64/x/libXcm-0.5.2-x86_64-2.txt +-rw-r--r-- 1 root root 35348 2015-08-20 06:51 ./slackware64/x/libXcm-0.5.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:51 ./slackware64/x/libXcm-0.5.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 408 2015-08-20 06:52 ./slackware64/x/libXcomposite-0.4.4-x86_64-2.txt +-rw-r--r-- 1 root root 21440 2015-08-20 06:52 ./slackware64/x/libXcomposite-0.4.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXcomposite-0.4.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 366 2015-08-20 06:52 ./slackware64/x/libXcursor-1.1.14-x86_64-2.txt +-rw-r--r-- 1 root root 39652 2015-08-20 06:52 ./slackware64/x/libXcursor-1.1.14-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXcursor-1.1.14-x86_64-2.txz.asc +-rw-r--r-- 1 root root 366 2015-08-20 06:52 ./slackware64/x/libXdamage-1.1.4-x86_64-2.txt +-rw-r--r-- 1 root root 15988 2015-08-20 06:52 ./slackware64/x/libXdamage-1.1.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXdamage-1.1.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 341 2015-08-20 06:52 ./slackware64/x/libXdmcp-1.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 55080 2015-08-20 06:52 ./slackware64/x/libXdmcp-1.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXdmcp-1.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 345 2015-08-20 06:52 ./slackware64/x/libXevie-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 15912 2015-08-20 06:52 ./slackware64/x/libXevie-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXevie-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 335 2015-08-20 06:52 ./slackware64/x/libXext-1.3.3-x86_64-2.txt +-rw-r--r-- 1 root root 138296 2015-08-20 06:52 ./slackware64/x/libXext-1.3.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXext-1.3.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 351 2016-05-26 22:51 ./slackware64/x/libXfixes-5.0.2-x86_64-1.txt +-rw-r--r-- 1 root root 25084 2016-05-26 22:51 ./slackware64/x/libXfixes-5.0.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-26 22:51 ./slackware64/x/libXfixes-5.0.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 575 2015-08-20 06:52 ./slackware64/x/libXfont-1.5.1-x86_64-2.txt +-rw-r--r-- 1 root root 136836 2015-08-20 06:52 ./slackware64/x/libXfont-1.5.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXfont-1.5.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 410 2015-08-20 06:52 ./slackware64/x/libXfontcache-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 15108 2015-08-20 06:52 ./slackware64/x/libXfontcache-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXfontcache-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 291 2015-08-20 06:52 ./slackware64/x/libXft-2.3.2-x86_64-3.txt +-rw-r--r-- 1 root root 60848 2015-08-20 06:52 ./slackware64/x/libXft-2.3.2-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:52 ./slackware64/x/libXft-2.3.2-x86_64-3.txz.asc +-rw-r--r-- 1 root root 293 2015-12-23 20:08 ./slackware64/x/libXi-1.7.6-x86_64-1.txt +-rw-r--r-- 1 root root 187252 2015-12-23 20:08 ./slackware64/x/libXi-1.7.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-23 20:08 ./slackware64/x/libXi-1.7.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 384 2015-08-20 06:53 ./slackware64/x/libXinerama-1.1.3-x86_64-2.txt +-rw-r--r-- 1 root root 19944 2015-08-20 06:53 ./slackware64/x/libXinerama-1.1.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXinerama-1.1.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 350 2015-08-20 06:53 ./slackware64/x/libXmu-1.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 105572 2015-08-20 06:53 ./slackware64/x/libXmu-1.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXmu-1.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 282 2015-08-20 06:53 ./slackware64/x/libXp-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 83712 2015-08-20 06:53 ./slackware64/x/libXp-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXp-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 313 2015-08-20 06:53 ./slackware64/x/libXpm-3.5.11-x86_64-2.txt +-rw-r--r-- 1 root root 74516 2015-08-20 06:53 ./slackware64/x/libXpm-3.5.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXpm-3.5.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 391 2015-08-20 06:53 ./slackware64/x/libXpresent-1.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 14804 2015-08-20 06:53 ./slackware64/x/libXpresent-1.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXpresent-1.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 361 2015-08-20 06:53 ./slackware64/x/libXrandr-1.5.0-x86_64-1.txt +-rw-r--r-- 1 root root 39244 2015-08-20 06:53 ./slackware64/x/libXrandr-1.5.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXrandr-1.5.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 377 2015-08-20 06:53 ./slackware64/x/libXrender-0.9.9-x86_64-1.txt +-rw-r--r-- 1 root root 35604 2015-08-20 06:53 ./slackware64/x/libXrender-0.9.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXrender-0.9.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 321 2015-08-20 06:53 ./slackware64/x/libXres-1.0.7-x86_64-2.txt +-rw-r--r-- 1 root root 18732 2015-08-20 06:53 ./slackware64/x/libXres-1.0.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXres-1.0.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 288 2015-08-20 06:53 ./slackware64/x/libXt-1.1.5-x86_64-1.txt +-rw-r--r-- 1 root root 704988 2015-08-20 06:53 ./slackware64/x/libXt-1.1.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXt-1.1.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 334 2015-08-20 06:53 ./slackware64/x/libXtst-1.2.2-x86_64-2.txt +-rw-r--r-- 1 root root 55292 2015-08-20 06:53 ./slackware64/x/libXtst-1.2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXtst-1.2.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 321 2015-08-20 06:53 ./slackware64/x/libXv-1.0.10-x86_64-2.txt +-rw-r--r-- 1 root root 47164 2015-08-20 06:53 ./slackware64/x/libXv-1.0.10-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:53 ./slackware64/x/libXv-1.0.10-x86_64-2.txz.asc +-rw-r--r-- 1 root root 319 2015-08-20 06:54 ./slackware64/x/libXvMC-1.0.9-x86_64-2.txt +-rw-r--r-- 1 root root 33992 2015-08-20 06:54 ./slackware64/x/libXvMC-1.0.9-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libXvMC-1.0.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 382 2015-08-20 06:54 ./slackware64/x/libXxf86dga-1.1.4-x86_64-2.txt +-rw-r--r-- 1 root root 28472 2015-08-20 06:54 ./slackware64/x/libXxf86dga-1.1.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libXxf86dga-1.1.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 401 2015-08-20 06:54 ./slackware64/x/libXxf86misc-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 17524 2015-08-20 06:54 ./slackware64/x/libXxf86misc-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libXxf86misc-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 368 2015-08-20 06:54 ./slackware64/x/libXxf86vm-1.1.4-x86_64-2.txt +-rw-r--r-- 1 root root 28032 2015-08-20 06:54 ./slackware64/x/libXxf86vm-1.1.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libXxf86vm-1.1.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 320 2015-08-20 06:54 ./slackware64/x/libdmx-1.1.3-x86_64-2.txt +-rw-r--r-- 1 root root 43340 2015-08-20 06:54 ./slackware64/x/libdmx-1.1.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libdmx-1.1.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 260 2016-04-29 19:08 ./slackware64/x/libdrm-2.4.68-x86_64-1.txt +-rw-r--r-- 1 root root 206872 2016-04-29 19:08 ./slackware64/x/libdrm-2.4.68-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-29 19:08 ./slackware64/x/libdrm-2.4.68-x86_64-1.txz.asc +-rw-r--r-- 1 root root 277 2015-08-19 06:01 ./slackware64/x/libepoxy-1.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 250600 2015-08-19 06:01 ./slackware64/x/libepoxy-1.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-19 06:01 ./slackware64/x/libepoxy-1.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 581 2015-12-04 20:40 ./slackware64/x/liberation-fonts-ttf-1.07.4-noarch-1.txt +-rw-r--r-- 1 root root 836112 2015-12-04 20:40 ./slackware64/x/liberation-fonts-ttf-1.07.4-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-12-04 20:40 ./slackware64/x/liberation-fonts-ttf-1.07.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 416 2015-04-19 01:43 ./slackware64/x/libevdev-1.4.1-x86_64-1.txt +-rw-r--r-- 1 root root 62196 2015-04-19 01:43 ./slackware64/x/libevdev-1.4.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-19 01:43 ./slackware64/x/libevdev-1.4.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 346 2015-08-20 06:54 ./slackware64/x/libfontenc-1.1.3-x86_64-1.txt +-rw-r--r-- 1 root root 27348 2015-08-20 06:54 ./slackware64/x/libfontenc-1.1.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libfontenc-1.1.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 384 2012-05-12 03:28 ./slackware64/x/libhangul-0.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 1866812 2012-05-12 03:28 ./slackware64/x/libhangul-0.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-05-12 03:28 ./slackware64/x/libhangul-0.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 377 2015-08-20 06:54 ./slackware64/x/libpciaccess-0.13.4-x86_64-1.txt +-rw-r--r-- 1 root root 34616 2015-08-20 06:54 ./slackware64/x/libpciaccess-0.13.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libpciaccess-0.13.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 400 2010-02-22 20:01 ./slackware64/x/libpthread-stubs-0.3-noarch-1.txt +-rw-r--r-- 1 root root 1904 2010-02-22 20:01 ./slackware64/x/libpthread-stubs-0.3-noarch-1.txz +-rw-r--r-- 1 root root 197 2010-02-22 20:01 ./slackware64/x/libpthread-stubs-0.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 437 2016-03-07 19:51 ./slackware64/x/libva-1.6.2-x86_64-1.txt +-rw-r--r-- 1 root root 419436 2016-03-07 19:51 ./slackware64/x/libva-1.6.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:51 ./slackware64/x/libva-1.6.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 468 2016-03-07 19:53 ./slackware64/x/libva-intel-driver-1.6.2-x86_64-1.txt +-rw-r--r-- 1 root root 263988 2016-03-07 19:53 ./slackware64/x/libva-intel-driver-1.6.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-07 19:53 ./slackware64/x/libva-intel-driver-1.6.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 500 2015-09-01 17:54 ./slackware64/x/libvdpau-1.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 54964 2015-09-01 17:54 ./slackware64/x/libvdpau-1.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-09-01 17:54 ./slackware64/x/libvdpau-1.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 446 2015-10-01 21:09 ./slackware64/x/libxcb-1.11.1-x86_64-1.txt +-rw-r--r-- 1 root root 884836 2015-10-01 21:09 ./slackware64/x/libxcb-1.11.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-01 21:09 ./slackware64/x/libxcb-1.11.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 363 2015-08-20 06:54 ./slackware64/x/libxkbfile-1.0.9-x86_64-1.txt +-rw-r--r-- 1 root root 80948 2015-08-20 06:54 ./slackware64/x/libxkbfile-1.0.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libxkbfile-1.0.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 384 2015-08-20 06:54 ./slackware64/x/libxshmfence-1.2-x86_64-2.txt +-rw-r--r-- 1 root root 7144 2015-08-20 06:54 ./slackware64/x/libxshmfence-1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:54 ./slackware64/x/libxshmfence-1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 249 2015-08-20 06:55 ./slackware64/x/listres-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 15988 2015-08-20 06:55 ./slackware64/x/listres-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:55 ./slackware64/x/listres-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 322 2015-08-20 06:47 ./slackware64/x/lndir-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 15112 2015-08-20 06:47 ./slackware64/x/lndir-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:47 ./slackware64/x/lndir-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 372 2015-08-20 06:56 ./slackware64/x/luit-1.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 31920 2015-08-20 06:56 ./slackware64/x/luit-1.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/luit-1.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 416 2010-08-12 22:44 ./slackware64/x/m17n-lib-1.6.1-x86_64-1.txt +-rw-r--r-- 1 root root 1144424 2010-08-12 22:44 ./slackware64/x/m17n-lib-1.6.1-x86_64-1.txz +-rw-r--r-- 1 root root 198 2010-08-12 22:44 ./slackware64/x/m17n-lib-1.6.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 357 2015-08-20 06:47 ./slackware64/x/makedepend-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 27956 2015-08-20 06:47 ./slackware64/x/makedepend-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:47 ./slackware64/x/makedepend-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 24079 2016-01-12 23:45 ./slackware64/x/maketag +-rw-r--r-- 1 root root 24079 2016-01-12 23:45 ./slackware64/x/maketag.ez +-rw-r--r-- 1 root root 335 2016-05-09 17:40 ./slackware64/x/mesa-11.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 8497520 2016-05-09 17:40 ./slackware64/x/mesa-11.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-09 17:40 ./slackware64/x/mesa-11.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 425 2015-08-20 06:56 ./slackware64/x/mkcomposecache-1.2.1-x86_64-2.txt +-rw-r--r-- 1 root root 9444 2015-08-20 06:56 ./slackware64/x/mkcomposecache-1.2.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/mkcomposecache-1.2.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 363 2012-05-04 03:56 ./slackware64/x/mkfontdir-1.0.7-noarch-1.txt +-rw-r--r-- 1 root root 14192 2012-05-04 03:56 ./slackware64/x/mkfontdir-1.0.7-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-05-04 03:56 ./slackware64/x/mkfontdir-1.0.7-noarch-1.txz.asc +-rw-r--r-- 1 root root 272 2015-08-20 06:56 ./slackware64/x/mkfontscale-1.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 31444 2015-08-20 06:56 ./slackware64/x/mkfontscale-1.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/mkfontscale-1.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 328 2016-04-21 19:16 ./slackware64/x/motif-2.3.5-x86_64-1.txt +-rw-r--r-- 1 root root 2523020 2016-04-21 19:16 ./slackware64/x/motif-2.3.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-21 19:16 ./slackware64/x/motif-2.3.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 587 2014-07-14 21:48 ./slackware64/x/mtdev-1.1.5-x86_64-1.txt +-rw-r--r-- 1 root root 21724 2014-07-14 21:48 ./slackware64/x/mtdev-1.1.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-07-14 21:48 ./slackware64/x/mtdev-1.1.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 222 2015-08-20 06:56 ./slackware64/x/oclock-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 19508 2015-08-20 06:56 ./slackware64/x/oclock-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/oclock-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 366 2016-02-09 20:34 ./slackware64/x/pixman-0.34.0-x86_64-1.txt +-rw-r--r-- 1 root root 237664 2016-02-09 20:34 ./slackware64/x/pixman-0.34.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-09 20:34 ./slackware64/x/pixman-0.34.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 268 2015-08-20 06:46 ./slackware64/x/presentproto-1.0-x86_64-2.txt +-rw-r--r-- 1 root root 13428 2015-08-20 06:46 ./slackware64/x/presentproto-1.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:46 ./slackware64/x/presentproto-1.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 322 2011-02-01 01:03 ./slackware64/x/printproto-1.0.5-noarch-1.txt +-rw-r--r-- 1 root root 18220 2011-02-01 01:03 ./slackware64/x/printproto-1.0.5-noarch-1.txz +-rw-r--r-- 1 root root 198 2011-02-01 01:03 ./slackware64/x/printproto-1.0.5-noarch-1.txz.asc +-rw-r--r-- 1 root root 213 2015-08-20 06:46 ./slackware64/x/randrproto-1.5.0-noarch-1.txt +-rw-r--r-- 1 root root 42264 2015-08-20 06:46 ./slackware64/x/randrproto-1.5.0-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:46 ./slackware64/x/randrproto-1.5.0-noarch-1.txz.asc +-rw-r--r-- 1 root root 373 2012-05-04 03:45 ./slackware64/x/recordproto-1.14.2-noarch-1.txt +-rw-r--r-- 1 root root 30568 2012-05-04 03:45 ./slackware64/x/recordproto-1.14.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-05-04 03:45 ./slackware64/x/recordproto-1.14.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 298 2015-08-20 06:56 ./slackware64/x/rendercheck-1.5-x86_64-1.txt +-rw-r--r-- 1 root root 39796 2015-08-20 06:56 ./slackware64/x/rendercheck-1.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/rendercheck-1.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 335 2010-11-13 18:47 ./slackware64/x/renderproto-0.11.1-noarch-1.txt +-rw-r--r-- 1 root root 21004 2010-11-13 18:47 ./slackware64/x/renderproto-0.11.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-13 18:47 ./slackware64/x/renderproto-0.11.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 401 2012-05-04 03:45 ./slackware64/x/resourceproto-1.2.0-noarch-1.txt +-rw-r--r-- 1 root root 15328 2012-05-04 03:45 ./slackware64/x/resourceproto-1.2.0-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-05-04 03:45 ./slackware64/x/resourceproto-1.2.0-noarch-1.txz.asc +-rw-r--r-- 1 root root 255 2015-08-20 06:56 ./slackware64/x/rgb-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 21088 2015-08-20 06:56 ./slackware64/x/rgb-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/rgb-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 403 2008-11-06 16:24 ./slackware64/x/sazanami-fonts-ttf-20040629-noarch-1.txt +-rw-r--r-- 1 root root 5974804 2008-11-06 16:24 ./slackware64/x/sazanami-fonts-ttf-20040629-noarch-1.txz +-rw-r--r-- 1 root root 197 2008-11-06 16:24 ./slackware64/x/sazanami-fonts-ttf-20040629-noarch-1.txz.asc +-rw-r--r-- 1 root root 330 2015-10-15 20:30 ./slackware64/x/scim-1.4.15-x86_64-2.txt +-rw-r--r-- 1 root root 1127852 2015-10-15 20:30 ./slackware64/x/scim-1.4.15-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:30 ./slackware64/x/scim-1.4.15-x86_64-2.txz.asc +-rw-r--r-- 1 root root 508 2015-10-15 20:36 ./slackware64/x/scim-anthy-1.2.7-x86_64-1.txt +-rw-r--r-- 1 root root 275636 2015-10-15 20:36 ./slackware64/x/scim-anthy-1.2.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:36 ./slackware64/x/scim-anthy-1.2.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 611 2015-10-15 20:37 ./slackware64/x/scim-hangul-0.4.0-x86_64-1.txt +-rw-r--r-- 1 root root 44300 2015-10-15 20:37 ./slackware64/x/scim-hangul-0.4.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:37 ./slackware64/x/scim-hangul-0.4.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 356 2015-10-15 20:38 ./slackware64/x/scim-input-pad-0.1.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 67152 2015-10-15 20:38 ./slackware64/x/scim-input-pad-0.1.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:38 ./slackware64/x/scim-input-pad-0.1.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 402 2009-04-20 14:18 ./slackware64/x/scim-m17n-0.2.3-x86_64-1.txt +-rw-r--r-- 1 root root 32356 2009-04-20 14:18 ./slackware64/x/scim-m17n-0.2.3-x86_64-1.txz +-rw-r--r-- 1 root root 197 2009-04-20 14:18 ./slackware64/x/scim-m17n-0.2.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 386 2015-10-15 20:39 ./slackware64/x/scim-pinyin-0.5.92-x86_64-1.txt +-rw-r--r-- 1 root root 1672796 2015-10-15 20:39 ./slackware64/x/scim-pinyin-0.5.92-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-15 20:39 ./slackware64/x/scim-pinyin-0.5.92-x86_64-1.txz.asc +-rw-r--r-- 1 root root 289 2015-10-27 17:35 ./slackware64/x/scim-tables-0.5.14.1-x86_64-1.txt +-rw-r--r-- 1 root root 4323836 2015-10-27 17:35 ./slackware64/x/scim-tables-0.5.14.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-27 17:35 ./slackware64/x/scim-tables-0.5.14.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 424 2012-05-04 03:46 ./slackware64/x/scrnsaverproto-1.2.2-noarch-1.txt +-rw-r--r-- 1 root root 26140 2012-05-04 03:46 ./slackware64/x/scrnsaverproto-1.2.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-05-04 03:46 ./slackware64/x/scrnsaverproto-1.2.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 292 2015-08-20 06:56 ./slackware64/x/sessreg-1.1.0-x86_64-2.txt +-rw-r--r-- 1 root root 22476 2015-08-20 06:56 ./slackware64/x/sessreg-1.1.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/sessreg-1.1.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 338 2015-08-20 06:56 ./slackware64/x/setxkbmap-1.3.1-x86_64-1.txt +-rw-r--r-- 1 root root 27144 2015-08-20 06:56 ./slackware64/x/setxkbmap-1.3.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/setxkbmap-1.3.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 278 2015-08-20 06:56 ./slackware64/x/showfont-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 18688 2015-08-20 06:56 ./slackware64/x/showfont-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/showfont-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 473 2008-11-06 18:22 ./slackware64/x/sinhala_lklug-font-ttf-20060929-noarch-1.txt +-rw-r--r-- 1 root root 67728 2008-11-06 18:22 ./slackware64/x/sinhala_lklug-font-ttf-20060929-noarch-1.txz +-rw-r--r-- 1 root root 197 2008-11-06 18:22 ./slackware64/x/sinhala_lklug-font-ttf-20060929-noarch-1.txz.asc +-rw-r--r-- 1 root root 249 2015-08-20 06:56 ./slackware64/x/smproxy-1.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 22424 2015-08-20 06:56 ./slackware64/x/smproxy-1.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/smproxy-1.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 4850 2016-01-12 23:45 ./slackware64/x/tagfile +-rw-r--r-- 1 root root 561 2010-11-05 00:29 ./slackware64/x/tibmachuni-font-ttf-1.901b-noarch-1.txt +-rw-r--r-- 1 root root 864912 2010-11-05 00:29 ./slackware64/x/tibmachuni-font-ttf-1.901b-noarch-1.txz +-rw-r--r-- 1 root root 198 2010-11-05 00:29 ./slackware64/x/tibmachuni-font-ttf-1.901b-noarch-1.txz.asc +-rw-r--r-- 1 root root 425 2015-08-20 06:56 ./slackware64/x/transset-1.0.1-x86_64-2.txt +-rw-r--r-- 1 root root 17460 2015-08-20 06:56 ./slackware64/x/transset-1.0.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/transset-1.0.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 621 2013-02-21 21:13 ./slackware64/x/ttf-indic-fonts-0.5.14-noarch-1.txt +-rw-r--r-- 1 root root 2974900 2013-02-21 21:13 ./slackware64/x/ttf-indic-fonts-0.5.14-noarch-1.txz +-rw-r--r-- 1 root root 198 2013-02-21 21:13 ./slackware64/x/ttf-indic-fonts-0.5.14-noarch-1.txz.asc +-rw-r--r-- 1 root root 276 2015-08-20 06:56 ./slackware64/x/twm-1.0.9-x86_64-1.txt +-rw-r--r-- 1 root root 110996 2015-08-20 06:56 ./slackware64/x/twm-1.0.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/twm-1.0.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 361 2014-07-15 02:11 ./slackware64/x/util-macros-1.19.0-noarch-1.txt +-rw-r--r-- 1 root root 30660 2014-07-15 02:11 ./slackware64/x/util-macros-1.19.0-noarch-1.txz +-rw-r--r-- 1 root root 181 2014-07-15 02:11 ./slackware64/x/util-macros-1.19.0-noarch-1.txz.asc +-rw-r--r-- 1 root root 359 2016-03-13 18:33 ./slackware64/x/videoproto-2.3.3-noarch-1.txt +-rw-r--r-- 1 root root 22344 2016-03-13 18:33 ./slackware64/x/videoproto-2.3.3-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-13 18:33 ./slackware64/x/videoproto-2.3.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 338 2015-08-20 06:56 ./slackware64/x/viewres-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 23648 2015-08-20 06:56 ./slackware64/x/viewres-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/viewres-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 686 2013-05-21 06:26 ./slackware64/x/wqy-zenhei-font-ttf-0.8.38_1-noarch-2.txt +-rw-r--r-- 1 root root 5752352 2013-05-21 06:26 ./slackware64/x/wqy-zenhei-font-ttf-0.8.38_1-noarch-2.txz +-rw-r--r-- 1 root root 198 2013-05-21 06:26 ./slackware64/x/wqy-zenhei-font-ttf-0.8.38_1-noarch-2.txz.asc +-rw-r--r-- 1 root root 607 2012-08-09 05:46 ./slackware64/x/x11-skel-7.7-x86_64-1.txt +-rw-r--r-- 1 root root 12296 2012-08-09 05:46 ./slackware64/x/x11-skel-7.7-x86_64-1.txz +-rw-r--r-- 1 root root 198 2012-08-09 05:46 ./slackware64/x/x11-skel-7.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 321 2015-08-20 06:56 ./slackware64/x/x11perf-1.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 71736 2015-08-20 06:56 ./slackware64/x/x11perf-1.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/x11perf-1.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 223 2015-08-20 06:56 ./slackware64/x/xauth-1.0.9-x86_64-2.txt +-rw-r--r-- 1 root root 36540 2015-08-20 06:56 ./slackware64/x/xauth-1.0.9-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/xauth-1.0.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 335 2015-08-20 06:56 ./slackware64/x/xbacklight-1.2.1-x86_64-2.txt +-rw-r--r-- 1 root root 14344 2015-08-20 06:56 ./slackware64/x/xbacklight-1.2.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:56 ./slackware64/x/xbacklight-1.2.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 270 2015-08-20 06:57 ./slackware64/x/xbiff-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 19380 2015-08-20 06:57 ./slackware64/x/xbiff-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xbiff-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 327 2015-08-20 06:47 ./slackware64/x/xbitmaps-1.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 26220 2015-08-20 06:47 ./slackware64/x/xbitmaps-1.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:47 ./slackware64/x/xbitmaps-1.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 183 2015-08-20 06:57 ./slackware64/x/xcalc-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 34340 2015-08-20 06:57 ./slackware64/x/xcalc-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xcalc-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 462 2015-08-20 06:48 ./slackware64/x/xcb-proto-1.11-x86_64-2.txt +-rw-r--r-- 1 root root 92744 2015-08-20 06:48 ./slackware64/x/xcb-proto-1.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-proto-1.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 350 2015-08-20 06:48 ./slackware64/x/xcb-util-0.4.0-x86_64-2.txt +-rw-r--r-- 1 root root 25388 2015-08-20 06:48 ./slackware64/x/xcb-util-0.4.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-0.4.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 342 2015-08-20 06:48 ./slackware64/x/xcb-util-cursor-0.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 20360 2015-08-20 06:48 ./slackware64/x/xcb-util-cursor-0.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-cursor-0.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 545 2015-08-20 06:48 ./slackware64/x/xcb-util-errors-1.0-x86_64-1.txt +-rw-r--r-- 1 root root 20552 2015-08-20 06:48 ./slackware64/x/xcb-util-errors-1.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-errors-1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 313 2015-08-20 06:48 ./slackware64/x/xcb-util-image-0.4.0-x86_64-2.txt +-rw-r--r-- 1 root root 31048 2015-08-20 06:48 ./slackware64/x/xcb-util-image-0.4.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-image-0.4.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 360 2015-08-20 06:48 ./slackware64/x/xcb-util-keysyms-0.4.0-x86_64-2.txt +-rw-r--r-- 1 root root 17516 2015-08-20 06:48 ./slackware64/x/xcb-util-keysyms-0.4.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-keysyms-0.4.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 401 2015-08-20 06:48 ./slackware64/x/xcb-util-renderutil-0.3.9-x86_64-2.txt +-rw-r--r-- 1 root root 20336 2015-08-20 06:48 ./slackware64/x/xcb-util-renderutil-0.3.9-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-renderutil-0.3.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 312 2015-08-20 06:48 ./slackware64/x/xcb-util-wm-0.4.1-x86_64-2.txt +-rw-r--r-- 1 root root 42856 2015-08-20 06:48 ./slackware64/x/xcb-util-wm-0.4.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xcb-util-wm-0.4.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 429 2015-08-20 06:57 ./slackware64/x/xclipboard-1.1.3-x86_64-2.txt +-rw-r--r-- 1 root root 26788 2015-08-20 06:57 ./slackware64/x/xclipboard-1.1.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xclipboard-1.1.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 291 2015-08-20 06:57 ./slackware64/x/xclock-1.0.7-x86_64-2.txt +-rw-r--r-- 1 root root 38584 2015-08-20 06:57 ./slackware64/x/xclock-1.0.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xclock-1.0.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 292 2015-08-20 06:57 ./slackware64/x/xcm-0.5.2-x86_64-2.txt +-rw-r--r-- 1 root root 16468 2015-08-20 06:57 ./slackware64/x/xcm-0.5.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xcm-0.5.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 376 2012-05-04 03:46 ./slackware64/x/xcmiscproto-1.2.2-noarch-1.txt +-rw-r--r-- 1 root root 17428 2012-05-04 03:46 ./slackware64/x/xcmiscproto-1.2.2-noarch-1.txz +-rw-r--r-- 1 root root 198 2012-05-04 03:46 ./slackware64/x/xcmiscproto-1.2.2-noarch-1.txz.asc +-rw-r--r-- 1 root root 367 2015-08-20 06:57 ./slackware64/x/xcmsdb-1.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 26224 2015-08-20 06:57 ./slackware64/x/xcmsdb-1.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xcmsdb-1.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 302 2015-08-20 06:57 ./slackware64/x/xcompmgr-1.1.7-x86_64-1.txt +-rw-r--r-- 1 root root 29412 2015-08-20 06:57 ./slackware64/x/xcompmgr-1.1.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xcompmgr-1.1.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 219 2015-08-20 06:57 ./slackware64/x/xconsole-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 22028 2015-08-20 06:57 ./slackware64/x/xconsole-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xconsole-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 379 2013-08-02 23:56 ./slackware64/x/xcursor-themes-1.0.4-noarch-1.txt +-rw-r--r-- 1 root root 321284 2013-08-02 23:56 ./slackware64/x/xcursor-themes-1.0.4-noarch-1.txz +-rw-r--r-- 1 root root 198 2013-08-02 23:56 ./slackware64/x/xcursor-themes-1.0.4-noarch-1.txz.asc +-rw-r--r-- 1 root root 373 2015-08-20 06:57 ./slackware64/x/xcursorgen-1.0.6-x86_64-3.txt +-rw-r--r-- 1 root root 18716 2015-08-20 06:57 ./slackware64/x/xcursorgen-1.0.6-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xcursorgen-1.0.6-x86_64-3.txz.asc +-rw-r--r-- 1 root root 254 2015-08-20 06:57 ./slackware64/x/xdbedizzy-1.1.0-x86_64-2.txt +-rw-r--r-- 1 root root 17712 2015-08-20 06:57 ./slackware64/x/xdbedizzy-1.1.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xdbedizzy-1.1.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 476 2014-07-14 21:51 ./slackware64/x/xdg-user-dirs-0.15-x86_64-1.txt +-rw-r--r-- 1 root root 45076 2014-07-14 21:51 ./slackware64/x/xdg-user-dirs-0.15-x86_64-1.txz +-rw-r--r-- 1 root root 181 2014-07-14 21:51 ./slackware64/x/xdg-user-dirs-0.15-x86_64-1.txz.asc +-rw-r--r-- 1 root root 550 2015-10-31 17:19 ./slackware64/x/xdg-utils-1.1.1-noarch-1.txt +-rw-r--r-- 1 root root 62476 2015-10-31 17:19 ./slackware64/x/xdg-utils-1.1.1-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-10-31 17:19 ./slackware64/x/xdg-utils-1.1.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 338 2015-08-20 06:57 ./slackware64/x/xditview-1.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 33688 2015-08-20 06:57 ./slackware64/x/xditview-1.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xditview-1.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 253 2015-08-20 06:57 ./slackware64/x/xdm-1.1.11-x86_64-6.txt +-rw-r--r-- 1 root root 116460 2015-08-20 06:57 ./slackware64/x/xdm-1.1.11-x86_64-6.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xdm-1.1.11-x86_64-6.txz.asc +-rw-r--r-- 1 root root 351 2015-08-20 06:57 ./slackware64/x/xdpyinfo-1.3.2-x86_64-1.txt +-rw-r--r-- 1 root root 31864 2015-08-20 06:57 ./slackware64/x/xdpyinfo-1.3.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xdpyinfo-1.3.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 349 2015-08-20 06:57 ./slackware64/x/xdriinfo-1.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 14788 2015-08-20 06:57 ./slackware64/x/xdriinfo-1.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xdriinfo-1.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 284 2015-08-20 06:57 ./slackware64/x/xedit-1.2.2-x86_64-2.txt +-rw-r--r-- 1 root root 314068 2015-08-20 06:57 ./slackware64/x/xedit-1.2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xedit-1.2.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 495 2015-08-20 06:57 ./slackware64/x/xev-1.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 25752 2015-08-20 06:57 ./slackware64/x/xev-1.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xev-1.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 350 2015-08-20 06:46 ./slackware64/x/xextproto-7.3.0-x86_64-2.txt +-rw-r--r-- 1 root root 182200 2015-08-20 06:46 ./slackware64/x/xextproto-7.3.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:46 ./slackware64/x/xextproto-7.3.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 314 2015-08-20 06:57 ./slackware64/x/xeyes-1.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 19484 2015-08-20 06:57 ./slackware64/x/xeyes-1.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xeyes-1.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 463 2015-11-12 21:17 ./slackware64/x/xf86-input-acecad-1.5.0-x86_64-9.txt +-rw-r--r-- 1 root root 24852 2015-11-12 21:17 ./slackware64/x/xf86-input-acecad-1.5.0-x86_64-9.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:17 ./slackware64/x/xf86-input-acecad-1.5.0-x86_64-9.txz.asc +-rw-r--r-- 1 root root 451 2016-06-04 17:36 ./slackware64/x/xf86-input-evdev-2.10.3-x86_64-1.txt +-rw-r--r-- 1 root root 46124 2016-06-04 17:36 ./slackware64/x/xf86-input-evdev-2.10.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-04 17:36 ./slackware64/x/xf86-input-evdev-2.10.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 485 2015-11-12 21:18 ./slackware64/x/xf86-input-joystick-1.6.1-x86_64-9.txt +-rw-r--r-- 1 root root 34948 2015-11-12 21:18 ./slackware64/x/xf86-input-joystick-1.6.1-x86_64-9.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-input-joystick-1.6.1-x86_64-9.txz.asc +-rw-r--r-- 1 root root 476 2015-11-12 21:18 ./slackware64/x/xf86-input-keyboard-1.8.1-x86_64-2.txt +-rw-r--r-- 1 root root 26216 2015-11-12 21:18 ./slackware64/x/xf86-input-keyboard-1.8.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-input-keyboard-1.8.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 429 2015-11-12 21:18 ./slackware64/x/xf86-input-mouse-1.9.1-x86_64-4.txt +-rw-r--r-- 1 root root 49736 2015-11-12 21:18 ./slackware64/x/xf86-input-mouse-1.9.1-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-input-mouse-1.9.1-x86_64-4.txz.asc +-rw-r--r-- 1 root root 485 2015-11-12 21:18 ./slackware64/x/xf86-input-penmount-1.5.0-x86_64-9.txt +-rw-r--r-- 1 root root 18084 2015-11-12 21:18 ./slackware64/x/xf86-input-penmount-1.5.0-x86_64-9.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-input-penmount-1.5.0-x86_64-9.txz.asc +-rw-r--r-- 1 root root 490 2015-11-12 21:18 ./slackware64/x/xf86-input-synaptics-1.8.3-x86_64-2.txt +-rw-r--r-- 1 root root 70552 2015-11-12 21:18 ./slackware64/x/xf86-input-synaptics-1.8.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-input-synaptics-1.8.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 476 2016-01-16 20:12 ./slackware64/x/xf86-input-vmmouse-13.1.0-x86_64-4.txt +-rw-r--r-- 1 root root 27536 2016-01-16 20:12 ./slackware64/x/xf86-input-vmmouse-13.1.0-x86_64-4.txz +-rw-r--r-- 1 root root 181 2016-01-16 20:12 ./slackware64/x/xf86-input-vmmouse-13.1.0-x86_64-4.txz.asc +-rw-r--r-- 1 root root 423 2015-11-12 21:18 ./slackware64/x/xf86-input-void-1.4.0-x86_64-9.txt +-rw-r--r-- 1 root root 16164 2015-11-12 21:18 ./slackware64/x/xf86-input-void-1.4.0-x86_64-9.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-input-void-1.4.0-x86_64-9.txz.asc +-rw-r--r-- 1 root root 533 2016-05-25 21:18 ./slackware64/x/xf86-input-wacom-0.33.0-x86_64-1.txt +-rw-r--r-- 1 root root 99420 2016-05-25 21:18 ./slackware64/x/xf86-input-wacom-0.33.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-25 21:18 ./slackware64/x/xf86-input-wacom-0.33.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 452 2016-04-09 04:07 ./slackware64/x/xf86-video-amdgpu-1.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 66436 2016-04-09 04:07 ./slackware64/x/xf86-video-amdgpu-1.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-09 04:07 ./slackware64/x/xf86-video-amdgpu-1.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 424 2015-11-12 21:18 ./slackware64/x/xf86-video-apm-1.2.5-x86_64-8.txt +-rw-r--r-- 1 root root 32828 2015-11-12 21:18 ./slackware64/x/xf86-video-apm-1.2.5-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:18 ./slackware64/x/xf86-video-apm-1.2.5-x86_64-8.txz.asc +-rw-r--r-- 1 root root 417 2015-11-12 21:19 ./slackware64/x/xf86-video-ark-0.7.5-x86_64-8.txt +-rw-r--r-- 1 root root 20468 2015-11-12 21:19 ./slackware64/x/xf86-video-ark-0.7.5-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:19 ./slackware64/x/xf86-video-ark-0.7.5-x86_64-8.txz.asc +-rw-r--r-- 1 root root 430 2015-11-12 21:19 ./slackware64/x/xf86-video-ast-1.1.5-x86_64-2.txt +-rw-r--r-- 1 root root 51248 2015-11-12 21:19 ./slackware64/x/xf86-video-ast-1.1.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:19 ./slackware64/x/xf86-video-ast-1.1.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 422 2016-04-09 04:07 ./slackware64/x/xf86-video-ati-7.7.0-x86_64-1.txt +-rw-r--r-- 1 root root 152652 2016-04-09 04:07 ./slackware64/x/xf86-video-ati-7.7.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-09 04:07 ./slackware64/x/xf86-video-ati-7.7.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 447 2015-11-12 21:19 ./slackware64/x/xf86-video-chips-1.2.6-x86_64-2.txt +-rw-r--r-- 1 root root 75812 2015-11-12 21:19 ./slackware64/x/xf86-video-chips-1.2.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:19 ./slackware64/x/xf86-video-chips-1.2.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 463 2015-11-12 21:19 ./slackware64/x/xf86-video-cirrus-1.5.3-x86_64-2.txt +-rw-r--r-- 1 root root 42788 2015-11-12 21:19 ./slackware64/x/xf86-video-cirrus-1.5.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:19 ./slackware64/x/xf86-video-cirrus-1.5.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 452 2015-11-12 21:19 ./slackware64/x/xf86-video-dummy-0.3.7-x86_64-5.txt +-rw-r--r-- 1 root root 14988 2015-11-12 21:19 ./slackware64/x/xf86-video-dummy-0.3.7-x86_64-5.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:19 ./slackware64/x/xf86-video-dummy-0.3.7-x86_64-5.txz.asc +-rw-r--r-- 1 root root 452 2015-11-12 21:19 ./slackware64/x/xf86-video-glint-1.2.8-x86_64-8.txt +-rw-r--r-- 1 root root 65680 2015-11-12 21:19 ./slackware64/x/xf86-video-glint-1.2.8-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:19 ./slackware64/x/xf86-video-glint-1.2.8-x86_64-8.txz.asc +-rw-r--r-- 1 root root 441 2015-11-12 21:20 ./slackware64/x/xf86-video-i128-1.3.6-x86_64-8.txt +-rw-r--r-- 1 root root 34848 2015-11-12 21:20 ./slackware64/x/xf86-video-i128-1.3.6-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:20 ./slackware64/x/xf86-video-i128-1.3.6-x86_64-8.txz.asc +-rw-r--r-- 1 root root 435 2015-11-12 21:20 ./slackware64/x/xf86-video-i740-1.3.5-x86_64-3.txt +-rw-r--r-- 1 root root 35156 2015-11-12 21:20 ./slackware64/x/xf86-video-i740-1.3.5-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:20 ./slackware64/x/xf86-video-i740-1.3.5-x86_64-3.txz.asc +-rw-r--r-- 1 root root 443 2016-06-09 07:21 ./slackware64/x/xf86-video-intel-git_20160601_b617f80-x86_64-1.txt +-rw-r--r-- 1 root root 671384 2016-06-09 07:21 ./slackware64/x/xf86-video-intel-git_20160601_b617f80-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-09 07:21 ./slackware64/x/xf86-video-intel-git_20160601_b617f80-x86_64-1.txz.asc +-rw-r--r-- 1 root root 455 2015-11-12 21:20 ./slackware64/x/xf86-video-mach64-6.9.5-x86_64-2.txt +-rw-r--r-- 1 root root 82440 2015-11-12 21:20 ./slackware64/x/xf86-video-mach64-6.9.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:20 ./slackware64/x/xf86-video-mach64-6.9.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 418 2015-11-12 21:21 ./slackware64/x/xf86-video-mga-1.6.4-x86_64-3.txt +-rw-r--r-- 1 root root 70912 2015-11-12 21:21 ./slackware64/x/xf86-video-mga-1.6.4-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:21 ./slackware64/x/xf86-video-mga-1.6.4-x86_64-3.txz.asc +-rw-r--r-- 1 root root 485 2015-11-12 21:21 ./slackware64/x/xf86-video-neomagic-1.2.9-x86_64-2.txt +-rw-r--r-- 1 root root 44384 2015-11-12 21:21 ./slackware64/x/xf86-video-neomagic-1.2.9-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:21 ./slackware64/x/xf86-video-neomagic-1.2.9-x86_64-2.txz.asc +-rw-r--r-- 1 root root 476 2015-12-16 03:38 ./slackware64/x/xf86-video-nouveau-1.0.12-x86_64-1.txt +-rw-r--r-- 1 root root 95912 2015-12-16 03:38 ./slackware64/x/xf86-video-nouveau-1.0.12-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-12-16 03:38 ./slackware64/x/xf86-video-nouveau-1.0.12-x86_64-1.txz.asc +-rw-r--r-- 1 root root 409 2015-11-12 21:21 ./slackware64/x/xf86-video-nv-2.1.20-x86_64-9.txt +-rw-r--r-- 1 root root 80036 2015-11-12 21:21 ./slackware64/x/xf86-video-nv-2.1.20-x86_64-9.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:21 ./slackware64/x/xf86-video-nv-2.1.20-x86_64-9.txz.asc +-rw-r--r-- 1 root root 506 2016-04-13 17:25 ./slackware64/x/xf86-video-openchrome-0.4.0-x86_64-1.txt +-rw-r--r-- 1 root root 133544 2016-04-13 17:25 ./slackware64/x/xf86-video-openchrome-0.4.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-13 17:25 ./slackware64/x/xf86-video-openchrome-0.4.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 437 2016-02-09 20:36 ./slackware64/x/xf86-video-r128-6.10.1-x86_64-1.txt +-rw-r--r-- 1 root root 62252 2016-02-09 20:36 ./slackware64/x/xf86-video-r128-6.10.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-09 20:36 ./slackware64/x/xf86-video-r128-6.10.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 499 2015-11-12 21:21 ./slackware64/x/xf86-video-rendition-4.2.6-x86_64-1.txt +-rw-r--r-- 1 root root 49772 2015-11-12 21:21 ./slackware64/x/xf86-video-rendition-4.2.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:21 ./slackware64/x/xf86-video-rendition-4.2.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 418 2015-11-12 21:21 ./slackware64/x/xf86-video-s3-0.6.5-x86_64-8.txt +-rw-r--r-- 1 root root 40772 2015-11-12 21:21 ./slackware64/x/xf86-video-s3-0.6.5-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:21 ./slackware64/x/xf86-video-s3-0.6.5-x86_64-8.txz.asc +-rw-r--r-- 1 root root 472 2015-11-12 21:22 ./slackware64/x/xf86-video-s3virge-1.10.7-x86_64-2.txt +-rw-r--r-- 1 root root 51740 2015-11-12 21:22 ./slackware64/x/xf86-video-s3virge-1.10.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-s3virge-1.10.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 460 2015-11-12 21:22 ./slackware64/x/xf86-video-savage-2.3.8-x86_64-2.txt +-rw-r--r-- 1 root root 74824 2015-11-12 21:22 ./slackware64/x/xf86-video-savage-2.3.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-savage-2.3.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 543 2015-11-12 21:22 ./slackware64/x/xf86-video-siliconmotion-1.7.8-x86_64-2.txt +-rw-r--r-- 1 root root 63076 2015-11-12 21:22 ./slackware64/x/xf86-video-siliconmotion-1.7.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-siliconmotion-1.7.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 423 2015-11-12 21:22 ./slackware64/x/xf86-video-sis-0.10.8-x86_64-2.txt +-rw-r--r-- 1 root root 243860 2015-11-12 21:22 ./slackware64/x/xf86-video-sis-0.10.8-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-sis-0.10.8-x86_64-2.txz.asc +-rw-r--r-- 1 root root 459 2015-11-12 21:22 ./slackware64/x/xf86-video-sisusb-0.9.6-x86_64-8.txt +-rw-r--r-- 1 root root 48116 2015-11-12 21:22 ./slackware64/x/xf86-video-sisusb-0.9.6-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-sisusb-0.9.6-x86_64-8.txz.asc +-rw-r--r-- 1 root root 429 2015-11-12 21:22 ./slackware64/x/xf86-video-tdfx-1.4.6-x86_64-3.txt +-rw-r--r-- 1 root root 43488 2015-11-12 21:22 ./slackware64/x/xf86-video-tdfx-1.4.6-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-tdfx-1.4.6-x86_64-3.txz.asc +-rw-r--r-- 1 root root 424 2015-11-12 21:22 ./slackware64/x/xf86-video-tga-1.2.2-x86_64-8.txt +-rw-r--r-- 1 root root 25188 2015-11-12 21:22 ./slackware64/x/xf86-video-tga-1.2.2-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-tga-1.2.2-x86_64-8.txz.asc +-rw-r--r-- 1 root root 471 2015-11-12 21:22 ./slackware64/x/xf86-video-trident-1.3.7-x86_64-3.txt +-rw-r--r-- 1 root root 67868 2015-11-12 21:22 ./slackware64/x/xf86-video-trident-1.3.7-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:22 ./slackware64/x/xf86-video-trident-1.3.7-x86_64-3.txz.asc +-rw-r--r-- 1 root root 448 2015-11-12 21:23 ./slackware64/x/xf86-video-tseng-1.2.5-x86_64-8.txt +-rw-r--r-- 1 root root 31156 2015-11-12 21:23 ./slackware64/x/xf86-video-tseng-1.2.5-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:23 ./slackware64/x/xf86-video-tseng-1.2.5-x86_64-8.txz.asc +-rw-r--r-- 1 root root 411 2015-11-12 21:23 ./slackware64/x/xf86-video-v4l-0.2.0-x86_64-13.txt +-rw-r--r-- 1 root root 12260 2015-11-12 21:23 ./slackware64/x/xf86-video-v4l-0.2.0-x86_64-13.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:23 ./slackware64/x/xf86-video-v4l-0.2.0-x86_64-13.txz.asc +-rw-r--r-- 1 root root 437 2015-11-12 21:23 ./slackware64/x/xf86-video-vesa-2.3.4-x86_64-2.txt +-rw-r--r-- 1 root root 28584 2015-11-12 21:23 ./slackware64/x/xf86-video-vesa-2.3.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:23 ./slackware64/x/xf86-video-vesa-2.3.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 462 2016-03-09 00:43 ./slackware64/x/xf86-video-vmware-13.1.0-x86_64-7.txt +-rw-r--r-- 1 root root 72804 2016-03-09 00:43 ./slackware64/x/xf86-video-vmware-13.1.0-x86_64-7.txz +-rw-r--r-- 1 root root 181 2016-03-09 00:43 ./slackware64/x/xf86-video-vmware-13.1.0-x86_64-7.txz.asc +-rw-r--r-- 1 root root 457 2015-11-12 21:23 ./slackware64/x/xf86-video-voodoo-1.2.5-x86_64-9.txt +-rw-r--r-- 1 root root 24424 2015-11-12 21:23 ./slackware64/x/xf86-video-voodoo-1.2.5-x86_64-9.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:23 ./slackware64/x/xf86-video-voodoo-1.2.5-x86_64-9.txz.asc +-rw-r--r-- 1 root root 415 2015-11-12 21:23 ./slackware64/x/xf86-video-xgi-1.6.1-x86_64-2.txt +-rw-r--r-- 1 root root 118228 2015-11-12 21:23 ./slackware64/x/xf86-video-xgi-1.6.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:23 ./slackware64/x/xf86-video-xgi-1.6.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 435 2015-11-12 21:23 ./slackware64/x/xf86-video-xgixp-1.8.1-x86_64-8.txt +-rw-r--r-- 1 root root 62228 2015-11-12 21:23 ./slackware64/x/xf86-video-xgixp-1.8.1-x86_64-8.txz +-rw-r--r-- 1 root root 181 2015-11-12 21:23 ./slackware64/x/xf86-video-xgixp-1.8.1-x86_64-8.txz.asc +-rw-r--r-- 1 root root 400 2010-02-22 20:00 ./slackware64/x/xf86bigfontproto-1.2.0-noarch-1.txt +-rw-r--r-- 1 root root 4792 2010-02-22 20:00 ./slackware64/x/xf86bigfontproto-1.2.0-noarch-1.txz +-rw-r--r-- 1 root root 197 2010-02-22 20:00 ./slackware64/x/xf86bigfontproto-1.2.0-noarch-1.txz.asc +-rw-r--r-- 1 root root 334 2015-08-20 06:57 ./slackware64/x/xf86dga-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 13596 2015-08-20 06:57 ./slackware64/x/xf86dga-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:57 ./slackware64/x/xf86dga-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 348 2010-02-22 20:00 ./slackware64/x/xf86dgaproto-2.1-noarch-1.txt +-rw-r--r-- 1 root root 7428 2010-02-22 20:00 ./slackware64/x/xf86dgaproto-2.1-noarch-1.txz +-rw-r--r-- 1 root root 197 2010-02-22 20:00 ./slackware64/x/xf86dgaproto-2.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 348 2011-02-01 01:03 ./slackware64/x/xf86driproto-2.1.1-noarch-1.txt +-rw-r--r-- 1 root root 10904 2011-02-01 01:03 ./slackware64/x/xf86driproto-2.1.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2011-02-01 01:03 ./slackware64/x/xf86driproto-2.1.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 361 2010-02-22 20:00 ./slackware64/x/xf86miscproto-0.9.3-noarch-1.txt +-rw-r--r-- 1 root root 6148 2010-02-22 20:00 ./slackware64/x/xf86miscproto-0.9.3-noarch-1.txz +-rw-r--r-- 1 root root 197 2010-02-22 20:00 ./slackware64/x/xf86miscproto-0.9.3-noarch-1.txz.asc +-rw-r--r-- 1 root root 400 2011-02-01 01:03 ./slackware64/x/xf86vidmodeproto-2.3.1-noarch-1.txt +-rw-r--r-- 1 root root 11304 2011-02-01 01:03 ./slackware64/x/xf86vidmodeproto-2.3.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2011-02-01 01:03 ./slackware64/x/xf86vidmodeproto-2.3.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 167 2015-08-20 06:58 ./slackware64/x/xfd-1.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 26888 2015-08-20 06:58 ./slackware64/x/xfd-1.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xfd-1.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 345 2015-08-20 06:58 ./slackware64/x/xfontsel-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 32296 2015-08-20 06:58 ./slackware64/x/xfontsel-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xfontsel-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 253 2015-08-20 06:58 ./slackware64/x/xfs-1.1.4-x86_64-2.txt +-rw-r--r-- 1 root root 70896 2015-08-20 06:58 ./slackware64/x/xfs-1.1.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xfs-1.1.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 422 2015-08-20 06:58 ./slackware64/x/xfsinfo-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 16968 2015-08-20 06:58 ./slackware64/x/xfsinfo-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xfsinfo-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 249 2015-08-20 06:58 ./slackware64/x/xgamma-1.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 17884 2015-08-20 06:58 ./slackware64/x/xgamma-1.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xgamma-1.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 179 2015-08-20 06:58 ./slackware64/x/xgc-1.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 40592 2015-08-20 06:58 ./slackware64/x/xgc-1.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xgc-1.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 217 2015-08-20 06:58 ./slackware64/x/xhost-1.0.7-x86_64-1.txt +-rw-r--r-- 1 root root 24928 2015-08-20 06:58 ./slackware64/x/xhost-1.0.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xhost-1.0.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 361 2011-02-01 01:04 ./slackware64/x/xineramaproto-1.2.1-noarch-1.txt +-rw-r--r-- 1 root root 10716 2011-02-01 01:04 ./slackware64/x/xineramaproto-1.2.1-noarch-1.txz +-rw-r--r-- 1 root root 198 2011-02-01 01:04 ./slackware64/x/xineramaproto-1.2.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 315 2015-08-20 06:58 ./slackware64/x/xinit-1.3.4-x86_64-2.txt +-rw-r--r-- 1 root root 30156 2015-08-20 06:58 ./slackware64/x/xinit-1.3.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xinit-1.3.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 495 2015-10-27 18:39 ./slackware64/x/xinput-1.6.2-x86_64-1.txt +-rw-r--r-- 1 root root 39176 2015-10-27 18:39 ./slackware64/x/xinput-1.6.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-27 18:39 ./slackware64/x/xinput-1.6.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 306 2015-08-20 06:58 ./slackware64/x/xkbcomp-1.3.0-x86_64-2.txt +-rw-r--r-- 1 root root 97492 2015-08-20 06:58 ./slackware64/x/xkbcomp-1.3.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xkbcomp-1.3.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 298 2015-08-20 06:58 ./slackware64/x/xkbevd-1.1.4-x86_64-1.txt +-rw-r--r-- 1 root root 29116 2015-08-20 06:58 ./slackware64/x/xkbevd-1.1.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xkbevd-1.1.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 244 2015-08-20 06:58 ./slackware64/x/xkbprint-1.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 52920 2015-08-20 06:58 ./slackware64/x/xkbprint-1.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xkbprint-1.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 249 2015-08-20 06:58 ./slackware64/x/xkbutils-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 27096 2015-08-20 06:58 ./slackware64/x/xkbutils-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xkbutils-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 655 2016-03-26 18:52 ./slackware64/x/xkeyboard-config-2.17-noarch-1.txt +-rw-r--r-- 1 root root 610792 2016-03-26 18:52 ./slackware64/x/xkeyboard-config-2.17-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-03-26 18:52 ./slackware64/x/xkeyboard-config-2.17-noarch-1.txz.asc +-rw-r--r-- 1 root root 301 2015-08-20 06:58 ./slackware64/x/xkill-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 18188 2015-08-20 06:58 ./slackware64/x/xkill-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xkill-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 307 2015-08-20 06:58 ./slackware64/x/xload-1.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 21628 2015-08-20 06:58 ./slackware64/x/xload-1.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xload-1.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 293 2015-08-20 06:58 ./slackware64/x/xlogo-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 22188 2015-08-20 06:58 ./slackware64/x/xlogo-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xlogo-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 348 2015-08-20 06:58 ./slackware64/x/xlsatoms-1.1.2-x86_64-1.txt +-rw-r--r-- 1 root root 17576 2015-08-20 06:58 ./slackware64/x/xlsatoms-1.1.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xlsatoms-1.1.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 286 2015-08-20 06:58 ./slackware64/x/xlsclients-1.1.3-x86_64-2.txt +-rw-r--r-- 1 root root 19428 2015-08-20 06:58 ./slackware64/x/xlsclients-1.1.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xlsclients-1.1.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 237 2015-08-20 06:58 ./slackware64/x/xlsfonts-1.0.5-x86_64-1.txt +-rw-r--r-- 1 root root 22420 2015-08-20 06:58 ./slackware64/x/xlsfonts-1.0.5-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:58 ./slackware64/x/xlsfonts-1.0.5-x86_64-1.txz.asc +-rw-r--r-- 1 root root 165 2015-08-20 06:59 ./slackware64/x/xmag-1.0.6-x86_64-1.txt +-rw-r--r-- 1 root root 30264 2015-08-20 06:59 ./slackware64/x/xmag-1.0.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xmag-1.0.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 298 2015-08-20 06:59 ./slackware64/x/xman-1.1.4-x86_64-2.txt +-rw-r--r-- 1 root root 49860 2015-08-20 06:59 ./slackware64/x/xman-1.1.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xman-1.1.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 321 2015-08-20 06:59 ./slackware64/x/xmessage-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 21060 2015-08-20 06:59 ./slackware64/x/xmessage-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xmessage-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 238 2015-08-20 06:59 ./slackware64/x/xmh-1.0.3-x86_64-1.txt +-rw-r--r-- 1 root root 82392 2015-08-20 06:59 ./slackware64/x/xmh-1.0.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xmh-1.0.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 410 2015-08-20 06:59 ./slackware64/x/xmodmap-1.0.9-x86_64-1.txt +-rw-r--r-- 1 root root 33808 2015-08-20 06:59 ./slackware64/x/xmodmap-1.0.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xmodmap-1.0.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 310 2015-08-20 06:59 ./slackware64/x/xmore-1.0.2-x86_64-2.txt +-rw-r--r-- 1 root root 14404 2015-08-20 06:59 ./slackware64/x/xmore-1.0.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xmore-1.0.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 490 2016-01-12 20:55 ./slackware64/x/xorg-cf-files-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 187580 2016-01-12 20:55 ./slackware64/x/xorg-cf-files-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-01-12 20:55 ./slackware64/x/xorg-cf-files-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 345 2015-08-20 07:00 ./slackware64/x/xorg-docs-1.7.1-noarch-1.txt +-rw-r--r-- 1 root root 332852 2015-08-20 07:00 ./slackware64/x/xorg-docs-1.7.1-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:00 ./slackware64/x/xorg-docs-1.7.1-noarch-1.txz.asc +-rw-r--r-- 1 root root 698 2016-04-15 16:07 ./slackware64/x/xorg-server-1.18.3-x86_64-2.txt +-rw-r--r-- 1 root root 1898808 2016-04-15 16:07 ./slackware64/x/xorg-server-1.18.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-15 16:07 ./slackware64/x/xorg-server-1.18.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 370 2016-04-15 16:07 ./slackware64/x/xorg-server-xephyr-1.18.3-x86_64-2.txt +-rw-r--r-- 1 root root 869656 2016-04-15 16:07 ./slackware64/x/xorg-server-xephyr-1.18.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-15 16:07 ./slackware64/x/xorg-server-xephyr-1.18.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 595 2016-04-15 16:07 ./slackware64/x/xorg-server-xnest-1.18.3-x86_64-2.txt +-rw-r--r-- 1 root root 582048 2016-04-15 16:07 ./slackware64/x/xorg-server-xnest-1.18.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-15 16:07 ./slackware64/x/xorg-server-xnest-1.18.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 693 2016-04-15 16:07 ./slackware64/x/xorg-server-xvfb-1.18.3-x86_64-2.txt +-rw-r--r-- 1 root root 719764 2016-04-15 16:07 ./slackware64/x/xorg-server-xvfb-1.18.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-04-15 16:07 ./slackware64/x/xorg-server-xvfb-1.18.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 671 2015-08-20 07:00 ./slackware64/x/xorg-sgml-doctools-1.11-x86_64-2.txt +-rw-r--r-- 1 root root 24104 2015-08-20 07:00 ./slackware64/x/xorg-sgml-doctools-1.11-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:00 ./slackware64/x/xorg-sgml-doctools-1.11-x86_64-2.txz.asc +-rw-r--r-- 1 root root 210 2015-08-20 06:59 ./slackware64/x/xpr-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 34428 2015-08-20 06:59 ./slackware64/x/xpr-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xpr-1.0.4-x86_64-2.txz.asc +-rw-r--r-- 1 root root 310 2015-08-20 06:59 ./slackware64/x/xprop-1.2.2-x86_64-2.txt +-rw-r--r-- 1 root root 35612 2015-08-20 06:59 ./slackware64/x/xprop-1.2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xprop-1.2.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 319 2016-05-26 22:49 ./slackware64/x/xproto-7.0.29-noarch-1.txt +-rw-r--r-- 1 root root 247816 2016-05-26 22:49 ./slackware64/x/xproto-7.0.29-noarch-1.txz +-rw-r--r-- 1 root root 181 2016-05-26 22:49 ./slackware64/x/xproto-7.0.29-noarch-1.txz.asc +-rw-r--r-- 1 root root 170 2015-08-20 06:48 ./slackware64/x/xpyb-1.3.1-x86_64-3.txt +-rw-r--r-- 1 root root 113452 2015-08-20 06:48 ./slackware64/x/xpyb-1.3.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:48 ./slackware64/x/xpyb-1.3.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 201 2016-02-29 20:42 ./slackware64/x/xrandr-1.5.0-x86_64-1.txt +-rw-r--r-- 1 root root 53320 2016-02-29 20:42 ./slackware64/x/xrandr-1.5.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-02-29 20:42 ./slackware64/x/xrandr-1.5.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 281 2015-08-20 06:59 ./slackware64/x/xrdb-1.1.0-x86_64-2.txt +-rw-r--r-- 1 root root 30060 2015-08-20 06:59 ./slackware64/x/xrdb-1.1.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xrdb-1.1.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 333 2015-08-20 06:59 ./slackware64/x/xrefresh-1.0.5-x86_64-2.txt +-rw-r--r-- 1 root root 15948 2015-08-20 06:59 ./slackware64/x/xrefresh-1.0.5-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xrefresh-1.0.5-x86_64-2.txz.asc +-rw-r--r-- 1 root root 316 2015-08-20 06:59 ./slackware64/x/xscope-1.4.1-x86_64-2.txt +-rw-r--r-- 1 root root 119064 2015-08-20 06:59 ./slackware64/x/xscope-1.4.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xscope-1.4.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 226 2015-08-20 06:59 ./slackware64/x/xset-1.2.3-x86_64-2.txt +-rw-r--r-- 1 root root 33312 2015-08-20 06:59 ./slackware64/x/xset-1.2.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xset-1.2.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 342 2015-08-20 06:59 ./slackware64/x/xsetroot-1.1.1-x86_64-2.txt +-rw-r--r-- 1 root root 18824 2015-08-20 06:59 ./slackware64/x/xsetroot-1.1.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xsetroot-1.1.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 253 2015-08-20 06:59 ./slackware64/x/xsm-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 53312 2015-08-20 06:59 ./slackware64/x/xsm-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xsm-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 422 2015-08-20 06:59 ./slackware64/x/xstdcmap-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 16340 2015-08-20 06:59 ./slackware64/x/xstdcmap-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xstdcmap-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 308 2016-06-13 01:45 ./slackware64/x/xterm-325-x86_64-1.txt +-rw-r--r-- 1 root root 310192 2016-06-13 01:45 ./slackware64/x/xterm-325-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-13 01:45 ./slackware64/x/xterm-325-x86_64-1.txz.asc +-rw-r--r-- 1 root root 392 2015-03-30 01:42 ./slackware64/x/xtrans-1.3.5-noarch-1.txt +-rw-r--r-- 1 root root 69844 2015-03-30 01:42 ./slackware64/x/xtrans-1.3.5-noarch-1.txz +-rw-r--r-- 1 root root 181 2015-03-30 01:42 ./slackware64/x/xtrans-1.3.5-noarch-1.txz.asc +-rw-r--r-- 1 root root 235 2015-08-20 06:59 ./slackware64/x/xvidtune-1.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 27664 2015-08-20 06:59 ./slackware64/x/xvidtune-1.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 06:59 ./slackware64/x/xvidtune-1.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 253 2015-08-20 07:00 ./slackware64/x/xvinfo-1.1.3-x86_64-1.txt +-rw-r--r-- 1 root root 18144 2015-08-20 07:00 ./slackware64/x/xvinfo-1.1.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:00 ./slackware64/x/xvinfo-1.1.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 262 2015-08-20 07:00 ./slackware64/x/xwd-1.0.6-x86_64-2.txt +-rw-r--r-- 1 root root 26472 2015-08-20 07:00 ./slackware64/x/xwd-1.0.6-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:00 ./slackware64/x/xwd-1.0.6-x86_64-2.txz.asc +-rw-r--r-- 1 root root 243 2015-08-20 07:00 ./slackware64/x/xwininfo-1.1.3-x86_64-2.txt +-rw-r--r-- 1 root root 35272 2015-08-20 07:00 ./slackware64/x/xwininfo-1.1.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:00 ./slackware64/x/xwininfo-1.1.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 213 2015-08-20 07:00 ./slackware64/x/xwud-1.0.4-x86_64-2.txt +-rw-r--r-- 1 root root 23100 2015-08-20 07:00 ./slackware64/x/xwud-1.0.4-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-08-20 07:00 ./slackware64/x/xwud-1.0.4-x86_64-2.txz.asc +drwxr-xr-x 2 root root 12288 2016-06-17 22:51 ./slackware64/xap +-rw-r--r-- 1 root root 625 2016-05-24 05:16 ./slackware64/xap/MPlayer-1.2_20160125-x86_64-3.txt +-rw-r--r-- 1 root root 13450668 2016-05-24 05:16 ./slackware64/xap/MPlayer-1.2_20160125-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-05-24 05:16 ./slackware64/xap/MPlayer-1.2_20160125-x86_64-3.txz.asc +-rw-r--r-- 1 root root 614 2016-03-29 21:08 ./slackware64/xap/audacious-3.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 446308 2016-03-29 21:08 ./slackware64/xap/audacious-3.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-29 21:08 ./slackware64/xap/audacious-3.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 423 2016-03-29 21:11 ./slackware64/xap/audacious-plugins-3.7.2-x86_64-1.txt +-rw-r--r-- 1 root root 1305528 2016-03-29 21:11 ./slackware64/xap/audacious-plugins-3.7.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-29 21:11 ./slackware64/xap/audacious-plugins-3.7.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 441 2012-08-09 03:58 ./slackware64/xap/blackbox-0.70.1-x86_64-7.txt +-rw-r--r-- 1 root root 290460 2012-08-09 03:58 ./slackware64/xap/blackbox-0.70.1-x86_64-7.txz +-rw-r--r-- 1 root root 198 2012-08-09 03:58 ./slackware64/xap/blackbox-0.70.1-x86_64-7.txz.asc +-rw-r--r-- 1 root root 440 2016-05-31 02:43 ./slackware64/xap/blueman-2.0.4-x86_64-1.txt +-rw-r--r-- 1 root root 1819248 2016-05-31 02:43 ./slackware64/xap/blueman-2.0.4-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-31 02:43 ./slackware64/xap/blueman-2.0.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 429 2015-08-19 19:50 ./slackware64/xap/ddd-3.3.12-x86_64-4.txt +-rw-r--r-- 1 root root 1424284 2015-08-19 19:50 ./slackware64/xap/ddd-3.3.12-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-08-19 19:50 ./slackware64/xap/ddd-3.3.12-x86_64-4.txz.asc +-rw-r--r-- 1 root root 652 2015-03-29 21:04 ./slackware64/xap/electricsheep-20090306-x86_64-4.txt +-rw-r--r-- 1 root root 2606060 2015-03-29 21:04 ./slackware64/xap/electricsheep-20090306-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-03-29 21:04 ./slackware64/xap/electricsheep-20090306-x86_64-4.txz.asc +-rw-r--r-- 1 root root 229 2015-02-22 19:14 ./slackware64/xap/fluxbox-1.3.7-x86_64-1.txt +-rw-r--r-- 1 root root 739160 2015-02-22 19:14 ./slackware64/xap/fluxbox-1.3.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-02-22 19:14 ./slackware64/xap/fluxbox-1.3.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 414 2016-03-26 18:47 ./slackware64/xap/fvwm-2.6.6-x86_64-1.txt +-rw-r--r-- 1 root root 1506740 2016-03-26 18:47 ./slackware64/xap/fvwm-2.6.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-26 18:47 ./slackware64/xap/fvwm-2.6.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 303 2016-05-27 21:47 ./slackware64/xap/geeqie-1.3-x86_64-1.txt +-rw-r--r-- 1 root root 827696 2016-05-27 21:47 ./slackware64/xap/geeqie-1.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-27 21:47 ./slackware64/xap/geeqie-1.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 444 2015-03-20 20:37 ./slackware64/xap/gftp-2.0.19-x86_64-4.txt +-rw-r--r-- 1 root root 588712 2015-03-20 20:37 ./slackware64/xap/gftp-2.0.19-x86_64-4.txz +-rw-r--r-- 1 root root 181 2015-03-20 20:37 ./slackware64/xap/gftp-2.0.19-x86_64-4.txz.asc +-rw-r--r-- 1 root root 473 2015-11-24 02:55 ./slackware64/xap/gimp-2.8.16-x86_64-1.txt +-rw-r--r-- 1 root root 12817416 2015-11-24 02:55 ./slackware64/xap/gimp-2.8.16-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-24 02:55 ./slackware64/xap/gimp-2.8.16-x86_64-1.txz.asc +-rw-r--r-- 1 root root 513 2016-06-07 18:06 ./slackware64/xap/gkrellm-2.3.7-x86_64-1.txt +-rw-r--r-- 1 root root 559256 2016-06-07 18:06 ./slackware64/xap/gkrellm-2.3.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-07 18:06 ./slackware64/xap/gkrellm-2.3.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 337 2015-10-23 18:31 ./slackware64/xap/gnuchess-6.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 1580280 2015-10-23 18:31 ./slackware64/xap/gnuchess-6.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-10-23 18:31 ./slackware64/xap/gnuchess-6.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 647 2016-05-17 21:08 ./slackware64/xap/gnuplot-5.0.3-x86_64-2.txt +-rw-r--r-- 1 root root 1446616 2016-05-17 21:08 ./slackware64/xap/gnuplot-5.0.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-05-17 21:08 ./slackware64/xap/gnuplot-5.0.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 380 2016-06-14 17:13 ./slackware64/xap/gparted-0.26.1-x86_64-1.txt +-rw-r--r-- 1 root root 782504 2016-06-14 17:13 ./slackware64/xap/gparted-0.26.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-14 17:13 ./slackware64/xap/gparted-0.26.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 209 2015-11-21 18:27 ./slackware64/xap/gucharmap-3.12.1-x86_64-2.txt +-rw-r--r-- 1 root root 1352648 2015-11-21 18:27 ./slackware64/xap/gucharmap-3.12.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:27 ./slackware64/xap/gucharmap-3.12.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 370 2013-03-20 03:03 ./slackware64/xap/gv-3.7.4-x86_64-1.txt +-rw-r--r-- 1 root root 207460 2013-03-20 03:03 ./slackware64/xap/gv-3.7.4-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-03-20 03:03 ./slackware64/xap/gv-3.7.4-x86_64-1.txz.asc +-rw-r--r-- 1 root root 232 2016-05-03 17:44 ./slackware64/xap/hexchat-2.12.1-x86_64-1.txt +-rw-r--r-- 1 root root 1115236 2016-05-03 17:44 ./slackware64/xap/hexchat-2.12.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-03 17:44 ./slackware64/xap/hexchat-2.12.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 540 2016-06-17 22:34 ./slackware64/xap/imagemagick-6.9.4_9-x86_64-1.txt +-rw-r--r-- 1 root root 6577332 2016-06-17 22:34 ./slackware64/xap/imagemagick-6.9.4_9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-17 22:34 ./slackware64/xap/imagemagick-6.9.4_9-x86_64-1.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/xap/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/xap/install.end +-rw-r--r-- 1 root root 4145 2016-02-03 19:54 ./slackware64/xap/maketag +-rw-r--r-- 1 root root 4145 2016-02-03 19:54 ./slackware64/xap/maketag.ez +-rw-r--r-- 1 root root 527 2016-06-07 21:20 ./slackware64/xap/mozilla-firefox-45.2.0esr-x86_64-1.txt +-rw-r--r-- 1 root root 47711696 2016-06-07 21:20 ./slackware64/xap/mozilla-firefox-45.2.0esr-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-07 21:20 ./slackware64/xap/mozilla-firefox-45.2.0esr-x86_64-1.txz.asc +-rw-r--r-- 1 root root 702 2016-05-30 21:56 ./slackware64/xap/mozilla-thunderbird-45.1.1-x86_64-1.txt +-rw-r--r-- 1 root root 41351064 2016-05-30 21:56 ./slackware64/xap/mozilla-thunderbird-45.1.1-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-30 21:56 ./slackware64/xap/mozilla-thunderbird-45.1.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 359 2016-05-12 01:39 ./slackware64/xap/network-manager-applet-1.2.2-x86_64-1.txt +-rw-r--r-- 1 root root 968096 2016-05-12 01:39 ./slackware64/xap/network-manager-applet-1.2.2-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-05-12 01:39 ./slackware64/xap/network-manager-applet-1.2.2-x86_64-1.txz.asc +-rw-r--r-- 1 root root 303 2015-08-20 19:45 ./slackware64/xap/pan-0.139-x86_64-3.txt +-rw-r--r-- 1 root root 944852 2015-08-20 19:45 ./slackware64/xap/pan-0.139-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-08-20 19:45 ./slackware64/xap/pan-0.139-x86_64-3.txz.asc +-rw-r--r-- 1 root root 472 2016-01-10 23:45 ./slackware64/xap/pavucontrol-3.0-x86_64-1.txt +-rw-r--r-- 1 root root 110380 2016-01-10 23:45 ./slackware64/xap/pavucontrol-3.0-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-01-10 23:45 ./slackware64/xap/pavucontrol-3.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 469 2016-06-14 01:35 ./slackware64/xap/pidgin-2.10.12-x86_64-2.txt +-rw-r--r-- 1 root root 6956848 2016-06-14 01:35 ./slackware64/xap/pidgin-2.10.12-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-14 01:35 ./slackware64/xap/pidgin-2.10.12-x86_64-2.txz.asc +-rw-r--r-- 1 root root 395 2015-04-14 18:42 ./slackware64/xap/rdesktop-1.8.3-x86_64-1.txt +-rw-r--r-- 1 root root 153576 2015-04-14 18:42 ./slackware64/xap/rdesktop-1.8.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-14 18:42 ./slackware64/xap/rdesktop-1.8.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 425 2009-06-09 19:32 ./slackware64/xap/rxvt-2.7.10-x86_64-4.txt +-rw-r--r-- 1 root root 162500 2009-06-09 19:32 ./slackware64/xap/rxvt-2.7.10-x86_64-4.txz +-rw-r--r-- 1 root root 197 2009-06-09 19:32 ./slackware64/xap/rxvt-2.7.10-x86_64-4.txz.asc +-rw-r--r-- 1 root root 321 2015-11-19 06:06 ./slackware64/xap/sane-1.0.25-x86_64-2.txt +-rw-r--r-- 1 root root 3054484 2015-11-19 06:06 ./slackware64/xap/sane-1.0.25-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-19 06:06 ./slackware64/xap/sane-1.0.25-x86_64-2.txz.asc +-rw-r--r-- 1 root root 434 2016-03-15 23:19 ./slackware64/xap/seamonkey-2.40-x86_64-1.txt +-rw-r--r-- 1 root root 47796052 2016-03-15 23:19 ./slackware64/xap/seamonkey-2.40-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-15 23:19 ./slackware64/xap/seamonkey-2.40-x86_64-1.txz.asc +-rw-r--r-- 1 root root 609 2009-03-16 23:11 ./slackware64/xap/seyon-2.20c-x86_64-3.txt +-rw-r--r-- 1 root root 113164 2009-03-16 23:11 ./slackware64/xap/seyon-2.20c-x86_64-3.txz +-rw-r--r-- 1 root root 197 2009-03-16 23:11 ./slackware64/xap/seyon-2.20c-x86_64-3.txz.asc +-rw-r--r-- 1 root root 603 2016-02-03 19:54 ./slackware64/xap/tagfile +-rw-r--r-- 1 root root 505 2016-06-15 01:49 ./slackware64/xap/vim-gvim-7.4.1938-x86_64-1.txt +-rw-r--r-- 1 root root 1180604 2016-06-15 01:49 ./slackware64/xap/vim-gvim-7.4.1938-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-15 01:49 ./slackware64/xap/vim-gvim-7.4.1938-x86_64-1.txz.asc +-rw-r--r-- 1 root root 455 2015-11-24 02:45 ./slackware64/xap/windowmaker-0.95.7-x86_64-2.txt +-rw-r--r-- 1 root root 1736264 2015-11-24 02:45 ./slackware64/xap/windowmaker-0.95.7-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-24 02:45 ./slackware64/xap/windowmaker-0.95.7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 308 2011-02-01 06:39 ./slackware64/xap/x11-ssh-askpass-1.2.4.1-x86_64-2.txt +-rw-r--r-- 1 root root 24736 2011-02-01 06:39 ./slackware64/xap/x11-ssh-askpass-1.2.4.1-x86_64-2.txz +-rw-r--r-- 1 root root 198 2011-02-01 06:39 ./slackware64/xap/x11-ssh-askpass-1.2.4.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 310 2012-07-04 22:14 ./slackware64/xap/x3270-3.3.12ga7-x86_64-2.txt +-rw-r--r-- 1 root root 716196 2012-07-04 22:14 ./slackware64/xap/x3270-3.3.12ga7-x86_64-2.txz +-rw-r--r-- 1 root root 198 2012-07-04 22:14 ./slackware64/xap/x3270-3.3.12ga7-x86_64-2.txz.asc +-rw-r--r-- 1 root root 420 2015-04-05 05:43 ./slackware64/xap/xaos-3.6-x86_64-1.txt +-rw-r--r-- 1 root root 519872 2015-04-05 05:43 ./slackware64/xap/xaos-3.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-05 05:43 ./slackware64/xap/xaos-3.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 411 2015-04-19 02:19 ./slackware64/xap/xfractint-20.04p13-x86_64-1.txt +-rw-r--r-- 1 root root 839856 2015-04-19 02:19 ./slackware64/xap/xfractint-20.04p13-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-19 02:19 ./slackware64/xap/xfractint-20.04p13-x86_64-1.txz.asc +-rw-r--r-- 1 root root 239 2011-03-20 17:31 ./slackware64/xap/xgames-0.3-x86_64-4.txt +-rw-r--r-- 1 root root 114676 2011-03-20 17:31 ./slackware64/xap/xgames-0.3-x86_64-4.txz +-rw-r--r-- 1 root root 198 2011-03-20 17:31 ./slackware64/xap/xgames-0.3-x86_64-4.txz.asc +-rw-r--r-- 1 root root 468 2016-03-14 02:16 ./slackware64/xap/xine-lib-1.2.6-x86_64-8.txt +-rw-r--r-- 1 root root 12917204 2016-03-14 02:16 ./slackware64/xap/xine-lib-1.2.6-x86_64-8.txz +-rw-r--r-- 1 root root 181 2016-03-14 02:16 ./slackware64/xap/xine-lib-1.2.6-x86_64-8.txz.asc +-rw-r--r-- 1 root root 374 2015-04-03 18:11 ./slackware64/xap/xine-ui-0.99.9-x86_64-1.txt +-rw-r--r-- 1 root root 1289448 2015-04-03 18:11 ./slackware64/xap/xine-ui-0.99.9-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-04-03 18:11 ./slackware64/xap/xine-ui-0.99.9-x86_64-1.txz.asc +-rw-r--r-- 1 root root 462 2015-03-19 05:38 ./slackware64/xap/xlockmore-5.46-x86_64-1.txt +-rw-r--r-- 1 root root 1042924 2015-03-19 05:38 ./slackware64/xap/xlockmore-5.46-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-19 05:38 ./slackware64/xap/xlockmore-5.46-x86_64-1.txz.asc +-rw-r--r-- 1 root root 379 2013-05-03 02:27 ./slackware64/xap/xmms-1.2.11-x86_64-5.txt +-rw-r--r-- 1 root root 1038756 2013-05-03 02:27 ./slackware64/xap/xmms-1.2.11-x86_64-5.txz +-rw-r--r-- 1 root root 198 2013-05-03 02:27 ./slackware64/xap/xmms-1.2.11-x86_64-5.txz.asc +-rw-r--r-- 1 root root 445 2015-03-29 20:07 ./slackware64/xap/xpaint-2.9.10.3-x86_64-1.txt +-rw-r--r-- 1 root root 516852 2015-03-29 20:07 ./slackware64/xap/xpaint-2.9.10.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-29 20:07 ./slackware64/xap/xpaint-2.9.10.3-x86_64-1.txz.asc +-rw-r--r-- 1 root root 188 2016-03-02 19:44 ./slackware64/xap/xpdf-3.04-x86_64-2.txt +-rw-r--r-- 1 root root 1856512 2016-03-02 19:44 ./slackware64/xap/xpdf-3.04-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-03-02 19:44 ./slackware64/xap/xpdf-3.04-x86_64-2.txz.asc +-rw-r--r-- 1 root root 499 2015-03-29 23:20 ./slackware64/xap/xsane-0.999-x86_64-1.txt +-rw-r--r-- 1 root root 1632212 2015-03-29 23:20 ./slackware64/xap/xsane-0.999-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-03-29 23:20 ./slackware64/xap/xsane-0.999-x86_64-1.txz.asc +-rw-r--r-- 1 root root 467 2016-06-01 08:15 ./slackware64/xap/xscreensaver-5.35-x86_64-2.txt +-rw-r--r-- 1 root root 4953900 2016-06-01 08:15 ./slackware64/xap/xscreensaver-5.35-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-01 08:15 ./slackware64/xap/xscreensaver-5.35-x86_64-2.txz.asc +-rw-r--r-- 1 root root 235 2015-03-28 21:30 ./slackware64/xap/xv-3.10a-x86_64-7.txt +-rw-r--r-- 1 root root 935964 2015-03-28 21:30 ./slackware64/xap/xv-3.10a-x86_64-7.txz +-rw-r--r-- 1 root root 181 2015-03-28 21:30 ./slackware64/xap/xv-3.10a-x86_64-7.txz.asc +drwxr-xr-x 2 root root 4096 2016-06-26 01:36 ./slackware64/xfce +-rw-r--r-- 1 root root 463 2016-01-12 21:12 ./slackware64/xfce/Thunar-1.6.10-x86_64-3.txt +-rw-r--r-- 1 root root 940612 2016-01-12 21:12 ./slackware64/xfce/Thunar-1.6.10-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-01-12 21:12 ./slackware64/xfce/Thunar-1.6.10-x86_64-3.txz.asc +-rw-r--r-- 1 root root 377 2015-11-18 04:30 ./slackware64/xfce/exo-0.10.7-x86_64-1.txt +-rw-r--r-- 1 root root 589904 2015-11-18 04:30 ./slackware64/xfce/exo-0.10.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-18 04:30 ./slackware64/xfce/exo-0.10.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 295 2015-11-21 18:45 ./slackware64/xfce/garcon-0.4.0-x86_64-2.txt +-rw-r--r-- 1 root root 132568 2015-11-21 18:45 ./slackware64/xfce/garcon-0.4.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:45 ./slackware64/xfce/garcon-0.4.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 412 2015-11-21 18:45 ./slackware64/xfce/gtk-xfce-engine-2.10.1-x86_64-2.txt +-rw-r--r-- 1 root root 46660 2015-11-21 18:45 ./slackware64/xfce/gtk-xfce-engine-2.10.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:45 ./slackware64/xfce/gtk-xfce-engine-2.10.1-x86_64-2.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/xfce/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/xfce/install.end +-rw-r--r-- 1 root root 309 2015-11-21 18:46 ./slackware64/xfce/libxfce4ui-4.12.1-x86_64-2.txt +-rw-r--r-- 1 root root 241856 2015-11-21 18:46 ./slackware64/xfce/libxfce4ui-4.12.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:46 ./slackware64/xfce/libxfce4ui-4.12.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 317 2015-11-21 18:56 ./slackware64/xfce/libxfce4util-4.12.1-x86_64-2.txt +-rw-r--r-- 1 root root 114436 2015-11-21 18:56 ./slackware64/xfce/libxfce4util-4.12.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:56 ./slackware64/xfce/libxfce4util-4.12.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 2955 2016-01-12 18:38 ./slackware64/xfce/maketag +-rw-r--r-- 1 root root 2955 2016-01-12 18:38 ./slackware64/xfce/maketag.ez +-rw-r--r-- 1 root root 172 2016-02-25 18:57 ./slackware64/xfce/orage-4.12.1-x86_64-3.txt +-rw-r--r-- 1 root root 1581300 2016-02-25 18:57 ./slackware64/xfce/orage-4.12.1-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-02-25 18:57 ./slackware64/xfce/orage-4.12.1-x86_64-3.txz.asc +-rw-r--r-- 1 root root 463 2016-01-12 18:38 ./slackware64/xfce/tagfile +-rw-r--r-- 1 root root 345 2015-11-21 18:58 ./slackware64/xfce/thunar-volman-0.8.1-x86_64-2.txt +-rw-r--r-- 1 root root 126436 2015-11-21 18:58 ./slackware64/xfce/thunar-volman-0.8.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:58 ./slackware64/xfce/thunar-volman-0.8.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 510 2016-06-23 06:27 ./slackware64/xfce/tumbler-0.1.31-x86_64-8.txt +-rw-r--r-- 1 root root 156884 2016-06-23 06:27 ./slackware64/xfce/tumbler-0.1.31-x86_64-8.txz +-rw-r--r-- 1 root root 181 2016-06-23 06:27 ./slackware64/xfce/tumbler-0.1.31-x86_64-8.txz.asc +-rw-r--r-- 1 root root 469 2015-11-21 18:58 ./slackware64/xfce/xfce4-appfinder-4.12.0-x86_64-2.txt +-rw-r--r-- 1 root root 112936 2015-11-21 18:58 ./slackware64/xfce/xfce4-appfinder-4.12.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:58 ./slackware64/xfce/xfce4-appfinder-4.12.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 532 2016-03-15 18:16 ./slackware64/xfce/xfce4-clipman-plugin-1.2.6-x86_64-1.txt +-rw-r--r-- 1 root root 129212 2016-03-15 18:16 ./slackware64/xfce/xfce4-clipman-plugin-1.2.6-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-03-15 18:16 ./slackware64/xfce/xfce4-clipman-plugin-1.2.6-x86_64-1.txz.asc +-rw-r--r-- 1 root root 357 2015-11-21 18:59 ./slackware64/xfce/xfce4-dev-tools-4.12.0-x86_64-2.txt +-rw-r--r-- 1 root root 36500 2015-11-21 18:59 ./slackware64/xfce/xfce4-dev-tools-4.12.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:59 ./slackware64/xfce/xfce4-dev-tools-4.12.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 441 2015-11-21 19:00 ./slackware64/xfce/xfce4-notifyd-0.2.4-x86_64-3.txt +-rw-r--r-- 1 root root 72760 2015-11-21 19:00 ./slackware64/xfce/xfce4-notifyd-0.2.4-x86_64-3.txz +-rw-r--r-- 1 root root 181 2015-11-21 19:00 ./slackware64/xfce/xfce4-notifyd-0.2.4-x86_64-3.txz.asc +-rw-r--r-- 1 root root 437 2016-06-03 22:45 ./slackware64/xfce/xfce4-panel-4.12.0-x86_64-3.txt +-rw-r--r-- 1 root root 618148 2016-06-03 22:45 ./slackware64/xfce/xfce4-panel-4.12.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-06-03 22:45 ./slackware64/xfce/xfce4-panel-4.12.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 413 2016-03-19 20:13 ./slackware64/xfce/xfce4-power-manager-1.4.4-x86_64-4.txt +-rw-r--r-- 1 root root 553584 2016-03-19 20:13 ./slackware64/xfce/xfce4-power-manager-1.4.4-x86_64-4.txz +-rw-r--r-- 1 root root 181 2016-03-19 20:13 ./slackware64/xfce/xfce4-power-manager-1.4.4-x86_64-4.txz.asc +-rw-r--r-- 1 root root 599 2016-06-26 01:14 ./slackware64/xfce/xfce4-pulseaudio-plugin-0.2.4-x86_64-3.txt +-rw-r--r-- 1 root root 37080 2016-06-26 01:14 ./slackware64/xfce/xfce4-pulseaudio-plugin-0.2.4-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-06-26 01:14 ./slackware64/xfce/xfce4-pulseaudio-plugin-0.2.4-x86_64-3.txz.asc +-rw-r--r-- 1 root root 365 2015-11-18 02:17 ./slackware64/xfce/xfce4-screenshooter-1.8.2-x86_64-2.txt +-rw-r--r-- 1 root root 147400 2015-11-18 02:17 ./slackware64/xfce/xfce4-screenshooter-1.8.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-18 02:17 ./slackware64/xfce/xfce4-screenshooter-1.8.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 451 2015-11-21 18:53 ./slackware64/xfce/xfce4-session-4.12.1-x86_64-2.txt +-rw-r--r-- 1 root root 624076 2015-11-21 18:53 ./slackware64/xfce/xfce4-session-4.12.1-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:53 ./slackware64/xfce/xfce4-session-4.12.1-x86_64-2.txz.asc +-rw-r--r-- 1 root root 378 2016-04-27 17:00 ./slackware64/xfce/xfce4-settings-4.12.0-x86_64-3.txt +-rw-r--r-- 1 root root 464892 2016-04-27 17:00 ./slackware64/xfce/xfce4-settings-4.12.0-x86_64-3.txz +-rw-r--r-- 1 root root 181 2016-04-27 17:00 ./slackware64/xfce/xfce4-settings-4.12.0-x86_64-3.txz.asc +-rw-r--r-- 1 root root 402 2015-11-21 18:54 ./slackware64/xfce/xfce4-systemload-plugin-1.1.2-x86_64-2.txt +-rw-r--r-- 1 root root 42876 2015-11-21 18:54 ./slackware64/xfce/xfce4-systemload-plugin-1.1.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:54 ./slackware64/xfce/xfce4-systemload-plugin-1.1.2-x86_64-2.txz.asc +-rw-r--r-- 1 root root 463 2015-11-21 18:55 ./slackware64/xfce/xfce4-taskmanager-1.1.0-x86_64-2.txt +-rw-r--r-- 1 root root 93184 2015-11-21 18:55 ./slackware64/xfce/xfce4-taskmanager-1.1.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:55 ./slackware64/xfce/xfce4-taskmanager-1.1.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 444 2015-11-21 19:01 ./slackware64/xfce/xfce4-terminal-0.6.3-x86_64-2.txt +-rw-r--r-- 1 root root 335884 2015-11-21 19:01 ./slackware64/xfce/xfce4-terminal-0.6.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 19:01 ./slackware64/xfce/xfce4-terminal-0.6.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 369 2016-04-24 18:07 ./slackware64/xfce/xfce4-weather-plugin-0.8.7-x86_64-1.txt +-rw-r--r-- 1 root root 2358992 2016-04-24 18:07 ./slackware64/xfce/xfce4-weather-plugin-0.8.7-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-04-24 18:07 ./slackware64/xfce/xfce4-weather-plugin-0.8.7-x86_64-1.txz.asc +-rw-r--r-- 1 root root 293 2015-11-21 19:03 ./slackware64/xfce/xfconf-4.12.0-x86_64-2.txt +-rw-r--r-- 1 root root 150012 2015-11-21 19:03 ./slackware64/xfce/xfconf-4.12.0-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 19:03 ./slackware64/xfce/xfconf-4.12.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 424 2015-11-21 18:55 ./slackware64/xfce/xfdesktop-4.12.3-x86_64-2.txt +-rw-r--r-- 1 root root 771256 2015-11-21 18:55 ./slackware64/xfce/xfdesktop-4.12.3-x86_64-2.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:55 ./slackware64/xfce/xfdesktop-4.12.3-x86_64-2.txz.asc +-rw-r--r-- 1 root root 285 2015-11-21 18:07 ./slackware64/xfce/xfwm4-4.12.3-x86_64-1.txt +-rw-r--r-- 1 root root 488204 2015-11-21 18:07 ./slackware64/xfce/xfwm4-4.12.3-x86_64-1.txz +-rw-r--r-- 1 root root 181 2015-11-21 18:07 ./slackware64/xfce/xfwm4-4.12.3-x86_64-1.txz.asc +drwxr-xr-x 2 root root 4096 2012-03-14 09:13 ./slackware64/y +-rw-r--r-- 1 root root 596 2012-03-02 16:03 ./slackware64/y/bsd-games-2.13-x86_64-12.txt +-rw-r--r-- 1 root root 1765128 2012-03-02 16:03 ./slackware64/y/bsd-games-2.13-x86_64-12.txz +-rw-r--r-- 1 root root 198 2012-03-02 16:03 ./slackware64/y/bsd-games-2.13-x86_64-12.txz.asc +-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/y/install-packages +-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/y/install.end +-rw-r--r-- 1 root root 1149 2015-04-20 02:08 ./slackware64/y/maketag +-rw-r--r-- 1 root root 1149 2015-04-20 02:08 ./slackware64/y/maketag.ez +-rw-r--r-- 1 root root 14 2015-04-20 02:08 ./slackware64/y/tagfile +drwxr-xr-x 19 root root 4096 2016-06-29 21:58 ./source +-rw-r--r-- 1 root root 427118 2016-06-29 21:58 ./source/CHECKSUMS.md5 +-rw-r--r-- 1 root root 181 2016-06-29 21:58 ./source/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 623238 2016-06-29 21:57 ./source/FILE_LIST +-rw-r--r-- 1 root root 11718046 2016-06-29 21:57 ./source/MANIFEST.bz2 -rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT drwxr-xr-x 105 root root 4096 2016-06-29 19:20 ./source/a drwxr-xr-x 2 root root 4096 2016-05-20 20:18 ./source/a/aaa_base @@ -6083,678 +12213,678 @@ drwxr-xr-x 2 root root 12288 2015-11-19 17:13 ./source/x/x11/slack-desc -rw-r--r-- 1 root root 848 2012-04-08 02:11 ./source/x/x11/slack-desc/font-bh-75dpi -rw-r--r-- 1 root root 1100 2012-04-08 02:11 ./source/x/x11/slack-desc/font-bh-lucidatypewriter-100dpi -rw-r--r-- 1 root root 1086 2012-04-08 02:11 ./source/x/x11/slack-desc/font-bh-lucidatypewriter-75dpi --rw-r--r-- 1 root root 822 2012-04-08 02:11 ./source/x/x11/slack-desc/font-bh-ttf --rw-r--r-- 1 root root 850 2012-04-08 02:12 ./source/x/x11/slack-desc/font-bh-type1 --rw-r--r-- 1 root root 960 2012-04-08 02:13 ./source/x/x11/slack-desc/font-bitstream-100dpi --rw-r--r-- 1 root root 946 2012-04-08 02:13 ./source/x/x11/slack-desc/font-bitstream-75dpi --rw-r--r-- 1 root root 962 2012-04-08 02:13 ./source/x/x11/slack-desc/font-bitstream-speedo --rw-r--r-- 1 root root 948 2012-04-08 02:14 ./source/x/x11/slack-desc/font-bitstream-type1 --rw-r--r-- 1 root root 946 2012-04-08 02:15 ./source/x/x11/slack-desc/font-cronyx-cyrillic --rw-r--r-- 1 root root 890 2012-04-08 02:15 ./source/x/x11/slack-desc/font-cursor-misc --rw-r--r-- 1 root root 890 2012-04-08 02:15 ./source/x/x11/slack-desc/font-daewoo-misc --rw-r--r-- 1 root root 848 2012-04-08 02:15 ./source/x/x11/slack-desc/font-dec-misc --rw-r--r-- 1 root root 864 2012-04-08 02:16 ./source/x/x11/slack-desc/font-ibm-type1 --rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-isas-misc --rw-r--r-- 1 root root 848 2012-04-08 02:17 ./source/x/x11/slack-desc/font-jis-misc --rw-r--r-- 1 root root 876 2012-04-08 02:17 ./source/x/x11/slack-desc/font-micro-misc --rw-r--r-- 1 root root 918 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-cyrillic --rw-r--r-- 1 root root 918 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-ethiopic --rw-r--r-- 1 root root 890 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-meltho --rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-misc --rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-mutt-misc --rw-r--r-- 1 root root 946 2012-04-08 02:17 ./source/x/x11/slack-desc/font-schumacher-misc --rw-r--r-- 1 root root 946 2012-04-08 02:18 ./source/x/x11/slack-desc/font-screen-cyrillic --rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-sony-misc --rw-r--r-- 1 root root 848 2012-04-08 02:18 ./source/x/x11/slack-desc/font-sun-misc --rw-r--r-- 1 root root 822 2012-04-08 02:18 ./source/x/x11/slack-desc/font-util --rw-r--r-- 1 root root 974 2012-04-08 02:19 ./source/x/x11/slack-desc/font-winitzki-cyrillic --rw-r--r-- 1 root root 920 2012-04-08 02:20 ./source/x/x11/slack-desc/font-xfree86-type1 --rw-r--r-- 1 root root 883 2012-04-08 02:20 ./source/x/x11/slack-desc/fontcacheproto --rw-r--r-- 1 root root 824 2012-04-08 02:20 ./source/x/x11/slack-desc/fontsproto --rw-r--r-- 1 root root 833 2012-04-08 02:22 ./source/x/x11/slack-desc/fonttosfnt --rw-r--r-- 1 root root 823 2012-04-08 02:23 ./source/x/x11/slack-desc/fslsfonts --rw-r--r-- 1 root root 829 2012-04-08 02:23 ./source/x/x11/slack-desc/fstobdf --rw-r--r-- 1 root root 818 2012-04-08 02:23 ./source/x/x11/slack-desc/gccmakedep --rw-r--r-- 1 root root 736 2014-05-13 20:38 ./source/x/x11/slack-desc/glamor-egl --rw-r--r-- 1 root root 781 2012-04-08 02:25 ./source/x/x11/slack-desc/glproto --rw-r--r-- 1 root root 806 2012-04-08 02:26 ./source/x/x11/slack-desc/iceauth --rw-r--r-- 1 root root 761 2012-04-08 02:26 ./source/x/x11/slack-desc/ico --rw-r--r-- 1 root root 748 2012-04-08 02:27 ./source/x/x11/slack-desc/imake --rw-r--r-- 1 root root 820 2012-04-08 02:27 ./source/x/x11/slack-desc/inputproto --rw-r--r-- 1 root root 879 2012-04-08 02:28 ./source/x/x11/slack-desc/intel-gpu-tools --rw-r--r-- 1 root root 785 2012-04-08 02:28 ./source/x/x11/slack-desc/kbproto --rw-r--r-- 1 root root 745 2012-04-08 02:28 ./source/x/x11/slack-desc/libFS --rw-r--r-- 1 root root 761 2012-04-08 02:29 ./source/x/x11/slack-desc/libICE --rw-r--r-- 1 root root 744 2012-04-08 02:42 ./source/x/x11/slack-desc/libSM --rw-r--r-- 1 root root 762 2012-04-08 02:42 ./source/x/x11/slack-desc/libX11 --rw-r--r-- 1 root root 869 2012-04-08 03:03 ./source/x/x11/slack-desc/libXScrnSaver --rw-r--r-- 1 root root 926 2012-04-08 03:06 ./source/x/x11/slack-desc/libXau --rw-r--r-- 1 root root 665 2012-04-08 03:03 ./source/x/x11/slack-desc/libXaw --rw-r--r-- 1 root root 971 2012-04-08 02:50 ./source/x/x11/slack-desc/libXaw3d --rw-r--r-- 1 root root 767 2012-04-08 02:51 ./source/x/x11/slack-desc/libXcm --rw-r--r-- 1 root root 872 2012-04-08 03:04 ./source/x/x11/slack-desc/libXcomposite --rw-r--r-- 1 root root 827 2012-04-08 03:06 ./source/x/x11/slack-desc/libXcursor --rw-r--r-- 1 root root 827 2012-04-08 03:06 ./source/x/x11/slack-desc/libXdamage --rw-r--r-- 1 root root 800 2012-04-08 03:07 ./source/x/x11/slack-desc/libXdmcp --rw-r--r-- 1 root root 804 2012-04-08 03:07 ./source/x/x11/slack-desc/libXevie --rw-r--r-- 1 root root 793 2012-04-08 03:08 ./source/x/x11/slack-desc/libXext --rw-r--r-- 1 root root 811 2012-04-08 03:08 ./source/x/x11/slack-desc/libXfixes --rw-r--r-- 1 root root 1034 2012-04-08 03:18 ./source/x/x11/slack-desc/libXfont --rw-r--r-- 1 root root 874 2012-04-08 03:18 ./source/x/x11/slack-desc/libXfontcache --rw-r--r-- 1 root root 748 2012-04-08 03:18 ./source/x/x11/slack-desc/libXft --rw-r--r-- 1 root root 749 2012-04-08 03:18 ./source/x/x11/slack-desc/libXi --rw-r--r-- 1 root root 846 2012-04-08 03:19 ./source/x/x11/slack-desc/libXinerama --rw-r--r-- 1 root root 807 2012-04-08 03:23 ./source/x/x11/slack-desc/libXmu --rw-r--r-- 1 root root 738 2012-04-08 03:23 ./source/x/x11/slack-desc/libXp --rw-r--r-- 1 root root 770 2012-04-08 03:24 ./source/x/x11/slack-desc/libXpm --rw-r--r-- 1 root root 853 2015-04-21 01:58 ./source/x/x11/slack-desc/libXpresent --rw-r--r-- 1 root root 821 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrandr --rw-r--r-- 1 root root 838 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrender --rw-r--r-- 1 root root 779 2012-04-08 03:25 ./source/x/x11/slack-desc/libXres --rw-r--r-- 1 root root 744 2012-04-08 03:26 ./source/x/x11/slack-desc/libXt --rw-r--r-- 1 root root 792 2012-04-08 03:26 ./source/x/x11/slack-desc/libXtst --rw-r--r-- 1 root root 777 2012-04-08 03:26 ./source/x/x11/slack-desc/libXv --rw-r--r-- 1 root root 777 2012-04-08 02:52 ./source/x/x11/slack-desc/libXvMC --rw-r--r-- 1 root root 844 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86dga --rw-r--r-- 1 root root 864 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86misc --rw-r--r-- 1 root root 829 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86vm --rw-r--r-- 1 root root 777 2012-04-08 03:28 ./source/x/x11/slack-desc/libdmx --rw-r--r-- 1 root root 807 2012-04-08 03:28 ./source/x/x11/slack-desc/libfontenc --rw-r--r-- 1 root root 840 2012-04-08 03:29 ./source/x/x11/slack-desc/libpciaccess --rw-r--r-- 1 root root 1003 2012-04-08 03:30 ./source/x/x11/slack-desc/libpthread-stubs --rw-r--r-- 1 root root 903 2007-02-14 06:52 ./source/x/x11/slack-desc/libxcb --rw-r--r-- 1 root root 824 2012-04-08 02:45 ./source/x/x11/slack-desc/libxkbfile --rw-r--r-- 1 root root 847 2014-05-13 05:34 ./source/x/x11/slack-desc/libxshmfence --rw-r--r-- 1 root root 707 2012-04-08 03:30 ./source/x/x11/slack-desc/listres --rw-r--r-- 1 root root 778 2012-04-08 03:31 ./source/x/x11/slack-desc/lndir --rw-r--r-- 1 root root 827 2012-04-08 03:31 ./source/x/x11/slack-desc/luit --rw-r--r-- 1 root root 818 2012-04-08 03:31 ./source/x/x11/slack-desc/makedepend --rw-r--r-- 1 root root 890 2012-04-08 03:31 ./source/x/x11/slack-desc/mkcomposecache --rw-r--r-- 1 root root 823 2012-04-08 03:32 ./source/x/x11/slack-desc/mkfontdir --rw-r--r-- 1 root root 734 2012-04-08 03:32 ./source/x/x11/slack-desc/mkfontscale --rw-r--r-- 1 root root 679 2012-04-08 03:32 ./source/x/x11/slack-desc/oclock --rw-r--r-- 1 root root 823 2012-04-08 02:44 ./source/x/x11/slack-desc/pixman --rw-r--r-- 1 root root 731 2014-05-13 05:22 ./source/x/x11/slack-desc/presentproto --rw-r--r-- 1 root root 731 2012-04-08 03:32 ./source/x/x11/slack-desc/printproto --rw-r--r-- 1 root root 674 2012-04-08 03:32 ./source/x/x11/slack-desc/randrproto --rw-r--r-- 1 root root 835 2012-04-08 03:33 ./source/x/x11/slack-desc/recordproto --rw-r--r-- 1 root root 760 2012-04-08 03:40 ./source/x/x11/slack-desc/rendercheck --rw-r--r-- 1 root root 838 2012-04-08 03:40 ./source/x/x11/slack-desc/renderproto --rw-r--r-- 1 root root 865 2012-04-08 03:40 ./source/x/x11/slack-desc/resourceproto --rw-r--r-- 1 root root 709 2012-04-08 03:40 ./source/x/x11/slack-desc/rgb --rw-r--r-- 1 root root 889 2012-04-08 03:41 ./source/x/x11/slack-desc/scrnsaverproto --rw-r--r-- 1 root root 750 2012-04-08 03:41 ./source/x/x11/slack-desc/sessreg --rw-r--r-- 1 root root 798 2012-04-08 03:42 ./source/x/x11/slack-desc/setxkbmap --rw-r--r-- 1 root root 737 2012-04-08 03:42 ./source/x/x11/slack-desc/showfont --rw-r--r-- 1 root root 707 2012-04-08 03:42 ./source/x/x11/slack-desc/smproxy --rw-r--r-- 1 root root 884 2012-06-13 15:39 ./source/x/x11/slack-desc/transset --rw-r--r-- 1 root root 730 2012-04-08 03:43 ./source/x/x11/slack-desc/twm --rw-r--r-- 1 root root 823 2012-04-08 03:43 ./source/x/x11/slack-desc/util-macros --rw-r--r-- 1 root root 820 2012-04-08 03:43 ./source/x/x11/slack-desc/videoproto --rw-r--r-- 1 root root 796 2012-04-08 03:43 ./source/x/x11/slack-desc/viewres --rw-r--r-- 1 root root 779 2012-04-08 03:44 ./source/x/x11/slack-desc/x11perf --rw-r--r-- 1 root root 679 2012-04-08 03:44 ./source/x/x11/slack-desc/xauth --rw-r--r-- 1 root root 796 2012-04-08 03:44 ./source/x/x11/slack-desc/xbacklight --rw-r--r-- 1 root root 726 2012-04-08 03:44 ./source/x/x11/slack-desc/xbiff --rw-r--r-- 1 root root 786 2012-04-08 03:45 ./source/x/x11/slack-desc/xbitmaps --rw-r--r-- 1 root root 639 2012-04-08 03:45 ./source/x/x11/slack-desc/xcalc --rw-r--r-- 1 root root 922 2012-04-08 01:17 ./source/x/x11/slack-desc/xcb-proto --rw-r--r-- 1 root root 809 2012-04-08 03:45 ./source/x/x11/slack-desc/xcb-util --rw-r--r-- 1 root root 808 2013-09-07 20:11 ./source/x/x11/slack-desc/xcb-util-cursor --rw-r--r-- 1 root root 1011 2015-04-27 03:32 ./source/x/x11/slack-desc/xcb-util-errors --rw-r--r-- 1 root root 778 2012-04-08 01:14 ./source/x/x11/slack-desc/xcb-util-image --rw-r--r-- 1 root root 827 2012-04-08 01:18 ./source/x/x11/slack-desc/xcb-util-keysyms --rw-r--r-- 1 root root 871 2012-04-08 03:49 ./source/x/x11/slack-desc/xcb-util-renderutil --rw-r--r-- 1 root root 774 2012-04-08 03:51 ./source/x/x11/slack-desc/xcb-util-wm --rw-r--r-- 1 root root 890 2012-04-08 03:46 ./source/x/x11/slack-desc/xclipboard --rw-r--r-- 1 root root 748 2012-04-08 03:52 ./source/x/x11/slack-desc/xclock --rw-r--r-- 1 root root 746 2013-01-13 00:59 ./source/x/x11/slack-desc/xcm --rw-r--r-- 1 root root 838 2012-04-08 03:52 ./source/x/x11/slack-desc/xcmiscproto --rw-r--r-- 1 root root 824 2012-04-08 03:54 ./source/x/x11/slack-desc/xcmsdb --rw-r--r-- 1 root root 761 2012-04-08 03:53 ./source/x/x11/slack-desc/xcompmgr --rw-r--r-- 1 root root 678 2012-04-08 03:54 ./source/x/x11/slack-desc/xconsole --rw-r--r-- 1 root root 844 2012-04-08 03:54 ./source/x/x11/slack-desc/xcursor-themes --rw-r--r-- 1 root root 834 2012-04-08 03:54 ./source/x/x11/slack-desc/xcursorgen --rw-r--r-- 1 root root 714 2012-04-08 03:55 ./source/x/x11/slack-desc/xdbedizzy --rw-r--r-- 1 root root 797 2012-04-08 03:55 ./source/x/x11/slack-desc/xditview --rw-r--r-- 1 root root 707 2012-04-08 03:55 ./source/x/x11/slack-desc/xdm --rw-r--r-- 1 root root 810 2012-04-08 03:56 ./source/x/x11/slack-desc/xdpyinfo --rw-r--r-- 1 root root 808 2012-04-08 03:56 ./source/x/x11/slack-desc/xdriinfo --rw-r--r-- 1 root root 740 2012-04-08 03:57 ./source/x/x11/slack-desc/xedit --rw-r--r-- 1 root root 949 2012-04-08 03:57 ./source/x/x11/slack-desc/xev --rw-r--r-- 1 root root 810 2012-04-08 03:57 ./source/x/x11/slack-desc/xextproto --rw-r--r-- 1 root root 770 2012-04-08 03:58 ./source/x/x11/slack-desc/xeyes --rw-r--r-- 1 root root 931 2012-04-08 03:58 ./source/x/x11/slack-desc/xf86-input-acecad --rw-r--r-- 1 root root 932 2012-04-08 03:59 ./source/x/x11/slack-desc/xf86-input-aiptek --rw-r--r-- 1 root root 918 2012-04-08 03:59 ./source/x/x11/slack-desc/xf86-input-evdev --rw-r--r-- 1 root root 955 2012-04-08 04:00 ./source/x/x11/slack-desc/xf86-input-joystick --rw-r--r-- 1 root root 946 2012-07-22 17:18 ./source/x/x11/slack-desc/xf86-input-keyboard --rw-r--r-- 1 root root 938 2015-04-21 03:11 ./source/x/x11/slack-desc/xf86-input-libinput --rw-r--r-- 1 root root 896 2012-05-07 16:08 ./source/x/x11/slack-desc/xf86-input-mouse --rw-r--r-- 1 root root 955 2012-04-08 04:02 ./source/x/x11/slack-desc/xf86-input-penmount --rw-r--r-- 1 root root 961 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-synaptics --rw-r--r-- 1 root root 945 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-vmmouse --rw-r--r-- 1 root root 889 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-void --rw-r--r-- 1 root root 1000 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-wacom --rw-r--r-- 1 root root 920 2015-11-19 17:17 ./source/x/x11/slack-desc/xf86-video-amdgpu --rw-r--r-- 1 root root 889 2012-04-08 04:04 ./source/x/x11/slack-desc/xf86-video-apm --rw-r--r-- 1 root root 882 2012-04-08 04:05 ./source/x/x11/slack-desc/xf86-video-ark --rw-r--r-- 1 root root 895 2012-04-08 04:05 ./source/x/x11/slack-desc/xf86-video-ast --rw-r--r-- 1 root root 887 2012-04-08 04:05 ./source/x/x11/slack-desc/xf86-video-ati --rw-r--r-- 1 root root 914 2012-04-08 04:06 ./source/x/x11/slack-desc/xf86-video-chips --rw-r--r-- 1 root root 931 2012-04-08 04:06 ./source/x/x11/slack-desc/xf86-video-cirrus --rw-r--r-- 1 root root 919 2012-04-08 04:07 ./source/x/x11/slack-desc/xf86-video-dummy --rw-r--r-- 1 root root 878 2012-05-08 16:28 ./source/x/x11/slack-desc/xf86-video-fbdev --rw-r--r-- 1 root root 915 2012-04-08 04:07 ./source/x/x11/slack-desc/xf86-video-geode --rw-r--r-- 1 root root 919 2012-04-08 04:07 ./source/x/x11/slack-desc/xf86-video-glint --rw-r--r-- 1 root root 907 2012-04-08 04:08 ./source/x/x11/slack-desc/xf86-video-i128 --rw-r--r-- 1 root root 901 2012-04-08 04:08 ./source/x/x11/slack-desc/xf86-video-i740 --rw-r--r-- 1 root root 910 2012-04-08 04:09 ./source/x/x11/slack-desc/xf86-video-intel --rw-r--r-- 1 root root 923 2012-04-08 04:09 ./source/x/x11/slack-desc/xf86-video-mach64 --rw-r--r-- 1 root root 883 2012-04-08 04:10 ./source/x/x11/slack-desc/xf86-video-mga --rw-r--r-- 1 root root 987 2012-04-08 04:12 ./source/x/x11/slack-desc/xf86-video-modesetting --rw-r--r-- 1 root root 955 2012-04-08 04:10 ./source/x/x11/slack-desc/xf86-video-neomagic --rw-r--r-- 1 root root 945 2012-04-08 04:13 ./source/x/x11/slack-desc/xf86-video-nouveau --rw-r--r-- 1 root root 873 2012-04-08 04:11 ./source/x/x11/slack-desc/xf86-video-nv --rw-r--r-- 1 root root 978 2012-04-08 04:13 ./source/x/x11/slack-desc/xf86-video-openchrome --rw-r--r-- 1 root root 734 2012-04-08 04:14 ./source/x/x11/slack-desc/xf86-video-qxl --rw-r--r-- 1 root root 903 2012-04-08 04:15 ./source/x/x11/slack-desc/xf86-video-r128 --rw-r--r-- 1 root root 970 2012-04-08 04:19 ./source/x/x11/slack-desc/xf86-video-rendition --rw-r--r-- 1 root root 882 2012-04-08 04:19 ./source/x/x11/slack-desc/xf86-video-s3 --rw-r--r-- 1 root root 941 2012-04-08 04:19 ./source/x/x11/slack-desc/xf86-video-s3virge --rw-r--r-- 1 root root 928 2012-04-08 04:20 ./source/x/x11/slack-desc/xf86-video-savage --rw-r--r-- 1 root root 1018 2012-04-08 04:20 ./source/x/x11/slack-desc/xf86-video-siliconmotion --rw-r--r-- 1 root root 888 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-sis --rw-r--r-- 1 root root 927 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-sisusb --rw-r--r-- 1 root root 895 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-tdfx --rw-r--r-- 1 root root 889 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-tga --rw-r--r-- 1 root root 940 2012-04-08 04:24 ./source/x/x11/slack-desc/xf86-video-trident --rw-r--r-- 1 root root 915 2012-04-08 04:24 ./source/x/x11/slack-desc/xf86-video-tseng --rw-r--r-- 1 root root 876 2012-04-08 04:24 ./source/x/x11/slack-desc/xf86-video-v4l --rw-r--r-- 1 root root 903 2012-04-08 04:25 ./source/x/x11/slack-desc/xf86-video-vesa --rw-r--r-- 1 root root 930 2012-04-08 04:25 ./source/x/x11/slack-desc/xf86-video-vmware --rw-r--r-- 1 root root 925 2012-04-08 04:25 ./source/x/x11/slack-desc/xf86-video-voodoo --rw-r--r-- 1 root root 880 2012-04-08 04:26 ./source/x/x11/slack-desc/xf86-video-xgi --rw-r--r-- 1 root root 902 2013-02-21 19:47 ./source/x/x11/slack-desc/xf86-video-xgixp --rw-r--r-- 1 root root 904 2012-04-08 04:28 ./source/x/x11/slack-desc/xf86bigfontproto --rw-r--r-- 1 root root 792 2012-04-08 04:26 ./source/x/x11/slack-desc/xf86dga --rw-r--r-- 1 root root 803 2012-04-08 04:29 ./source/x/x11/slack-desc/xf86dgaproto --rw-r--r-- 1 root root 842 2012-04-08 04:27 ./source/x/x11/slack-desc/xf86driproto --rw-r--r-- 1 root root 896 2012-04-08 04:30 ./source/x/x11/slack-desc/xf86miscproto --rw-r--r-- 1 root root 915 2012-04-08 04:30 ./source/x/x11/slack-desc/xf86vidmodeproto --rw-r--r-- 1 root root 621 2012-04-08 04:31 ./source/x/x11/slack-desc/xfd --rw-r--r-- 1 root root 804 2012-04-08 04:31 ./source/x/x11/slack-desc/xfontsel --rw-r--r-- 1 root root 707 2012-04-08 01:11 ./source/x/x11/slack-desc/xfs --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 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 771 2012-07-22 17:18 ./source/x/x11/slack-desc/xinit --rw-r--r-- 1 root root 952 2012-04-08 04:34 ./source/x/x11/slack-desc/xinput --rw-r--r-- 1 root root 764 2012-04-08 04:35 ./source/x/x11/slack-desc/xkbcomp --rw-r--r-- 1 root root 755 2012-04-08 04:36 ./source/x/x11/slack-desc/xkbevd --rw-r--r-- 1 root root 703 2012-04-08 04:36 ./source/x/x11/slack-desc/xkbprint --rw-r--r-- 1 root root 708 2012-04-08 04:36 ./source/x/x11/slack-desc/xkbutils --rw-r--r-- 1 root root 1122 2012-04-08 04:37 ./source/x/x11/slack-desc/xkeyboard-config --rw-r--r-- 1 root root 757 2012-04-08 04:37 ./source/x/x11/slack-desc/xkill --rw-r--r-- 1 root root 763 2012-04-08 04:37 ./source/x/x11/slack-desc/xload --rw-r--r-- 1 root root 749 2012-04-08 04:38 ./source/x/x11/slack-desc/xlogo --rw-r--r-- 1 root root 807 2012-04-08 04:38 ./source/x/x11/slack-desc/xlsatoms --rw-r--r-- 1 root root 747 2012-04-08 04:39 ./source/x/x11/slack-desc/xlsclients --rw-r--r-- 1 root root 696 2012-04-08 04:39 ./source/x/x11/slack-desc/xlsfonts --rw-r--r-- 1 root root 620 2012-04-08 04:39 ./source/x/x11/slack-desc/xmag --rw-r--r-- 1 root root 753 2012-04-08 04:40 ./source/x/x11/slack-desc/xman --rw-r--r-- 1 root root 780 2012-04-08 04:41 ./source/x/x11/slack-desc/xmessage --rw-r--r-- 1 root root 692 2012-04-08 04:41 ./source/x/x11/slack-desc/xmh --rw-r--r-- 1 root root 868 2012-04-08 04:42 ./source/x/x11/slack-desc/xmodmap --rw-r--r-- 1 root root 766 2012-04-08 04:42 ./source/x/x11/slack-desc/xmore --rw-r--r-- 1 root root 954 2012-04-08 04:43 ./source/x/x11/slack-desc/xorg-cf-files --rw-r--r-- 1 root root 805 2012-04-08 04:43 ./source/x/x11/slack-desc/xorg-docs --rw-r--r-- 1 root root 1160 2007-02-13 18:20 ./source/x/x11/slack-desc/xorg-server --rw-r--r-- 1 root root 839 2009-05-30 01:47 ./source/x/x11/slack-desc/xorg-server-xephyr --rw-r--r-- 1 root root 1063 2007-02-13 18:18 ./source/x/x11/slack-desc/xorg-server-xnest --rw-r--r-- 1 root root 1160 2007-02-13 18:20 ./source/x/x11/slack-desc/xorg-server-xvfb --rw-r--r-- 1 root root 1140 2012-04-08 04:44 ./source/x/x11/slack-desc/xorg-sgml-doctools --rw-r--r-- 1 root root 664 2012-04-08 00:58 ./source/x/x11/slack-desc/xpr --rw-r--r-- 1 root root 766 2012-04-08 04:45 ./source/x/x11/slack-desc/xprop --rw-r--r-- 1 root root 776 2012-04-08 04:45 ./source/x/x11/slack-desc/xproto --rw-r--r-- 1 root root 1009 2013-08-20 22:30 ./source/x/x11/slack-desc/xproxymanagementprotocol --rw-r--r-- 1 root root 625 2012-04-08 04:46 ./source/x/x11/slack-desc/xpyb --rw-r--r-- 1 root root 658 2012-04-08 04:46 ./source/x/x11/slack-desc/xrandr --rw-r--r-- 1 root root 736 2012-04-08 04:46 ./source/x/x11/slack-desc/xrdb --rw-r--r-- 1 root root 792 2012-04-08 04:46 ./source/x/x11/slack-desc/xrefresh --rw-r--r-- 1 root root 773 2012-04-08 04:46 ./source/x/x11/slack-desc/xscope --rw-r--r-- 1 root root 681 2012-04-08 01:01 ./source/x/x11/slack-desc/xset --rw-r--r-- 1 root root 801 2012-04-08 04:47 ./source/x/x11/slack-desc/xsetroot --rw-r--r-- 1 root root 707 2012-04-08 04:47 ./source/x/x11/slack-desc/xsm --rw-r--r-- 1 root root 881 2012-04-08 04:47 ./source/x/x11/slack-desc/xstdcmap --rw-r--r-- 1 root root 849 2012-04-08 04:47 ./source/x/x11/slack-desc/xtrans --rw-r--r-- 1 root root 694 2012-04-08 04:48 ./source/x/x11/slack-desc/xvidtune --rw-r--r-- 1 root root 710 2012-04-08 03:25 ./source/x/x11/slack-desc/xvinfo --rw-r--r-- 1 root root 716 2012-04-08 02:21 ./source/x/x11/slack-desc/xwd --rw-r--r-- 1 root root 702 2012-04-08 02:21 ./source/x/x11/slack-desc/xwininfo --rw-r--r-- 1 root root 668 2012-04-07 23:42 ./source/x/x11/slack-desc/xwud -drwxr-xr-x 12 root root 4096 2016-06-04 17:35 ./source/x/x11/src -drwxr-xr-x 2 root root 4096 2016-02-29 20:41 ./source/x/x11/src/app --rw-r--r-- 1 root root 109176 2013-05-18 00:40 ./source/x/x11/src/app/appres-1.0.4.tar.xz --rw-r--r-- 1 root root 114520 2014-12-30 23:16 ./source/x/x11/src/app/bdftopcf-1.0.5.tar.xz --rw-r--r-- 1 root root 109956 2013-01-15 05:23 ./source/x/x11/src/app/beforelight-1.0.5.tar.xz --rw-r--r-- 1 root root 156176 2015-01-17 06:01 ./source/x/x11/src/app/bitmap-1.0.8.tar.xz --rw-r--r-- 1 root root 942584 2011-03-30 09:42 ./source/x/x11/src/app/compiz-0.8.8.tar.xz --rw-r--r-- 1 root root 145944 2013-01-13 00:06 ./source/x/x11/src/app/editres-1.0.6.tar.xz --rw-r--r-- 1 root root 98084 2008-05-10 22:53 ./source/x/x11/src/app/fonttosfnt-1.0.4.tar.xz --rw-r--r-- 1 root root 116372 2014-12-31 04:49 ./source/x/x11/src/app/fslsfonts-1.0.5.tar.xz --rw-r--r-- 1 root root 117176 2014-12-31 04:58 ./source/x/x11/src/app/fstobdf-1.0.6.tar.xz --rw-r--r-- 1 root root 125084 2015-01-17 06:13 ./source/x/x11/src/app/iceauth-1.0.7.tar.xz --rw-r--r-- 1 root root 117304 2013-01-16 02:21 ./source/x/x11/src/app/ico-1.0.4.tar.xz --rw-r--r-- 1 root root 1185316 2015-02-11 12:27 ./source/x/x11/src/app/intel-gpu-tools-1.9.tar.xz --rw-r--r-- 1 root root 106644 2012-03-01 03:35 ./source/x/x11/src/app/listres-1.0.3.tar.xz --rw-r--r-- 1 root root 128468 2012-03-23 04:25 ./source/x/x11/src/app/luit-1.1.1.tar.xz --rw-r--r-- 1 root root 90748 2009-10-13 20:33 ./source/x/x11/src/app/mkcomposecache-1.2.1.tar.xz --rw-r--r-- 1 root root 100044 2012-02-11 03:59 ./source/x/x11/src/app/mkfontdir-1.0.7.tar.xz --rw-r--r-- 1 root root 131188 2015-01-17 07:43 ./source/x/x11/src/app/mkfontscale-1.1.2.tar.xz --rw-r--r-- 1 root root 113356 2012-02-11 05:27 ./source/x/x11/src/app/oclock-1.0.3.tar.xz --rw-r--r-- 1 root root 133004 2015-06-11 08:25 ./source/x/x11/src/app/rendercheck-1.5.tar.xz --rw-r--r-- 1 root root 126684 2014-11-08 19:37 ./source/x/x11/src/app/rgb-1.0.6.tar.xz --rw-r--r-- 1 root root 124584 2015-01-20 05:02 ./source/x/x11/src/app/sessreg-1.1.0.tar.xz --rw-r--r-- 1 root root 124192 2015-04-17 05:30 ./source/x/x11/src/app/setxkbmap-1.3.1.tar.xz --rw-r--r-- 1 root root 116180 2014-12-31 05:11 ./source/x/x11/src/app/showfont-1.0.5.tar.xz --rw-r--r-- 1 root root 122464 2015-04-17 05:33 ./source/x/x11/src/app/smproxy-1.0.6.tar.xz --rw-r--r-- 1 root root 112036 2013-05-18 00:49 ./source/x/x11/src/app/transset-1.0.1.tar.xz --rw-r--r-- 1 root root 254668 2015-04-17 05:38 ./source/x/x11/src/app/twm-1.0.9.tar.xz --rw-r--r-- 1 root root 116556 2013-01-13 00:21 ./source/x/x11/src/app/viewres-1.0.4.tar.xz --rw-r--r-- 1 root root 167588 2015-04-17 05:43 ./source/x/x11/src/app/x11perf-1.6.0.tar.xz --rw-r--r-- 1 root root 142612 2014-04-02 18:27 ./source/x/x11/src/app/xauth-1.0.9.tar.xz --rw-r--r-- 1 root root 109304 2013-10-08 03:46 ./source/x/x11/src/app/xbacklight-1.2.1.tar.xz --rw-r--r-- 1 root root 107328 2011-01-25 20:45 ./source/x/x11/src/app/xbiff-1.0.3.tar.xz --rw-r--r-- 1 root root 131172 2015-01-20 05:28 ./source/x/x11/src/app/xcalc-1.0.6.tar.xz --rw-r--r-- 1 root root 121916 2013-09-06 06:23 ./source/x/x11/src/app/xclipboard-1.1.3.tar.xz --rw-r--r-- 1 root root 149700 2013-09-08 06:37 ./source/x/x11/src/app/xclock-1.0.7.tar.xz --rw-r--r-- 1 root root 203320 2013-01-05 13:35 ./source/x/x11/src/app/xcm-0.5.2.tar.xz --rw-r--r-- 1 root root 130232 2015-04-17 05:53 ./source/x/x11/src/app/xcmsdb-1.0.5.tar.xz --rw-r--r-- 1 root root 126964 2015-04-17 05:57 ./source/x/x11/src/app/xcompmgr-1.1.7.tar.xz --rw-r--r-- 1 root root 122332 2013-07-19 04:33 ./source/x/x11/src/app/xconsole-1.0.6.tar.xz --rw-r--r-- 1 root root 115284 2014-05-31 23:35 ./source/x/x11/src/app/xcursorgen-1.0.6.tar.xz --rw-r--r-- 1 root root 102156 2010-10-31 17:10 ./source/x/x11/src/app/xdbedizzy-1.1.0.tar.xz --rw-r--r-- 1 root root 136580 2015-04-17 06:08 ./source/x/x11/src/app/xditview-1.0.4.tar.xz --rw-r--r-- 1 root root 381740 2011-09-25 07:43 ./source/x/x11/src/app/xdm-1.1.11.tar.xz --rw-r--r-- 1 root root 130524 2015-04-17 06:02 ./source/x/x11/src/app/xdpyinfo-1.3.2.tar.xz --rw-r--r-- 1 root root 112776 2015-04-17 06:05 ./source/x/x11/src/app/xdriinfo-1.0.5.tar.xz --rw-r--r-- 1 root root 473760 2015-02-21 21:49 ./source/x/x11/src/app/xedit-1.2.2.tar.xz --rw-r--r-- 1 root root 122528 2015-04-17 06:12 ./source/x/x11/src/app/xev-1.2.2.tar.xz --rw-r--r-- 1 root root 105108 2010-11-25 07:30 ./source/x/x11/src/app/xeyes-1.1.1.tar.xz --rw-r--r-- 1 root root 97320 2010-10-31 18:20 ./source/x/x11/src/app/xf86dga-1.0.3.tar.xz --rw-r--r-- 1 root root 126768 2013-07-17 06:03 ./source/x/x11/src/app/xfd-1.1.2.tar.xz --rw-r--r-- 1 root root 128268 2013-05-18 01:02 ./source/x/x11/src/app/xfontsel-1.0.5.tar.xz --rw-r--r-- 1 root root 207060 2014-08-22 05:40 ./source/x/x11/src/app/xfs-1.1.4.tar.xz --rw-r--r-- 1 root root 113740 2014-12-31 05:06 ./source/x/x11/src/app/xfsinfo-1.0.5.tar.xz --rw-r--r-- 1 root root 113744 2015-04-17 06:20 ./source/x/x11/src/app/xgamma-1.0.6.tar.xz --rw-r--r-- 1 root root 171024 2015-04-17 06:26 ./source/x/x11/src/app/xgc-1.0.5.tar.xz --rw-r--r-- 1 root root 125428 2015-04-17 06:29 ./source/x/x11/src/app/xhost-1.0.7.tar.xz --rw-r--r-- 1 root root 151836 2014-09-11 17:33 ./source/x/x11/src/app/xinit-1.3.4.tar.xz --rw-r--r-- 1 root root 146860 2015-10-19 21:36 ./source/x/x11/src/app/xinput-1.6.2.tar.xz --rw-r--r-- 1 root root 225652 2014-11-20 22:21 ./source/x/x11/src/app/xkbcomp-1.3.0.tar.xz --rw-r--r-- 1 root root 141024 2015-04-17 06:39 ./source/x/x11/src/app/xkbevd-1.1.4.tar.xz --rw-r--r-- 1 root root 150312 2015-04-17 06:44 ./source/x/x11/src/app/xkbprint-1.0.4.tar.xz --rw-r--r-- 1 root root 120732 2013-02-10 23:48 ./source/x/x11/src/app/xkbutils-1.0.4.tar.xz --rw-r--r-- 1 root root 115800 2013-09-08 16:52 ./source/x/x11/src/app/xkill-1.0.4.tar.xz --rw-r--r-- 1 root root 126428 2013-08-04 04:44 ./source/x/x11/src/app/xload-1.1.2.tar.xz --rw-r--r-- 1 root root 115664 2012-03-23 05:58 ./source/x/x11/src/app/xlogo-1.0.4.tar.xz --rw-r--r-- 1 root root 113896 2015-04-17 06:50 ./source/x/x11/src/app/xlsatoms-1.1.2.tar.xz --rw-r--r-- 1 root root 117488 2013-09-08 16:58 ./source/x/x11/src/app/xlsclients-1.1.3.tar.xz --rw-r--r-- 1 root root 121124 2015-04-17 06:53 ./source/x/x11/src/app/xlsfonts-1.0.5.tar.xz --rw-r--r-- 1 root root 131748 2015-04-17 06:56 ./source/x/x11/src/app/xmag-1.0.6.tar.xz --rw-r--r-- 1 root root 170752 2015-03-07 03:08 ./source/x/x11/src/app/xman-1.1.4.tar.xz --rw-r--r-- 1 root root 115576 2013-01-13 06:24 ./source/x/x11/src/app/xmessage-1.0.4.tar.xz --rw-r--r-- 1 root root 189652 2015-04-17 07:03 ./source/x/x11/src/app/xmh-1.0.3.tar.xz --rw-r--r-- 1 root root 132472 2015-04-17 07:09 ./source/x/x11/src/app/xmodmap-1.0.9.tar.xz --rw-r--r-- 1 root root 99592 2010-07-23 22:53 ./source/x/x11/src/app/xmore-1.0.2.tar.xz --rw-r--r-- 1 root root 131204 2012-03-31 23:58 ./source/x/x11/src/app/xpr-1.0.4.tar.xz --rw-r--r-- 1 root root 134476 2013-08-09 03:06 ./source/x/x11/src/app/xprop-1.2.2.tar.xz --rw-r--r-- 1 root root 167084 2016-02-23 18:31 ./source/x/x11/src/app/xrandr-1.5.0.tar.xz --rw-r--r-- 1 root root 127736 2013-09-08 17:21 ./source/x/x11/src/app/xrdb-1.1.0.tar.xz --rw-r--r-- 1 root root 111288 2013-05-18 01:21 ./source/x/x11/src/app/xrefresh-1.0.5.tar.xz --rw-r--r-- 1 root root 193928 2014-06-07 02:07 ./source/x/x11/src/app/xscope-1.4.1.tar.xz --rw-r--r-- 1 root root 131108 2013-08-09 03:45 ./source/x/x11/src/app/xset-1.2.3.tar.xz --rw-r--r-- 1 root root 110928 2013-01-23 07:04 ./source/x/x11/src/app/xsetroot-1.1.1.tar.xz --rw-r--r-- 1 root root 147368 2013-02-10 23:57 ./source/x/x11/src/app/xsm-1.0.3.tar.xz --rw-r--r-- 1 root root 108580 2013-02-11 00:16 ./source/x/x11/src/app/xstdcmap-1.0.3.tar.xz --rw-r--r-- 1 root root 118284 2013-01-14 21:52 ./source/x/x11/src/app/xvidtune-1.0.3.tar.xz --rw-r--r-- 1 root root 114512 2015-05-01 06:05 ./source/x/x11/src/app/xvinfo-1.1.3.tar.xz --rw-r--r-- 1 root root 133028 2013-08-09 04:17 ./source/x/x11/src/app/xwd-1.0.6.tar.xz --rw-r--r-- 1 root root 146048 2013-05-18 04:07 ./source/x/x11/src/app/xwininfo-1.1.3.tar.xz --rw-r--r-- 1 root root 114396 2012-04-01 00:07 ./source/x/x11/src/app/xwud-1.0.4.tar.xz -drwxr-xr-x 2 root root 4096 2016-03-26 18:51 ./source/x/x11/src/data --rw-r--r-- 1 root root 107168 2010-12-09 06:29 ./source/x/x11/src/data/xbitmaps-1.1.1.tar.xz --rw-r--r-- 1 root root 1496584 2013-07-17 06:39 ./source/x/x11/src/data/xcursor-themes-1.0.4.tar.xz --rw-r--r-- 1 root root 781212 2016-01-26 21:03 ./source/x/x11/src/data/xkeyboard-config-2.17.tar.xz -drwxr-xr-x 2 root root 4096 2015-05-04 05:55 ./source/x/x11/src/doc --rw-r--r-- 1 root root 333452 2015-05-01 06:18 ./source/x/x11/src/doc/xorg-docs-1.7.1.tar.xz --rw-r--r-- 1 root root 110976 2012-06-06 02:42 ./source/x/x11/src/doc/xorg-sgml-doctools-1.11.tar.xz -drwxr-xr-x 2 root root 4096 2016-06-09 17:18 ./source/x/x11/src/driver --rw-r--r-- 1 root root 236544 2011-05-04 23:02 ./source/x/x11/src/driver/xf86-input-acecad-1.5.0.tar.xz --rw-r--r-- 1 root root 245724 2011-06-29 00:29 ./source/x/x11/src/driver/xf86-input-aiptek-1.4.1.tar.xz --rw-r--r-- 1 root root 342276 2016-06-01 01:42 ./source/x/x11/src/driver/xf86-input-evdev-2.10.3.tar.xz --rw-r--r-- 1 root root 268272 2012-03-11 11:05 ./source/x/x11/src/driver/xf86-input-joystick-1.6.1.tar.xz --rw-r--r-- 1 root root 277892 2015-04-06 23:25 ./source/x/x11/src/driver/xf86-input-keyboard-1.8.1.tar.xz --rw-r--r-- 1 root root 304180 2014-08-12 06:39 ./source/x/x11/src/driver/xf86-input-mouse-1.9.1.tar.xz --rw-r--r-- 1 root root 229120 2011-06-28 00:52 ./source/x/x11/src/driver/xf86-input-penmount-1.5.0.tar.xz --rw-r--r-- 1 root root 412108 2015-11-01 21:54 ./source/x/x11/src/driver/xf86-input-synaptics-1.8.3.tar.xz --rw-r--r-- 1 root root 258876 2015-06-25 10:30 ./source/x/x11/src/driver/xf86-input-vmmouse-13.1.0.tar.xz --rw-r--r-- 1 root root 225388 2011-05-05 03:46 ./source/x/x11/src/driver/xf86-input-void-1.4.0.tar.xz --rw-r--r-- 1 root root 539828 2016-05-13 23:12 ./source/x/x11/src/driver/xf86-input-wacom-0.33.0.tar.xz --rw-r--r-- 1 root root 322312 2016-04-07 09:41 ./source/x/x11/src/driver/xf86-video-amdgpu-1.1.0.tar.xz --rw-r--r-- 1 root root 271192 2012-07-17 06:16 ./source/x/x11/src/driver/xf86-video-apm-1.2.5.tar.xz --rw-r--r-- 1 root root 240392 2012-07-17 06:17 ./source/x/x11/src/driver/xf86-video-ark-0.7.5.tar.xz --rw-r--r-- 1 root root 295864 2015-08-19 01:37 ./source/x/x11/src/driver/xf86-video-ast-1.1.5.tar.xz --rw-r--r-- 1 root root 705996 2016-04-07 02:51 ./source/x/x11/src/driver/xf86-video-ati-7.7.0.tar.xz --rw-r--r-- 1 root root 345468 2015-09-26 16:32 ./source/x/x11/src/driver/xf86-video-chips-1.2.6.tar.xz --rw-r--r-- 1 root root 281712 2015-05-06 21:03 ./source/x/x11/src/driver/xf86-video-cirrus-1.5.3.tar.xz --rw-r--r-- 1 root root 237680 2013-09-09 19:02 ./source/x/x11/src/driver/xf86-video-dummy-0.3.7.tar.xz --rw-r--r-- 1 root root 571044 2016-02-03 19:20 ./source/x/x11/src/driver/xf86-video-geode-2.11.18.tar.xz --rw-r--r-- 1 root root 323416 2012-07-17 06:20 ./source/x/x11/src/driver/xf86-video-glint-1.2.8.tar.xz --rw-r--r-- 1 root root 269224 2012-07-17 06:21 ./source/x/x11/src/driver/xf86-video-i128-1.3.6.tar.xz --rw-r--r-- 1 root root 266212 2015-02-21 20:40 ./source/x/x11/src/driver/xf86-video-i740-1.3.5.tar.xz --rw-r--r-- 1 root root 947008 2016-06-09 07:19 ./source/x/x11/src/driver/xf86-video-intel-git_20160601_b617f80.tar.xz --rw-r--r-- 1 root root 469408 2015-05-04 19:58 ./source/x/x11/src/driver/xf86-video-mach64-6.9.5.tar.xz --rw-r--r-- 1 root root 394412 2015-02-19 21:45 ./source/x/x11/src/driver/xf86-video-mga-1.6.4.tar.xz --rw-r--r-- 1 root root 252904 2014-06-26 08:38 ./source/x/x11/src/driver/xf86-video-modesetting-0.9.0.tar.xz --rw-r--r-- 1 root root 280576 2015-05-08 09:52 ./source/x/x11/src/driver/xf86-video-neomagic-1.2.9.tar.xz --rw-r--r-- 1 root root 523320 2015-12-10 02:24 ./source/x/x11/src/driver/xf86-video-nouveau-1.0.12.tar.xz --rw-r--r-- 1 root root 328120 2012-07-17 06:50 ./source/x/x11/src/driver/xf86-video-nv-2.1.20.tar.xz --rw-r--r-- 1 root root 267328 2015-10-08 18:50 ./source/x/x11/src/driver/xf86-video-omap-0.4.4.tar.xz --rw-r--r-- 1 root root 440788 2016-04-12 12:50 ./source/x/x11/src/driver/xf86-video-openchrome-0.4.0.tar.xz --rw-r--r-- 1 root root 430204 2016-01-22 03:45 ./source/x/x11/src/driver/xf86-video-r128-6.10.1.tar.xz --rw-r--r-- 1 root root 310076 2015-11-11 17:05 ./source/x/x11/src/driver/xf86-video-rendition-4.2.6.tar.xz --rw-r--r-- 1 root root 270588 2012-07-17 06:26 ./source/x/x11/src/driver/xf86-video-s3-0.6.5.tar.xz --rw-r--r-- 1 root root 310152 2015-09-26 16:32 ./source/x/x11/src/driver/xf86-video-s3virge-1.10.7.tar.xz --rw-r--r-- 1 root root 345380 2015-05-08 10:14 ./source/x/x11/src/driver/xf86-video-savage-2.3.8.tar.xz --rw-r--r-- 1 root root 328668 2015-05-09 14:59 ./source/x/x11/src/driver/xf86-video-siliconmotion-1.7.8.tar.xz --rw-r--r-- 1 root root 603996 2015-08-29 23:42 ./source/x/x11/src/driver/xf86-video-sis-0.10.8.tar.xz --rw-r--r-- 1 root root 315000 2012-07-17 06:30 ./source/x/x11/src/driver/xf86-video-sisusb-0.9.6.tar.xz --rw-r--r-- 1 root root 298360 2015-02-22 21:28 ./source/x/x11/src/driver/xf86-video-tdfx-1.4.6.tar.xz --rw-r--r-- 1 root root 265952 2012-07-17 06:31 ./source/x/x11/src/driver/xf86-video-tga-1.2.2.tar.xz --rw-r--r-- 1 root root 308520 2015-03-30 17:13 ./source/x/x11/src/driver/xf86-video-trident-1.3.7.tar.xz --rw-r--r-- 1 root root 277748 2012-07-17 06:33 ./source/x/x11/src/driver/xf86-video-tseng-1.2.5.tar.xz --rw-r--r-- 1 root root 183872 2008-03-19 20:58 ./source/x/x11/src/driver/xf86-video-v4l-0.2.0.tar.xz --rw-r--r-- 1 root root 254884 2015-06-16 16:00 ./source/x/x11/src/driver/xf86-video-vesa-2.3.4.tar.xz --rw-r--r-- 1 root root 377148 2015-01-19 13:07 ./source/x/x11/src/driver/xf86-video-vmware-13.1.0.tar.xz --rw-r--r-- 1 root root 252404 2012-07-17 06:34 ./source/x/x11/src/driver/xf86-video-voodoo-1.2.5.tar.xz --rw-r--r-- 1 root root 466268 2015-08-21 15:35 ./source/x/x11/src/driver/xf86-video-xgi-1.6.1.tar.xz --rw-r--r-- 1 root root 338112 2012-07-17 06:35 ./source/x/x11/src/driver/xf86-video-xgixp-1.8.1.tar.xz -drwxr-xr-x 2 root root 4096 2015-03-15 21:33 ./source/x/x11/src/font --rw-r--r-- 1 root root 291832 2010-10-30 03:55 ./source/x/x11/src/font/encodings-1.0.4.tar.xz --rw-r--r-- 1 root root 945192 2010-11-14 23:54 ./source/x/x11/src/font/font-adobe-100dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 796356 2010-11-14 23:54 ./source/x/x11/src/font/font-adobe-75dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 296996 2010-11-14 23:59 ./source/x/x11/src/font/font-adobe-utopia-100dpi-1.0.4.tar.xz --rw-r--r-- 1 root root 247800 2010-11-15 00:02 ./source/x/x11/src/font/font-adobe-utopia-75dpi-1.0.4.tar.xz --rw-r--r-- 1 root root 263520 2010-11-15 00:05 ./source/x/x11/src/font/font-adobe-utopia-type1-1.0.4.tar.xz --rw-r--r-- 1 root root 92712 2010-10-05 06:16 ./source/x/x11/src/font/font-alias-1.0.3.tar.xz --rw-r--r-- 1 root root 101872 2010-11-15 19:55 ./source/x/x11/src/font/font-arabic-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 589148 2010-11-15 20:01 ./source/x/x11/src/font/font-bh-100dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 489900 2010-11-15 20:06 ./source/x/x11/src/font/font-bh-75dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 216368 2010-11-15 20:11 ./source/x/x11/src/font/font-bh-lucidatypewriter-100dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 193720 2010-11-15 20:16 ./source/x/x11/src/font/font-bh-lucidatypewriter-75dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 367740 2010-11-11 05:26 ./source/x/x11/src/font/font-bh-ttf-1.0.3.tar.xz --rw-r--r-- 1 root root 628208 2010-11-15 20:36 ./source/x/x11/src/font/font-bh-type1-1.0.3.tar.xz --rw-r--r-- 1 root root 172716 2010-11-15 20:39 ./source/x/x11/src/font/font-bitstream-100dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 155516 2010-11-15 20:46 ./source/x/x11/src/font/font-bitstream-75dpi-1.0.3.tar.xz --rw-r--r-- 1 root root 329196 2010-11-15 20:53 ./source/x/x11/src/font/font-bitstream-speedo-1.0.2.tar.xz --rw-r--r-- 1 root root 390700 2010-11-15 20:56 ./source/x/x11/src/font/font-bitstream-type1-1.0.3.tar.xz --rw-r--r-- 1 root root 236644 2010-11-15 21:06 ./source/x/x11/src/font/font-cronyx-cyrillic-1.0.3.tar.xz --rw-r--r-- 1 root root 94716 2010-11-15 21:14 ./source/x/x11/src/font/font-cursor-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 508312 2010-11-15 21:20 ./source/x/x11/src/font/font-daewoo-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 92740 2010-11-15 21:25 ./source/x/x11/src/font/font-dec-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 374360 2010-11-15 21:33 ./source/x/x11/src/font/font-ibm-type1-1.0.3.tar.xz --rw-r--r-- 1 root root 719756 2010-11-15 22:21 ./source/x/x11/src/font/font-isas-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 517868 2010-11-15 22:34 ./source/x/x11/src/font/font-jis-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 91408 2010-11-15 22:38 ./source/x/x11/src/font/font-micro-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 121968 2010-11-15 22:42 ./source/x/x11/src/font/font-misc-cyrillic-1.0.3.tar.xz --rw-r--r-- 1 root root 218584 2010-11-15 22:46 ./source/x/x11/src/font/font-misc-ethiopic-1.0.3.tar.xz --rw-r--r-- 1 root root 828248 2010-11-15 22:52 ./source/x/x11/src/font/font-misc-meltho-1.0.3.tar.xz --rw-r--r-- 1 root root 1423336 2010-11-15 23:06 ./source/x/x11/src/font/font-misc-misc-1.1.2.tar.xz --rw-r--r-- 1 root root 217292 2010-11-15 23:09 ./source/x/x11/src/font/font-mutt-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 128096 2010-11-15 23:12 ./source/x/x11/src/font/font-schumacher-misc-1.1.2.tar.xz --rw-r--r-- 1 root root 95876 2010-11-15 23:14 ./source/x/x11/src/font/font-screen-cyrillic-1.0.4.tar.xz --rw-r--r-- 1 root root 99540 2010-11-15 23:18 ./source/x/x11/src/font/font-sony-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 106568 2010-11-15 23:20 ./source/x/x11/src/font/font-sun-misc-1.0.3.tar.xz --rw-r--r-- 1 root root 136416 2015-03-14 16:01 ./source/x/x11/src/font/font-util-1.3.1.tar.xz --rw-r--r-- 1 root root 93740 2010-11-15 23:21 ./source/x/x11/src/font/font-winitzki-cyrillic-1.0.3.tar.xz --rw-r--r-- 1 root root 117928 2010-11-15 23:23 ./source/x/x11/src/font/font-xfree86-type1-1.0.4.tar.xz --rwxr-xr-x 1 root root 2052 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-intel.sh --rwxr-xr-x 1 root root 2080 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-nouveau.sh --rwxr-xr-x 1 root root 2125 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-openchrome.sh -drwxr-xr-x 2 root root 4096 2016-05-26 22:49 ./source/x/x11/src/lib --rw-r--r-- 1 root root 266224 2015-05-01 04:35 ./source/x/x11/src/lib/libFS-1.0.7.tar.xz --rw-r--r-- 1 root root 309088 2014-06-07 01:31 ./source/x/x11/src/lib/libICE-1.0.9.tar.xz --rw-r--r-- 1 root root 283276 2013-09-08 06:08 ./source/x/x11/src/lib/libSM-1.2.2.tar.xz --rw-r--r-- 1 root root 1751652 2015-03-09 22:48 ./source/x/x11/src/lib/libX11-1.6.3.tar.xz --rw-r--r-- 1 root root 235904 2012-03-08 05:08 ./source/x/x11/src/lib/libXScrnSaver-1.2.2.tar.xz --rw-r--r-- 1 root root 247936 2013-05-24 22:18 ./source/x/x11/src/lib/libXau-1.0.8.tar.xz --rw-r--r-- 1 root root 565164 2015-05-01 05:18 ./source/x/x11/src/lib/libXaw-1.0.13.tar.xz --rw-r--r-- 1 root root 454428 2012-03-29 22:44 ./source/x/x11/src/lib/libXaw3d-1.6.2.tar.xz --rw-r--r-- 1 root root 250328 2013-01-04 09:14 ./source/x/x11/src/lib/libXcm-0.5.2.tar.xz --rw-r--r-- 1 root root 239876 2013-01-03 07:30 ./source/x/x11/src/lib/libXcomposite-0.4.4.tar.xz --rw-r--r-- 1 root root 254664 2013-05-30 06:25 ./source/x/x11/src/lib/libXcursor-1.1.14.tar.xz --rw-r--r-- 1 root root 231332 2013-01-03 05:46 ./source/x/x11/src/lib/libXdamage-1.1.4.tar.xz --rw-r--r-- 1 root root 274516 2015-03-21 17:02 ./source/x/x11/src/lib/libXdmcp-1.1.2.tar.xz --rw-r--r-- 1 root root 212200 2010-10-31 16:46 ./source/x/x11/src/lib/libXevie-1.0.3.tar.xz --rw-r--r-- 1 root root 314576 2014-07-24 01:41 ./source/x/x11/src/lib/libXext-1.3.3.tar.xz --rw-r--r-- 1 root root 255828 2016-05-26 01:54 ./source/x/x11/src/lib/libXfixes-5.0.2.tar.xz --rw-r--r-- 1 root root 416988 2015-03-17 15:31 ./source/x/x11/src/lib/libXfont-1.5.1.tar.xz --rw-r--r-- 1 root root 189140 2009-10-13 20:47 ./source/x/x11/src/lib/libXfontcache-1.0.5.tar.xz --rw-r--r-- 1 root root 275024 2014-06-06 06:06 ./source/x/x11/src/lib/libXft-2.3.2.tar.xz --rw-r--r-- 1 root root 394988 2015-12-22 01:21 ./source/x/x11/src/lib/libXi-1.7.6.tar.xz --rw-r--r-- 1 root root 236468 2013-05-31 00:36 ./source/x/x11/src/lib/libXinerama-1.1.3.tar.xz --rw-r--r-- 1 root root 322344 2013-09-08 04:30 ./source/x/x11/src/lib/libXmu-1.1.2.tar.xz --rw-r--r-- 1 root root 259376 2015-02-21 22:05 ./source/x/x11/src/lib/libXp-1.0.3.tar.xz --rw-r--r-- 1 root root 362444 2013-09-08 04:44 ./source/x/x11/src/lib/libXpm-3.5.11.tar.xz --rw-r--r-- 1 root root 235464 2015-04-17 18:42 ./source/x/x11/src/lib/libXpresent-1.0.0.tar.xz --rw-r--r-- 1 root root 259296 2015-05-17 04:50 ./source/x/x11/src/lib/libXrandr-1.5.0.tar.xz --rw-r--r-- 1 root root 253880 2015-05-01 05:31 ./source/x/x11/src/lib/libXrender-0.9.9.tar.xz --rw-r--r-- 1 root root 235312 2013-05-31 00:54 ./source/x/x11/src/lib/libXres-1.0.7.tar.xz --rw-r--r-- 1 root root 646820 2015-05-01 05:40 ./source/x/x11/src/lib/libXt-1.1.5.tar.xz --rw-r--r-- 1 root root 261976 2013-05-31 02:11 ./source/x/x11/src/lib/libXtst-1.2.2.tar.xz --rw-r--r-- 1 root root 255508 2013-09-08 05:24 ./source/x/x11/src/lib/libXv-1.0.10.tar.xz --rw-r--r-- 1 root root 254468 2015-03-14 17:10 ./source/x/x11/src/lib/libXvMC-1.0.9.tar.xz --rw-r--r-- 1 root root 244736 2013-05-31 01:37 ./source/x/x11/src/lib/libXxf86dga-1.1.4.tar.xz --rw-r--r-- 1 root root 212836 2010-11-21 21:49 ./source/x/x11/src/lib/libXxf86misc-1.0.3.tar.xz --rw-r--r-- 1 root root 244964 2015-02-24 07:04 ./source/x/x11/src/lib/libXxf86vm-1.1.4.tar.xz --rw-r--r-- 1 root root 242436 2013-05-28 23:48 ./source/x/x11/src/lib/libdmx-1.1.3.tar.xz --rw-r--r-- 1 root root 249424 2015-05-01 04:42 ./source/x/x11/src/lib/libfontenc-1.1.3.tar.xz --rw-r--r-- 1 root root 297020 2015-05-01 04:47 ./source/x/x11/src/lib/libpciaccess-0.13.4.tar.xz --rw-r--r-- 1 root root 288036 2015-05-01 05:27 ./source/x/x11/src/lib/libxkbfile-1.0.9.tar.xz --rw-r--r-- 1 root root 237476 2015-01-02 18:46 ./source/x/x11/src/lib/libxshmfence-1.2.tar.xz --rw-r--r-- 1 root root 611464 2016-01-31 14:43 ./source/x/x11/src/lib/pixman-0.34.0.tar.xz --rw-r--r-- 1 root root 167348 2014-09-22 20:43 ./source/x/x11/src/lib/xtrans-1.3.5.tar.xz -drwxr-xr-x 2 root root 4096 2016-05-26 22:48 ./source/x/x11/src/proto --rw-r--r-- 1 root root 104916 2012-03-23 04:00 ./source/x/x11/src/proto/bigreqsproto-1.1.2.tar.xz --rw-r--r-- 1 root root 94356 2010-10-30 03:29 ./source/x/x11/src/proto/compositeproto-0.4.2.tar.xz --rw-r--r-- 1 root root 91724 2010-10-30 03:37 ./source/x/x11/src/proto/damageproto-1.2.1.tar.xz --rw-r--r-- 1 root root 89776 2011-01-06 01:39 ./source/x/x11/src/proto/dmxproto-2.3.1.tar.xz --rw-r--r-- 1 root root 100984 2012-07-11 23:07 ./source/x/x11/src/proto/dri2proto-2.8.tar.xz --rw-r--r-- 1 root root 98372 2013-11-01 01:08 ./source/x/x11/src/proto/dri3proto-1.0.tar.xz --rw-r--r-- 1 root root 88412 2011-01-06 02:06 ./source/x/x11/src/proto/evieext-1.1.1.tar.xz --rw-r--r-- 1 root root 93728 2011-03-08 16:19 ./source/x/x11/src/proto/fixesproto-5.0.tar.xz --rw-r--r-- 1 root root 78004 2009-10-13 20:53 ./source/x/x11/src/proto/fontcacheproto-0.1.3.tar.xz --rw-r--r-- 1 root root 142728 2014-04-14 17:40 ./source/x/x11/src/proto/fontsproto-2.1.3.tar.xz --rw-r--r-- 1 root root 117712 2013-12-10 15:08 ./source/x/x11/src/proto/glproto-1.4.17.tar.xz --rw-r--r-- 1 root root 185524 2016-04-04 02:32 ./source/x/x11/src/proto/inputproto-2.3.2.tar.xz --rw-r--r-- 1 root root 231492 2015-05-01 05:51 ./source/x/x11/src/proto/kbproto-1.0.7.tar.xz --rw-r--r-- 1 root root 101168 2013-11-01 01:05 ./source/x/x11/src/proto/presentproto-1.0.tar.xz --rw-r--r-- 1 root root 191432 2011-01-06 02:33 ./source/x/x11/src/proto/printproto-1.0.5.tar.xz --rw-r--r-- 1 root root 132864 2015-05-17 04:32 ./source/x/x11/src/proto/randrproto-1.5.0.tar.xz --rw-r--r-- 1 root root 114164 2012-03-23 04:00 ./source/x/x11/src/proto/recordproto-1.14.2.tar.xz --rw-r--r-- 1 root root 97920 2010-08-10 14:13 ./source/x/x11/src/proto/renderproto-0.11.1.tar.xz --rw-r--r-- 1 root root 96052 2011-05-28 04:32 ./source/x/x11/src/proto/resourceproto-1.2.0.tar.xz --rw-r--r-- 1 root root 110116 2012-03-23 04:00 ./source/x/x11/src/proto/scrnsaverproto-1.2.2.tar.xz --rw-r--r-- 1 root root 112500 2016-03-11 18:19 ./source/x/x11/src/proto/videoproto-2.3.3.tar.xz --rw-r--r-- 1 root root 104376 2012-03-23 04:01 ./source/x/x11/src/proto/xcmiscproto-1.2.2.tar.xz --rw-r--r-- 1 root root 211284 2013-12-27 18:17 ./source/x/x11/src/proto/xextproto-7.3.0.tar.xz --rw-r--r-- 1 root root 45976 2009-10-13 20:53 ./source/x/x11/src/proto/xf86bigfontproto-1.2.0.tar.xz --rw-r--r-- 1 root root 79572 2009-10-13 20:53 ./source/x/x11/src/proto/xf86dgaproto-2.1.tar.xz --rw-r--r-- 1 root root 89840 2011-01-06 03:57 ./source/x/x11/src/proto/xf86driproto-2.1.1.tar.xz --rw-r--r-- 1 root root 78424 2009-10-13 20:53 ./source/x/x11/src/proto/xf86miscproto-0.9.3.tar.xz --rw-r--r-- 1 root root 90148 2011-01-06 04:06 ./source/x/x11/src/proto/xf86vidmodeproto-2.3.1.tar.xz --rw-r--r-- 1 root root 89352 2011-01-06 04:21 ./source/x/x11/src/proto/xineramaproto-1.2.1.tar.xz --rw-r--r-- 1 root root 272496 2016-05-13 08:34 ./source/x/x11/src/proto/xproto-7.0.29.tar.xz -drwxr-xr-x 2 root root 4096 2015-12-23 20:06 ./source/x/x11/src/util --rw-r--r-- 1 root root 97488 2014-05-21 18:26 ./source/x/x11/src/util/gccmakedep-1.0.3.tar.xz --rw-r--r-- 1 root root 146672 2014-05-21 18:55 ./source/x/x11/src/util/imake-1.0.7.tar.xz --rw-r--r-- 1 root root 106664 2012-03-08 05:51 ./source/x/x11/src/util/lndir-1.0.3.tar.xz --rw-r--r-- 1 root root 133036 2013-07-23 05:15 ./source/x/x11/src/util/makedepend-1.0.5.tar.xz --rw-r--r-- 1 root root 77072 2014-03-27 13:21 ./source/x/x11/src/util/util-macros-1.19.0.tar.xz --rw-r--r-- 1 root root 298008 2015-12-22 01:29 ./source/x/x11/src/util/xorg-cf-files-1.0.6.tar.xz -drwxr-xr-x 2 root root 4096 2015-10-01 21:03 ./source/x/x11/src/xcb --rw-r--r-- 1 root root 185164 2009-10-14 09:16 ./source/x/x11/src/xcb/libpthread-stubs-0.3.tar.xz --rw-r--r-- 1 root root 357048 2015-09-06 10:48 ./source/x/x11/src/xcb/libxcb-1.11.1.tar.xz --rw-r--r-- 1 root root 134016 2014-08-01 13:49 ./source/x/x11/src/xcb/xcb-proto-1.11.tar.xz --rw-r--r-- 1 root root 247676 2014-10-15 05:34 ./source/x/x11/src/xcb/xcb-util-0.4.0.tar.xz --rw-r--r-- 1 root root 246156 2015-03-25 22:11 ./source/x/x11/src/xcb/xcb-util-cursor-0.1.2.tar.xz --rw-r--r-- 1 root root 251100 2015-04-26 14:14 ./source/x/x11/src/xcb/xcb-util-errors-1.0.tar.xz --rw-r--r-- 1 root root 271064 2014-10-15 04:11 ./source/x/x11/src/xcb/xcb-util-image-0.4.0.tar.xz --rw-r--r-- 1 root root 241520 2014-10-01 10:05 ./source/x/x11/src/xcb/xcb-util-keysyms-0.4.0.tar.xz --rw-r--r-- 1 root root 243560 2014-06-13 02:53 ./source/x/x11/src/xcb/xcb-util-renderutil-0.3.9.tar.xz --rw-r--r-- 1 root root 266716 2014-02-19 11:40 ./source/x/x11/src/xcb/xcb-util-wm-0.4.1.tar.xz --rw-r--r-- 1 root root 232228 2012-03-23 22:46 ./source/x/x11/src/xcb/xpyb-1.3.1.tar.xz --rw-r--r-- 1 root root 50 2016-05-25 21:06 ./source/x/x11/src/xf86-input-wacom.url -drwxr-xr-x 2 root root 4096 2016-04-06 00:53 ./source/x/x11/src/xserver --rw-r--r-- 1 root root 4696844 2016-04-04 19:48 ./source/x/x11/src/xserver/xorg-server-1.18.3.tar.xz --rwxr-xr-x 1 root root 13192 2015-08-19 06:04 ./source/x/x11/x11.SlackBuild -drwxr-xr-x 2 root root 4096 2014-05-13 04:30 ./source/x/xdg-user-dirs --rw-r--r-- 1 root root 281 2010-12-15 02:17 ./source/x/xdg-user-dirs/doinst.sh.gz --rw-r--r-- 1 root root 940 2011-02-01 06:53 ./source/x/xdg-user-dirs/slack-desc --rw-r--r-- 1 root root 174740 2013-06-27 08:53 ./source/x/xdg-user-dirs/xdg-user-dirs-0.15.tar.xz --rwxr-xr-x 1 root root 3470 2014-07-14 21:51 ./source/x/xdg-user-dirs/xdg-user-dirs.SlackBuild -drwxr-xr-x 2 root root 4096 2015-10-06 03:48 ./source/x/xdg-utils --rw-r--r-- 1 root root 1432 2011-01-20 23:46 ./source/x/xdg-utils/doinst.sh.gz --rw-r--r-- 1 root root 1010 2008-08-01 05:42 ./source/x/xdg-utils/slack-desc --rw-r--r-- 1 root root 268392 2015-10-05 19:05 ./source/x/xdg-utils/xdg-utils-1.1.1.tar.xz --rwxr-xr-x 1 root root 2679 2015-10-06 03:48 ./source/x/xdg-utils/xdg-utils.SlackBuild --rw-r--r-- 1 root root 94 2015-10-04 22:28 ./source/x/xdg-utils/xdg-utils.url -drwxr-xr-x 2 root root 4096 2016-06-13 01:44 ./source/x/xterm --rw-r--r-- 1 root root 172 2012-06-26 14:31 ./source/x/xterm/doinst.sh.gz --rw-r--r-- 1 root root 764 2007-02-11 23:54 ./source/x/xterm/slack-desc --rw-r--r-- 1 root root 862872 2016-06-05 22:28 ./source/x/xterm/xterm-325.tar.xz --rwxr-xr-x 1 root root 4074 2015-11-11 21:48 ./source/x/xterm/xterm.SlackBuild -drwxr-xr-x 48 root root 4096 2016-06-07 18:08 ./source/xap -drwxr-xr-x 2 root root 4096 2016-03-13 20:14 ./source/xap/MPlayer --rw-r--r-- 1 root root 222529 2015-09-12 17:47 ./source/xap/MPlayer/Blue-1.11.tar.bz2 --rw-r--r-- 1 root root 5234232 2016-01-25 01:47 ./source/xap/MPlayer/MPlayer-20160125.tar.xz --rwxr-xr-- 1 root root 18800 2016-05-23 20:28 ./source/xap/MPlayer/MPlayer.SlackBuild --rw-r--r-- 1 root root 163 2016-03-13 20:12 ./source/xap/MPlayer/MPlayer.demux_lavf.flac.diff.gz --rw-r--r-- 1 root root 7205300 2016-02-01 01:06 ./source/xap/MPlayer/ffmpeg-2.8.6.tar.xz --rw-r--r-- 1 root root 473 2016-02-01 01:06 ./source/xap/MPlayer/ffmpeg-2.8.6.tar.xz.asc --rw-r--r-- 1 root root 219 2015-03-09 20:07 ./source/xap/MPlayer/include-samba-4.0.patch.gz --rw-r--r-- 1 root root 1084 2015-04-05 05:08 ./source/xap/MPlayer/slack-desc -drwxr-xr-x 2 root root 4096 2016-03-29 21:02 ./source/xap/audacious -drwxr-xr-x 2 root root 4096 2016-03-29 21:02 ./source/xap/audacious-plugins --rw-r--r-- 1 root root 1489956 2016-03-28 16:31 ./source/xap/audacious-plugins/audacious-plugins-3.7.2.tar.xz --rwxr-xr-x 1 root root 4093 2015-10-23 20:52 ./source/xap/audacious-plugins/audacious-plugins.SlackBuild --rw-r--r-- 1 root root 891 2015-04-05 22:39 ./source/xap/audacious-plugins/slack-desc --rw-r--r-- 1 root root 524332 2016-03-28 16:28 ./source/xap/audacious/audacious-3.7.2.tar.xz --rwxr-xr-x 1 root root 4473 2015-10-23 20:50 ./source/xap/audacious/audacious.SlackBuild --rw-r--r-- 1 root root 121 2010-04-09 21:15 ./source/xap/audacious/doinst.sh.gz --rw-r--r-- 1 root root 1074 2015-04-05 22:31 ./source/xap/audacious/slack-desc -drwxr-xr-x 2 root root 4096 2012-08-08 18:00 ./source/xap/blackbox --rw-r--r-- 1 root root 176564 2009-09-03 11:39 ./source/xap/blackbox/bbkeys-0.9.1.tar.xz --rw-r--r-- 1 root root 964 2009-09-03 11:39 ./source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch.gz --rw-r--r-- 1 root root 409496 2009-09-03 11:39 ./source/xap/blackbox/blackbox-0.70.1.tar.xz --rwxr-xr-x 1 root root 6475 2012-08-08 18:01 ./source/xap/blackbox/blackbox.SlackBuild --rw-r--r-- 1 root root 900 2002-05-05 23:41 ./source/xap/blackbox/slack-desc --rw-r--r-- 1 root root 221 2012-08-08 17:58 ./source/xap/blackbox/startblackbox.gz --rw-r--r-- 1 root root 413 2012-07-25 03:36 ./source/xap/blackbox/textpropertytostring-unconditional.diff.gz --rw-r--r-- 1 root root 341 2012-08-08 17:58 ./source/xap/blackbox/xinitrc.blackbox.gz -drwxr-xr-x 2 root root 4096 2016-05-31 06:44 ./source/xap/blueman --rw-r--r-- 1 root root 914 2016-05-30 04:34 ./source/xap/blueman/0001-Notification-Also-check-if-notification-daemon-suppo.patch.gz --rw-r--r-- 1 root root 538 2016-05-30 04:34 ./source/xap/blueman/0002-NetConf-Treat-UnicodeDecodeError-as-if-there-was-no-.patch.gz --rw-r--r-- 1 root root 1951988 2016-03-23 06:42 ./source/xap/blueman/blueman-2.0.4.tar.xz --rwxr-xr-x 1 root root 4094 2016-05-30 04:36 ./source/xap/blueman/blueman.SlackBuild --rw-r--r-- 1 root root 392 2015-03-05 18:06 ./source/xap/blueman/doinst.sh.gz --rw-r--r-- 1 root root 898 2015-12-22 23:32 ./source/xap/blueman/slack-desc -drwxr-xr-x 2 root root 4096 2014-05-13 03:07 ./source/xap/ddd --rw-r--r-- 1 root root 4354996 2009-02-11 18:11 ./source/xap/ddd/ddd-3.3.12.tar.xz --rwxr-xr-x 1 root root 3825 2015-08-19 19:49 ./source/xap/ddd/ddd.SlackBuild --rw-r--r-- 1 root root 5689 2010-06-16 05:22 ./source/xap/ddd/ddd.png --rw-r--r-- 1 root root 121 2010-06-16 05:22 ./source/xap/ddd/doinst.sh.gz --rw-r--r-- 1 root root 260 2014-05-13 03:05 ./source/xap/ddd/machine_code_window_fix.diff.gz --rw-r--r-- 1 root root 883 2010-06-16 05:22 ./source/xap/ddd/slack-desc --rw-r--r-- 1 root root 199 2010-06-16 05:22 ./source/xap/ddd/strclass.C.diff.gz -drwxr-xr-x 2 root root 4096 2015-03-29 21:01 ./source/xap/electricsheep --rw-r--r-- 1 root root 1306 2009-01-07 22:42 ./source/xap/electricsheep/README.slackware --rw-r--r-- 1 root root 3116176 2009-03-06 00:30 ./source/xap/electricsheep/electricsheep-20090306.tar.xz --rwxr-xr-- 1 root root 9833 2015-03-29 21:03 ./source/xap/electricsheep/electricsheep.SlackBuild --rw-r--r-- 1 root root 268 2009-07-01 19:53 ./source/xap/electricsheep/electricsheep.mplayer.diff.gz --rw-r--r-- 1 root root 524 2009-01-07 21:38 ./source/xap/electricsheep/electricsheep_gnome-open.patch --rw-r--r-- 1 root root 2395 2015-03-29 20:59 ./source/xap/electricsheep/flam3-3.0.1-libpng15.patch --rw-r--r-- 1 root root 1116 2008-12-15 23:44 ./source/xap/electricsheep/slack-desc -drwxr-xr-x 2 root root 4096 2015-02-11 04:13 ./source/xap/fluxbox --rw-r--r-- 1 root root 790300 2015-02-08 10:51 ./source/xap/fluxbox/fluxbox-1.3.7.tar.xz --rwxr-xr-x 1 root root 4008 2015-01-08 05:48 ./source/xap/fluxbox/fluxbox.SlackBuild --rw-r--r-- 1 root root 323 2012-08-09 04:35 ./source/xap/fluxbox/fluxbox.startfluxbox.dbus.diff.gz --rw-r--r-- 1 root root 687 2005-07-21 19:03 ./source/xap/fluxbox/slack-desc --rw-r--r-- 1 root root 339 2012-08-08 19:16 ./source/xap/fluxbox/xinitrc.fluxbox.gz -drwxr-xr-x 2 root root 4096 2016-03-26 18:45 ./source/xap/fvwm --rw-r--r-- 1 root root 23007 2007-02-18 02:02 ./source/xap/fvwm/ancient-icons.tar.gz --rw-r--r-- 1 root root 296 2011-04-24 01:11 ./source/xap/fvwm/doinst.sh.gz --rw-r--r-- 1 root root 2048728 2016-03-19 21:55 ./source/xap/fvwm/fvwm-2.6.6.tar.xz --rwxr-xr-x 1 root root 4315 2016-03-26 18:45 ./source/xap/fvwm/fvwm.SlackBuild --rw-r--r-- 1 root root 869 2016-03-26 18:43 ./source/xap/fvwm/slack-desc --rw-r--r-- 1 root root 217 2012-08-09 04:42 ./source/xap/fvwm/startfvwm2.gz --rw-r--r-- 1 root root 360 2012-08-10 23:46 ./source/xap/fvwm/xinitrc.fvwm2.gz -drwxr-xr-x 2 root root 4096 2016-05-27 21:47 ./source/xap/geeqie --rw-r--r-- 1 root root 163 2010-03-11 23:20 ./source/xap/geeqie/doinst.sh.gz --rw-r--r-- 1 root root 1141820 2016-05-27 09:41 ./source/xap/geeqie/geeqie-1.3.tar.xz --rw-r--r-- 1 root root 677 2016-05-27 09:42 ./source/xap/geeqie/geeqie-1.3.tar.xz.asc --rwxr-xr-x 1 root root 4203 2016-04-12 17:34 ./source/xap/geeqie/geeqie.SlackBuild --rw-r--r-- 1 root root 760 2015-08-25 20:48 ./source/xap/geeqie/slack-desc -drwxr-xr-x 2 root root 4096 2009-05-23 00:41 ./source/xap/gftp --rw-r--r-- 1 root root 1687167 2008-12-02 14:07 ./source/xap/gftp/gftp-2.0.19.tar.bz2 --rwxr-xr-x 1 root root 3418 2015-03-20 20:36 ./source/xap/gftp/gftp.SlackBuild --rw-r--r-- 1 root root 304 2008-12-02 20:08 ./source/xap/gftp/gftp.desktop.gz --rw-r--r-- 1 root root 899 2008-02-11 03:44 ./source/xap/gftp/slack-desc -drwxr-xr-x 2 root root 4096 2015-11-22 04:16 ./source/xap/gimp --rw-r--r-- 1 root root 15707168 2015-11-21 18:20 ./source/xap/gimp/gimp-2.8.16.tar.xz --rwxr-xr-x 1 root root 4143 2015-11-24 02:50 ./source/xap/gimp/gimp.SlackBuild --rw-r--r-- 1 root root 928 2003-01-29 03:18 ./source/xap/gimp/slack-desc -drwxr-xr-x 2 root root 4096 2016-06-07 18:04 ./source/xap/gkrellm --rw-r--r-- 1 root root 657236 2016-06-03 22:13 ./source/xap/gkrellm/gkrellm-2.3.7.tar.xz --rw-r--r-- 1 root root 12374 2004-02-01 16:30 ./source/xap/gkrellm/gkrellm-countdown-0.1.1.tar.gz --rwxr-xr-x 1 root root 4603 2016-06-07 18:05 ./source/xap/gkrellm/gkrellm.SlackBuild --rw-r--r-- 1 root root 211 2008-10-26 01:35 ./source/xap/gkrellm/gkrellm.theme.defaults.diff.gz --rw-r--r-- 1 root root 971 2004-04-29 18:52 ./source/xap/gkrellm/slack-desc -drwxr-xr-x 2 root root 4096 2015-10-23 18:30 ./source/xap/gnuchess --rw-r--r-- 1 root root 142963 2004-01-19 11:50 ./source/xap/gnuchess/Sjeng-Free-11.2.tar.bz2 --rw-r--r-- 1 root root 652 2004-10-27 05:47 ./source/xap/gnuchess/chess.png --rw-r--r-- 1 root root 271 2013-03-20 02:41 ./source/xap/gnuchess/doinst.sh.gz --rw-r--r-- 1 root root 462386 2008-02-22 15:57 ./source/xap/gnuchess/eboard-1.1.1.tar.bz2 --rw-r--r-- 1 root root 458 2010-02-20 03:54 ./source/xap/gnuchess/eboard.assert.diff.gz --rw-r--r-- 1 root root 224 2004-10-27 06:07 ./source/xap/gnuchess/eboard.desktop --rw-r--r-- 1 root root 221 2013-03-20 01:49 ./source/xap/gnuchess/eboard.ldl.diff.gz --rw-r--r-- 1 root root 336 2015-03-23 16:11 ./source/xap/gnuchess/eboard.png16.diff.gz --rw-r--r-- 1 root root 502336 2015-10-17 14:46 ./source/xap/gnuchess/gnuchess-6.2.2.tar.xz --rwxr-xr-x 1 root root 5961 2015-10-23 18:30 ./source/xap/gnuchess/gnuchess.SlackBuild --rw-r--r-- 1 root root 796 2004-10-27 22:53 ./source/xap/gnuchess/slack-desc --rw-r--r-- 1 root root 2571776 2014-11-03 01:39 ./source/xap/gnuchess/xboard-4.8.0.tar.xz --rw-r--r-- 1 root root 269 2015-03-20 18:35 ./source/xap/gnuchess/xboard.conf.diff.gz -drwxr-xr-x 2 root root 4096 2016-03-15 21:10 ./source/xap/gnuplot --rw-r--r-- 1 root root 4018280 2016-02-22 04:50 ./source/xap/gnuplot/gnuplot-5.0.3.tar.xz --rwxr-xr-x 1 root root 4282 2016-05-17 21:08 ./source/xap/gnuplot/gnuplot.SlackBuild --rw-r--r-- 1 root root 1105 2002-03-16 08:23 ./source/xap/gnuplot/slack-desc -drwxr-xr-x 2 root root 4096 2016-06-14 17:12 ./source/xap/gparted --rw-r--r-- 1 root root 742 2016-01-14 02:52 ./source/xap/gparted/com.slackware.pkexec.gparted.policy --rw-r--r-- 1 root root 121 2016-02-03 19:48 ./source/xap/gparted/doinst.sh.gz --rw-r--r-- 1 root root 1964360 2016-06-13 16:57 ./source/xap/gparted/gparted-0.26.1.tar.xz --rwxr-xr-x 1 root root 4168 2016-02-03 19:48 ./source/xap/gparted/gparted.SlackBuild --rw-r--r-- 1 root root 131 2016-01-14 02:52 ./source/xap/gparted/gparted_polkit --rw-r--r-- 1 root root 868 2016-02-03 19:42 ./source/xap/gparted/slack-desc -drwxr-xr-x 2 root root 4096 2014-09-23 14:10 ./source/xap/gucharmap --rw-r--r-- 1 root root 172 2013-01-18 06:36 ./source/xap/gucharmap/doinst.sh.gz --rw-r--r-- 1 root root 1918188 2014-05-12 19:30 ./source/xap/gucharmap/gucharmap-3.12.1.tar.xz --rwxr-xr-x 1 root root 3381 2015-11-20 23:21 ./source/xap/gucharmap/gucharmap.SlackBuild --rw-r--r-- 1 root root 669 2004-10-13 19:31 ./source/xap/gucharmap/slack-desc +-rw-r--r-- 1 root root 822 2012-04-08 02:11 ./source/x/x11/slack-desc/font-bh-ttf +-rw-r--r-- 1 root root 850 2012-04-08 02:12 ./source/x/x11/slack-desc/font-bh-type1 +-rw-r--r-- 1 root root 960 2012-04-08 02:13 ./source/x/x11/slack-desc/font-bitstream-100dpi +-rw-r--r-- 1 root root 946 2012-04-08 02:13 ./source/x/x11/slack-desc/font-bitstream-75dpi +-rw-r--r-- 1 root root 962 2012-04-08 02:13 ./source/x/x11/slack-desc/font-bitstream-speedo +-rw-r--r-- 1 root root 948 2012-04-08 02:14 ./source/x/x11/slack-desc/font-bitstream-type1 +-rw-r--r-- 1 root root 946 2012-04-08 02:15 ./source/x/x11/slack-desc/font-cronyx-cyrillic +-rw-r--r-- 1 root root 890 2012-04-08 02:15 ./source/x/x11/slack-desc/font-cursor-misc +-rw-r--r-- 1 root root 890 2012-04-08 02:15 ./source/x/x11/slack-desc/font-daewoo-misc +-rw-r--r-- 1 root root 848 2012-04-08 02:15 ./source/x/x11/slack-desc/font-dec-misc +-rw-r--r-- 1 root root 864 2012-04-08 02:16 ./source/x/x11/slack-desc/font-ibm-type1 +-rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-isas-misc +-rw-r--r-- 1 root root 848 2012-04-08 02:17 ./source/x/x11/slack-desc/font-jis-misc +-rw-r--r-- 1 root root 876 2012-04-08 02:17 ./source/x/x11/slack-desc/font-micro-misc +-rw-r--r-- 1 root root 918 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-cyrillic +-rw-r--r-- 1 root root 918 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-ethiopic +-rw-r--r-- 1 root root 890 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-meltho +-rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-misc-misc +-rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-mutt-misc +-rw-r--r-- 1 root root 946 2012-04-08 02:17 ./source/x/x11/slack-desc/font-schumacher-misc +-rw-r--r-- 1 root root 946 2012-04-08 02:18 ./source/x/x11/slack-desc/font-screen-cyrillic +-rw-r--r-- 1 root root 862 2012-04-08 02:17 ./source/x/x11/slack-desc/font-sony-misc +-rw-r--r-- 1 root root 848 2012-04-08 02:18 ./source/x/x11/slack-desc/font-sun-misc +-rw-r--r-- 1 root root 822 2012-04-08 02:18 ./source/x/x11/slack-desc/font-util +-rw-r--r-- 1 root root 974 2012-04-08 02:19 ./source/x/x11/slack-desc/font-winitzki-cyrillic +-rw-r--r-- 1 root root 920 2012-04-08 02:20 ./source/x/x11/slack-desc/font-xfree86-type1 +-rw-r--r-- 1 root root 883 2012-04-08 02:20 ./source/x/x11/slack-desc/fontcacheproto +-rw-r--r-- 1 root root 824 2012-04-08 02:20 ./source/x/x11/slack-desc/fontsproto +-rw-r--r-- 1 root root 833 2012-04-08 02:22 ./source/x/x11/slack-desc/fonttosfnt +-rw-r--r-- 1 root root 823 2012-04-08 02:23 ./source/x/x11/slack-desc/fslsfonts +-rw-r--r-- 1 root root 829 2012-04-08 02:23 ./source/x/x11/slack-desc/fstobdf +-rw-r--r-- 1 root root 818 2012-04-08 02:23 ./source/x/x11/slack-desc/gccmakedep +-rw-r--r-- 1 root root 736 2014-05-13 20:38 ./source/x/x11/slack-desc/glamor-egl +-rw-r--r-- 1 root root 781 2012-04-08 02:25 ./source/x/x11/slack-desc/glproto +-rw-r--r-- 1 root root 806 2012-04-08 02:26 ./source/x/x11/slack-desc/iceauth +-rw-r--r-- 1 root root 761 2012-04-08 02:26 ./source/x/x11/slack-desc/ico +-rw-r--r-- 1 root root 748 2012-04-08 02:27 ./source/x/x11/slack-desc/imake +-rw-r--r-- 1 root root 820 2012-04-08 02:27 ./source/x/x11/slack-desc/inputproto +-rw-r--r-- 1 root root 879 2012-04-08 02:28 ./source/x/x11/slack-desc/intel-gpu-tools +-rw-r--r-- 1 root root 785 2012-04-08 02:28 ./source/x/x11/slack-desc/kbproto +-rw-r--r-- 1 root root 745 2012-04-08 02:28 ./source/x/x11/slack-desc/libFS +-rw-r--r-- 1 root root 761 2012-04-08 02:29 ./source/x/x11/slack-desc/libICE +-rw-r--r-- 1 root root 744 2012-04-08 02:42 ./source/x/x11/slack-desc/libSM +-rw-r--r-- 1 root root 762 2012-04-08 02:42 ./source/x/x11/slack-desc/libX11 +-rw-r--r-- 1 root root 869 2012-04-08 03:03 ./source/x/x11/slack-desc/libXScrnSaver +-rw-r--r-- 1 root root 926 2012-04-08 03:06 ./source/x/x11/slack-desc/libXau +-rw-r--r-- 1 root root 665 2012-04-08 03:03 ./source/x/x11/slack-desc/libXaw +-rw-r--r-- 1 root root 971 2012-04-08 02:50 ./source/x/x11/slack-desc/libXaw3d +-rw-r--r-- 1 root root 767 2012-04-08 02:51 ./source/x/x11/slack-desc/libXcm +-rw-r--r-- 1 root root 872 2012-04-08 03:04 ./source/x/x11/slack-desc/libXcomposite +-rw-r--r-- 1 root root 827 2012-04-08 03:06 ./source/x/x11/slack-desc/libXcursor +-rw-r--r-- 1 root root 827 2012-04-08 03:06 ./source/x/x11/slack-desc/libXdamage +-rw-r--r-- 1 root root 800 2012-04-08 03:07 ./source/x/x11/slack-desc/libXdmcp +-rw-r--r-- 1 root root 804 2012-04-08 03:07 ./source/x/x11/slack-desc/libXevie +-rw-r--r-- 1 root root 793 2012-04-08 03:08 ./source/x/x11/slack-desc/libXext +-rw-r--r-- 1 root root 811 2012-04-08 03:08 ./source/x/x11/slack-desc/libXfixes +-rw-r--r-- 1 root root 1034 2012-04-08 03:18 ./source/x/x11/slack-desc/libXfont +-rw-r--r-- 1 root root 874 2012-04-08 03:18 ./source/x/x11/slack-desc/libXfontcache +-rw-r--r-- 1 root root 748 2012-04-08 03:18 ./source/x/x11/slack-desc/libXft +-rw-r--r-- 1 root root 749 2012-04-08 03:18 ./source/x/x11/slack-desc/libXi +-rw-r--r-- 1 root root 846 2012-04-08 03:19 ./source/x/x11/slack-desc/libXinerama +-rw-r--r-- 1 root root 807 2012-04-08 03:23 ./source/x/x11/slack-desc/libXmu +-rw-r--r-- 1 root root 738 2012-04-08 03:23 ./source/x/x11/slack-desc/libXp +-rw-r--r-- 1 root root 770 2012-04-08 03:24 ./source/x/x11/slack-desc/libXpm +-rw-r--r-- 1 root root 853 2015-04-21 01:58 ./source/x/x11/slack-desc/libXpresent +-rw-r--r-- 1 root root 821 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrandr +-rw-r--r-- 1 root root 838 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrender +-rw-r--r-- 1 root root 779 2012-04-08 03:25 ./source/x/x11/slack-desc/libXres +-rw-r--r-- 1 root root 744 2012-04-08 03:26 ./source/x/x11/slack-desc/libXt +-rw-r--r-- 1 root root 792 2012-04-08 03:26 ./source/x/x11/slack-desc/libXtst +-rw-r--r-- 1 root root 777 2012-04-08 03:26 ./source/x/x11/slack-desc/libXv +-rw-r--r-- 1 root root 777 2012-04-08 02:52 ./source/x/x11/slack-desc/libXvMC +-rw-r--r-- 1 root root 844 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86dga +-rw-r--r-- 1 root root 864 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86misc +-rw-r--r-- 1 root root 829 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86vm +-rw-r--r-- 1 root root 777 2012-04-08 03:28 ./source/x/x11/slack-desc/libdmx +-rw-r--r-- 1 root root 807 2012-04-08 03:28 ./source/x/x11/slack-desc/libfontenc +-rw-r--r-- 1 root root 840 2012-04-08 03:29 ./source/x/x11/slack-desc/libpciaccess +-rw-r--r-- 1 root root 1003 2012-04-08 03:30 ./source/x/x11/slack-desc/libpthread-stubs +-rw-r--r-- 1 root root 903 2007-02-14 06:52 ./source/x/x11/slack-desc/libxcb +-rw-r--r-- 1 root root 824 2012-04-08 02:45 ./source/x/x11/slack-desc/libxkbfile +-rw-r--r-- 1 root root 847 2014-05-13 05:34 ./source/x/x11/slack-desc/libxshmfence +-rw-r--r-- 1 root root 707 2012-04-08 03:30 ./source/x/x11/slack-desc/listres +-rw-r--r-- 1 root root 778 2012-04-08 03:31 ./source/x/x11/slack-desc/lndir +-rw-r--r-- 1 root root 827 2012-04-08 03:31 ./source/x/x11/slack-desc/luit +-rw-r--r-- 1 root root 818 2012-04-08 03:31 ./source/x/x11/slack-desc/makedepend +-rw-r--r-- 1 root root 890 2012-04-08 03:31 ./source/x/x11/slack-desc/mkcomposecache +-rw-r--r-- 1 root root 823 2012-04-08 03:32 ./source/x/x11/slack-desc/mkfontdir +-rw-r--r-- 1 root root 734 2012-04-08 03:32 ./source/x/x11/slack-desc/mkfontscale +-rw-r--r-- 1 root root 679 2012-04-08 03:32 ./source/x/x11/slack-desc/oclock +-rw-r--r-- 1 root root 823 2012-04-08 02:44 ./source/x/x11/slack-desc/pixman +-rw-r--r-- 1 root root 731 2014-05-13 05:22 ./source/x/x11/slack-desc/presentproto +-rw-r--r-- 1 root root 731 2012-04-08 03:32 ./source/x/x11/slack-desc/printproto +-rw-r--r-- 1 root root 674 2012-04-08 03:32 ./source/x/x11/slack-desc/randrproto +-rw-r--r-- 1 root root 835 2012-04-08 03:33 ./source/x/x11/slack-desc/recordproto +-rw-r--r-- 1 root root 760 2012-04-08 03:40 ./source/x/x11/slack-desc/rendercheck +-rw-r--r-- 1 root root 838 2012-04-08 03:40 ./source/x/x11/slack-desc/renderproto +-rw-r--r-- 1 root root 865 2012-04-08 03:40 ./source/x/x11/slack-desc/resourceproto +-rw-r--r-- 1 root root 709 2012-04-08 03:40 ./source/x/x11/slack-desc/rgb +-rw-r--r-- 1 root root 889 2012-04-08 03:41 ./source/x/x11/slack-desc/scrnsaverproto +-rw-r--r-- 1 root root 750 2012-04-08 03:41 ./source/x/x11/slack-desc/sessreg +-rw-r--r-- 1 root root 798 2012-04-08 03:42 ./source/x/x11/slack-desc/setxkbmap +-rw-r--r-- 1 root root 737 2012-04-08 03:42 ./source/x/x11/slack-desc/showfont +-rw-r--r-- 1 root root 707 2012-04-08 03:42 ./source/x/x11/slack-desc/smproxy +-rw-r--r-- 1 root root 884 2012-06-13 15:39 ./source/x/x11/slack-desc/transset +-rw-r--r-- 1 root root 730 2012-04-08 03:43 ./source/x/x11/slack-desc/twm +-rw-r--r-- 1 root root 823 2012-04-08 03:43 ./source/x/x11/slack-desc/util-macros +-rw-r--r-- 1 root root 820 2012-04-08 03:43 ./source/x/x11/slack-desc/videoproto +-rw-r--r-- 1 root root 796 2012-04-08 03:43 ./source/x/x11/slack-desc/viewres +-rw-r--r-- 1 root root 779 2012-04-08 03:44 ./source/x/x11/slack-desc/x11perf +-rw-r--r-- 1 root root 679 2012-04-08 03:44 ./source/x/x11/slack-desc/xauth +-rw-r--r-- 1 root root 796 2012-04-08 03:44 ./source/x/x11/slack-desc/xbacklight +-rw-r--r-- 1 root root 726 2012-04-08 03:44 ./source/x/x11/slack-desc/xbiff +-rw-r--r-- 1 root root 786 2012-04-08 03:45 ./source/x/x11/slack-desc/xbitmaps +-rw-r--r-- 1 root root 639 2012-04-08 03:45 ./source/x/x11/slack-desc/xcalc +-rw-r--r-- 1 root root 922 2012-04-08 01:17 ./source/x/x11/slack-desc/xcb-proto +-rw-r--r-- 1 root root 809 2012-04-08 03:45 ./source/x/x11/slack-desc/xcb-util +-rw-r--r-- 1 root root 808 2013-09-07 20:11 ./source/x/x11/slack-desc/xcb-util-cursor +-rw-r--r-- 1 root root 1011 2015-04-27 03:32 ./source/x/x11/slack-desc/xcb-util-errors +-rw-r--r-- 1 root root 778 2012-04-08 01:14 ./source/x/x11/slack-desc/xcb-util-image +-rw-r--r-- 1 root root 827 2012-04-08 01:18 ./source/x/x11/slack-desc/xcb-util-keysyms +-rw-r--r-- 1 root root 871 2012-04-08 03:49 ./source/x/x11/slack-desc/xcb-util-renderutil +-rw-r--r-- 1 root root 774 2012-04-08 03:51 ./source/x/x11/slack-desc/xcb-util-wm +-rw-r--r-- 1 root root 890 2012-04-08 03:46 ./source/x/x11/slack-desc/xclipboard +-rw-r--r-- 1 root root 748 2012-04-08 03:52 ./source/x/x11/slack-desc/xclock +-rw-r--r-- 1 root root 746 2013-01-13 00:59 ./source/x/x11/slack-desc/xcm +-rw-r--r-- 1 root root 838 2012-04-08 03:52 ./source/x/x11/slack-desc/xcmiscproto +-rw-r--r-- 1 root root 824 2012-04-08 03:54 ./source/x/x11/slack-desc/xcmsdb +-rw-r--r-- 1 root root 761 2012-04-08 03:53 ./source/x/x11/slack-desc/xcompmgr +-rw-r--r-- 1 root root 678 2012-04-08 03:54 ./source/x/x11/slack-desc/xconsole +-rw-r--r-- 1 root root 844 2012-04-08 03:54 ./source/x/x11/slack-desc/xcursor-themes +-rw-r--r-- 1 root root 834 2012-04-08 03:54 ./source/x/x11/slack-desc/xcursorgen +-rw-r--r-- 1 root root 714 2012-04-08 03:55 ./source/x/x11/slack-desc/xdbedizzy +-rw-r--r-- 1 root root 797 2012-04-08 03:55 ./source/x/x11/slack-desc/xditview +-rw-r--r-- 1 root root 707 2012-04-08 03:55 ./source/x/x11/slack-desc/xdm +-rw-r--r-- 1 root root 810 2012-04-08 03:56 ./source/x/x11/slack-desc/xdpyinfo +-rw-r--r-- 1 root root 808 2012-04-08 03:56 ./source/x/x11/slack-desc/xdriinfo +-rw-r--r-- 1 root root 740 2012-04-08 03:57 ./source/x/x11/slack-desc/xedit +-rw-r--r-- 1 root root 949 2012-04-08 03:57 ./source/x/x11/slack-desc/xev +-rw-r--r-- 1 root root 810 2012-04-08 03:57 ./source/x/x11/slack-desc/xextproto +-rw-r--r-- 1 root root 770 2012-04-08 03:58 ./source/x/x11/slack-desc/xeyes +-rw-r--r-- 1 root root 931 2012-04-08 03:58 ./source/x/x11/slack-desc/xf86-input-acecad +-rw-r--r-- 1 root root 932 2012-04-08 03:59 ./source/x/x11/slack-desc/xf86-input-aiptek +-rw-r--r-- 1 root root 918 2012-04-08 03:59 ./source/x/x11/slack-desc/xf86-input-evdev +-rw-r--r-- 1 root root 955 2012-04-08 04:00 ./source/x/x11/slack-desc/xf86-input-joystick +-rw-r--r-- 1 root root 946 2012-07-22 17:18 ./source/x/x11/slack-desc/xf86-input-keyboard +-rw-r--r-- 1 root root 938 2015-04-21 03:11 ./source/x/x11/slack-desc/xf86-input-libinput +-rw-r--r-- 1 root root 896 2012-05-07 16:08 ./source/x/x11/slack-desc/xf86-input-mouse +-rw-r--r-- 1 root root 955 2012-04-08 04:02 ./source/x/x11/slack-desc/xf86-input-penmount +-rw-r--r-- 1 root root 961 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-synaptics +-rw-r--r-- 1 root root 945 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-vmmouse +-rw-r--r-- 1 root root 889 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-void +-rw-r--r-- 1 root root 1000 2012-04-08 04:03 ./source/x/x11/slack-desc/xf86-input-wacom +-rw-r--r-- 1 root root 920 2015-11-19 17:17 ./source/x/x11/slack-desc/xf86-video-amdgpu +-rw-r--r-- 1 root root 889 2012-04-08 04:04 ./source/x/x11/slack-desc/xf86-video-apm +-rw-r--r-- 1 root root 882 2012-04-08 04:05 ./source/x/x11/slack-desc/xf86-video-ark +-rw-r--r-- 1 root root 895 2012-04-08 04:05 ./source/x/x11/slack-desc/xf86-video-ast +-rw-r--r-- 1 root root 887 2012-04-08 04:05 ./source/x/x11/slack-desc/xf86-video-ati +-rw-r--r-- 1 root root 914 2012-04-08 04:06 ./source/x/x11/slack-desc/xf86-video-chips +-rw-r--r-- 1 root root 931 2012-04-08 04:06 ./source/x/x11/slack-desc/xf86-video-cirrus +-rw-r--r-- 1 root root 919 2012-04-08 04:07 ./source/x/x11/slack-desc/xf86-video-dummy +-rw-r--r-- 1 root root 878 2012-05-08 16:28 ./source/x/x11/slack-desc/xf86-video-fbdev +-rw-r--r-- 1 root root 915 2012-04-08 04:07 ./source/x/x11/slack-desc/xf86-video-geode +-rw-r--r-- 1 root root 919 2012-04-08 04:07 ./source/x/x11/slack-desc/xf86-video-glint +-rw-r--r-- 1 root root 907 2012-04-08 04:08 ./source/x/x11/slack-desc/xf86-video-i128 +-rw-r--r-- 1 root root 901 2012-04-08 04:08 ./source/x/x11/slack-desc/xf86-video-i740 +-rw-r--r-- 1 root root 910 2012-04-08 04:09 ./source/x/x11/slack-desc/xf86-video-intel +-rw-r--r-- 1 root root 923 2012-04-08 04:09 ./source/x/x11/slack-desc/xf86-video-mach64 +-rw-r--r-- 1 root root 883 2012-04-08 04:10 ./source/x/x11/slack-desc/xf86-video-mga +-rw-r--r-- 1 root root 987 2012-04-08 04:12 ./source/x/x11/slack-desc/xf86-video-modesetting +-rw-r--r-- 1 root root 955 2012-04-08 04:10 ./source/x/x11/slack-desc/xf86-video-neomagic +-rw-r--r-- 1 root root 945 2012-04-08 04:13 ./source/x/x11/slack-desc/xf86-video-nouveau +-rw-r--r-- 1 root root 873 2012-04-08 04:11 ./source/x/x11/slack-desc/xf86-video-nv +-rw-r--r-- 1 root root 978 2012-04-08 04:13 ./source/x/x11/slack-desc/xf86-video-openchrome +-rw-r--r-- 1 root root 734 2012-04-08 04:14 ./source/x/x11/slack-desc/xf86-video-qxl +-rw-r--r-- 1 root root 903 2012-04-08 04:15 ./source/x/x11/slack-desc/xf86-video-r128 +-rw-r--r-- 1 root root 970 2012-04-08 04:19 ./source/x/x11/slack-desc/xf86-video-rendition +-rw-r--r-- 1 root root 882 2012-04-08 04:19 ./source/x/x11/slack-desc/xf86-video-s3 +-rw-r--r-- 1 root root 941 2012-04-08 04:19 ./source/x/x11/slack-desc/xf86-video-s3virge +-rw-r--r-- 1 root root 928 2012-04-08 04:20 ./source/x/x11/slack-desc/xf86-video-savage +-rw-r--r-- 1 root root 1018 2012-04-08 04:20 ./source/x/x11/slack-desc/xf86-video-siliconmotion +-rw-r--r-- 1 root root 888 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-sis +-rw-r--r-- 1 root root 927 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-sisusb +-rw-r--r-- 1 root root 895 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-tdfx +-rw-r--r-- 1 root root 889 2012-04-08 04:23 ./source/x/x11/slack-desc/xf86-video-tga +-rw-r--r-- 1 root root 940 2012-04-08 04:24 ./source/x/x11/slack-desc/xf86-video-trident +-rw-r--r-- 1 root root 915 2012-04-08 04:24 ./source/x/x11/slack-desc/xf86-video-tseng +-rw-r--r-- 1 root root 876 2012-04-08 04:24 ./source/x/x11/slack-desc/xf86-video-v4l +-rw-r--r-- 1 root root 903 2012-04-08 04:25 ./source/x/x11/slack-desc/xf86-video-vesa +-rw-r--r-- 1 root root 930 2012-04-08 04:25 ./source/x/x11/slack-desc/xf86-video-vmware +-rw-r--r-- 1 root root 925 2012-04-08 04:25 ./source/x/x11/slack-desc/xf86-video-voodoo +-rw-r--r-- 1 root root 880 2012-04-08 04:26 ./source/x/x11/slack-desc/xf86-video-xgi +-rw-r--r-- 1 root root 902 2013-02-21 19:47 ./source/x/x11/slack-desc/xf86-video-xgixp +-rw-r--r-- 1 root root 904 2012-04-08 04:28 ./source/x/x11/slack-desc/xf86bigfontproto +-rw-r--r-- 1 root root 792 2012-04-08 04:26 ./source/x/x11/slack-desc/xf86dga +-rw-r--r-- 1 root root 803 2012-04-08 04:29 ./source/x/x11/slack-desc/xf86dgaproto +-rw-r--r-- 1 root root 842 2012-04-08 04:27 ./source/x/x11/slack-desc/xf86driproto +-rw-r--r-- 1 root root 896 2012-04-08 04:30 ./source/x/x11/slack-desc/xf86miscproto +-rw-r--r-- 1 root root 915 2012-04-08 04:30 ./source/x/x11/slack-desc/xf86vidmodeproto +-rw-r--r-- 1 root root 621 2012-04-08 04:31 ./source/x/x11/slack-desc/xfd +-rw-r--r-- 1 root root 804 2012-04-08 04:31 ./source/x/x11/slack-desc/xfontsel +-rw-r--r-- 1 root root 707 2012-04-08 01:11 ./source/x/x11/slack-desc/xfs +-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 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 771 2012-07-22 17:18 ./source/x/x11/slack-desc/xinit +-rw-r--r-- 1 root root 952 2012-04-08 04:34 ./source/x/x11/slack-desc/xinput +-rw-r--r-- 1 root root 764 2012-04-08 04:35 ./source/x/x11/slack-desc/xkbcomp +-rw-r--r-- 1 root root 755 2012-04-08 04:36 ./source/x/x11/slack-desc/xkbevd +-rw-r--r-- 1 root root 703 2012-04-08 04:36 ./source/x/x11/slack-desc/xkbprint +-rw-r--r-- 1 root root 708 2012-04-08 04:36 ./source/x/x11/slack-desc/xkbutils +-rw-r--r-- 1 root root 1122 2012-04-08 04:37 ./source/x/x11/slack-desc/xkeyboard-config +-rw-r--r-- 1 root root 757 2012-04-08 04:37 ./source/x/x11/slack-desc/xkill +-rw-r--r-- 1 root root 763 2012-04-08 04:37 ./source/x/x11/slack-desc/xload +-rw-r--r-- 1 root root 749 2012-04-08 04:38 ./source/x/x11/slack-desc/xlogo +-rw-r--r-- 1 root root 807 2012-04-08 04:38 ./source/x/x11/slack-desc/xlsatoms +-rw-r--r-- 1 root root 747 2012-04-08 04:39 ./source/x/x11/slack-desc/xlsclients +-rw-r--r-- 1 root root 696 2012-04-08 04:39 ./source/x/x11/slack-desc/xlsfonts +-rw-r--r-- 1 root root 620 2012-04-08 04:39 ./source/x/x11/slack-desc/xmag +-rw-r--r-- 1 root root 753 2012-04-08 04:40 ./source/x/x11/slack-desc/xman +-rw-r--r-- 1 root root 780 2012-04-08 04:41 ./source/x/x11/slack-desc/xmessage +-rw-r--r-- 1 root root 692 2012-04-08 04:41 ./source/x/x11/slack-desc/xmh +-rw-r--r-- 1 root root 868 2012-04-08 04:42 ./source/x/x11/slack-desc/xmodmap +-rw-r--r-- 1 root root 766 2012-04-08 04:42 ./source/x/x11/slack-desc/xmore +-rw-r--r-- 1 root root 954 2012-04-08 04:43 ./source/x/x11/slack-desc/xorg-cf-files +-rw-r--r-- 1 root root 805 2012-04-08 04:43 ./source/x/x11/slack-desc/xorg-docs +-rw-r--r-- 1 root root 1160 2007-02-13 18:20 ./source/x/x11/slack-desc/xorg-server +-rw-r--r-- 1 root root 839 2009-05-30 01:47 ./source/x/x11/slack-desc/xorg-server-xephyr +-rw-r--r-- 1 root root 1063 2007-02-13 18:18 ./source/x/x11/slack-desc/xorg-server-xnest +-rw-r--r-- 1 root root 1160 2007-02-13 18:20 ./source/x/x11/slack-desc/xorg-server-xvfb +-rw-r--r-- 1 root root 1140 2012-04-08 04:44 ./source/x/x11/slack-desc/xorg-sgml-doctools +-rw-r--r-- 1 root root 664 2012-04-08 00:58 ./source/x/x11/slack-desc/xpr +-rw-r--r-- 1 root root 766 2012-04-08 04:45 ./source/x/x11/slack-desc/xprop +-rw-r--r-- 1 root root 776 2012-04-08 04:45 ./source/x/x11/slack-desc/xproto +-rw-r--r-- 1 root root 1009 2013-08-20 22:30 ./source/x/x11/slack-desc/xproxymanagementprotocol +-rw-r--r-- 1 root root 625 2012-04-08 04:46 ./source/x/x11/slack-desc/xpyb +-rw-r--r-- 1 root root 658 2012-04-08 04:46 ./source/x/x11/slack-desc/xrandr +-rw-r--r-- 1 root root 736 2012-04-08 04:46 ./source/x/x11/slack-desc/xrdb +-rw-r--r-- 1 root root 792 2012-04-08 04:46 ./source/x/x11/slack-desc/xrefresh +-rw-r--r-- 1 root root 773 2012-04-08 04:46 ./source/x/x11/slack-desc/xscope +-rw-r--r-- 1 root root 681 2012-04-08 01:01 ./source/x/x11/slack-desc/xset +-rw-r--r-- 1 root root 801 2012-04-08 04:47 ./source/x/x11/slack-desc/xsetroot +-rw-r--r-- 1 root root 707 2012-04-08 04:47 ./source/x/x11/slack-desc/xsm +-rw-r--r-- 1 root root 881 2012-04-08 04:47 ./source/x/x11/slack-desc/xstdcmap +-rw-r--r-- 1 root root 849 2012-04-08 04:47 ./source/x/x11/slack-desc/xtrans +-rw-r--r-- 1 root root 694 2012-04-08 04:48 ./source/x/x11/slack-desc/xvidtune +-rw-r--r-- 1 root root 710 2012-04-08 03:25 ./source/x/x11/slack-desc/xvinfo +-rw-r--r-- 1 root root 716 2012-04-08 02:21 ./source/x/x11/slack-desc/xwd +-rw-r--r-- 1 root root 702 2012-04-08 02:21 ./source/x/x11/slack-desc/xwininfo +-rw-r--r-- 1 root root 668 2012-04-07 23:42 ./source/x/x11/slack-desc/xwud +drwxr-xr-x 12 root root 4096 2016-06-04 17:35 ./source/x/x11/src +drwxr-xr-x 2 root root 4096 2016-02-29 20:41 ./source/x/x11/src/app +-rw-r--r-- 1 root root 109176 2013-05-18 00:40 ./source/x/x11/src/app/appres-1.0.4.tar.xz +-rw-r--r-- 1 root root 114520 2014-12-30 23:16 ./source/x/x11/src/app/bdftopcf-1.0.5.tar.xz +-rw-r--r-- 1 root root 109956 2013-01-15 05:23 ./source/x/x11/src/app/beforelight-1.0.5.tar.xz +-rw-r--r-- 1 root root 156176 2015-01-17 06:01 ./source/x/x11/src/app/bitmap-1.0.8.tar.xz +-rw-r--r-- 1 root root 942584 2011-03-30 09:42 ./source/x/x11/src/app/compiz-0.8.8.tar.xz +-rw-r--r-- 1 root root 145944 2013-01-13 00:06 ./source/x/x11/src/app/editres-1.0.6.tar.xz +-rw-r--r-- 1 root root 98084 2008-05-10 22:53 ./source/x/x11/src/app/fonttosfnt-1.0.4.tar.xz +-rw-r--r-- 1 root root 116372 2014-12-31 04:49 ./source/x/x11/src/app/fslsfonts-1.0.5.tar.xz +-rw-r--r-- 1 root root 117176 2014-12-31 04:58 ./source/x/x11/src/app/fstobdf-1.0.6.tar.xz +-rw-r--r-- 1 root root 125084 2015-01-17 06:13 ./source/x/x11/src/app/iceauth-1.0.7.tar.xz +-rw-r--r-- 1 root root 117304 2013-01-16 02:21 ./source/x/x11/src/app/ico-1.0.4.tar.xz +-rw-r--r-- 1 root root 1185316 2015-02-11 12:27 ./source/x/x11/src/app/intel-gpu-tools-1.9.tar.xz +-rw-r--r-- 1 root root 106644 2012-03-01 03:35 ./source/x/x11/src/app/listres-1.0.3.tar.xz +-rw-r--r-- 1 root root 128468 2012-03-23 04:25 ./source/x/x11/src/app/luit-1.1.1.tar.xz +-rw-r--r-- 1 root root 90748 2009-10-13 20:33 ./source/x/x11/src/app/mkcomposecache-1.2.1.tar.xz +-rw-r--r-- 1 root root 100044 2012-02-11 03:59 ./source/x/x11/src/app/mkfontdir-1.0.7.tar.xz +-rw-r--r-- 1 root root 131188 2015-01-17 07:43 ./source/x/x11/src/app/mkfontscale-1.1.2.tar.xz +-rw-r--r-- 1 root root 113356 2012-02-11 05:27 ./source/x/x11/src/app/oclock-1.0.3.tar.xz +-rw-r--r-- 1 root root 133004 2015-06-11 08:25 ./source/x/x11/src/app/rendercheck-1.5.tar.xz +-rw-r--r-- 1 root root 126684 2014-11-08 19:37 ./source/x/x11/src/app/rgb-1.0.6.tar.xz +-rw-r--r-- 1 root root 124584 2015-01-20 05:02 ./source/x/x11/src/app/sessreg-1.1.0.tar.xz +-rw-r--r-- 1 root root 124192 2015-04-17 05:30 ./source/x/x11/src/app/setxkbmap-1.3.1.tar.xz +-rw-r--r-- 1 root root 116180 2014-12-31 05:11 ./source/x/x11/src/app/showfont-1.0.5.tar.xz +-rw-r--r-- 1 root root 122464 2015-04-17 05:33 ./source/x/x11/src/app/smproxy-1.0.6.tar.xz +-rw-r--r-- 1 root root 112036 2013-05-18 00:49 ./source/x/x11/src/app/transset-1.0.1.tar.xz +-rw-r--r-- 1 root root 254668 2015-04-17 05:38 ./source/x/x11/src/app/twm-1.0.9.tar.xz +-rw-r--r-- 1 root root 116556 2013-01-13 00:21 ./source/x/x11/src/app/viewres-1.0.4.tar.xz +-rw-r--r-- 1 root root 167588 2015-04-17 05:43 ./source/x/x11/src/app/x11perf-1.6.0.tar.xz +-rw-r--r-- 1 root root 142612 2014-04-02 18:27 ./source/x/x11/src/app/xauth-1.0.9.tar.xz +-rw-r--r-- 1 root root 109304 2013-10-08 03:46 ./source/x/x11/src/app/xbacklight-1.2.1.tar.xz +-rw-r--r-- 1 root root 107328 2011-01-25 20:45 ./source/x/x11/src/app/xbiff-1.0.3.tar.xz +-rw-r--r-- 1 root root 131172 2015-01-20 05:28 ./source/x/x11/src/app/xcalc-1.0.6.tar.xz +-rw-r--r-- 1 root root 121916 2013-09-06 06:23 ./source/x/x11/src/app/xclipboard-1.1.3.tar.xz +-rw-r--r-- 1 root root 149700 2013-09-08 06:37 ./source/x/x11/src/app/xclock-1.0.7.tar.xz +-rw-r--r-- 1 root root 203320 2013-01-05 13:35 ./source/x/x11/src/app/xcm-0.5.2.tar.xz +-rw-r--r-- 1 root root 130232 2015-04-17 05:53 ./source/x/x11/src/app/xcmsdb-1.0.5.tar.xz +-rw-r--r-- 1 root root 126964 2015-04-17 05:57 ./source/x/x11/src/app/xcompmgr-1.1.7.tar.xz +-rw-r--r-- 1 root root 122332 2013-07-19 04:33 ./source/x/x11/src/app/xconsole-1.0.6.tar.xz +-rw-r--r-- 1 root root 115284 2014-05-31 23:35 ./source/x/x11/src/app/xcursorgen-1.0.6.tar.xz +-rw-r--r-- 1 root root 102156 2010-10-31 17:10 ./source/x/x11/src/app/xdbedizzy-1.1.0.tar.xz +-rw-r--r-- 1 root root 136580 2015-04-17 06:08 ./source/x/x11/src/app/xditview-1.0.4.tar.xz +-rw-r--r-- 1 root root 381740 2011-09-25 07:43 ./source/x/x11/src/app/xdm-1.1.11.tar.xz +-rw-r--r-- 1 root root 130524 2015-04-17 06:02 ./source/x/x11/src/app/xdpyinfo-1.3.2.tar.xz +-rw-r--r-- 1 root root 112776 2015-04-17 06:05 ./source/x/x11/src/app/xdriinfo-1.0.5.tar.xz +-rw-r--r-- 1 root root 473760 2015-02-21 21:49 ./source/x/x11/src/app/xedit-1.2.2.tar.xz +-rw-r--r-- 1 root root 122528 2015-04-17 06:12 ./source/x/x11/src/app/xev-1.2.2.tar.xz +-rw-r--r-- 1 root root 105108 2010-11-25 07:30 ./source/x/x11/src/app/xeyes-1.1.1.tar.xz +-rw-r--r-- 1 root root 97320 2010-10-31 18:20 ./source/x/x11/src/app/xf86dga-1.0.3.tar.xz +-rw-r--r-- 1 root root 126768 2013-07-17 06:03 ./source/x/x11/src/app/xfd-1.1.2.tar.xz +-rw-r--r-- 1 root root 128268 2013-05-18 01:02 ./source/x/x11/src/app/xfontsel-1.0.5.tar.xz +-rw-r--r-- 1 root root 207060 2014-08-22 05:40 ./source/x/x11/src/app/xfs-1.1.4.tar.xz +-rw-r--r-- 1 root root 113740 2014-12-31 05:06 ./source/x/x11/src/app/xfsinfo-1.0.5.tar.xz +-rw-r--r-- 1 root root 113744 2015-04-17 06:20 ./source/x/x11/src/app/xgamma-1.0.6.tar.xz +-rw-r--r-- 1 root root 171024 2015-04-17 06:26 ./source/x/x11/src/app/xgc-1.0.5.tar.xz +-rw-r--r-- 1 root root 125428 2015-04-17 06:29 ./source/x/x11/src/app/xhost-1.0.7.tar.xz +-rw-r--r-- 1 root root 151836 2014-09-11 17:33 ./source/x/x11/src/app/xinit-1.3.4.tar.xz +-rw-r--r-- 1 root root 146860 2015-10-19 21:36 ./source/x/x11/src/app/xinput-1.6.2.tar.xz +-rw-r--r-- 1 root root 225652 2014-11-20 22:21 ./source/x/x11/src/app/xkbcomp-1.3.0.tar.xz +-rw-r--r-- 1 root root 141024 2015-04-17 06:39 ./source/x/x11/src/app/xkbevd-1.1.4.tar.xz +-rw-r--r-- 1 root root 150312 2015-04-17 06:44 ./source/x/x11/src/app/xkbprint-1.0.4.tar.xz +-rw-r--r-- 1 root root 120732 2013-02-10 23:48 ./source/x/x11/src/app/xkbutils-1.0.4.tar.xz +-rw-r--r-- 1 root root 115800 2013-09-08 16:52 ./source/x/x11/src/app/xkill-1.0.4.tar.xz +-rw-r--r-- 1 root root 126428 2013-08-04 04:44 ./source/x/x11/src/app/xload-1.1.2.tar.xz +-rw-r--r-- 1 root root 115664 2012-03-23 05:58 ./source/x/x11/src/app/xlogo-1.0.4.tar.xz +-rw-r--r-- 1 root root 113896 2015-04-17 06:50 ./source/x/x11/src/app/xlsatoms-1.1.2.tar.xz +-rw-r--r-- 1 root root 117488 2013-09-08 16:58 ./source/x/x11/src/app/xlsclients-1.1.3.tar.xz +-rw-r--r-- 1 root root 121124 2015-04-17 06:53 ./source/x/x11/src/app/xlsfonts-1.0.5.tar.xz +-rw-r--r-- 1 root root 131748 2015-04-17 06:56 ./source/x/x11/src/app/xmag-1.0.6.tar.xz +-rw-r--r-- 1 root root 170752 2015-03-07 03:08 ./source/x/x11/src/app/xman-1.1.4.tar.xz +-rw-r--r-- 1 root root 115576 2013-01-13 06:24 ./source/x/x11/src/app/xmessage-1.0.4.tar.xz +-rw-r--r-- 1 root root 189652 2015-04-17 07:03 ./source/x/x11/src/app/xmh-1.0.3.tar.xz +-rw-r--r-- 1 root root 132472 2015-04-17 07:09 ./source/x/x11/src/app/xmodmap-1.0.9.tar.xz +-rw-r--r-- 1 root root 99592 2010-07-23 22:53 ./source/x/x11/src/app/xmore-1.0.2.tar.xz +-rw-r--r-- 1 root root 131204 2012-03-31 23:58 ./source/x/x11/src/app/xpr-1.0.4.tar.xz +-rw-r--r-- 1 root root 134476 2013-08-09 03:06 ./source/x/x11/src/app/xprop-1.2.2.tar.xz +-rw-r--r-- 1 root root 167084 2016-02-23 18:31 ./source/x/x11/src/app/xrandr-1.5.0.tar.xz +-rw-r--r-- 1 root root 127736 2013-09-08 17:21 ./source/x/x11/src/app/xrdb-1.1.0.tar.xz +-rw-r--r-- 1 root root 111288 2013-05-18 01:21 ./source/x/x11/src/app/xrefresh-1.0.5.tar.xz +-rw-r--r-- 1 root root 193928 2014-06-07 02:07 ./source/x/x11/src/app/xscope-1.4.1.tar.xz +-rw-r--r-- 1 root root 131108 2013-08-09 03:45 ./source/x/x11/src/app/xset-1.2.3.tar.xz +-rw-r--r-- 1 root root 110928 2013-01-23 07:04 ./source/x/x11/src/app/xsetroot-1.1.1.tar.xz +-rw-r--r-- 1 root root 147368 2013-02-10 23:57 ./source/x/x11/src/app/xsm-1.0.3.tar.xz +-rw-r--r-- 1 root root 108580 2013-02-11 00:16 ./source/x/x11/src/app/xstdcmap-1.0.3.tar.xz +-rw-r--r-- 1 root root 118284 2013-01-14 21:52 ./source/x/x11/src/app/xvidtune-1.0.3.tar.xz +-rw-r--r-- 1 root root 114512 2015-05-01 06:05 ./source/x/x11/src/app/xvinfo-1.1.3.tar.xz +-rw-r--r-- 1 root root 133028 2013-08-09 04:17 ./source/x/x11/src/app/xwd-1.0.6.tar.xz +-rw-r--r-- 1 root root 146048 2013-05-18 04:07 ./source/x/x11/src/app/xwininfo-1.1.3.tar.xz +-rw-r--r-- 1 root root 114396 2012-04-01 00:07 ./source/x/x11/src/app/xwud-1.0.4.tar.xz +drwxr-xr-x 2 root root 4096 2016-03-26 18:51 ./source/x/x11/src/data +-rw-r--r-- 1 root root 107168 2010-12-09 06:29 ./source/x/x11/src/data/xbitmaps-1.1.1.tar.xz +-rw-r--r-- 1 root root 1496584 2013-07-17 06:39 ./source/x/x11/src/data/xcursor-themes-1.0.4.tar.xz +-rw-r--r-- 1 root root 781212 2016-01-26 21:03 ./source/x/x11/src/data/xkeyboard-config-2.17.tar.xz +drwxr-xr-x 2 root root 4096 2015-05-04 05:55 ./source/x/x11/src/doc +-rw-r--r-- 1 root root 333452 2015-05-01 06:18 ./source/x/x11/src/doc/xorg-docs-1.7.1.tar.xz +-rw-r--r-- 1 root root 110976 2012-06-06 02:42 ./source/x/x11/src/doc/xorg-sgml-doctools-1.11.tar.xz +drwxr-xr-x 2 root root 4096 2016-06-09 17:18 ./source/x/x11/src/driver +-rw-r--r-- 1 root root 236544 2011-05-04 23:02 ./source/x/x11/src/driver/xf86-input-acecad-1.5.0.tar.xz +-rw-r--r-- 1 root root 245724 2011-06-29 00:29 ./source/x/x11/src/driver/xf86-input-aiptek-1.4.1.tar.xz +-rw-r--r-- 1 root root 342276 2016-06-01 01:42 ./source/x/x11/src/driver/xf86-input-evdev-2.10.3.tar.xz +-rw-r--r-- 1 root root 268272 2012-03-11 11:05 ./source/x/x11/src/driver/xf86-input-joystick-1.6.1.tar.xz +-rw-r--r-- 1 root root 277892 2015-04-06 23:25 ./source/x/x11/src/driver/xf86-input-keyboard-1.8.1.tar.xz +-rw-r--r-- 1 root root 304180 2014-08-12 06:39 ./source/x/x11/src/driver/xf86-input-mouse-1.9.1.tar.xz +-rw-r--r-- 1 root root 229120 2011-06-28 00:52 ./source/x/x11/src/driver/xf86-input-penmount-1.5.0.tar.xz +-rw-r--r-- 1 root root 412108 2015-11-01 21:54 ./source/x/x11/src/driver/xf86-input-synaptics-1.8.3.tar.xz +-rw-r--r-- 1 root root 258876 2015-06-25 10:30 ./source/x/x11/src/driver/xf86-input-vmmouse-13.1.0.tar.xz +-rw-r--r-- 1 root root 225388 2011-05-05 03:46 ./source/x/x11/src/driver/xf86-input-void-1.4.0.tar.xz +-rw-r--r-- 1 root root 539828 2016-05-13 23:12 ./source/x/x11/src/driver/xf86-input-wacom-0.33.0.tar.xz +-rw-r--r-- 1 root root 322312 2016-04-07 09:41 ./source/x/x11/src/driver/xf86-video-amdgpu-1.1.0.tar.xz +-rw-r--r-- 1 root root 271192 2012-07-17 06:16 ./source/x/x11/src/driver/xf86-video-apm-1.2.5.tar.xz +-rw-r--r-- 1 root root 240392 2012-07-17 06:17 ./source/x/x11/src/driver/xf86-video-ark-0.7.5.tar.xz +-rw-r--r-- 1 root root 295864 2015-08-19 01:37 ./source/x/x11/src/driver/xf86-video-ast-1.1.5.tar.xz +-rw-r--r-- 1 root root 705996 2016-04-07 02:51 ./source/x/x11/src/driver/xf86-video-ati-7.7.0.tar.xz +-rw-r--r-- 1 root root 345468 2015-09-26 16:32 ./source/x/x11/src/driver/xf86-video-chips-1.2.6.tar.xz +-rw-r--r-- 1 root root 281712 2015-05-06 21:03 ./source/x/x11/src/driver/xf86-video-cirrus-1.5.3.tar.xz +-rw-r--r-- 1 root root 237680 2013-09-09 19:02 ./source/x/x11/src/driver/xf86-video-dummy-0.3.7.tar.xz +-rw-r--r-- 1 root root 571044 2016-02-03 19:20 ./source/x/x11/src/driver/xf86-video-geode-2.11.18.tar.xz +-rw-r--r-- 1 root root 323416 2012-07-17 06:20 ./source/x/x11/src/driver/xf86-video-glint-1.2.8.tar.xz +-rw-r--r-- 1 root root 269224 2012-07-17 06:21 ./source/x/x11/src/driver/xf86-video-i128-1.3.6.tar.xz +-rw-r--r-- 1 root root 266212 2015-02-21 20:40 ./source/x/x11/src/driver/xf86-video-i740-1.3.5.tar.xz +-rw-r--r-- 1 root root 947008 2016-06-09 07:19 ./source/x/x11/src/driver/xf86-video-intel-git_20160601_b617f80.tar.xz +-rw-r--r-- 1 root root 469408 2015-05-04 19:58 ./source/x/x11/src/driver/xf86-video-mach64-6.9.5.tar.xz +-rw-r--r-- 1 root root 394412 2015-02-19 21:45 ./source/x/x11/src/driver/xf86-video-mga-1.6.4.tar.xz +-rw-r--r-- 1 root root 252904 2014-06-26 08:38 ./source/x/x11/src/driver/xf86-video-modesetting-0.9.0.tar.xz +-rw-r--r-- 1 root root 280576 2015-05-08 09:52 ./source/x/x11/src/driver/xf86-video-neomagic-1.2.9.tar.xz +-rw-r--r-- 1 root root 523320 2015-12-10 02:24 ./source/x/x11/src/driver/xf86-video-nouveau-1.0.12.tar.xz +-rw-r--r-- 1 root root 328120 2012-07-17 06:50 ./source/x/x11/src/driver/xf86-video-nv-2.1.20.tar.xz +-rw-r--r-- 1 root root 267328 2015-10-08 18:50 ./source/x/x11/src/driver/xf86-video-omap-0.4.4.tar.xz +-rw-r--r-- 1 root root 440788 2016-04-12 12:50 ./source/x/x11/src/driver/xf86-video-openchrome-0.4.0.tar.xz +-rw-r--r-- 1 root root 430204 2016-01-22 03:45 ./source/x/x11/src/driver/xf86-video-r128-6.10.1.tar.xz +-rw-r--r-- 1 root root 310076 2015-11-11 17:05 ./source/x/x11/src/driver/xf86-video-rendition-4.2.6.tar.xz +-rw-r--r-- 1 root root 270588 2012-07-17 06:26 ./source/x/x11/src/driver/xf86-video-s3-0.6.5.tar.xz +-rw-r--r-- 1 root root 310152 2015-09-26 16:32 ./source/x/x11/src/driver/xf86-video-s3virge-1.10.7.tar.xz +-rw-r--r-- 1 root root 345380 2015-05-08 10:14 ./source/x/x11/src/driver/xf86-video-savage-2.3.8.tar.xz +-rw-r--r-- 1 root root 328668 2015-05-09 14:59 ./source/x/x11/src/driver/xf86-video-siliconmotion-1.7.8.tar.xz +-rw-r--r-- 1 root root 603996 2015-08-29 23:42 ./source/x/x11/src/driver/xf86-video-sis-0.10.8.tar.xz +-rw-r--r-- 1 root root 315000 2012-07-17 06:30 ./source/x/x11/src/driver/xf86-video-sisusb-0.9.6.tar.xz +-rw-r--r-- 1 root root 298360 2015-02-22 21:28 ./source/x/x11/src/driver/xf86-video-tdfx-1.4.6.tar.xz +-rw-r--r-- 1 root root 265952 2012-07-17 06:31 ./source/x/x11/src/driver/xf86-video-tga-1.2.2.tar.xz +-rw-r--r-- 1 root root 308520 2015-03-30 17:13 ./source/x/x11/src/driver/xf86-video-trident-1.3.7.tar.xz +-rw-r--r-- 1 root root 277748 2012-07-17 06:33 ./source/x/x11/src/driver/xf86-video-tseng-1.2.5.tar.xz +-rw-r--r-- 1 root root 183872 2008-03-19 20:58 ./source/x/x11/src/driver/xf86-video-v4l-0.2.0.tar.xz +-rw-r--r-- 1 root root 254884 2015-06-16 16:00 ./source/x/x11/src/driver/xf86-video-vesa-2.3.4.tar.xz +-rw-r--r-- 1 root root 377148 2015-01-19 13:07 ./source/x/x11/src/driver/xf86-video-vmware-13.1.0.tar.xz +-rw-r--r-- 1 root root 252404 2012-07-17 06:34 ./source/x/x11/src/driver/xf86-video-voodoo-1.2.5.tar.xz +-rw-r--r-- 1 root root 466268 2015-08-21 15:35 ./source/x/x11/src/driver/xf86-video-xgi-1.6.1.tar.xz +-rw-r--r-- 1 root root 338112 2012-07-17 06:35 ./source/x/x11/src/driver/xf86-video-xgixp-1.8.1.tar.xz +drwxr-xr-x 2 root root 4096 2015-03-15 21:33 ./source/x/x11/src/font +-rw-r--r-- 1 root root 291832 2010-10-30 03:55 ./source/x/x11/src/font/encodings-1.0.4.tar.xz +-rw-r--r-- 1 root root 945192 2010-11-14 23:54 ./source/x/x11/src/font/font-adobe-100dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 796356 2010-11-14 23:54 ./source/x/x11/src/font/font-adobe-75dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 296996 2010-11-14 23:59 ./source/x/x11/src/font/font-adobe-utopia-100dpi-1.0.4.tar.xz +-rw-r--r-- 1 root root 247800 2010-11-15 00:02 ./source/x/x11/src/font/font-adobe-utopia-75dpi-1.0.4.tar.xz +-rw-r--r-- 1 root root 263520 2010-11-15 00:05 ./source/x/x11/src/font/font-adobe-utopia-type1-1.0.4.tar.xz +-rw-r--r-- 1 root root 92712 2010-10-05 06:16 ./source/x/x11/src/font/font-alias-1.0.3.tar.xz +-rw-r--r-- 1 root root 101872 2010-11-15 19:55 ./source/x/x11/src/font/font-arabic-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 589148 2010-11-15 20:01 ./source/x/x11/src/font/font-bh-100dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 489900 2010-11-15 20:06 ./source/x/x11/src/font/font-bh-75dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 216368 2010-11-15 20:11 ./source/x/x11/src/font/font-bh-lucidatypewriter-100dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 193720 2010-11-15 20:16 ./source/x/x11/src/font/font-bh-lucidatypewriter-75dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 367740 2010-11-11 05:26 ./source/x/x11/src/font/font-bh-ttf-1.0.3.tar.xz +-rw-r--r-- 1 root root 628208 2010-11-15 20:36 ./source/x/x11/src/font/font-bh-type1-1.0.3.tar.xz +-rw-r--r-- 1 root root 172716 2010-11-15 20:39 ./source/x/x11/src/font/font-bitstream-100dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 155516 2010-11-15 20:46 ./source/x/x11/src/font/font-bitstream-75dpi-1.0.3.tar.xz +-rw-r--r-- 1 root root 329196 2010-11-15 20:53 ./source/x/x11/src/font/font-bitstream-speedo-1.0.2.tar.xz +-rw-r--r-- 1 root root 390700 2010-11-15 20:56 ./source/x/x11/src/font/font-bitstream-type1-1.0.3.tar.xz +-rw-r--r-- 1 root root 236644 2010-11-15 21:06 ./source/x/x11/src/font/font-cronyx-cyrillic-1.0.3.tar.xz +-rw-r--r-- 1 root root 94716 2010-11-15 21:14 ./source/x/x11/src/font/font-cursor-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 508312 2010-11-15 21:20 ./source/x/x11/src/font/font-daewoo-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 92740 2010-11-15 21:25 ./source/x/x11/src/font/font-dec-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 374360 2010-11-15 21:33 ./source/x/x11/src/font/font-ibm-type1-1.0.3.tar.xz +-rw-r--r-- 1 root root 719756 2010-11-15 22:21 ./source/x/x11/src/font/font-isas-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 517868 2010-11-15 22:34 ./source/x/x11/src/font/font-jis-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 91408 2010-11-15 22:38 ./source/x/x11/src/font/font-micro-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 121968 2010-11-15 22:42 ./source/x/x11/src/font/font-misc-cyrillic-1.0.3.tar.xz +-rw-r--r-- 1 root root 218584 2010-11-15 22:46 ./source/x/x11/src/font/font-misc-ethiopic-1.0.3.tar.xz +-rw-r--r-- 1 root root 828248 2010-11-15 22:52 ./source/x/x11/src/font/font-misc-meltho-1.0.3.tar.xz +-rw-r--r-- 1 root root 1423336 2010-11-15 23:06 ./source/x/x11/src/font/font-misc-misc-1.1.2.tar.xz +-rw-r--r-- 1 root root 217292 2010-11-15 23:09 ./source/x/x11/src/font/font-mutt-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 128096 2010-11-15 23:12 ./source/x/x11/src/font/font-schumacher-misc-1.1.2.tar.xz +-rw-r--r-- 1 root root 95876 2010-11-15 23:14 ./source/x/x11/src/font/font-screen-cyrillic-1.0.4.tar.xz +-rw-r--r-- 1 root root 99540 2010-11-15 23:18 ./source/x/x11/src/font/font-sony-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 106568 2010-11-15 23:20 ./source/x/x11/src/font/font-sun-misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 136416 2015-03-14 16:01 ./source/x/x11/src/font/font-util-1.3.1.tar.xz +-rw-r--r-- 1 root root 93740 2010-11-15 23:21 ./source/x/x11/src/font/font-winitzki-cyrillic-1.0.3.tar.xz +-rw-r--r-- 1 root root 117928 2010-11-15 23:23 ./source/x/x11/src/font/font-xfree86-type1-1.0.4.tar.xz +-rwxr-xr-x 1 root root 2052 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-intel.sh +-rwxr-xr-x 1 root root 2080 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-nouveau.sh +-rwxr-xr-x 1 root root 2125 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-openchrome.sh +drwxr-xr-x 2 root root 4096 2016-05-26 22:49 ./source/x/x11/src/lib +-rw-r--r-- 1 root root 266224 2015-05-01 04:35 ./source/x/x11/src/lib/libFS-1.0.7.tar.xz +-rw-r--r-- 1 root root 309088 2014-06-07 01:31 ./source/x/x11/src/lib/libICE-1.0.9.tar.xz +-rw-r--r-- 1 root root 283276 2013-09-08 06:08 ./source/x/x11/src/lib/libSM-1.2.2.tar.xz +-rw-r--r-- 1 root root 1751652 2015-03-09 22:48 ./source/x/x11/src/lib/libX11-1.6.3.tar.xz +-rw-r--r-- 1 root root 235904 2012-03-08 05:08 ./source/x/x11/src/lib/libXScrnSaver-1.2.2.tar.xz +-rw-r--r-- 1 root root 247936 2013-05-24 22:18 ./source/x/x11/src/lib/libXau-1.0.8.tar.xz +-rw-r--r-- 1 root root 565164 2015-05-01 05:18 ./source/x/x11/src/lib/libXaw-1.0.13.tar.xz +-rw-r--r-- 1 root root 454428 2012-03-29 22:44 ./source/x/x11/src/lib/libXaw3d-1.6.2.tar.xz +-rw-r--r-- 1 root root 250328 2013-01-04 09:14 ./source/x/x11/src/lib/libXcm-0.5.2.tar.xz +-rw-r--r-- 1 root root 239876 2013-01-03 07:30 ./source/x/x11/src/lib/libXcomposite-0.4.4.tar.xz +-rw-r--r-- 1 root root 254664 2013-05-30 06:25 ./source/x/x11/src/lib/libXcursor-1.1.14.tar.xz +-rw-r--r-- 1 root root 231332 2013-01-03 05:46 ./source/x/x11/src/lib/libXdamage-1.1.4.tar.xz +-rw-r--r-- 1 root root 274516 2015-03-21 17:02 ./source/x/x11/src/lib/libXdmcp-1.1.2.tar.xz +-rw-r--r-- 1 root root 212200 2010-10-31 16:46 ./source/x/x11/src/lib/libXevie-1.0.3.tar.xz +-rw-r--r-- 1 root root 314576 2014-07-24 01:41 ./source/x/x11/src/lib/libXext-1.3.3.tar.xz +-rw-r--r-- 1 root root 255828 2016-05-26 01:54 ./source/x/x11/src/lib/libXfixes-5.0.2.tar.xz +-rw-r--r-- 1 root root 416988 2015-03-17 15:31 ./source/x/x11/src/lib/libXfont-1.5.1.tar.xz +-rw-r--r-- 1 root root 189140 2009-10-13 20:47 ./source/x/x11/src/lib/libXfontcache-1.0.5.tar.xz +-rw-r--r-- 1 root root 275024 2014-06-06 06:06 ./source/x/x11/src/lib/libXft-2.3.2.tar.xz +-rw-r--r-- 1 root root 394988 2015-12-22 01:21 ./source/x/x11/src/lib/libXi-1.7.6.tar.xz +-rw-r--r-- 1 root root 236468 2013-05-31 00:36 ./source/x/x11/src/lib/libXinerama-1.1.3.tar.xz +-rw-r--r-- 1 root root 322344 2013-09-08 04:30 ./source/x/x11/src/lib/libXmu-1.1.2.tar.xz +-rw-r--r-- 1 root root 259376 2015-02-21 22:05 ./source/x/x11/src/lib/libXp-1.0.3.tar.xz +-rw-r--r-- 1 root root 362444 2013-09-08 04:44 ./source/x/x11/src/lib/libXpm-3.5.11.tar.xz +-rw-r--r-- 1 root root 235464 2015-04-17 18:42 ./source/x/x11/src/lib/libXpresent-1.0.0.tar.xz +-rw-r--r-- 1 root root 259296 2015-05-17 04:50 ./source/x/x11/src/lib/libXrandr-1.5.0.tar.xz +-rw-r--r-- 1 root root 253880 2015-05-01 05:31 ./source/x/x11/src/lib/libXrender-0.9.9.tar.xz +-rw-r--r-- 1 root root 235312 2013-05-31 00:54 ./source/x/x11/src/lib/libXres-1.0.7.tar.xz +-rw-r--r-- 1 root root 646820 2015-05-01 05:40 ./source/x/x11/src/lib/libXt-1.1.5.tar.xz +-rw-r--r-- 1 root root 261976 2013-05-31 02:11 ./source/x/x11/src/lib/libXtst-1.2.2.tar.xz +-rw-r--r-- 1 root root 255508 2013-09-08 05:24 ./source/x/x11/src/lib/libXv-1.0.10.tar.xz +-rw-r--r-- 1 root root 254468 2015-03-14 17:10 ./source/x/x11/src/lib/libXvMC-1.0.9.tar.xz +-rw-r--r-- 1 root root 244736 2013-05-31 01:37 ./source/x/x11/src/lib/libXxf86dga-1.1.4.tar.xz +-rw-r--r-- 1 root root 212836 2010-11-21 21:49 ./source/x/x11/src/lib/libXxf86misc-1.0.3.tar.xz +-rw-r--r-- 1 root root 244964 2015-02-24 07:04 ./source/x/x11/src/lib/libXxf86vm-1.1.4.tar.xz +-rw-r--r-- 1 root root 242436 2013-05-28 23:48 ./source/x/x11/src/lib/libdmx-1.1.3.tar.xz +-rw-r--r-- 1 root root 249424 2015-05-01 04:42 ./source/x/x11/src/lib/libfontenc-1.1.3.tar.xz +-rw-r--r-- 1 root root 297020 2015-05-01 04:47 ./source/x/x11/src/lib/libpciaccess-0.13.4.tar.xz +-rw-r--r-- 1 root root 288036 2015-05-01 05:27 ./source/x/x11/src/lib/libxkbfile-1.0.9.tar.xz +-rw-r--r-- 1 root root 237476 2015-01-02 18:46 ./source/x/x11/src/lib/libxshmfence-1.2.tar.xz +-rw-r--r-- 1 root root 611464 2016-01-31 14:43 ./source/x/x11/src/lib/pixman-0.34.0.tar.xz +-rw-r--r-- 1 root root 167348 2014-09-22 20:43 ./source/x/x11/src/lib/xtrans-1.3.5.tar.xz +drwxr-xr-x 2 root root 4096 2016-05-26 22:48 ./source/x/x11/src/proto +-rw-r--r-- 1 root root 104916 2012-03-23 04:00 ./source/x/x11/src/proto/bigreqsproto-1.1.2.tar.xz +-rw-r--r-- 1 root root 94356 2010-10-30 03:29 ./source/x/x11/src/proto/compositeproto-0.4.2.tar.xz +-rw-r--r-- 1 root root 91724 2010-10-30 03:37 ./source/x/x11/src/proto/damageproto-1.2.1.tar.xz +-rw-r--r-- 1 root root 89776 2011-01-06 01:39 ./source/x/x11/src/proto/dmxproto-2.3.1.tar.xz +-rw-r--r-- 1 root root 100984 2012-07-11 23:07 ./source/x/x11/src/proto/dri2proto-2.8.tar.xz +-rw-r--r-- 1 root root 98372 2013-11-01 01:08 ./source/x/x11/src/proto/dri3proto-1.0.tar.xz +-rw-r--r-- 1 root root 88412 2011-01-06 02:06 ./source/x/x11/src/proto/evieext-1.1.1.tar.xz +-rw-r--r-- 1 root root 93728 2011-03-08 16:19 ./source/x/x11/src/proto/fixesproto-5.0.tar.xz +-rw-r--r-- 1 root root 78004 2009-10-13 20:53 ./source/x/x11/src/proto/fontcacheproto-0.1.3.tar.xz +-rw-r--r-- 1 root root 142728 2014-04-14 17:40 ./source/x/x11/src/proto/fontsproto-2.1.3.tar.xz +-rw-r--r-- 1 root root 117712 2013-12-10 15:08 ./source/x/x11/src/proto/glproto-1.4.17.tar.xz +-rw-r--r-- 1 root root 185524 2016-04-04 02:32 ./source/x/x11/src/proto/inputproto-2.3.2.tar.xz +-rw-r--r-- 1 root root 231492 2015-05-01 05:51 ./source/x/x11/src/proto/kbproto-1.0.7.tar.xz +-rw-r--r-- 1 root root 101168 2013-11-01 01:05 ./source/x/x11/src/proto/presentproto-1.0.tar.xz +-rw-r--r-- 1 root root 191432 2011-01-06 02:33 ./source/x/x11/src/proto/printproto-1.0.5.tar.xz +-rw-r--r-- 1 root root 132864 2015-05-17 04:32 ./source/x/x11/src/proto/randrproto-1.5.0.tar.xz +-rw-r--r-- 1 root root 114164 2012-03-23 04:00 ./source/x/x11/src/proto/recordproto-1.14.2.tar.xz +-rw-r--r-- 1 root root 97920 2010-08-10 14:13 ./source/x/x11/src/proto/renderproto-0.11.1.tar.xz +-rw-r--r-- 1 root root 96052 2011-05-28 04:32 ./source/x/x11/src/proto/resourceproto-1.2.0.tar.xz +-rw-r--r-- 1 root root 110116 2012-03-23 04:00 ./source/x/x11/src/proto/scrnsaverproto-1.2.2.tar.xz +-rw-r--r-- 1 root root 112500 2016-03-11 18:19 ./source/x/x11/src/proto/videoproto-2.3.3.tar.xz +-rw-r--r-- 1 root root 104376 2012-03-23 04:01 ./source/x/x11/src/proto/xcmiscproto-1.2.2.tar.xz +-rw-r--r-- 1 root root 211284 2013-12-27 18:17 ./source/x/x11/src/proto/xextproto-7.3.0.tar.xz +-rw-r--r-- 1 root root 45976 2009-10-13 20:53 ./source/x/x11/src/proto/xf86bigfontproto-1.2.0.tar.xz +-rw-r--r-- 1 root root 79572 2009-10-13 20:53 ./source/x/x11/src/proto/xf86dgaproto-2.1.tar.xz +-rw-r--r-- 1 root root 89840 2011-01-06 03:57 ./source/x/x11/src/proto/xf86driproto-2.1.1.tar.xz +-rw-r--r-- 1 root root 78424 2009-10-13 20:53 ./source/x/x11/src/proto/xf86miscproto-0.9.3.tar.xz +-rw-r--r-- 1 root root 90148 2011-01-06 04:06 ./source/x/x11/src/proto/xf86vidmodeproto-2.3.1.tar.xz +-rw-r--r-- 1 root root 89352 2011-01-06 04:21 ./source/x/x11/src/proto/xineramaproto-1.2.1.tar.xz +-rw-r--r-- 1 root root 272496 2016-05-13 08:34 ./source/x/x11/src/proto/xproto-7.0.29.tar.xz +drwxr-xr-x 2 root root 4096 2015-12-23 20:06 ./source/x/x11/src/util +-rw-r--r-- 1 root root 97488 2014-05-21 18:26 ./source/x/x11/src/util/gccmakedep-1.0.3.tar.xz +-rw-r--r-- 1 root root 146672 2014-05-21 18:55 ./source/x/x11/src/util/imake-1.0.7.tar.xz +-rw-r--r-- 1 root root 106664 2012-03-08 05:51 ./source/x/x11/src/util/lndir-1.0.3.tar.xz +-rw-r--r-- 1 root root 133036 2013-07-23 05:15 ./source/x/x11/src/util/makedepend-1.0.5.tar.xz +-rw-r--r-- 1 root root 77072 2014-03-27 13:21 ./source/x/x11/src/util/util-macros-1.19.0.tar.xz +-rw-r--r-- 1 root root 298008 2015-12-22 01:29 ./source/x/x11/src/util/xorg-cf-files-1.0.6.tar.xz +drwxr-xr-x 2 root root 4096 2015-10-01 21:03 ./source/x/x11/src/xcb +-rw-r--r-- 1 root root 185164 2009-10-14 09:16 ./source/x/x11/src/xcb/libpthread-stubs-0.3.tar.xz +-rw-r--r-- 1 root root 357048 2015-09-06 10:48 ./source/x/x11/src/xcb/libxcb-1.11.1.tar.xz +-rw-r--r-- 1 root root 134016 2014-08-01 13:49 ./source/x/x11/src/xcb/xcb-proto-1.11.tar.xz +-rw-r--r-- 1 root root 247676 2014-10-15 05:34 ./source/x/x11/src/xcb/xcb-util-0.4.0.tar.xz +-rw-r--r-- 1 root root 246156 2015-03-25 22:11 ./source/x/x11/src/xcb/xcb-util-cursor-0.1.2.tar.xz +-rw-r--r-- 1 root root 251100 2015-04-26 14:14 ./source/x/x11/src/xcb/xcb-util-errors-1.0.tar.xz +-rw-r--r-- 1 root root 271064 2014-10-15 04:11 ./source/x/x11/src/xcb/xcb-util-image-0.4.0.tar.xz +-rw-r--r-- 1 root root 241520 2014-10-01 10:05 ./source/x/x11/src/xcb/xcb-util-keysyms-0.4.0.tar.xz +-rw-r--r-- 1 root root 243560 2014-06-13 02:53 ./source/x/x11/src/xcb/xcb-util-renderutil-0.3.9.tar.xz +-rw-r--r-- 1 root root 266716 2014-02-19 11:40 ./source/x/x11/src/xcb/xcb-util-wm-0.4.1.tar.xz +-rw-r--r-- 1 root root 232228 2012-03-23 22:46 ./source/x/x11/src/xcb/xpyb-1.3.1.tar.xz +-rw-r--r-- 1 root root 50 2016-05-25 21:06 ./source/x/x11/src/xf86-input-wacom.url +drwxr-xr-x 2 root root 4096 2016-04-06 00:53 ./source/x/x11/src/xserver +-rw-r--r-- 1 root root 4696844 2016-04-04 19:48 ./source/x/x11/src/xserver/xorg-server-1.18.3.tar.xz +-rwxr-xr-x 1 root root 13192 2015-08-19 06:04 ./source/x/x11/x11.SlackBuild +drwxr-xr-x 2 root root 4096 2014-05-13 04:30 ./source/x/xdg-user-dirs +-rw-r--r-- 1 root root 281 2010-12-15 02:17 ./source/x/xdg-user-dirs/doinst.sh.gz +-rw-r--r-- 1 root root 940 2011-02-01 06:53 ./source/x/xdg-user-dirs/slack-desc +-rw-r--r-- 1 root root 174740 2013-06-27 08:53 ./source/x/xdg-user-dirs/xdg-user-dirs-0.15.tar.xz +-rwxr-xr-x 1 root root 3470 2014-07-14 21:51 ./source/x/xdg-user-dirs/xdg-user-dirs.SlackBuild +drwxr-xr-x 2 root root 4096 2015-10-06 03:48 ./source/x/xdg-utils +-rw-r--r-- 1 root root 1432 2011-01-20 23:46 ./source/x/xdg-utils/doinst.sh.gz +-rw-r--r-- 1 root root 1010 2008-08-01 05:42 ./source/x/xdg-utils/slack-desc +-rw-r--r-- 1 root root 268392 2015-10-05 19:05 ./source/x/xdg-utils/xdg-utils-1.1.1.tar.xz +-rwxr-xr-x 1 root root 2679 2015-10-06 03:48 ./source/x/xdg-utils/xdg-utils.SlackBuild +-rw-r--r-- 1 root root 94 2015-10-04 22:28 ./source/x/xdg-utils/xdg-utils.url +drwxr-xr-x 2 root root 4096 2016-06-13 01:44 ./source/x/xterm +-rw-r--r-- 1 root root 172 2012-06-26 14:31 ./source/x/xterm/doinst.sh.gz +-rw-r--r-- 1 root root 764 2007-02-11 23:54 ./source/x/xterm/slack-desc +-rw-r--r-- 1 root root 862872 2016-06-05 22:28 ./source/x/xterm/xterm-325.tar.xz +-rwxr-xr-x 1 root root 4074 2015-11-11 21:48 ./source/x/xterm/xterm.SlackBuild +drwxr-xr-x 48 root root 4096 2016-06-07 18:08 ./source/xap +drwxr-xr-x 2 root root 4096 2016-03-13 20:14 ./source/xap/MPlayer +-rw-r--r-- 1 root root 222529 2015-09-12 17:47 ./source/xap/MPlayer/Blue-1.11.tar.bz2 +-rw-r--r-- 1 root root 5234232 2016-01-25 01:47 ./source/xap/MPlayer/MPlayer-20160125.tar.xz +-rwxr-xr-- 1 root root 18800 2016-05-23 20:28 ./source/xap/MPlayer/MPlayer.SlackBuild +-rw-r--r-- 1 root root 163 2016-03-13 20:12 ./source/xap/MPlayer/MPlayer.demux_lavf.flac.diff.gz +-rw-r--r-- 1 root root 7205300 2016-02-01 01:06 ./source/xap/MPlayer/ffmpeg-2.8.6.tar.xz +-rw-r--r-- 1 root root 473 2016-02-01 01:06 ./source/xap/MPlayer/ffmpeg-2.8.6.tar.xz.asc +-rw-r--r-- 1 root root 219 2015-03-09 20:07 ./source/xap/MPlayer/include-samba-4.0.patch.gz +-rw-r--r-- 1 root root 1084 2015-04-05 05:08 ./source/xap/MPlayer/slack-desc +drwxr-xr-x 2 root root 4096 2016-03-29 21:02 ./source/xap/audacious +drwxr-xr-x 2 root root 4096 2016-03-29 21:02 ./source/xap/audacious-plugins +-rw-r--r-- 1 root root 1489956 2016-03-28 16:31 ./source/xap/audacious-plugins/audacious-plugins-3.7.2.tar.xz +-rwxr-xr-x 1 root root 4093 2015-10-23 20:52 ./source/xap/audacious-plugins/audacious-plugins.SlackBuild +-rw-r--r-- 1 root root 891 2015-04-05 22:39 ./source/xap/audacious-plugins/slack-desc +-rw-r--r-- 1 root root 524332 2016-03-28 16:28 ./source/xap/audacious/audacious-3.7.2.tar.xz +-rwxr-xr-x 1 root root 4473 2015-10-23 20:50 ./source/xap/audacious/audacious.SlackBuild +-rw-r--r-- 1 root root 121 2010-04-09 21:15 ./source/xap/audacious/doinst.sh.gz +-rw-r--r-- 1 root root 1074 2015-04-05 22:31 ./source/xap/audacious/slack-desc +drwxr-xr-x 2 root root 4096 2012-08-08 18:00 ./source/xap/blackbox +-rw-r--r-- 1 root root 176564 2009-09-03 11:39 ./source/xap/blackbox/bbkeys-0.9.1.tar.xz +-rw-r--r-- 1 root root 964 2009-09-03 11:39 ./source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch.gz +-rw-r--r-- 1 root root 409496 2009-09-03 11:39 ./source/xap/blackbox/blackbox-0.70.1.tar.xz +-rwxr-xr-x 1 root root 6475 2012-08-08 18:01 ./source/xap/blackbox/blackbox.SlackBuild +-rw-r--r-- 1 root root 900 2002-05-05 23:41 ./source/xap/blackbox/slack-desc +-rw-r--r-- 1 root root 221 2012-08-08 17:58 ./source/xap/blackbox/startblackbox.gz +-rw-r--r-- 1 root root 413 2012-07-25 03:36 ./source/xap/blackbox/textpropertytostring-unconditional.diff.gz +-rw-r--r-- 1 root root 341 2012-08-08 17:58 ./source/xap/blackbox/xinitrc.blackbox.gz +drwxr-xr-x 2 root root 4096 2016-05-31 06:44 ./source/xap/blueman +-rw-r--r-- 1 root root 914 2016-05-30 04:34 ./source/xap/blueman/0001-Notification-Also-check-if-notification-daemon-suppo.patch.gz +-rw-r--r-- 1 root root 538 2016-05-30 04:34 ./source/xap/blueman/0002-NetConf-Treat-UnicodeDecodeError-as-if-there-was-no-.patch.gz +-rw-r--r-- 1 root root 1951988 2016-03-23 06:42 ./source/xap/blueman/blueman-2.0.4.tar.xz +-rwxr-xr-x 1 root root 4094 2016-05-30 04:36 ./source/xap/blueman/blueman.SlackBuild +-rw-r--r-- 1 root root 392 2015-03-05 18:06 ./source/xap/blueman/doinst.sh.gz +-rw-r--r-- 1 root root 898 2015-12-22 23:32 ./source/xap/blueman/slack-desc +drwxr-xr-x 2 root root 4096 2014-05-13 03:07 ./source/xap/ddd +-rw-r--r-- 1 root root 4354996 2009-02-11 18:11 ./source/xap/ddd/ddd-3.3.12.tar.xz +-rwxr-xr-x 1 root root 3825 2015-08-19 19:49 ./source/xap/ddd/ddd.SlackBuild +-rw-r--r-- 1 root root 5689 2010-06-16 05:22 ./source/xap/ddd/ddd.png +-rw-r--r-- 1 root root 121 2010-06-16 05:22 ./source/xap/ddd/doinst.sh.gz +-rw-r--r-- 1 root root 260 2014-05-13 03:05 ./source/xap/ddd/machine_code_window_fix.diff.gz +-rw-r--r-- 1 root root 883 2010-06-16 05:22 ./source/xap/ddd/slack-desc +-rw-r--r-- 1 root root 199 2010-06-16 05:22 ./source/xap/ddd/strclass.C.diff.gz +drwxr-xr-x 2 root root 4096 2015-03-29 21:01 ./source/xap/electricsheep +-rw-r--r-- 1 root root 1306 2009-01-07 22:42 ./source/xap/electricsheep/README.slackware +-rw-r--r-- 1 root root 3116176 2009-03-06 00:30 ./source/xap/electricsheep/electricsheep-20090306.tar.xz +-rwxr-xr-- 1 root root 9833 2015-03-29 21:03 ./source/xap/electricsheep/electricsheep.SlackBuild +-rw-r--r-- 1 root root 268 2009-07-01 19:53 ./source/xap/electricsheep/electricsheep.mplayer.diff.gz +-rw-r--r-- 1 root root 524 2009-01-07 21:38 ./source/xap/electricsheep/electricsheep_gnome-open.patch +-rw-r--r-- 1 root root 2395 2015-03-29 20:59 ./source/xap/electricsheep/flam3-3.0.1-libpng15.patch +-rw-r--r-- 1 root root 1116 2008-12-15 23:44 ./source/xap/electricsheep/slack-desc +drwxr-xr-x 2 root root 4096 2015-02-11 04:13 ./source/xap/fluxbox +-rw-r--r-- 1 root root 790300 2015-02-08 10:51 ./source/xap/fluxbox/fluxbox-1.3.7.tar.xz +-rwxr-xr-x 1 root root 4008 2015-01-08 05:48 ./source/xap/fluxbox/fluxbox.SlackBuild +-rw-r--r-- 1 root root 323 2012-08-09 04:35 ./source/xap/fluxbox/fluxbox.startfluxbox.dbus.diff.gz +-rw-r--r-- 1 root root 687 2005-07-21 19:03 ./source/xap/fluxbox/slack-desc +-rw-r--r-- 1 root root 339 2012-08-08 19:16 ./source/xap/fluxbox/xinitrc.fluxbox.gz +drwxr-xr-x 2 root root 4096 2016-03-26 18:45 ./source/xap/fvwm +-rw-r--r-- 1 root root 23007 2007-02-18 02:02 ./source/xap/fvwm/ancient-icons.tar.gz +-rw-r--r-- 1 root root 296 2011-04-24 01:11 ./source/xap/fvwm/doinst.sh.gz +-rw-r--r-- 1 root root 2048728 2016-03-19 21:55 ./source/xap/fvwm/fvwm-2.6.6.tar.xz +-rwxr-xr-x 1 root root 4315 2016-03-26 18:45 ./source/xap/fvwm/fvwm.SlackBuild +-rw-r--r-- 1 root root 869 2016-03-26 18:43 ./source/xap/fvwm/slack-desc +-rw-r--r-- 1 root root 217 2012-08-09 04:42 ./source/xap/fvwm/startfvwm2.gz +-rw-r--r-- 1 root root 360 2012-08-10 23:46 ./source/xap/fvwm/xinitrc.fvwm2.gz +drwxr-xr-x 2 root root 4096 2016-05-27 21:47 ./source/xap/geeqie +-rw-r--r-- 1 root root 163 2010-03-11 23:20 ./source/xap/geeqie/doinst.sh.gz +-rw-r--r-- 1 root root 1141820 2016-05-27 09:41 ./source/xap/geeqie/geeqie-1.3.tar.xz +-rw-r--r-- 1 root root 677 2016-05-27 09:42 ./source/xap/geeqie/geeqie-1.3.tar.xz.asc +-rwxr-xr-x 1 root root 4203 2016-04-12 17:34 ./source/xap/geeqie/geeqie.SlackBuild +-rw-r--r-- 1 root root 760 2015-08-25 20:48 ./source/xap/geeqie/slack-desc +drwxr-xr-x 2 root root 4096 2009-05-23 00:41 ./source/xap/gftp +-rw-r--r-- 1 root root 1687167 2008-12-02 14:07 ./source/xap/gftp/gftp-2.0.19.tar.bz2 +-rwxr-xr-x 1 root root 3418 2015-03-20 20:36 ./source/xap/gftp/gftp.SlackBuild +-rw-r--r-- 1 root root 304 2008-12-02 20:08 ./source/xap/gftp/gftp.desktop.gz +-rw-r--r-- 1 root root 899 2008-02-11 03:44 ./source/xap/gftp/slack-desc +drwxr-xr-x 2 root root 4096 2015-11-22 04:16 ./source/xap/gimp +-rw-r--r-- 1 root root 15707168 2015-11-21 18:20 ./source/xap/gimp/gimp-2.8.16.tar.xz +-rwxr-xr-x 1 root root 4143 2015-11-24 02:50 ./source/xap/gimp/gimp.SlackBuild +-rw-r--r-- 1 root root 928 2003-01-29 03:18 ./source/xap/gimp/slack-desc +drwxr-xr-x 2 root root 4096 2016-06-07 18:04 ./source/xap/gkrellm +-rw-r--r-- 1 root root 657236 2016-06-03 22:13 ./source/xap/gkrellm/gkrellm-2.3.7.tar.xz +-rw-r--r-- 1 root root 12374 2004-02-01 16:30 ./source/xap/gkrellm/gkrellm-countdown-0.1.1.tar.gz +-rwxr-xr-x 1 root root 4603 2016-06-07 18:05 ./source/xap/gkrellm/gkrellm.SlackBuild +-rw-r--r-- 1 root root 211 2008-10-26 01:35 ./source/xap/gkrellm/gkrellm.theme.defaults.diff.gz +-rw-r--r-- 1 root root 971 2004-04-29 18:52 ./source/xap/gkrellm/slack-desc +drwxr-xr-x 2 root root 4096 2015-10-23 18:30 ./source/xap/gnuchess +-rw-r--r-- 1 root root 142963 2004-01-19 11:50 ./source/xap/gnuchess/Sjeng-Free-11.2.tar.bz2 +-rw-r--r-- 1 root root 652 2004-10-27 05:47 ./source/xap/gnuchess/chess.png +-rw-r--r-- 1 root root 271 2013-03-20 02:41 ./source/xap/gnuchess/doinst.sh.gz +-rw-r--r-- 1 root root 462386 2008-02-22 15:57 ./source/xap/gnuchess/eboard-1.1.1.tar.bz2 +-rw-r--r-- 1 root root 458 2010-02-20 03:54 ./source/xap/gnuchess/eboard.assert.diff.gz +-rw-r--r-- 1 root root 224 2004-10-27 06:07 ./source/xap/gnuchess/eboard.desktop +-rw-r--r-- 1 root root 221 2013-03-20 01:49 ./source/xap/gnuchess/eboard.ldl.diff.gz +-rw-r--r-- 1 root root 336 2015-03-23 16:11 ./source/xap/gnuchess/eboard.png16.diff.gz +-rw-r--r-- 1 root root 502336 2015-10-17 14:46 ./source/xap/gnuchess/gnuchess-6.2.2.tar.xz +-rwxr-xr-x 1 root root 5961 2015-10-23 18:30 ./source/xap/gnuchess/gnuchess.SlackBuild +-rw-r--r-- 1 root root 796 2004-10-27 22:53 ./source/xap/gnuchess/slack-desc +-rw-r--r-- 1 root root 2571776 2014-11-03 01:39 ./source/xap/gnuchess/xboard-4.8.0.tar.xz +-rw-r--r-- 1 root root 269 2015-03-20 18:35 ./source/xap/gnuchess/xboard.conf.diff.gz +drwxr-xr-x 2 root root 4096 2016-03-15 21:10 ./source/xap/gnuplot +-rw-r--r-- 1 root root 4018280 2016-02-22 04:50 ./source/xap/gnuplot/gnuplot-5.0.3.tar.xz +-rwxr-xr-x 1 root root 4282 2016-05-17 21:08 ./source/xap/gnuplot/gnuplot.SlackBuild +-rw-r--r-- 1 root root 1105 2002-03-16 08:23 ./source/xap/gnuplot/slack-desc +drwxr-xr-x 2 root root 4096 2016-06-14 17:12 ./source/xap/gparted +-rw-r--r-- 1 root root 742 2016-01-14 02:52 ./source/xap/gparted/com.slackware.pkexec.gparted.policy +-rw-r--r-- 1 root root 121 2016-02-03 19:48 ./source/xap/gparted/doinst.sh.gz +-rw-r--r-- 1 root root 1964360 2016-06-13 16:57 ./source/xap/gparted/gparted-0.26.1.tar.xz +-rwxr-xr-x 1 root root 4168 2016-02-03 19:48 ./source/xap/gparted/gparted.SlackBuild +-rw-r--r-- 1 root root 131 2016-01-14 02:52 ./source/xap/gparted/gparted_polkit +-rw-r--r-- 1 root root 868 2016-02-03 19:42 ./source/xap/gparted/slack-desc +drwxr-xr-x 2 root root 4096 2014-09-23 14:10 ./source/xap/gucharmap +-rw-r--r-- 1 root root 172 2013-01-18 06:36 ./source/xap/gucharmap/doinst.sh.gz +-rw-r--r-- 1 root root 1918188 2014-05-12 19:30 ./source/xap/gucharmap/gucharmap-3.12.1.tar.xz +-rwxr-xr-x 1 root root 3381 2015-11-20 23:21 ./source/xap/gucharmap/gucharmap.SlackBuild +-rw-r--r-- 1 root root 669 2004-10-13 19:31 ./source/xap/gucharmap/slack-desc drwxr-xr-x 2 root root 4096 2015-03-29 20:21 ./source/xap/gv -rw-r--r-- 1 root root 513284 2013-03-17 11:36 ./source/xap/gv/gv-3.7.4.tar.xz -rw-r--r-- 1 root root 3086 2015-03-29 20:20 ./source/xap/gv/gv-xft.patch.gz @@ -7171,3 +13301,37 @@ drwxr-xr-x 2 root root 4096 2012-03-02 16:01 ./source/y/bsd-games/fortune- -rw-r--r-- 1 root root 364407 2002-03-10 05:09 ./source/y/bsd-games/fortunes-o.tar.gz -rw-r--r-- 1 root root 104848 1993-10-25 00:02 ./source/y/bsd-games/hangman-words.gz -rw-r--r-- 1 root root 1056 2002-03-10 04:51 ./source/y/bsd-games/slack-desc +drwxr-xr-x 4 root root 4096 2016-06-30 17:28 ./testing +-rw-r--r-- 1 root root 1825 2016-06-30 17:28 ./testing/CHECKSUMS.md5 +-rw-r--r-- 1 root root 181 2016-06-30 17:28 ./testing/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 2397 2016-06-30 17:28 ./testing/FILE_LIST +-rw-r--r-- 1 root root 2993 2016-06-30 17:28 ./testing/MANIFEST.bz2 +-rw-r--r-- 1 root root 1975 2016-06-30 17:28 ./testing/PACKAGES.TXT +drwxr-xr-x 2 root root 4096 2016-06-30 17:28 ./testing/packages +-rw-r--r-- 1 root root 461 2013-09-12 21:49 ./testing/packages/efibootmgr-0.6.0-x86_64-1.txt +-rw-r--r-- 1 root root 51940 2013-09-12 21:49 ./testing/packages/efibootmgr-0.6.0-x86_64-1.txz +-rw-r--r-- 1 root root 198 2013-09-12 21:49 ./testing/packages/efibootmgr-0.6.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 526 2016-06-30 17:16 ./testing/packages/kernel-module-ecryptfs-4.4.14-x86_64-1.txt +-rw-r--r-- 1 root root 40428 2016-06-30 17:16 ./testing/packages/kernel-module-ecryptfs-4.4.14-x86_64-1.txz +-rw-r--r-- 1 root root 181 2016-06-30 17:16 ./testing/packages/kernel-module-ecryptfs-4.4.14-x86_64-1.txz.asc +-rw-r--r-- 1 root root 358 2016-06-16 18:07 ./testing/packages/tmux-2.2-x86_64-2.txt +-rw-r--r-- 1 root root 219192 2016-06-16 18:07 ./testing/packages/tmux-2.2-x86_64-2.txz +-rw-r--r-- 1 root root 181 2016-06-16 18:07 ./testing/packages/tmux-2.2-x86_64-2.txz.asc +drwxr-xr-x 5 root root 4096 2016-06-26 01:20 ./testing/source +drwxr-xr-x 2 root root 4096 2013-09-12 21:49 ./testing/source/efibootmgr +-rw-r--r-- 1 root root 64995 2013-09-12 03:45 ./testing/source/efibootmgr/efibootmgr-0.6.0.tar.gz +-rwxr-xr-x 1 root root 3524 2013-09-12 21:44 ./testing/source/efibootmgr/efibootmgr.SlackBuild +-rw-r--r-- 1 root root 952 2013-09-12 21:48 ./testing/source/efibootmgr/slack-desc +drwxr-xr-x 2 root root 4096 2016-05-17 05:05 ./testing/source/linux-4.6-configs +-rw-r--r-- 1 root root 164762 2016-05-17 05:04 ./testing/source/linux-4.6-configs/config-generic-4.6.x64 +-rw-r--r-- 1 root root 164762 2016-05-17 05:04 ./testing/source/linux-4.6-configs/config-huge-4.6.x64 +drwxr-xr-x 2 root root 4096 2016-04-11 18:25 ./testing/source/tmux +-rw-r--r-- 1 root root 813 2015-08-07 18:50 ./testing/source/tmux/slack-desc +-rw-r--r-- 1 root root 345420 2016-04-11 00:05 ./testing/source/tmux/tmux-2.2.tar.xz +-rwxr-xr-x 1 root root 4579 2016-06-16 18:07 ./testing/source/tmux/tmux.SlackBuild +drwxr-xr-x 2 root root 4096 2016-06-24 21:15 ./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 48116736 2016-06-24 21:15 ./usb-and-pxe-installers/usbboot.img +-rw-r--r-- 1 root root 16045 2016-03-29 07:41 ./usb-and-pxe-installers/usbimg2disk.sh diff --git a/READ_DVD.TXT b/READ_DVD.TXT deleted file mode 100644 index 26093f007..000000000 --- a/READ_DVD.TXT +++ /dev/null @@ -1,7175 +0,0 @@ - -Welcome to the Slackware Linux version 14.2 source code DVD. - -Here's a tree showing the contents of this disc. For complete details, -see additional documentation files. - -. -|-- CHECKSUMS.md5 -|-- CHECKSUMS.md5.asc -|-- FILELIST.TXT -|-- READ_DVD.TXT -`-- source - |-- CHECKSUMS.md5 - |-- CHECKSUMS.md5.asc - |-- FILE_LIST - |-- MANIFEST.bz2 - |-- README.TXT - |-- a - | |-- aaa_base - | | |-- _aaa_base.tar.gz - | | |-- aaa_base.SlackBuild - | | |-- os-release - | | |-- slack-desc - | | `-- slackware-version - | |-- aaa_elflibs - | | |-- aaa_elflibs.SlackBuild - | | |-- display_orphans.sh - | | |-- slack-desc - | | |-- symlinks-to-tracked-libs - | | |-- symlinks-to-tracked-libs-tmp - | | |-- tracked-files - | | `-- tracked-files-tmp - | |-- aaa_terminfo - | | |-- aaa_terminfo.SlackBuild - | | `-- slack-desc - | |-- acl - | | |-- acl-2.2.52.src.tar.xz - | | |-- acl.SlackBuild - | | `-- slack-desc - | |-- acpid - | | |-- acpi_handler.sh.gz - | | |-- acpid-2.0.26.tar.xz - | | |-- acpid.SlackBuild - | | |-- acpid.url - | | |-- default.gz - | | |-- doinst.sh.gz - | | |-- rc.acpid.gz - | | `-- slack-desc - | |-- attr - | | |-- attr-2.4.47.src.tar.xz - | | |-- attr.SlackBuild - | | |-- build - | | `-- slack-desc - | |-- bash - | | |-- bash-4.3-patches - | | | |-- bash43-001 - | | | |-- bash43-001.sig - | | | |-- bash43-002 - | | | |-- bash43-002.sig - | | | |-- bash43-003 - | | | |-- bash43-003.sig - | | | |-- bash43-004 - | | | |-- bash43-004.sig - | | | |-- bash43-005 - | | | |-- bash43-005.sig - | | | |-- bash43-006 - | | | |-- bash43-006.sig - | | | |-- bash43-007 - | | | |-- bash43-007.sig - | | | |-- bash43-008 - | | | |-- bash43-008.sig - | | | |-- bash43-009 - | | | |-- bash43-009.sig - | | | |-- bash43-010 - | | | |-- bash43-010.sig - | | | |-- bash43-011 - | | | |-- bash43-011.sig - | | | |-- bash43-012 - | | | |-- bash43-012.sig - | | | |-- bash43-013 - | | | |-- bash43-013.sig - | | | |-- bash43-014 - | | | |-- bash43-014.sig - | | | |-- bash43-015 - | | | |-- bash43-015.sig - | | | |-- bash43-016 - | | | |-- bash43-016.sig - | | | |-- bash43-017 - | | | |-- bash43-017.sig - | | | |-- bash43-018 - | | | |-- bash43-018.sig - | | | |-- bash43-019 - | | | |-- bash43-019.sig - | | | |-- bash43-020 - | | | |-- bash43-020.sig - | | | |-- bash43-021 - | | | |-- bash43-021.sig - | | | |-- bash43-022 - | | | |-- bash43-022.sig - | | | |-- bash43-023 - | | | |-- bash43-023.sig - | | | |-- bash43-024 - | | | |-- bash43-024.sig - | | | |-- bash43-025 - | | | |-- bash43-025.sig - | | | |-- bash43-026 - | | | |-- bash43-026.sig - | | | |-- bash43-027 - | | | |-- bash43-027.sig - | | | |-- bash43-028 - | | | |-- bash43-028.sig - | | | |-- bash43-029 - | | | |-- bash43-029.sig - | | | |-- bash43-030 - | | | |-- bash43-030.sig - | | | |-- bash43-031 - | | | |-- bash43-031.sig - | | | |-- bash43-032 - | | | |-- bash43-032.sig - | | | |-- bash43-033 - | | | |-- bash43-033.sig - | | | |-- bash43-034 - | | | |-- bash43-034.sig - | | | |-- bash43-035 - | | | |-- bash43-035.sig - | | | |-- bash43-036 - | | | |-- bash43-036.sig - | | | |-- bash43-037 - | | | |-- bash43-037.sig - | | | |-- bash43-038 - | | | |-- bash43-038.sig - | | | |-- bash43-039 - | | | |-- bash43-039.sig - | | | |-- bash43-040 - | | | |-- bash43-040.sig - | | | |-- bash43-041 - | | | |-- bash43-041.sig - | | | |-- bash43-042 - | | | |-- bash43-042.sig - | | | |-- bash43-043 - | | | |-- bash43-043.sig - | | | |-- bash43-044 - | | | |-- bash43-044.sig - | | | |-- bash43-045 - | | | |-- bash43-045.sig - | | | |-- bash43-046 - | | | `-- bash43-046.sig - | | |-- bash-4.3.tar.xz - | | |-- bash.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- bin - | | |-- banners.tar.gz - | | |-- bin.SlackBuild - | | |-- debianutils_2.7.dsc - | | |-- debianutils_2.7.tar.gz - | | |-- fbset-2.1.tar.gz - | | |-- scripts - | | | |-- diskcopy.gz - | | | `-- xx.gz - | | |-- slack-desc - | | `-- todos.tar.gz - | |-- btrfs-progs - | | |-- btrfs-progs-v4.5.3.tar.sign - | | |-- btrfs-progs-v4.5.3.tar.xz - | | |-- btrfs-progs.SlackBuild - | | |-- btrfs-progs.url - | | `-- slack-desc - | |-- bzip2 - | | |-- bzip2-1.0.6.tar.gz - | | |-- bzip2.SlackBuild - | | |-- bzip2.saneso.diff.gz - | | `-- slack-desc - | |-- coreutils - | | |-- DIR_COLORS.gz - | | |-- coreutils-8.25.tar.xz - | | |-- coreutils-8.25.tar.xz.sig - | | |-- coreutils-dircolors.csh.gz - | | |-- coreutils-dircolors.sh.gz - | | |-- coreutils.SlackBuild - | | |-- coreutils.uname.diff.gz - | | |-- doinst.sh.gz - | | |-- no_ls_quoting.patch.gz - | | `-- slack-desc - | |-- cpio - | | |-- cpio-2.12.tar.xz - | | |-- cpio.SlackBuild - | | `-- slack-desc - | |-- cpufrequtils - | | |-- cpufrequtils-008.tar.bz2 - | | |-- cpufrequtils-008.tar.bz2.sign - | | |-- cpufrequtils.SlackBuild - | | `-- slack-desc - | |-- cryptsetup - | | |-- cryptsetup-1.7.1.tar.sign - | | |-- cryptsetup-1.7.1.tar.xz - | | |-- cryptsetup.SlackBuild - | | `-- slack-desc - | |-- dbus - | | |-- dbus-1.10.8.tar.xz - | | |-- dbus-1.10.x-allow_root_globally.diff.gz - | | |-- dbus.SlackBuild - | | |-- doinst.sh.gz - | | |-- rc.messagebus.gz - | | `-- slack-desc - | |-- dcron - | | |-- crontab.c.O_EXCL.diff.gz - | | |-- crontab.root.gz - | | |-- dcron-4.5.tar.gz - | | |-- dcron.SlackBuild - | | |-- dcron.update.during.long.running.jobs.diff.gz - | | |-- defs.h.TMPDIR.diff.gz - | | |-- defs.h._DEFAULT_SOURCE.diff.gz - | | |-- doinst.sh.gz - | | |-- run-parts.8.gz - | | |-- run-parts.gz - | | `-- slack-desc - | |-- devs - | | |-- _devs.tar.gz - | | |-- devs.SlackBuild - | | |-- makedev.hd.diff.gz - | | |-- makedev_2.3.1-46.2.diff.gz - | | |-- makedev_2.3.1.hd.diff.gz - | | |-- makedev_2.3.1.orig.tar.gz - | | |-- makedev_2.3.1.slack.diff.gz - | | `-- slack-desc - | |-- dialog - | | |-- dialog-1.2-20130523.tar.xz - | | |-- dialog.SlackBuild - | | |-- dialog.smaller.min.height.diff.gz - | | `-- slack-desc - | |-- dosfstools - | | |-- dosfstools-3.0.28.tar.xz - | | |-- dosfstools-3.0.28.tar.xz.sig - | | |-- dosfstools.SlackBuild - | | |-- dosfstools.paths.diff.gz - | | |-- dosfstools.url - | | `-- slack-desc - | |-- e2fsprogs - | | |-- doinst.sh.gz - | | |-- e2fsprogs-1.43.1.tar.sign - | | |-- e2fsprogs-1.43.1.tar.xz - | | |-- e2fsprogs.SlackBuild - | | |-- e2fsprogs.no.64bit.by.default.diff.gz - | | `-- slack-desc - | |-- ed - | | |-- ed-1.13.tar.xz - | | |-- ed.SlackBuild - | | `-- slack-desc - | |-- efibootmgr - | | |-- efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch.gz - | | |-- efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch.gz - | | |-- efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch.gz - | | |-- efibootmgr-0.5.4-support-4k-sectors.patch.gz - | | |-- efibootmgr-0.5.4.tar.gz - | | |-- efibootmgr.SlackBuild - | | `-- slack-desc - | |-- eject - | | |-- eject-2.1.5.tar.bz2 - | | |-- eject.CDROM_DRIVE_STATUS.diff.gz - | | |-- eject.SlackBuild - | | |-- eject.spaces.diff.gz - | | `-- slack-desc - | |-- elilo - | | |-- elilo-3.16-all.tar.xz - | | |-- elilo.SlackBuild - | | |-- elilo.x64.rebuilt.tar.xz - | | |-- eliloconfig - | | |-- setup.ll.eliloconfig - | | `-- slack-desc - | |-- elvis - | | |-- elvis-2.2_0.tar.bz2 - | | |-- elvis.SlackBuild - | | |-- elvis.clr - | | |-- elvis.clr.orig - | | |-- elvis.ref.c.getline.diff.gz - | | `-- slack-desc - | |-- etc - | | |-- _etc.tar.gz - | | |-- etc.SlackBuild - | | |-- nsswitch.conf.gz - | | |-- slack-desc - | | `-- termcap-BSD.gz - | |-- eudev - | | |-- 0001-Remove-obsolete-udev_root-references.patch.gz - | | |-- 0002-src-udev-udevd.c-add-eudev-startup-message-for-kmsg.patch.gz - | | |-- 60-cdrom_id.rules.diff.gz - | | |-- config - | | | |-- modprobe.d - | | | | |-- 8139cp.conf - | | | | |-- README - | | | | |-- bcm43xx.conf - | | | | |-- eepro100.conf - | | | | |-- eth1394.conf - | | | | |-- evbug.conf - | | | | |-- framebuffers.conf - | | | | |-- hostap.conf - | | | | |-- hw_random.conf - | | | | |-- isapnp.conf - | | | | |-- isdn.conf - | | | | |-- oss.conf - | | | | |-- pcspkr.conf - | | | | |-- psmouse.conf - | | | | |-- scsi-sata-controllers.conf - | | | | |-- sound-modems.conf - | | | | |-- tulip.conf - | | | | |-- usb-controller.conf - | | | | |-- via-ircc.conf - | | | | `-- watchdog.conf - | | | |-- rc.d - | | | | `-- rc.udev.new - | | | |-- rules.d - | | | | |-- 40-slackware.rules - | | | | `-- 65-permissions.rules - | | | `-- udev.conf - | | |-- doinst.sh.gz - | | |-- eudev-3.1.5.tar.xz - | | |-- eudev.SlackBuild - | | `-- slack-desc - | |-- file - | | |-- doinst.sh.gz - | | |-- file-5.25.tar.xz - | | |-- file.SlackBuild - | | |-- file.crdaregbin.magic.gz - | | |-- file.etc.file.diff.gz - | | |-- file.quiet.diff.gz - | | |-- file.short.diff.gz - | | |-- file.xz.magic.gz - | | |-- file.zisofs.magic.gz - | | |-- recompile_magic.mgc.sh.gz - | | `-- slack-desc - | |-- findutils - | | |-- findutils-4.4.2.tar.xz - | | |-- findutils.SlackBuild - | | |-- findutils.no.default.options.warnings.diff.gz - | | |-- findutils.nolocate.diff.gz - | | `-- slack-desc - | |-- floppy - | | |-- fdutils-5.5-20081027.diff.gz - | | |-- fdutils-5.5.tar.xz - | | |-- fdutils.mediaprm.diff.gz - | | |-- floppy.SlackBuild - | | |-- mediaprm - | | |-- mtools-4.0.18.tar.xz - | | |-- mtools.conf - | | `-- slack-desc - | |-- gawk - | | |-- gawk-4.1.3.tar.xz - | | |-- gawk-4.1.3.tar.xz.sig - | | |-- gawk.SlackBuild - | | `-- slack-desc - | |-- genpower - | | |-- genpower-1.0.5.tar.gz - | | |-- genpower.SlackBuild - | | |-- genpower.halt.diff.gz - | | |-- genpower.var.diff.gz - | | `-- slack-desc - | |-- gettext - | | |-- gettext-0.19.8.1.tar.xz - | | |-- gettext-0.19.8.1.tar.xz.sig - | | |-- gettext-tools.SlackBuild - | | |-- gettext.SlackBuild - | | |-- slack-desc - | | `-- slack-desc.gettext-tools - | |-- getty-ps - | | |-- getty-ps.SlackBuild - | | |-- getty.bugfixes.diff.gz - | | |-- getty_ps-2.1.0.lsm - | | |-- getty_ps-2.1.0b.tar.gz - | | `-- slack-desc - | |-- glibc-zoneinfo - | | |-- doinst.sh.gz - | | |-- glibc-zoneinfo.SlackBuild - | | |-- slack-desc - | | |-- timezone-scripts - | | | |-- output-updated-timeconfig.sh - | | | |-- parts - | | | | |-- 00 - | | | | |-- 01 - | | | | |-- 02 - | | | | |-- 03 - | | | | |-- 04 - | | | | `-- README - | | | |-- setup.timeconfig - | | | `-- timeconfig - | | |-- tzcode2016e.tar.gz - | | |-- tzcode2016e.tar.gz.asc - | | |-- tzdata2016e.tar.gz - | | `-- tzdata2016e.tar.gz.asc - | |-- gpm - | | |-- gpm-1.20.1-lib-silent.patch.gz - | | |-- gpm-1.20.1-select-1.patch.gz - | | |-- gpm-1.20.1-weak-wgetch.patch.gz - | | |-- gpm-1.20.5-close-fds.patch.gz - | | |-- gpm-1.20.7.tar.xz - | | |-- gpm.SlackBuild - | | |-- inputattach.c.gz - | | |-- mouseconfig.gz - | | |-- setup.mouse.gz - | | `-- slack-desc - | |-- gptfdisk - | | |-- gptfdisk-1.0.0.tar.xz - | | |-- gptfdisk.SlackBuild - | | `-- slack-desc - | |-- grep - | | |-- grep-2.25.tar.xz - | | |-- grep-2.25.tar.xz.sig - | | |-- grep.SlackBuild - | | `-- slack-desc - | |-- grub - | | |-- 0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch.gz - | | |-- doinst.sh.gz - | | |-- etc.default.grub - | | |-- grub-2.00.tar.xz - | | |-- grub.SlackBuild - | | |-- grub.dejavusansmono.gfxterm.font.diff.gz - | | |-- grub.e75fdee420a7ad95e9a465c9699adc2e2e970440.terminate.efi.several.times.diff.gz - | | |-- initrd_naming.patch.gz - | | |-- slack-desc - | | `-- txtHRnXiHYUrM.txt.gz - | |-- gzip - | | |-- gzip-1.8.tar.xz - | | |-- gzip-1.8.tar.xz.sig - | | |-- gzip.SlackBuild - | | `-- slack-desc - | |-- hdparm - | | |-- hdparm-9.48.tar.xz - | | |-- hdparm.SlackBuild - | | `-- slack-desc - | |-- hwdata - | | |-- hwdata-0.284.tar.xz - | | |-- hwdata.SlackBuild - | | `-- slack-desc - | |-- infozip - | | |-- infozip.SlackBuild - | | |-- slack-desc - | | |-- unzip.git.archive.fix.diff.gz - | | |-- unzip.process.c.diff.gz - | | |-- unzip.use.system.libbz2.diff.gz - | | |-- unzip60.tar.xz - | | `-- zip30.tar.xz - | |-- inotify-tools - | | |-- inotify-tools-3.14.tar.xz - | | |-- inotify-tools.SlackBuild - | | `-- slack-desc - | |-- isapnptools - | | |-- isapnptools-1.26.lsm - | | |-- isapnptools-1.26.tar.xz - | | |-- isapnptools.SlackBuild - | | |-- isapnptools.url - | | |-- isapnptools_1.26-5.diff.gz - | | `-- slack-desc - | |-- jfsutils - | | |-- jfsutils-1.1.15.tar.xz - | | |-- jfsutils.SlackBuild - | | `-- slack-desc - | |-- kbd - | | |-- kbd.SlackBuild - | | |-- setconsolefont - | | |-- setup.setconsolefont - | | |-- slack-desc - | | `-- sources - | | |-- extraf.tgz - | | |-- kbd-1.15-keycodes-man.patch.gz - | | |-- kbd-1.15-resizecon-x86_64.patch.gz - | | |-- kbd-1.15-unicode_start.patch.gz - | | |-- kbd-1.15.2-po.patch.gz - | | |-- kbd-1.15.3-fix-es-translation.patch.gz - | | |-- kbd-1.15.3.tar.xz - | | |-- kbd-latarcyrheb-16-fixed.tar.bz2 - | | |-- kbd-latsun-fonts.tar.bz2 - | | |-- nl.euro.diff.gz - | | |-- ro_maps.tar.bz2 - | | |-- speakup-jfw.tar.gz - | | `-- speakupmap.map.gz - | |-- kernel-firmware - | | |-- kernel-firmware.SlackBuild - | | `-- slack-desc - | |-- kmod - | | |-- kmod-22.tar.sign - | | |-- kmod-22.tar.xz - | | |-- kmod.SlackBuild - | | `-- slack-desc - | |-- less - | | |-- less-481.tar.xz - | | |-- less.SlackBuild - | | |-- lesspipe.sh.gz - | | `-- slack-desc - | |-- lha - | | |-- lha-114i.tar.gz - | | |-- lha.SlackBuild - | | |-- lha_1.14i-10.1.diff.gz - | | `-- slack-desc - | |-- libcgroup - | | |-- doinst.sh.gz - | | |-- libcgroup-0.41.tar.xz - | | |-- libcgroup.SlackBuild - | | |-- libcgroup.conf.diff.gz - | | |-- libcgroup.init.diff.gz - | | `-- slack-desc - | |-- libgudev - | | |-- libgudev-230.tar.xz - | | |-- libgudev.SlackBuild - | | `-- slack-desc - | |-- lilo - | | |-- lilo-24.2.tar.gz - | | |-- lilo-24.2.tar.gz.asc - | | |-- lilo.SlackBuild - | | |-- lilo.ignore.usable.memory.above.4G.diff.gz - | | |-- liloconfig - | | |-- setup.liloconfig - | | |-- sl1337.bmp - | | |-- slack-desc - | | |-- slack.bmp - | | |-- slack.dat - | | |-- slack14.0.2012.bmp - | | |-- slack64.bmp - | | `-- text.lilohelp - | |-- logrotate - | | |-- doinst.sh.gz - | | |-- logrotate-3.8.9.tar.gz - | | |-- logrotate.SlackBuild - | | |-- logrotate.conf.gz - | | |-- logrotate.cron.gz - | | |-- logrotate.slackware.diff.gz - | | `-- slack-desc - | |-- lrzip - | | |-- doinst.sh.gz - | | |-- lrzip-0.621.tar.xz - | | |-- lrzip.SlackBuild - | | `-- slack-desc - | |-- lvm2 - | | |-- LVM2.2.02.154.tar.xz - | | |-- create-dm-run-dir.diff.gz - | | |-- doinst.sh.gz - | | |-- lvm2.SlackBuild - | | `-- slack-desc - | |-- mcelog - | | |-- doinst.sh.gz - | | |-- mcelog-128.tar.xz - | | |-- mcelog.SlackBuild - | | |-- mcelog.init.diff.gz - | | `-- slack-desc - | |-- mdadm - | | |-- doinst.sh.gz - | | |-- mdadm-3.3.4.tar.sign - | | |-- mdadm-3.3.4.tar.xz - | | |-- mdadm.SlackBuild - | | `-- slack-desc - | |-- minicom - | | |-- config.sub-x86_64.diff.gz - | | |-- doinst.sh.gz - | | |-- lrzsz_0.12.21-5.diff.gz - | | |-- lrzsz_0.12.21.orig.tar.gz - | | |-- minicom-2.6.2.tar.xz - | | |-- minicom.SlackBuild - | | |-- minicom.users.gz - | | `-- slack-desc - | |-- mkinitrd - | | |-- README.initrd - | | |-- _initrd-tree.tar.gz - | | |-- busybox-1.20.2.tar.xz - | | |-- busybox-dot-config -> busybox-dot-config.1.20.x - | | |-- busybox-dot-config.1.20.x - | | |-- fixes-1.20.2 - | | | |-- busybox-1.20.2-kernel_ver.patch - | | | |-- busybox-1.20.2-ntpd.patch - | | | |-- busybox-1.20.2-pkg-config-selinux.patch - | | | `-- busybox-1.20.2-sys-resource.patch - | | |-- init - | | |-- keymaps.tar.gz - | | |-- mkinitrd - | | |-- mkinitrd.8 - | | |-- mkinitrd.SlackBuild - | | |-- mkinitrd.conf.5 - | | |-- mkinitrd.conf.sample - | | |-- mkinitrd_command_generator.8 - | | |-- mkinitrd_command_generator.sh - | | `-- slack-desc - | |-- mt-st - | | |-- _mt-st.tar.gz - | | |-- mt-st-0.9b.tar.gz - | | |-- mt-st.SlackBuild - | | |-- mt-st.config.diff.gz - | | |-- mt-st.man.diff.gz - | | |-- mt-st.sdlt.diff.gz - | | `-- slack-desc - | |-- mtx - | | |-- mtx-1.3.12.tar.gz - | | |-- mtx.SlackBuild - | | `-- slack-desc - | |-- ncompress - | | |-- ncompress-4.2.4.4.tar.gz - | | |-- ncompress.SlackBuild - | | `-- slack-desc - | |-- ntfs-3g - | | |-- 10-ntfs-3g-policy.fdi - | | |-- 99-ntfs-3g.rules - | | |-- ntfs-3g.SlackBuild - | | |-- ntfs-3g_ntfsprogs-2016.2.22.tar.xz - | | `-- slack-desc - | |-- os-prober - | | |-- os-prober.SlackBuild - | | |-- os-prober.reiserfs.diff.gz - | | |-- os-prober_1.70.tar.xz - | | `-- slack-desc - | |-- patch - | | |-- patch-2.7.5.tar.xz - | | |-- patch-2.7.5.tar.xz.sig - | | |-- patch.SlackBuild - | | `-- slack-desc - | |-- pciutils - | | |-- pciutils-3.4.1.tar.sign - | | |-- pciutils-3.4.1.tar.xz - | | |-- pciutils.SlackBuild - | | |-- pciutils.dontcompress.diff.gz - | | |-- pciutils.url - | | `-- slack-desc - | |-- pcmciautils - | | |-- cis-cs-3.2.8.tar.gz - | | |-- config - | | | |-- 60-pcmcia.rules - | | | |-- config.opts - | | | `-- rc.pcmcia - | | |-- doinst.sh.gz - | | |-- pcmciautils-018.tar.sign - | | |-- pcmciautils-018.tar.xz - | | |-- pcmciautils.SlackBuild - | | `-- slack-desc - | |-- pkgtools - | | |-- manpages - | | | |-- explodepkg.8 - | | | |-- installpkg.8 - | | | |-- makepkg.8 - | | | |-- pkgtool.8 - | | | |-- removepkg.8 - | | | `-- upgradepkg.8 - | | |-- manpages-l10n.tar.xz - | | |-- obsolete-scripts - | | | |-- README - | | | `-- setup.90.modem-device - | | |-- pkgtools.SlackBuild - | | |-- scripts - | | | |-- explodepkg - | | | |-- installpkg - | | | |-- makebootdisk - | | | |-- makepkg - | | | |-- pkgtool - | | | |-- removepkg - | | | |-- setup.70.install-kernel - | | | |-- setup.80.make-bootdisk - | | | |-- setup.htmlview - | | | |-- setup.services - | | | `-- upgradepkg - | | `-- slack-desc - | |-- procps-ng - | | |-- procinfo-18.tar.xz - | | |-- procinfo-ng-2.0.304.tar.xz - | | |-- procps-ng-3.3.11.tar.xz - | | |-- procps-ng.SlackBuild - | | |-- psmisc-22.21.tar.xz - | | |-- psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff.gz - | | `-- slack-desc - | |-- quota - | | |-- quota-4.03.tar.xz - | | |-- quota.SlackBuild - | | |-- quota.lwrap.needs.lnsl.diff.gz - | | `-- slack-desc - | |-- reiserfsprogs - | | |-- reiserfsprogs-3.6.24.tar.xz - | | |-- reiserfsprogs.SlackBuild - | | `-- slack-desc - | |-- rpm2tgz - | | |-- getrpmtype.tar.gz - | | |-- patches - | | | |-- 0001-fix-d-handling.patch.gz - | | | |-- 0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz - | | | |-- 0003-allow-every-user-to-use-rpm2tgz.patch.gz - | | | |-- 0004-produce-more-compliant-slack-desc.patch.gz - | | | |-- 0005-gzip-man-info-pages.patch.gz - | | | |-- 0006-should-we-use-.txz-format-in-slackware-current.patch.gz - | | | |-- 0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz - | | | |-- 0008-Avoid-none-values-in-slack-desc.patch.gz - | | | `-- 0009-Add-c-option-just-as-makepkg-c-y.patch.gz - | | |-- rpm2targz - | | |-- rpm2targz.README - | | |-- rpm2tgz.SlackBuild - | | |-- rpmoffset.c - | | `-- slack-desc - | |-- sdparm - | | |-- sdparm-1.10.tar.xz - | | |-- sdparm.SlackBuild - | | `-- slack-desc - | |-- sed - | | |-- sed-4.2.2.tar.xz - | | |-- sed.SlackBuild - | | `-- slack-desc - | |-- shadow - | | |-- adduser - | | |-- doinst.sh.gz - | | |-- login.defs.gz - | | |-- patches - | | | |-- README_PATCHES - | | | `-- unused - | | |-- shadow-4.2.1.tar.xz - | | |-- shadow-4.2.1.tar.xz.sig - | | |-- shadow.CVE-2005-4890.relax.diff.gz - | | |-- shadow.SlackBuild - | | |-- shadow.url - | | |-- slack-desc - | | `-- useradd.gz - | |-- sharutils - | | |-- sharutils-4.15.2.tar.xz - | | |-- sharutils-4.15.2.tar.xz.sig - | | |-- sharutils.SlackBuild - | | `-- slack-desc - | |-- slocate - | | |-- _slocate.tar.gz - | | |-- slack-desc - | | |-- slocate-3.1.tar.gz - | | |-- slocate-3.1.tar.gz.sign - | | |-- slocate.CVE-2007-0277.diff.gz - | | |-- slocate.SlackBuild - | | `-- slocate.bigfile.diff.gz - | |-- smartmontools - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- smartmontools-6.5.tar.xz - | | `-- smartmontools.SlackBuild - | |-- splitvt - | | |-- slack-desc - | | |-- splitvt-1.6.5.tar.gz - | | |-- splitvt.SlackBuild - | | `-- splitvt_1.6.5-9.diff.gz - | |-- sysfsutils - | | |-- slack-desc - | | |-- sysfsutils-2.1.0.tar.bz2 - | | `-- sysfsutils.SlackBuild - | |-- sysklogd - | | |-- config - | | | |-- rc.syslog.new - | | | |-- syslog.conf.new - | | | `-- syslog.logrotate - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- sysklogd-1.5.1.tar.gz - | | |-- sysklogd.SlackBuild - | | |-- sysklogd.allow.repeated.messages.diff.gz - | | `-- use_memmove_not_strcpy.diff.gz - | |-- syslinux - | | |-- slack-desc - | | |-- syslinux-4.07.tar.sign - | | |-- syslinux-4.07.tar.xz - | | `-- syslinux.SlackBuild - | |-- sysvinit - | | |-- CHANGES - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- sysvinit-2.88dsf.tar.xz - | | |-- sysvinit.SlackBuild - | | `-- sysvinit.paths.diff.gz - | |-- sysvinit-functions - | | |-- README.functions - | | |-- doinst.sh.gz - | | |-- function-src-8.53.tar.bz2 - | | |-- functions - | | |-- slack-desc - | | `-- sysvinit-functions.SlackBuild - | |-- sysvinit-scripts - | | |-- doinst.sh.gz - | | |-- scripts - | | | |-- fetch-rescan-scsi-bus.sh - | | | |-- inittab - | | | |-- rc.4 - | | | |-- rc.6 - | | | |-- rc.K - | | | |-- rc.M - | | | |-- rc.S - | | | |-- rc.cpufreq - | | | |-- rc.local - | | | |-- rc.loop - | | | |-- rc.modules - | | | |-- rc.modules.local - | | | |-- rc.sysvinit - | | | |-- rescan-scsi-bus.sh - | | | `-- rescan-scsi-bus.sh.diff - | | |-- slack-desc - | | `-- sysvinit-scripts.SlackBuild - | |-- tar - | | |-- slack-desc - | | |-- tar-1.13.bzip2.diff.gz - | | |-- tar-1.13.tar.gz - | | |-- tar-1.29.tar.xz - | | |-- tar-1.29.tar.xz.sig - | | |-- tar.SlackBuild - | | `-- tar.nolonezero.diff.gz - | |-- tcsh - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- tcsh-6.19.00.tar.xz - | | |-- tcsh.SlackBuild - | | `-- tcsh.nobuiltincolorls.diff.gz - | |-- time - | | |-- slack-desc - | | |-- time-1.7.tar.gz - | | `-- time.SlackBuild - | |-- tree - | | |-- slack-desc - | | |-- tree-1.7.0.tar.xz - | | `-- tree.SlackBuild - | |-- udisks - | | |-- slack-desc - | | |-- udisks-1.0.5.tar.xz - | | |-- udisks.SlackBuild - | | |-- udisks.no.pci-db.diff.gz - | | `-- udisks.url - | |-- udisks2 - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- udisks-2.1.5.tar.xz - | | `-- udisks2.SlackBuild - | |-- unarj - | | |-- Makefile.gz - | | |-- slack-desc - | | |-- unarj.SlackBuild - | | `-- unarj265.tar.gz - | |-- upower - | | |-- doinst.sh.gz - | | |-- patches - | | | |-- Fix-HID-rules-header-as-per-discussions.patch.gz - | | | |-- Update-UPower-HID-rules-supported-devices-list.patch.gz - | | | |-- linux-Clamp-percentage-for-overfull-batteries.patch.gz - | | | |-- linux-Detect-docked-docking-stations-correctly.patch.gz - | | | |-- linux-Properly-detect-bluetooth-mice-and-keyboards-t.patch.gz - | | | |-- rules-Add-support-for-Logitech-G700s-G700-Gaming-Mou.patch.gz - | | | |-- rules-support-Logitech-Unifying-in-Linux-3.19.patch.gz - | | | `-- upower-pm-utils-0.9.23-fix-segfault.patch.gz - | | |-- slack-desc - | | |-- upower-0.9.23.tar.xz - | | |-- upower.SlackBuild - | | `-- upower.url - | |-- usb_modeswitch - | | |-- device_reference.txt.gz - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- usb-modeswitch-2.2.6.tar.xz - | | |-- usb-modeswitch-data-20151101.tar.xz - | | `-- usb_modeswitch.SlackBuild - | |-- usbutils - | | |-- slack-desc - | | |-- usbutils-008.tar.sign - | | |-- usbutils-008.tar.xz - | | |-- usbutils.SlackBuild - | | `-- usbutils.url - | |-- utempter - | | |-- doinst.sh.gz - | | |-- libutempter-1.1.6.tar.bz2 - | | |-- libutempter-1.1.6.tar.bz2.asc - | | |-- slack-desc - | | `-- utempter.SlackBuild - | |-- util-linux - | | |-- adjtimex_1.29-2.2.diff.gz - | | |-- adjtimex_1.29.orig.tar.gz - | | |-- bsdstrings-util-linux_overflow.diff.gz - | | |-- bsdstrings.tar.gz - | | |-- ddate.1 - | | |-- ddate.c - | | |-- doinst.sh.gz - | | |-- net-tools-1.60.20120726git.tar.xz - | | |-- net-tools.config.h.gz - | | |-- scsi_ioctl.h - | | |-- setserial-2.17.tar.gz - | | |-- setserial-rc.serial.diff.gz - | | |-- setserial-undef_TIOCGHAYESESP.diff.gz - | | |-- slack-desc - | | |-- util-linux-2.27.1.tar.sign - | | |-- util-linux-2.27.1.tar.xz - | | |-- util-linux.SlackBuild - | | |-- util-linux.fdisk-no-solaris.diff.gz - | | |-- ziptool-1.4.0.tar.xz - | | `-- ziptool-fix_build.patch.gz - | |-- which - | | |-- slack-desc - | | |-- which-2.21.tar.gz - | | |-- which-2.21.tar.gz.sig - | | `-- which.SlackBuild - | |-- xfsprogs - | | |-- slack-desc - | | |-- xfsprogs-4.3.0.tar.xz - | | `-- xfsprogs.SlackBuild - | |-- xz - | | |-- slack-desc - | | |-- xz-5.2.2.tar.xz - | | |-- xz-5.2.2.tar.xz.sig - | | `-- xz.SlackBuild - | `-- zoo - | |-- slack-desc - | |-- zoo-2.10.tar.gz - | |-- zoo.SlackBuild - | `-- zoo_2.10-22.debian.tar.gz - |-- ap - | |-- a2ps - | | |-- a2ps-4.14.tar.bz2 - | | |-- a2ps.SlackBuild - | | |-- a2ps.a2ps_cfg.in.diff.gz - | | |-- a2ps.diff.gz - | | |-- psutils-1.17.tar.gz - | | |-- psutils.destdir.diff.gz - | | |-- psutils.diff.gz - | | `-- slack-desc - | |-- acct - | | |-- 581421-sa-hz-division.patch.gz - | | |-- acct-6.5.4.tar.xz - | | |-- acct.SlackBuild - | | |-- acct.logdir.fhs.diff.gz - | | `-- slack-desc - | |-- alsa-utils - | | |-- alsa-utils-1.1.1.tar.xz - | | |-- alsa-utils.SlackBuild - | | |-- alsa-utils.alsaconf.diff.gz - | | |-- doinst.sh.gz - | | |-- rc.alsa-oss.gz - | | |-- rc.alsa.gz - | | `-- slack-desc - | |-- amp - | | |-- _amp.tar.gz - | | |-- amp-0.7.6.tar.gz - | | |-- amp-gcc34.diff.gz - | | |-- amp.SlackBuild - | | |-- license_excerpts - | | `-- slack-desc - | |-- ash - | | |-- ash-0.4.0.tar.gz - | | |-- ash.SlackBuild - | | |-- patches - | | | |-- ash-builtin.patch.gz - | | | |-- ash-debian.patch.gz - | | | |-- ash-echo.patch.gz - | | | |-- ash-freebsd.patch.gz - | | | |-- ash-getcwd.patch.gz - | | | |-- ash-getopt.patch.gz - | | | |-- ash-glob.patch.gz - | | | |-- ash-hetio.patch.gz - | | | |-- ash-jobs.patch.gz - | | | |-- ash-kill.patch.gz - | | | |-- ash-makefile.patch.gz - | | | |-- ash-manpage.patch.gz - | | | |-- ash-memout.patch.gz - | | | |-- ash-misc.patch.gz - | | | |-- ash-ppid.patch.gz - | | | |-- ash-redir.patch.gz - | | | |-- ash-setmode.patch.gz - | | | |-- ash-sighup.patch.gz - | | | |-- ash-syntax.patch.gz - | | | |-- ash-test.patch.gz - | | | `-- ash-times.patch.gz - | | `-- slack-desc - | |-- at - | | |-- at-3.1.19.tar.xz - | | |-- at.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- bc - | | |-- bc-1.06.95.tar.bz2 - | | |-- bc-1.06.95.tar.bz2.sig - | | |-- bc.SlackBuild - | | `-- slack-desc - | |-- bpe - | | |-- bpe-2.01.00.tar.gz - | | |-- bpe.SlackBuild - | | `-- slack-desc - | |-- cdparanoia - | | |-- cdparanoia-III-10.2.src.tar.gz - | | |-- cdparanoia-III-10.2_cdda_private.patch.gz - | | |-- cdparanoia.SlackBuild - | | `-- slack-desc - | |-- cdrdao - | | |-- cdrdao-1.2.3-stat.patch.gz - | | |-- cdrdao-1.2.3.tar.xz - | | |-- cdrdao.SlackBuild - | | `-- slack-desc - | |-- cdrtools - | | |-- cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch.gz - | | |-- cdrtools-3.01.tar.xz - | | |-- cdrtools.SlackBuild - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- zisofs-tools-1.0.8.tar.bz2 - | | `-- zisofs-tools-1.0.8.tar.bz2.sign - | |-- cgmanager - | | |-- cgmanager-0.39-remove-pam-requirement.patch.gz - | | |-- cgmanager-0.39.tar.xz - | | |-- cgmanager.SlackBuild - | | |-- cgmanager.url - | | |-- config - | | | |-- rc.cgmanager - | | | `-- rc.cgproxy - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- cups - | | |-- cups-2.1.4-source.tar.xz - | | |-- cups-blacklist-usblp.conf - | | |-- cups-samba-5.0rc3.tar.gz - | | |-- cups-windows-6.0-source.tar.xz - | | |-- cups.SlackBuild - | | |-- cups.url - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- cups-filters - | | |-- cups-filters-1.9.0.tar.xz - | | |-- cups-filters.SlackBuild - | | |-- cups-filters.url - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- dc3dd - | | |-- dc3dd-7.2.641.tar.xz - | | |-- dc3dd.SlackBuild - | | `-- slack-desc - | |-- ddrescue - | | |-- ddrescue-1.21.tar.xz - | | |-- ddrescue.SlackBuild - | | `-- slack-desc - | |-- diffstat - | | |-- diffstat-1.60.tar.xz - | | |-- diffstat.SlackBuild - | | `-- slack-desc - | |-- diffutils - | | |-- diffutils-3.3.tar.xz - | | |-- diffutils-3.3.tar.xz.sig - | | |-- diffutils-sdiff-no-waitpid.patch.gz - | | |-- diffutils.SlackBuild - | | |-- diffutils.mkdir_p.diff.gz - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- dmapi - | | |-- dmapi-2.2.12.tar.xz - | | |-- dmapi.SlackBuild - | | `-- slack-desc - | |-- dmidecode - | | |-- dmidecode-3.0.tar.xz - | | |-- dmidecode-3.0.tar.xz.sig - | | |-- dmidecode.SlackBuild - | | |-- patches - | | | |-- 0001-Add-no-sysfs-option-description-to-h-output.patch.gz - | | | |-- 0002-Avoid-SIGBUS-on-mmap-failure.patch.gz - | | | |-- 0003-Fix-error-paths-in-mem_chunk.patch.gz - | | | |-- 0004-dmidecode-Handle-OEM-specific-types-in-group-associa.patch.gz - | | | |-- 0005-Fix-No-SMBIOS-nor-DMI-entry-point-found-on-SMBIOS3.patch.gz - | | | |-- 0006-dmidecode-Introduce-SYS_FIRMWARE_DIR.patch.gz - | | | |-- 0007-Let-read_file-return-the-actual-data-size.patch.gz - | | | |-- 0008-dmidecode-Use-read_file-to-read-the-DMI-table-from-s.patch.gz - | | | `-- 0009-dmidecode-Check-sysfs-entry-point-length.patch.gz - | | `-- slack-desc - | |-- dvd+rw-tools - | | |-- dvd+rw-tools-7.1.tar.gz - | | |-- dvd+rw-tools.SlackBuild - | | |-- dvd+rw-tools.limits.h.diff.gz - | | |-- dvd+rw-tools.url - | | `-- slack-desc - | |-- enscript - | | |-- enscript-1.6.6.tar.xz - | | |-- enscript.SlackBuild - | | `-- slack-desc - | |-- flac - | | |-- flac-1.3.1.tar.xz - | | |-- flac.SlackBuild - | | |-- flac.man.diff.gz - | | `-- slack-desc - | |-- ghostscript - | | |-- cidfmap.gz - | | |-- dump.unused.internal.libraries.from.sources.sh - | | |-- ghostscript-9.19.tar.xz - | | |-- ghostscript.SlackBuild - | | `-- slack-desc - | |-- ghostscript-fonts-std - | | |-- doinst.sh.gz - | | |-- ghostscript-fonts-std-8.11.tar.bz2 - | | |-- ghostscript-fonts-std.SlackBuild - | | `-- slack-desc - | |-- gphoto2 - | | |-- gphoto2-2.5.10.tar.xz - | | |-- gphoto2.SlackBuild - | | `-- slack-desc - | |-- groff - | | |-- groff-1.22.3.tar.xz - | | |-- groff.SlackBuild - | | |-- groff.man.mdoc.local.gz - | | `-- slack-desc - | |-- gutenprint - | | |-- doinst.sh.gz - | | |-- gutenprint-5.2.11.tar.xz - | | |-- gutenprint.SlackBuild - | | |-- setup.cups-genppdupdate - | | `-- slack-desc - | |-- hplip - | | |-- doinst.sh.gz - | | |-- hplip-3.16.5.tar.xz - | | |-- hplip.SlackBuild - | | |-- hplip.no.upgrade.diff.gz - | | |-- setup.py.lc_all.c.diff.gz - | | `-- slack-desc - | |-- htop - | | |-- htop-2.0.1.tar.xz - | | |-- htop.SlackBuild - | | `-- slack-desc - | |-- ispell - | | |-- ispell-3.2.06.tar.gz - | | |-- ispell.SlackBuild - | | |-- ispell.diff.gz - | | `-- slack-desc - | |-- itstool - | | |-- itstool-2.0.2.tar.xz - | | |-- itstool.SlackBuild - | | `-- slack-desc - | |-- jed - | | |-- jed-0.99-19.tar.bz2 - | | |-- jed-0.99-19.tar.bz2.asc - | | |-- jed.SlackBuild - | | `-- slack-desc - | |-- joe - | | |-- joe-4.1.tar.xz - | | |-- joe.SlackBuild - | | `-- slack-desc - | |-- jove - | | |-- jove.SlackBuild - | | |-- jove.makefile.diff.gz - | | |-- jove4.16.0.73.tar.xz - | | `-- slack-desc - | |-- ksh93 - | | |-- CPL - | | |-- EPL-1.0 - | | |-- INIT.2012-08-01.tgz - | | |-- ast-ksh.2012-08-01.tgz - | | |-- ksh93.SlackBuild - | | |-- patches - | | | |-- ksh-20070328-builtins.patch.gz - | | | |-- ksh-20080202-manfix.patch.gz - | | | |-- ksh-20100202-pathvar.patch.gz - | | | |-- ksh-20100621-fdstatus.patch.gz - | | | |-- ksh-20100621-manfix3.patch.gz - | | | |-- ksh-20100826-fixregr.patch.gz - | | | |-- ksh-20120801-alarmifs.patch.gz - | | | |-- ksh-20120801-argvfix.patch.gz - | | | |-- ksh-20120801-assoc-unset-leak.patch.gz - | | | |-- ksh-20120801-cdfix.patch.gz - | | | |-- ksh-20120801-cdfix2.patch.gz - | | | |-- ksh-20120801-cdfix3.patch.gz - | | | |-- ksh-20120801-cdfork.patch.gz - | | | |-- ksh-20120801-covsfix.patch.gz - | | | |-- ksh-20120801-crash.patch.gz - | | | |-- ksh-20120801-diskfull.patch.gz - | | | |-- ksh-20120801-emptyarrayinit.patch.gz - | | | |-- ksh-20120801-fd2lost.patch.gz - | | | |-- ksh-20120801-filecomsubst.patch.gz - | | | |-- ksh-20120801-forkbomb.patch.gz - | | | |-- ksh-20120801-fununset.patch.gz - | | | |-- ksh-20120801-heresub.patch.gz - | | | |-- ksh-20120801-kshmfix.patch.gz - | | | |-- ksh-20120801-lexfix.patch.gz - | | | |-- ksh-20120801-locking.patch.gz - | | | |-- ksh-20120801-macro.patch.gz - | | | |-- ksh-20120801-manfix4.patch.gz - | | | |-- ksh-20120801-memlik.patch.gz - | | | |-- ksh-20120801-memlik3.patch.gz - | | | |-- ksh-20120801-mlikfiks.patch.gz - | | | |-- ksh-20120801-mtty.patch.gz - | | | |-- ksh-20120801-noexeccdfix.patch.gz - | | | |-- ksh-20120801-nohupfork.patch.gz - | | | |-- ksh-20120801-nomulti.patch.gz - | | | |-- ksh-20120801-oldenvinit.patch.gz - | | | |-- ksh-20120801-retfix.patch.gz - | | | |-- ksh-20120801-rmdirfix.patch.gz - | | | |-- ksh-20120801-roundit.patch.gz - | | | |-- ksh-20120801-sufix.patch.gz - | | | |-- ksh-20120801-tabfix.patch.gz - | | | |-- ksh-20120801-tpstl.patch.gz - | | | |-- ksh-20120801-trapcom.patch.gz - | | | |-- ksh-20120801-xufix.patch.gz - | | | |-- ksh-20130214-fixkill.patch.gz - | | | |-- ksh-20130613-cdfix4.patch.gz - | | | |-- ksh-20130628-longer.patch.gz - | | | |-- ksh-20140301-fikspand.patch.gz - | | | |-- ksh-20140415-hokaido.patch.gz - | | | |-- ksh-20140801-arraylen.patch.gz - | | | `-- ksh-20140929-safefd.patch.gz - | | `-- slack-desc - | |-- libx86 - | | |-- libx86-1.1.tar.gz - | | |-- libx86-add-pkgconfig.patch.gz - | | |-- libx86-mmap-offset.patch.gz - | | |-- libx86.SlackBuild - | | |-- libx86.info - | | `-- slack-desc - | |-- linuxdoc-tools - | | |-- ChangeLog.txt - | | |-- arm - | | | `-- build - | | |-- linuxdoc-tools.SlackBuild - | | |-- linuxdoc-tools.build - | | |-- postbuildfixes.sh - | | |-- slack-desc - | | |-- sources - | | | |-- asciidoc-8.6.9.tar.xz - | | | |-- docbook-dsssl-1.79.tar.xz - | | | |-- docbook-dsssl-doc-1.79.tar.xz - | | | |-- docbook-style-xsl-1.78.1-4.fc23.src.rpm - | | | |-- docbook-utils-0.6.14-39.fc23.src.rpm - | | | |-- docbook-xml-4.5.zip - | | | |-- docbook2x_0.8.8-9.debian.tar.xz - | | | |-- docbook2x_0.8.8.orig.tar.xz - | | | |-- docbook_4.5.orig.tar.xz - | | | |-- gnome-doc-utils-0.20.10.tar.xz - | | | |-- gtk-doc-1.24.tar.xz - | | | |-- libsgmls-perl_1.03ii-33.debian.tar.xz - | | | |-- libsgmls-perl_1.03ii.orig.tar.xz - | | | |-- linuxdoc-tools-0.9.13-letter.patch.xz - | | | |-- linuxdoc-tools-0.9.20-lib64.patch.xz - | | | |-- linuxdoc-tools-0.9.68-flex.patch.xz - | | | |-- linuxdoc-tools_0.9.69.tar.xz - | | | |-- openjade-1.3-getopts.pl.xz - | | | |-- openjade-1.3.2-gcc46.patch.xz - | | | |-- openjade-1.3.3-pre1.tar.xz - | | | |-- opensp-1.5.2-22.fc23.src.rpm - | | | |-- perl-XML-NamespaceSupport-1.11-16.fc23.src.rpm - | | | |-- perl-XML-SAX-0.99-15.fc23.src.rpm - | | | |-- perl-XML-SAX-Base-1.08-14.fc23.src.rpm - | | | |-- sgml-common-0.6.3-43.fc23.src.rpm - | | | |-- source.download - | | | `-- xmlto-0.0.26-4.fc23.src.rpm - | | `-- trackbuild.linuxdoc-tools - | |-- lm_sensors - | | |-- lm_sensors-3.4.0.tar.bz2 - | | |-- lm_sensors.SlackBuild - | | `-- slack-desc - | |-- lsof - | | |-- lsof.SlackBuild - | | |-- lsof_4.89.tar.bz2 - | | |-- lsof_4.89.tar.bz2.sig - | | `-- slack-desc - | |-- lsscsi - | | |-- lsscsi-0.28.tar.xz - | | |-- lsscsi.SlackBuild - | | |-- lsscsi.url - | | `-- slack-desc - | |-- lxc - | | |-- doinst.sh - | | |-- lxc-2.0.1.tar.xz - | | |-- lxc-slackware.in - | | |-- lxc.SlackBuild - | | |-- rc.lxc - | | |-- scripts - | | | |-- README - | | | |-- rc.6.lxc - | | | |-- rc.6.orig - | | | |-- rc.M.lxc - | | | |-- rc.M.orig - | | | |-- rc.S.lxc - | | | |-- rc.S.orig - | | | |-- rc.inet1.lxc - | | | `-- rc.inet1.orig - | | `-- slack-desc - | |-- lzip - | | |-- lzip-1.16.tar.gz - | | |-- lzip-1.16.tar.gz.sig - | | |-- lzip.SlackBuild - | | `-- slack-desc - | |-- madplay - | | |-- madplay-0.15.2b-fix-segfault.patch.gz - | | |-- madplay-0.15.2b.tar.xz - | | |-- madplay.SlackBuild - | | `-- slack-desc - | |-- man - | | |-- doinst.sh.gz - | | |-- makewhatis.bzcat.bugfix.diff.gz - | | |-- man-1.6f.nroff.mandoc.diff.gz - | | |-- man-1.6g.tar.xz - | | |-- man.SlackBuild - | | `-- slack-desc - | |-- man-pages - | | |-- doinst.sh.gz - | | |-- man-pages-4.06.tar.sign - | | |-- man-pages-4.06.tar.xz - | | |-- man-pages-posix-2013-a.tar.xz - | | |-- man-pages.SlackBuild - | | |-- slack-desc - | | `-- whatis.sample.xz - | |-- mariadb - | | |-- doinst.sh.gz - | | |-- mariadb-10.0.26.tar.xz - | | |-- mariadb.SlackBuild - | | |-- mirror.url - | | |-- rc.mysqld.gz - | | `-- slack-desc - | |-- mc - | | |-- mc-3605-extfs.c-fix-buffer-overflow.patch.gz - | | |-- mc-3611-fish-fix-perl-ls-helper.patch.gz - | | |-- mc-4.8.16.tar.xz - | | |-- mc-syntax-error.patch.gz - | | |-- mc.SlackBuild - | | |-- mc.image.sh.geeqie.diff.gz - | | |-- profile.d - | | | |-- mc-wrapper.csh - | | | |-- mc-wrapper.sh - | | | |-- mc.csh - | | | `-- mc.sh - | | `-- slack-desc - | |-- moc - | | |-- moc-2.5.1.tar.xz - | | |-- moc.SlackBuild - | | `-- slack-desc - | |-- most - | | |-- most-5.0.0a.tar.bz2 - | | |-- most.SlackBuild - | | `-- slack-desc - | |-- mpg123 - | | |-- mpg123-1.23.4.tar.xz - | | |-- mpg123.SlackBuild - | | `-- slack-desc - | |-- nano - | | |-- doinst.sh.gz - | | |-- nano-2.6.0.tar.xz - | | |-- nano.SlackBuild - | | `-- slack-desc - | |-- normalize - | | |-- normalize-0.7.7.tar.bz2 - | | |-- normalize.SlackBuild - | | `-- slack-desc - | |-- pamixer - | | |-- pamixer-1.3.1.tar.xz - | | |-- pamixer.SlackBuild - | | `-- slack-desc - | |-- pm-utils - | | |-- 49bluetooth-generic - | | |-- README.SLACKWARE - | | |-- patches - | | | |-- add-in-kernel-suspend-to-both.patch.gz - | | | |-- fix-wrong-path-in-intel-audio-powersave.patch.gz - | | | |-- hook-exit-code-log.patch.gz - | | | |-- init-logfile-append.patch.gz - | | | |-- log-line-spacing-fix.patch.gz - | | | `-- use_more_sane_harddrive_defaults.patch.gz - | | |-- pm-quirks-20100619.tar.gz - | | |-- pm-utils-1.4.1.tar.gz - | | |-- pm-utils.SlackBuild - | | |-- pm-utils.url - | | `-- slack-desc - | |-- powertop - | | |-- powertop-2.8.tar.xz - | | |-- powertop.SlackBuild - | | `-- slack-desc - | |-- qpdf - | | |-- qpdf-6.0.0.tar.xz - | | |-- qpdf.SlackBuild - | | |-- qpdf.url - | | `-- slack-desc - | |-- radeontool - | | |-- radeontool-1.6.3.tar.xz - | | |-- radeontool.SlackBuild - | | `-- slack-desc - | |-- rpm - | | |-- Packages.gz - | | |-- doinst.sh.gz - | | |-- rpm-4.12.0.1.tar.xz - | | |-- rpm.SlackBuild - | | `-- slack-desc - | |-- rzip - | | |-- rzip-2.1.tar.gz - | | |-- rzip.SlackBuild - | | `-- slack-desc - | |-- sc - | | |-- _sc.tar.gz - | | |-- sc-7.16-3.diff.gz - | | |-- sc-7.16.lsm - | | |-- sc-7.16.tar.gz - | | |-- sc.SlackBuild - | | `-- slack-desc - | |-- screen - | | |-- 26source_encoding.patch.gz - | | |-- 45suppress_remap.patch.gz - | | |-- 52fix_screen_utf8_nfd.patch.gz - | | |-- 58-show-encoding-hardstatus.patch.gz - | | |-- screen-4.4.0.tar.xz - | | |-- screen.SlackBuild - | | |-- screen.no_libelf.diff.gz - | | `-- slack-desc - | |-- seejpeg - | | |-- _seejpeg.tar.gz - | | |-- libjpeg-6a.tar.gz - | | |-- seejpeg-1.10.diff.gz - | | |-- seejpeg-1.10.lsm - | | |-- seejpeg-1.10.tgz - | | |-- seejpeg.SlackBuild - | | `-- slack-desc - | |-- slackpkg - | | |-- doinst.sh.gz - | | |-- files - | | | |-- ChangeLog.gz - | | | |-- GPL.gz - | | | |-- README.gz - | | | |-- blacklist.new.gz - | | | |-- core-functions.sh.gz - | | | |-- cutpkg.awk.gz - | | | |-- dialog-functions.sh.gz - | | | |-- filelist.awk.gz - | | | |-- install-new.awk.gz - | | | |-- mirrors-arm.sample.gz - | | | |-- mirrors-s390.sample.gz - | | | |-- mirrors-x86.sample.gz - | | | |-- mirrors-x86_64.sample.gz - | | | |-- pkglist.awk.gz - | | | |-- post-functions.sh.gz - | | | |-- slackpkg.8.gz - | | | |-- slackpkg.conf.5.gz - | | | |-- slackpkg.conf.new.gz - | | | `-- slackpkg.gz - | | |-- manpages-l10n.tar.xz - | | |-- slack-desc - | | `-- slackpkg.SlackBuild - | |-- soma - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- soma-2.10.4.tar.gz - | | |-- soma.SlackBuild - | | |-- soma.info - | | |-- soma.png - | | `-- stations.conf - | |-- sox - | | |-- slack-desc - | | |-- sox-14.4.2.tar.xz - | | `-- sox.SlackBuild - | |-- sqlite - | | |-- COPYRIGHT.gz - | | |-- slack-desc - | | |-- sqlite-src-3130000.tar.xz - | | `-- sqlite.SlackBuild - | |-- squashfs-tools - | | |-- slack-desc - | | |-- squashfs-tools.SlackBuild - | | `-- squashfs4.3.tar.gz - | |-- sudo - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- sudo-1.8.16.tar.xz - | | `-- sudo.SlackBuild - | |-- sysstat - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- sysstat-11.2.1.1.tar.xz - | | `-- sysstat.SlackBuild - | |-- terminus-font - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- terminus-font-4.40.tar.xz - | | |-- terminus-font.Makefile.paths.diff.gz - | | `-- terminus-font.SlackBuild - | |-- texinfo - | | |-- dir.gz - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- texinfo-6.1.tar.xz - | | |-- texinfo-6.1.tar.xz.sig - | | `-- texinfo.SlackBuild - | |-- tmux - | | |-- slack-desc - | | |-- tmux-2.1.tar.xz - | | `-- tmux.SlackBuild - | |-- usbmuxd - | | |-- 39-usbmuxd.rules.gz - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- usbmuxd-1.1.0.tar.xz - | | `-- usbmuxd.SlackBuild - | |-- vbetool - | | |-- slack-desc - | | |-- vbetool-1.2.2.tar.gz - | | |-- vbetool.SlackBuild - | | `-- vbetool.info - | |-- vim - | | |-- ctags-5.8.tar.xz - | | |-- doinst.sh.gz - | | |-- gvim.desktop - | | |-- gvim.png - | | |-- slack-desc.vim - | | |-- slack-desc.vim-gvim - | | |-- vim-7.4.1938.tar.xz - | | |-- vim-gvim.SlackBuild - | | |-- vim.SlackBuild - | | `-- vim.vimrc.diff.gz - | |-- vorbis-tools - | | |-- slack-desc - | | |-- vorbis-tools-1.4.0.tar.xz - | | `-- vorbis-tools.SlackBuild - | |-- workbone - | | |-- slack-desc - | | |-- workbone.1.diff.gz - | | |-- workbone.SlackBuild - | | |-- workbone_2.40-9.diff.gz - | | `-- workbone_2.40.orig.tar.gz - | |-- xfsdump - | | |-- slack-desc - | | |-- xfsdump-3.1.6.tar.gz - | | |-- xfsdump-3.1.6.tar.gz.sig - | | `-- xfsdump.SlackBuild - | `-- zsh - | |-- doinst.sh.gz - | |-- slack-desc - | |-- zsh-5.2-doc.tar.xz - | |-- zsh-5.2-doc.tar.xz.asc - | |-- zsh-5.2.tar.xz - | |-- zsh-5.2.tar.xz.asc - | `-- zsh.SlackBuild - |-- d - | |-- Cython - | | |-- Cython-0.23.4.tar.xz - | | |-- Cython.SlackBuild - | | |-- Cython.url - | | `-- slack-desc - | |-- autoconf - | | |-- autoconf-2.69.tar.xz - | | |-- autoconf-2.69.tar.xz.sig - | | |-- autoconf.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- automake - | | |-- automake-1.15-perl-escape-curly-bracket.patch.gz - | | |-- automake-1.15.tar.xz - | | |-- automake.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- binutils - | | |-- binutils-2.26.tar.xz - | | |-- binutils.SlackBuild - | | |-- patches - | | | |-- binutils-2.20.51.0.10-copy-osabi.patch.gz - | | | |-- binutils-2.20.51.0.10-ppc64-pie.patch.gz - | | | |-- binutils-2.20.51.0.10-sec-merge-emit.patch.gz - | | | |-- binutils-2.20.51.0.2-libtool-lib64.patch.gz - | | | |-- binutils-2.22.52.0.1-relro-on-by-default.patch.gz - | | | |-- binutils-2.23.52.0.1-addr2line-dynsymtab.patch.gz - | | | |-- binutils-2.24-ldforcele.patch.gz - | | | |-- binutils-2.25-set-long-long.patch.gz - | | | |-- binutils-2.25-version.patch.gz - | | | |-- binutils-2.25.1-cleansweep.patch.gz - | | | |-- binutils-2.26-Bsymbolic_PIE.patch.gz - | | | |-- binutils-2.26-fix-GOT-offset-calculation.patch.gz - | | | |-- binutils-2.26-fix-compile-warnings.patch.gz - | | | |-- binutils-2.26-formatting.patch.gz - | | | |-- binutils-2.26-lto.patch.gz - | | | |-- binutils-rh1312151.patch.gz - | | | |-- binutils.export.demangle.h.diff.gz - | | | `-- binutils.no-config-h-check.diff.gz - | | `-- slack-desc - | |-- bison - | | |-- bison-3.0.4.tar.xz - | | |-- bison-3.0.4.tar.xz.sig - | | |-- bison.SlackBuild - | | `-- slack-desc - | |-- ccache - | | |-- ccache-3.2.4.tar.xz - | | |-- ccache-3.2.4.tar.xz.asc - | | |-- ccache.SlackBuild - | | `-- slack-desc - | |-- clisp - | | |-- clisp-2.49.tar.xz - | | |-- clisp.SlackBuild - | | |-- ffcall-20120424cvs.tar.xz - | | |-- ffcall-arm.patch.gz - | | |-- slack-desc - | | `-- source.download - | |-- cmake - | | |-- cmake-3.5.2.tar.xz - | | |-- cmake.SlackBuild - | | |-- cmake.manpages.tar.xz - | | `-- slack-desc - | |-- cscope - | | |-- cscope-15.8b.tar.xz - | | |-- cscope.SlackBuild - | | `-- slack-desc - | |-- cvs - | | |-- cvs-1.11.23.tar.bz2 - | | |-- cvs-1.11.23.tar.bz2.sig - | | |-- cvs.SlackBuild - | | |-- cvs.crypt-2.diff.gz - | | |-- cvs.getline64.diff.gz - | | `-- slack-desc - | |-- dev86 - | | |-- Dev86src-0.16.21.tar.xz - | | |-- dev86.SlackBuild - | | `-- slack-desc - | |-- distcc - | | |-- distcc-3.1.tar.xz - | | |-- distcc.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- doxygen - | | |-- doxygen-1.8.9.1.src.tar.xz - | | |-- doxygen.SlackBuild - | | `-- slack-desc - | |-- flex - | | |-- flex-2.6.0.tar.xz - | | |-- flex.SlackBuild - | | `-- slack-desc - | |-- gcc - | | |-- antlr-runtime-3.4.jar - | | |-- c89.sh - | | |-- c99.sh - | | |-- create_gcj_jvm.sh - | | |-- ecj-4.9.jar - | | |-- ecj.sh - | | |-- ecj.url - | | |-- fastjar-0.97.tar.xz - | | |-- fastjar-patches - | | | |-- 1000-fastjar-0.97-segfault.patch.gz - | | | |-- 1001-fastjar-0.97-len1.patch.gz - | | | |-- 1002-fastjar-0.97-filename0.patch.gz - | | | |-- 1003-fastjar-CVE-2010-0831.patch.gz - | | | `-- 1004-fastjar-man.patch.gz - | | |-- gcc-5.3.0.tar.xz - | | |-- gcc-no_fixincludes.diff.gz - | | |-- gcc.66782.diff.gz - | | |-- gcc.69140.diff.gz - | | |-- gcc.SlackBuild - | | |-- slack-desc.gcc - | | |-- slack-desc.gcc-g++ - | | |-- slack-desc.gcc-gfortran - | | |-- slack-desc.gcc-gnat - | | |-- slack-desc.gcc-go - | | |-- slack-desc.gcc-java - | | `-- slack-desc.gcc-objc - | |-- gdb - | | |-- gdb-7.11.1.tar.xz - | | |-- gdb-7.11.1.tar.xz.sig - | | |-- gdb.SlackBuild - | | `-- slack-desc - | |-- gettext-tools -> ../a/gettext - | |-- git - | | |-- git-2.9.0.tar.sign - | | |-- git-2.9.0.tar.xz - | | |-- git.SlackBuild - | | |-- git.url - | | `-- slack-desc - | |-- gnu-cobol - | | |-- gnu-cobol-1.1.tar.xz - | | |-- gnu-cobol.SlackBuild - | | `-- slack-desc - | |-- gperf - | | |-- gperf-3.0.4.tar.xz - | | |-- gperf.SlackBuild - | | `-- slack-desc - | |-- guile - | | |-- guile-2.0.11.tar.xz - | | |-- guile-2.0.11.tar.xz.sig - | | |-- guile.SlackBuild - | | `-- slack-desc - | |-- help2man - | | |-- help2man-1.46.5.tar.xz - | | |-- help2man-1.46.5.tar.xz.sig - | | |-- help2man.SlackBuild - | | `-- slack-desc - | |-- indent - | | |-- indent-2.2.10.tar.bz2 - | | |-- indent.SlackBuild - | | `-- slack-desc - | |-- intltool - | | |-- intltool-0.51.0-perl-5.22.patch.gz - | | |-- intltool-0.51.0.tar.xz - | | |-- intltool.SlackBuild - | | `-- slack-desc - | |-- kernel-headers - | | `-- slack-desc - | |-- libtool - | | |-- doinst.sh.gz - | | |-- libtool-2.4.6.tar.xz - | | |-- libtool-2.4.6.tar.xz.sig - | | |-- libtool.SlackBuild - | | |-- libtool.no.moved.warning.diff.gz - | | `-- slack-desc - | |-- llvm - | | |-- cfe-3.8.0.src.tar.xz - | | |-- cfe-3.8.0.src.tar.xz.sig - | | |-- clang-tools-extra-3.8.0.src.tar.xz - | | |-- clang-tools-extra-3.8.0.src.tar.xz.sig - | | |-- clang.toolchains.i586.triple.diff.gz - | | |-- compiler-rt-3.8.0.src.tar.xz - | | |-- compiler-rt-3.8.0.src.tar.xz.sig - | | |-- llvm-3.8.0.src.tar.xz - | | |-- llvm-3.8.0.src.tar.xz.sig - | | |-- llvm.SlackBuild - | | |-- llvm.url - | | `-- slack-desc - | |-- m4 - | | |-- m4-1.4.17.tar.xz - | | |-- m4-1.4.17.tar.xz.sig - | | |-- m4.SlackBuild - | | `-- slack-desc - | |-- make - | | |-- make-4.1.tar.bz2 - | | |-- make-4.1.tar.bz2.sig - | | |-- make.SlackBuild - | | `-- slack-desc - | |-- mercurial - | | |-- doinst.sh.gz - | | |-- mercurial-3.8.2.tar.xz - | | |-- mercurial.SlackBuild - | | `-- slack-desc - | |-- nasm - | | |-- nasm-2.12.01.tar.xz - | | |-- nasm.SlackBuild - | | `-- slack-desc - | |-- oprofile - | | |-- oprofile-1.1.0.tar.xz - | | |-- oprofile.SlackBuild - | | `-- slack-desc - | |-- p2c - | | |-- _p2c.tar.gz - | | |-- p2c-1.21alpha2.tar.gz - | | |-- p2c.SlackBuild - | | |-- p2c.examples.diff.gz - | | |-- p2c_1.21alpha2-2.1.diff.gz - | | |-- p2c_time.diff.gz - | | `-- slack-desc - | |-- perl - | | |-- DBD-mysql-4.033.tar.gz - | | |-- DBI-1.636.tar.gz - | | |-- TermReadKey-2.33.tar.gz - | | |-- URI-1.71.tar.gz - | | |-- XML-Parser-2.44.tar.gz - | | |-- XML-Simple-2.22.tar.gz - | | |-- gettext-1.07.tar.gz - | | |-- perl-5.22.2.tar.xz - | | |-- perl.SlackBuild - | | |-- perl.configure.multilib.patch.gz - | | `-- slack-desc - | |-- pkg-config - | | |-- doinst.sh.gz - | | |-- pkg-config-0.29.1.tar.xz - | | |-- pkg-config.SlackBuild - | | |-- scripts - | | | |-- pkgconfig.csh - | | | `-- pkgconfig.sh - | | `-- slack-desc - | |-- pmake - | | |-- pmake-1.111.tar.gz - | | |-- pmake.SlackBuild - | | |-- pmake.strerror.strdup.diff.gz - | | |-- pmake.txt.gz - | | |-- pmake_1.111-1.diff.gz - | | `-- slack-desc - | |-- python - | | |-- Python-2.7.11.tar.xz - | | |-- Python-2.7.11.tar.xz.asc - | | |-- python-2.7.11-docs-text.tar.bz2 - | | |-- python.SlackBuild - | | |-- python.no-static-library.diff.gz - | | |-- python.readline.set_pre_input_hook.diff.gz - | | |-- python.x86_64.diff.gz - | | `-- slack-desc - | |-- python-setuptools - | | |-- python-setuptools.SlackBuild - | | |-- setuptools-22.0.5.tar.xz - | | `-- slack-desc - | |-- rcs - | | |-- rcs-5.9.4.tar.xz - | | |-- rcs-5.9.4.tar.xz.sig - | | |-- rcs.SlackBuild - | | `-- slack-desc - | |-- ruby - | | |-- ruby-2.2.5.tar.xz - | | |-- ruby.SlackBuild - | | `-- slack-desc - | |-- scons - | | |-- scons-2.4.1.tar.xz - | | |-- scons.SlackBuild - | | `-- slack-desc - | |-- slacktrack - | | |-- OVERVIEW - | | |-- slacktrack-2.17-source.tar.xz - | | `-- slacktrack.SlackBuild - | |-- strace - | | |-- slack-desc - | | |-- strace-4.11.tar.xz - | | |-- strace-4.11.tar.xz.asc - | | `-- strace.SlackBuild - | |-- subversion - | | |-- get-svn-book.sh - | | |-- slack-desc - | | |-- subversion-1.9.4.tar.xz - | | |-- subversion.SlackBuild - | | `-- svn-book-html.tar.bz2 - | |-- swig - | | |-- slack-desc - | | |-- swig-3.0.7.tar.xz - | | |-- swig.SlackBuild - | | `-- swig.url - | `-- yasm - | |-- slack-desc - | |-- yasm-1.3.0.tar.xz - | `-- yasm.SlackBuild - |-- e - | `-- emacs - | |-- doinst.sh.gz - | |-- emacs-24.5.tar.xz - | |-- emacs-24.5.tar.xz.sig - | |-- emacs.SlackBuild - | `-- slack-desc - |-- f - | |-- slack-desc.linux-faqs - | `-- slack-desc.linux-howtos - |-- installer - | |-- busybox-1.19.4.tar.bz2 - | |-- busybox-1.19.4.tar.bz2.sign - | |-- busybox-dot-config - | |-- busybox.2.6.32.2.diff.gz - | |-- busybox.SlackBuild - | |-- busybox.fix.perms.64bit.platforms.diff.gz - | |-- busybox.glibc217.diff.gz - | |-- busybox.wget.P.diff.gz - | |-- dhcpcd - | | |-- config.h.diff.gz - | | |-- dhcpcd-3.2.3.tar.bz2 - | | `-- dhcpcd.sh.diff.gz - | |-- dropbear - | | |-- doinst.sh - | | |-- dropbear-2012.55.tar.bz2 - | | |-- dropbear.Slackbuild - | | |-- dropbear.glibc.crypt.diff - | | |-- dropbear.xauth.patch - | | |-- dropbear_dbclientpath.patch - | | |-- dropbear_emptypass.patch - | | |-- rc.dropbear.new - | | `-- slack-desc - | `-- memtest86+-5.01.tar.xz - |-- k - | |-- README.TXT - | |-- config-x86 - | | |-- config-generic-4.4.14 - | | |-- config-generic-smp-4.4.14-smp - | | |-- config-huge-4.4.14 - | | `-- config-huge-smp-4.4.14-smp - | |-- config-x86_64 - | | |-- config-generic-4.4.14.x64 - | | `-- config-huge-4.4.14.x64 - | |-- linux-4.4.14.ecryptfs.regression.diff - | |-- linux-4.4.14.tar.sign - | |-- linux-4.4.14.tar.xz - | |-- packaging-x86 - | | |-- kernel-generic - | | | |-- kernel-generic.SlackBuild - | | | `-- slack-desc - | | |-- kernel-generic-smp - | | | |-- kernel-generic-smp.SlackBuild - | | | `-- slack-desc - | | |-- kernel-huge - | | | |-- kernel-huge.SlackBuild - | | | `-- slack-desc - | | |-- kernel-huge-smp - | | | |-- kernel-huge-smp.SlackBuild - | | | `-- slack-desc - | | |-- kernel-modules - | | | |-- kernel-modules.SlackBuild - | | | `-- slack-desc - | | `-- kernel-modules-smp - | | |-- kernel-modules-smp.SlackBuild - | | `-- slack-desc - | `-- packaging-x86_64 - | |-- kernel-generic - | | |-- kernel-generic.SlackBuild - | | `-- slack-desc - | |-- kernel-huge - | | |-- kernel-huge.SlackBuild - | | `-- slack-desc - | `-- kernel-modules - | |-- kernel-modules.SlackBuild - | `-- slack-desc - |-- kde - | |-- KDE.SlackBuild - | |-- KDE.options - | |-- build - | | |-- amarok - | | |-- amor - | | |-- analitza - | | |-- ark - | | |-- artikulate - | | |-- audiocd-kio - | | |-- baloo - | | |-- baloo-widgets - | | |-- blinken - | | |-- bluedevil - | | |-- bomber - | | |-- bovo - | | |-- calligra - | | |-- cantor - | | |-- cervisia - | | |-- dolphin-plugins - | | |-- dragon - | | |-- filelight - | | |-- granatier - | | |-- gwenview - | | |-- increment.sh - | | |-- juk - | | |-- k3b - | | |-- kaccessible - | | |-- kactivities - | | |-- kajongg - | | |-- kalgebra - | | |-- kalzium - | | |-- kamera - | | |-- kanagram - | | |-- kapman - | | |-- kapptemplate - | | |-- kate - | | |-- katomic - | | |-- kaudiocreator - | | |-- kblackbox - | | |-- kblocks - | | |-- kbounce - | | |-- kbreakout - | | |-- kbruch - | | |-- kcachegrind - | | |-- kcalc - | | |-- kcharselect - | | |-- kcolorchooser - | | |-- kcron - | | |-- kde-base-artwork - | | |-- kde-baseapps - | | |-- kde-dev-scripts - | | |-- kde-dev-utils - | | |-- kde-runtime - | | |-- kde-workspace - | | |-- kdeartwork - | | |-- kdeconnect-kde - | | |-- kdegraphics-mobipocket - | | |-- kdegraphics-strigi-analyzer - | | |-- kdegraphics-thumbnailers - | | |-- kdenetwork-filesharing - | | |-- kdenetwork-strigi-analyzers - | | |-- kdepimlibs - | | |-- kdeplasma-addons - | | |-- kdesdk-kioslaves - | | |-- kdesdk-strigi-analyzers - | | |-- kdesdk-thumbnailers - | | |-- kdevelop-pg-qt - | | |-- kdewebdev - | | |-- kdf - | | |-- kdiamond - | | |-- kfilemetadata - | | |-- kfloppy - | | |-- kfourinline - | | |-- kgamma - | | |-- kgeography - | | |-- kget - | | |-- kgoldrunner - | | |-- kgpg - | | |-- khangman - | | |-- kig - | | |-- kigo - | | |-- killbots - | | |-- kio-mtp - | | |-- kiriki - | | |-- kiten - | | |-- kjumpingcube - | | |-- klettres - | | |-- klickety - | | |-- klines - | | |-- kmag - | | |-- kmahjongg - | | |-- kmines - | | |-- kmix - | | |-- kmousetool - | | |-- kmouth - | | |-- kmplot - | | |-- knavalbattle - | | |-- knetwalk - | | |-- kolf - | | |-- kollision - | | |-- kolourpaint - | | |-- kompare - | | |-- konquest - | | |-- konsole - | | |-- kopete - | | |-- korundum - | | |-- kpat - | | |-- kplayer - | | |-- kppp - | | |-- kqtquickcharts - | | |-- krdc - | | |-- kremotecontrol - | | |-- kreversi - | | |-- krfb - | | |-- kross-interpreters - | | |-- kruler - | | |-- ksaneplugin - | | |-- kscreen - | | |-- kshisen - | | |-- ksirk - | | |-- ksnakeduel - | | |-- ksnapshot - | | |-- kspaceduel - | | |-- ksquares - | | |-- kstars - | | |-- ksudoku - | | |-- ksystemlog - | | |-- kteatime - | | |-- ktimer - | | |-- ktorrent - | | |-- ktouch - | | |-- ktuberling - | | |-- kturtle - | | |-- ktux - | | |-- kubrick - | | |-- kuser - | | |-- kwalletmanager - | | |-- kwebkitpart - | | |-- kwordquiz - | | |-- libkcddb - | | |-- libkcompactdisc - | | |-- libkdcraw - | | |-- libkdeedu - | | |-- libkdegames - | | |-- libkexiv2 - | | |-- libkipi - | | |-- libkmahjongg - | | |-- libkomparediff2 - | | |-- libksane - | | |-- libkscreen - | | |-- libktorrent - | | |-- libmm-qt - | | |-- libnm-qt - | | |-- lokalize - | | |-- lskat - | | |-- marble - | | |-- mplayerthumbs - | | |-- nepomuk-core - | | |-- nepomuk-widgets - | | |-- okteta - | | |-- okular - | | |-- oxygen-gtk2 - | | |-- oxygen-icons - | | |-- pairs - | | |-- palapeli - | | |-- parley - | | |-- partitionmanager - | | |-- perlkde - | | |-- perlqt - | | |-- picmi - | | |-- polkit-kde-agent-1 - | | |-- polkit-kde-kcmodules-1 - | | |-- poxml - | | |-- print-manager - | | |-- pykde4 - | | |-- qtruby - | | |-- rocs - | | |-- skanlite - | | |-- smokegen - | | |-- smokekde - | | |-- smokeqt - | | |-- step - | | |-- superkaramba - | | |-- svgpart - | | |-- sweeper - | | |-- umbrello - | | |-- wicd-kde - | | `-- zeroconf-ioslave - | |-- cmake - | | |-- amarok - | | |-- analitza - | | |-- bluedevil - | | |-- calligra - | | |-- cmake - | | |-- k3b - | | |-- kajongg - | | |-- kde-runtime - | | |-- kdeaccessibility - | | |-- kdeadmin - | | |-- kdeartwork - | | |-- kdebase - | | |-- kdebindings - | | |-- kdelibs - | | |-- kdenetwork - | | |-- kdewebdev - | | |-- kross-interpreters - | | |-- kwebkitpart - | | |-- networkmanagement - | | |-- partitionmanager - | | |-- perlkde - | | |-- perlqt - | | |-- polkit-kde-agent-1 - | | `-- polkit-kde-kcmodules-1 - | |-- docs - | | |-- k3b - | | `-- kdepimlibs - | |-- doinst.sh - | | |-- amarok - | | |-- blinken - | | |-- bluedevil - | | |-- cantor - | | |-- gwenview - | | |-- jovie - | | |-- k3b - | | |-- kalgebra - | | |-- kalzium - | | |-- kamera - | | |-- kanagram - | | |-- kate - | | |-- kaudiocreator - | | |-- kbruch - | | |-- kcalc - | | |-- kcolorchooser - | | |-- kde-applications - | | |-- kde-baseapps - | | |-- kde-runtime - | | |-- kde-workspace - | | |-- kdeaccessibility - | | |-- kdeadmin - | | |-- kdeartwork - | | |-- kdebase - | | |-- kdeedu - | | |-- kdegames - | | |-- kdegraphics - | | |-- kdelibs - | | |-- kdemultimedia - | | |-- kdenetwork - | | |-- kdepim - | | |-- kdepim-runtime - | | |-- kdeplasma-addons - | | |-- kdesdk - | | |-- kdetoys - | | |-- kdeutils - | | |-- kdevelop - | | |-- kdevplatform - | | |-- kdewebdev - | | |-- kdf - | | |-- kgamma - | | |-- kgeography - | | |-- khangman - | | |-- kig - | | |-- kiten - | | |-- klettres - | | |-- kmag - | | |-- kmousetool - | | |-- kmouth - | | |-- kmplot - | | |-- koffice - | | |-- kolourpaint - | | |-- konsole - | | |-- kopete-cryptography - | | |-- kruler - | | |-- ksaneplugin - | | |-- ksnapshot - | | |-- kstars - | | |-- ktorrent - | | |-- ktouch - | | |-- kturtle - | | |-- kwordquiz - | | |-- marble - | | |-- okular - | | |-- parley - | | |-- rocs - | | |-- skanlite - | | |-- step - | | `-- wicd-kde - | |-- makepkg - | |-- modularize - | |-- modules - | | |-- extragear - | | |-- kdeaccessibility - | | |-- kdeadmin - | | |-- kdeartwork - | | |-- kdebase - | | |-- kdebindings - | | |-- kdeedu - | | |-- kdegames - | | |-- kdegraphics - | | |-- kdelibs - | | |-- kdemultimedia - | | |-- kdenetwork - | | |-- kdepim - | | |-- kdepimlibs - | | |-- kdeplasma-addons - | | |-- kdesdk - | | |-- kdetoys - | | |-- kdeutils - | | |-- kdewebdev - | | |-- oxygen-icons - | | `-- polkit-kde - | |-- noarch - | |-- package-blacklist - | |-- patch - | | |-- README - | | |-- kde-runtime - | | | `-- kde-runtime-4.14.3.nm.diff.gz - | | |-- kde-runtime.patch - | | |-- kde-workspace - | | | |-- kde-workspace.batteryapplet.diff.gz - | | | |-- kde-workspace.kdm.server.timeout.diff.gz - | | | `-- kde-workspace.panel-layout.diff.gz - | | |-- kde-workspace.patch - | | |-- kdeconnect-kde - | | | `-- kdeconnect-kde.openssh7.diff.gz - | | |-- kdeconnect-kde.patch - | | |-- kdelibs - | | | |-- coding-style-fixes.patch.gz - | | | |-- kdelibs.docbook.patch.gz - | | | |-- kdelibs.upnp_conditional.patch.gz - | | | |-- return-application-icons-properly.patch.gz - | | | `-- return-not-break.-copy-paste-error.patch.gz - | | |-- kdelibs.patch - | | |-- kdepim - | | | `-- kdepim-install_kleopatra_headers.patch.gz - | | |-- kdepim.patch - | | |-- kdevelop-pg-qt - | | | `-- 0011-fix-some-warnings.patch.gz - | | |-- kdevelop-pg-qt.patch - | | |-- kdewebdev - | | | `-- include-tidy.patch.gz - | | |-- kdewebdev.patch - | | |-- krdc - | | | `-- krdc_freerdp-1.1.0.patch.gz - | | |-- krdc.patch - | | |-- kscreen - | | | `-- kscreen.broken.test.diff.gz - | | |-- kscreen.patch - | | |-- ktouch - | | | `-- ktouch.performance.diff.gz - | | |-- ktouch.patch - | | |-- libkscreen - | | | `-- libkscreen.broken.test.diff.gz - | | |-- libkscreen.patch - | | |-- plasma-nm - | | | `-- plasma-nm.nm.diff.gz - | | |-- plasma-nm.patch - | | |-- strigi-multimedia - | | | `-- strigi-multimedia_port.patch.gz - | | `-- strigi-multimedia.patch - | |-- post-install - | | |-- baloo.post-install - | | |-- k3b.post-install - | | |-- kde-baseapps - | | | `-- profile.d - | | | |-- kde.csh - | | | `-- kde.sh - | | |-- kde-baseapps.post-install - | | |-- kde-runtime.post-install - | | |-- kde-workspace - | | | |-- config - | | | | |-- Xsession - | | | | `-- Xsession.orig - | | | `-- xinit - | | | `-- xinitrc.kde - | | |-- kde-workspace.post-install - | | |-- kdelibs.post-install - | | |-- kdepim.post-install - | | |-- konsole.post-install - | | |-- kwalletmanager.post-install - | | |-- nepomuk-core.post-install - | | `-- wicd-kde.post-install - | |-- pre-install - | | |-- README - | | |-- amarok.pre-install - | | |-- kdeconnect-kde.pre-install - | | |-- kdewebdev - | | | `-- tidy - | | | |-- get-tidy-cvs.sh - | | | |-- tidy-20100503T2309.tar.xz - | | | |-- tidy.SlackBuild - | | | `-- tidy.build - | | `-- kdewebdev.pre-install - | |-- slack-desc - | | |-- amarok - | | |-- amor - | | |-- analitza - | | |-- ark - | | |-- artikulate - | | |-- audiocd-kio - | | |-- baloo - | | |-- baloo-widgets - | | |-- blinken - | | |-- bluedevil - | | |-- bomber - | | |-- bovo - | | |-- calligra - | | |-- cantor - | | |-- cervisia - | | |-- digikam - | | |-- dolphin-plugins - | | |-- dragon - | | |-- ffmpegthumbs - | | |-- filelight - | | |-- granatier - | | |-- gwenview - | | |-- jovie - | | |-- juk - | | |-- k3b - | | |-- kaccessible - | | |-- kactivities - | | |-- kajongg - | | |-- kalgebra - | | |-- kalzium - | | |-- kamera - | | |-- kanagram - | | |-- kapman - | | |-- kapptemplate - | | |-- kate - | | |-- katomic - | | |-- kaudiocreator - | | |-- kblackbox - | | |-- kblocks - | | |-- kbounce - | | |-- kbreakout - | | |-- kbruch - | | |-- kcachegrind - | | |-- kcalc - | | |-- kcharselect - | | |-- kcolorchooser - | | |-- kcron - | | |-- kde-base - | | |-- kde-base-artwork - | | |-- kde-baseapps - | | |-- kde-bindings - | | |-- kde-dev-scripts - | | |-- kde-dev-utils - | | |-- kde-educational - | | |-- kde-runtime - | | |-- kde-wallpapers - | | |-- kde-workspace - | | |-- kdeaccessibility - | | |-- kdeadmin - | | |-- kdeartwork - | | |-- kdebase - | | |-- kdebase-runtime - | | |-- kdebase-workspace - | | |-- kdebindings - | | |-- kdeconnect-kde - | | |-- kdeedu - | | |-- kdegames - | | |-- kdegraphics - | | |-- kdegraphics-mobipocket - | | |-- kdegraphics-strigi-analyzer - | | |-- kdegraphics-thumbnailers - | | |-- kdelibs - | | |-- kdemultimedia - | | |-- kdenetwork - | | |-- kdenetwork-filesharing - | | |-- kdenetwork-strigi-analyzers - | | |-- kdepim - | | |-- kdepim-runtime - | | |-- kdepimlibs - | | |-- kdeplasma-addons - | | |-- kdesdk - | | |-- kdesdk-kioslaves - | | |-- kdesdk-strigi-analyzers - | | |-- kdesdk-thumbnailers - | | |-- kdetoys - | | |-- kdeutils - | | |-- kdev-python - | | |-- kdevelop - | | |-- kdevelop-pg-qt - | | |-- kdevelop-php - | | |-- kdevelop-php-docs - | | |-- kdevplatform - | | |-- kdewebdev - | | |-- kdf - | | |-- kdiamond - | | |-- kdnssd - | | |-- kfilemetadata - | | |-- kfloppy - | | |-- kfourinline - | | |-- kgamma - | | |-- kgeography - | | |-- kget - | | |-- kgoldrunner - | | |-- kgpg - | | |-- khangman - | | |-- kig - | | |-- kigo - | | |-- killbots - | | |-- kimono - | | |-- kio-mtp - | | |-- kipi-plugins - | | |-- kiriki - | | |-- kiten - | | |-- kjumpingcube - | | |-- klettres - | | |-- klickety - | | |-- klines - | | |-- kmag - | | |-- kmahjongg - | | |-- kmines - | | |-- kmix - | | |-- kmousetool - | | |-- kmouth - | | |-- kmplot - | | |-- knavalbattle - | | |-- knetwalk - | | |-- koffice - | | |-- kolf - | | |-- kollision - | | |-- kolourpaint - | | |-- kompare - | | |-- konquest - | | |-- konsole - | | |-- kopete - | | |-- kopete-cryptography - | | |-- korundum - | | |-- kpat - | | |-- kplayer - | | |-- kppp - | | |-- kqtquickcharts - | | |-- krdc - | | |-- kremotecontrol - | | |-- kreversi - | | |-- krfb - | | |-- kross-interpreters - | | |-- kruler - | | |-- ksaneplugin - | | |-- kscd - | | |-- kscreen - | | |-- ksecrets - | | |-- kshisen - | | |-- ksirk - | | |-- ksnakeduel - | | |-- ksnapshot - | | |-- kspaceduel - | | |-- ksquares - | | |-- kstars - | | |-- ksudoku - | | |-- ksystemlog - | | |-- kteatime - | | |-- ktimer - | | |-- ktorrent - | | |-- ktouch - | | |-- ktuberling - | | |-- kturtle - | | |-- ktux - | | |-- kubrick - | | |-- kuser - | | |-- kwallet - | | |-- kwalletmanager - | | |-- kwebkitpart - | | |-- kwordquiz - | | |-- libkcddb - | | |-- libkcompactdisc - | | |-- libkdcraw - | | |-- libkdeedu - | | |-- libkdegames - | | |-- libkexiv2 - | | |-- libkipi - | | |-- libkmahjongg - | | |-- libkomparediff2 - | | |-- libksane - | | |-- libkscreen - | | |-- libktorrent - | | |-- libmm-qt - | | |-- libnm-qt - | | |-- lokalize - | | |-- lskat - | | |-- marble - | | |-- mplayerthumbs - | | |-- nepomuk-core - | | |-- nepomuk-widgets - | | |-- networkmanagement - | | |-- okteta - | | |-- okular - | | |-- oxygen-gtk2 - | | |-- oxygen-gtk3 - | | |-- oxygen-icons - | | |-- pairs - | | |-- palapeli - | | |-- parley - | | |-- partitionmanager - | | |-- perlkde - | | |-- perlqt - | | |-- picmi - | | |-- plasma-nm - | | |-- polkit-kde-agent-1 - | | |-- polkit-kde-kcmodules-1 - | | |-- polkit-qt-1 - | | |-- poxml - | | |-- print-manager - | | |-- printer-applet - | | |-- prison - | | |-- pykde4 - | | |-- qtruby - | | |-- quanta - | | |-- qyoto - | | |-- rocs - | | |-- skanlite - | | |-- smokegen - | | |-- smokekde - | | |-- smokeqt - | | |-- step - | | |-- strigi - | | |-- strigi-multimedia - | | |-- superkaramba - | | |-- svgpart - | | |-- sweeper - | | |-- umbrello - | | |-- wicd-kde - | | `-- zeroconf-ioslave - | `-- src - | |-- amor-4.14.3.tar.xz - | |-- analitza-4.14.3.tar.xz - | |-- ark-4.14.3.tar.xz - | |-- artikulate-4.14.3.tar.xz - | |-- audiocd-kio-4.14.3.tar.xz - | |-- baloo-4.14.3.tar.xz - | |-- baloo-widgets-4.14.3.tar.xz - | |-- blinken-4.14.3.tar.xz - | |-- bomber-4.14.3.tar.xz - | |-- bovo-4.14.3.tar.xz - | |-- cantor-4.14.3.tar.xz - | |-- cervisia-4.14.3.tar.xz - | |-- dolphin-plugins-4.14.3.tar.xz - | |-- dragon-4.14.3.tar.xz - | |-- extragear - | | |-- amarok-2.8.0.tar.xz - | | |-- bluedevil-2.1.1.tar.xz - | | |-- calligra-2.9.11.tar.xz - | | |-- k3b-2.0.3.tar.xz - | | |-- kaudiocreator-1.3.tar.xz - | | |-- kdeconnect-kde-0.8.tar.xz - | | |-- kdev-python-1.7.2.tar.xz - | | |-- kdevelop-4.7.2.tar.xz - | | |-- kdevelop-pg-qt-1.0.0.tar.xz - | | |-- kdevelop-php-1.7.2.tar.xz - | | |-- kdevelop-php-docs-1.7.2.tar.xz - | | |-- kdevplatform-1.7.2.tar.xz - | | |-- kio-mtp-2063e75_20131020git.tar.xz - | | |-- kplayer-0.7.2.tar.xz - | | |-- kscreen-1.0.2.1.tar.xz - | | |-- ktorrent-4.3.1.tar.xz - | | |-- kwebkitpart-1.3.4.tar.xz - | | |-- libkscreen-1.0.5.tar.xz - | | |-- libktorrent-1.3.1.tar.xz - | | |-- libmm-qt-1.0.1.tar.xz - | | |-- libnm-qt-0.9.8.3.tar.xz - | | |-- oxygen-gtk2-1.4.6.tar.xz - | | |-- partitionmanager-1.1.1.tar.xz - | | |-- plasma-nm-0.9.3.6.tar.xz - | | |-- polkit-kde-agent-1-9d74ae3_20120104git.tar.xz - | | |-- polkit-kde-kcmodules-1-001bdf7_20120111git.tar.xz - | | |-- skanlite-1.1.tar.xz - | | `-- wicd-kde-0.3.0_bcf27d8.tar.xz - | |-- ffmpegthumbs-4.14.3.tar.xz - | |-- filelight-4.14.3.tar.xz - | |-- granatier-4.14.3.tar.xz - | |-- gwenview-4.14.3.tar.xz - | |-- jovie-4.14.3.tar.xz - | |-- juk-4.14.3.tar.xz - | |-- kaccessible-4.14.3.tar.xz - | |-- kactivities-4.13.3.tar.xz - | |-- kajongg-4.14.3.tar.xz - | |-- kalgebra-4.14.3.tar.xz - | |-- kalzium-4.14.3.tar.xz - | |-- kamera-4.14.3.tar.xz - | |-- kanagram-4.14.3.tar.xz - | |-- kapman-4.14.3.tar.xz - | |-- kapptemplate-4.14.3.tar.xz - | |-- kate-4.14.3.tar.xz - | |-- katomic-4.14.3.tar.xz - | |-- kblackbox-4.14.3.tar.xz - | |-- kblocks-4.14.3.tar.xz - | |-- kbounce-4.14.3.tar.xz - | |-- kbreakout-4.14.3.tar.xz - | |-- kbruch-4.14.3.tar.xz - | |-- kcachegrind-4.14.3.tar.xz - | |-- kcalc-4.14.3.tar.xz - | |-- kcharselect-4.14.3.tar.xz - | |-- kcolorchooser-4.14.3.tar.xz - | |-- kcron-4.14.3.tar.xz - | |-- kde-base-artwork-4.14.3.tar.xz - | |-- kde-baseapps-4.14.3.tar.xz - | |-- kde-dev-scripts-4.14.3.tar.xz - | |-- kde-dev-utils-4.14.3.tar.xz - | |-- kde-runtime-4.14.3.tar.xz - | |-- kde-wallpapers-4.14.3.tar.xz - | |-- kde-workspace-4.11.22.tar.xz - | |-- kdeartwork-4.14.3.tar.xz - | |-- kdegraphics-mobipocket-4.14.3.tar.xz - | |-- kdegraphics-strigi-analyzer-4.14.3.tar.xz - | |-- kdegraphics-thumbnailers-4.14.3.tar.xz - | |-- kdelibs-4.14.21.tar.xz - | |-- kdenetwork-filesharing-4.14.3.tar.xz - | |-- kdenetwork-strigi-analyzers-4.14.3.tar.xz - | |-- kdepim-4.14.10.tar.xz - | |-- kdepim-runtime-4.14.10.tar.xz - | |-- kdepimlibs-4.14.10.tar.xz - | |-- kdeplasma-addons-4.14.3.tar.xz - | |-- kdesdk-kioslaves-4.14.3.tar.xz - | |-- kdesdk-strigi-analyzers-4.14.3.tar.xz - | |-- kdesdk-thumbnailers-4.14.3.tar.xz - | |-- kdewebdev-4.14.3.tar.xz - | |-- kdf-4.14.3.tar.xz - | |-- kdiamond-4.14.3.tar.xz - | |-- kfilemetadata-4.14.3.tar.xz - | |-- kfloppy-4.14.3.tar.xz - | |-- kfourinline-4.14.3.tar.xz - | |-- kgamma-4.14.3.tar.xz - | |-- kgeography-4.14.3.tar.xz - | |-- kget-4.14.3.tar.xz - | |-- kgoldrunner-4.14.3.tar.xz - | |-- kgpg-4.14.3.tar.xz - | |-- khangman-4.14.3.tar.xz - | |-- kig-4.14.3.tar.xz - | |-- kigo-4.14.3.tar.xz - | |-- killbots-4.14.3.tar.xz - | |-- kimono-4.14.3.tar.xz - | |-- kiriki-4.14.3.tar.xz - | |-- kiten-4.14.3.tar.xz - | |-- kjumpingcube-4.14.3.tar.xz - | |-- klettres-4.14.3.tar.xz - | |-- klickety-4.14.3.tar.xz - | |-- klines-4.14.3.tar.xz - | |-- kmag-4.14.3.tar.xz - | |-- kmahjongg-4.14.3.tar.xz - | |-- kmines-4.14.3.tar.xz - | |-- kmix-4.14.3.tar.xz - | |-- kmousetool-4.14.3.tar.xz - | |-- kmouth-4.14.3.tar.xz - | |-- kmplot-4.14.3.tar.xz - | |-- knavalbattle-4.14.3.tar.xz - | |-- knetwalk-4.14.3.tar.xz - | |-- kolf-4.14.3.tar.xz - | |-- kollision-4.14.3.tar.xz - | |-- kolourpaint-4.14.3.tar.xz - | |-- kompare-4.14.3.tar.xz - | |-- konquest-4.14.3.tar.xz - | |-- konsole-4.14.3.tar.xz - | |-- kopete-4.14.3.tar.xz - | |-- korundum-4.14.3.tar.xz - | |-- kpat-4.14.3.tar.xz - | |-- kppp-4.14.3.tar.xz - | |-- kqtquickcharts-4.14.3.tar.xz - | |-- krdc-4.14.3.tar.xz - | |-- kremotecontrol-4.14.3.tar.xz - | |-- kreversi-4.14.3.tar.xz - | |-- krfb-4.14.3.tar.xz - | |-- kross-interpreters-4.14.3.tar.xz - | |-- kruler-4.14.3.tar.xz - | |-- ksaneplugin-4.14.3.tar.xz - | |-- kscd-4.14.3.tar.xz - | |-- kshisen-4.14.3.tar.xz - | |-- ksirk-4.14.3.tar.xz - | |-- ksnakeduel-4.14.3.tar.xz - | |-- ksnapshot-4.14.3.tar.xz - | |-- kspaceduel-4.14.3.tar.xz - | |-- ksquares-4.14.3.tar.xz - | |-- kstars-4.14.3.tar.xz - | |-- ksudoku-4.14.3.tar.xz - | |-- ksystemlog-4.14.3.tar.xz - | |-- kteatime-4.14.3.tar.xz - | |-- ktimer-4.14.3.tar.xz - | |-- ktouch-4.14.3.tar.xz - | |-- ktuberling-4.14.3.tar.xz - | |-- kturtle-4.14.3.tar.xz - | |-- ktux-4.14.3.tar.xz - | |-- kubrick-4.14.3.tar.xz - | |-- kuser-4.14.3.tar.xz - | |-- kwalletmanager-4.14.3.tar.xz - | |-- kwordquiz-4.14.3.tar.xz - | |-- libkcddb-4.14.3.tar.xz - | |-- libkcompactdisc-4.14.3.tar.xz - | |-- libkdcraw-4.14.3.tar.xz - | |-- libkdeedu-4.14.3.tar.xz - | |-- libkdegames-4.14.3.tar.xz - | |-- libkexiv2-4.14.3.tar.xz - | |-- libkipi-4.14.3.tar.xz - | |-- libkmahjongg-4.14.3.tar.xz - | |-- libkomparediff2-4.14.3.tar.xz - | |-- libksane-4.14.3.tar.xz - | |-- lokalize-4.14.3.tar.xz - | |-- lskat-4.14.3.tar.xz - | |-- marble-4.14.3.tar.xz - | |-- mplayerthumbs-4.14.3.tar.xz - | |-- nepomuk-core-4.14.3.tar.xz - | |-- nepomuk-widgets-4.14.3.tar.xz - | |-- okteta-4.14.3.tar.xz - | |-- okular-4.14.3.tar.xz - | |-- oxygen-icons-4.14.3.tar.xz - | |-- pairs-4.14.3.tar.xz - | |-- palapeli-4.14.3.tar.xz - | |-- parley-4.14.3.tar.xz - | |-- perlkde-4.14.3.tar.xz - | |-- perlqt-4.14.3.tar.xz - | |-- picmi-4.14.3.tar.xz - | |-- poxml-4.14.3.tar.xz - | |-- print-manager-4.14.3.tar.xz - | |-- pykde4-4.14.3.tar.xz - | |-- qtruby-4.14.3.tar.xz - | |-- qyoto-4.14.3.tar.xz - | |-- rocs-4.14.3.tar.xz - | |-- smokegen-4.14.3.tar.xz - | |-- smokekde-4.14.3.tar.xz - | |-- smokeqt-4.14.3.tar.xz - | |-- step-4.14.3.tar.xz - | |-- superkaramba-4.14.3.tar.xz - | |-- svgpart-4.14.3.tar.xz - | |-- sweeper-4.14.3.tar.xz - | |-- umbrello-4.14.3.tar.xz - | `-- zeroconf-ioslave-4.14.3.tar.xz - |-- kdei - | |-- calligra-l10n - | | |-- calligra-l10n-bs-2.9.11.tar.xz - | | |-- calligra-l10n-ca-2.9.11.tar.xz - | | |-- calligra-l10n-ca@valencia-2.9.11.tar.xz - | | |-- calligra-l10n-cs-2.9.11.tar.xz - | | |-- calligra-l10n-da-2.9.11.tar.xz - | | |-- calligra-l10n-de-2.9.11.tar.xz - | | |-- calligra-l10n-el-2.9.11.tar.xz - | | |-- calligra-l10n-en_GB-2.9.11.tar.xz - | | |-- calligra-l10n-es-2.9.11.tar.xz - | | |-- calligra-l10n-et-2.9.11.tar.xz - | | |-- calligra-l10n-fi-2.9.11.tar.xz - | | |-- calligra-l10n-fr-2.9.11.tar.xz - | | |-- calligra-l10n-gl-2.9.11.tar.xz - | | |-- calligra-l10n-hu-2.9.11.tar.xz - | | |-- calligra-l10n-it-2.9.11.tar.xz - | | |-- calligra-l10n-ja-2.9.11.tar.xz - | | |-- calligra-l10n-kk-2.9.11.tar.xz - | | |-- calligra-l10n-nb-2.9.11.tar.xz - | | |-- calligra-l10n-nl-2.9.11.tar.xz - | | |-- calligra-l10n-pl-2.9.11.tar.xz - | | |-- calligra-l10n-pt-2.9.11.tar.xz - | | |-- calligra-l10n-pt_BR-2.9.11.tar.xz - | | |-- calligra-l10n-ru-2.9.11.tar.xz - | | |-- calligra-l10n-sk-2.9.11.tar.xz - | | |-- calligra-l10n-sv-2.9.11.tar.xz - | | |-- calligra-l10n-tr-2.9.11.tar.xz - | | |-- calligra-l10n-uk-2.9.11.tar.xz - | | |-- calligra-l10n-zh_CN-2.9.11.tar.xz - | | |-- calligra-l10n-zh_TW-2.9.11.tar.xz - | | |-- calligra-l10n.SlackBuild - | | |-- languages - | | `-- slack-desc - | | |-- slack-desc.calligra-l10n-af - | | |-- slack-desc.calligra-l10n-ar - | | |-- slack-desc.calligra-l10n-az - | | |-- slack-desc.calligra-l10n-bg - | | |-- slack-desc.calligra-l10n-br - | | |-- slack-desc.calligra-l10n-bs - | | |-- slack-desc.calligra-l10n-ca - | | |-- slack-desc.calligra-l10n-ca@valencia - | | |-- slack-desc.calligra-l10n-cs - | | |-- slack-desc.calligra-l10n-cy - | | |-- slack-desc.calligra-l10n-da - | | |-- slack-desc.calligra-l10n-de - | | |-- slack-desc.calligra-l10n-el - | | |-- slack-desc.calligra-l10n-en_GB - | | |-- slack-desc.calligra-l10n-eo - | | |-- slack-desc.calligra-l10n-es - | | |-- slack-desc.calligra-l10n-et - | | |-- slack-desc.calligra-l10n-eu - | | |-- slack-desc.calligra-l10n-fa - | | |-- slack-desc.calligra-l10n-fi - | | |-- slack-desc.calligra-l10n-fr - | | |-- slack-desc.calligra-l10n-fy - | | |-- slack-desc.calligra-l10n-ga - | | |-- slack-desc.calligra-l10n-gl - | | |-- slack-desc.calligra-l10n-he - | | |-- slack-desc.calligra-l10n-hi - | | |-- slack-desc.calligra-l10n-hne - | | |-- slack-desc.calligra-l10n-hsb - | | |-- slack-desc.calligra-l10n-hu - | | |-- slack-desc.calligra-l10n-ia - | | |-- slack-desc.calligra-l10n-is - | | |-- slack-desc.calligra-l10n-it - | | |-- slack-desc.calligra-l10n-ja - | | |-- slack-desc.calligra-l10n-kk - | | |-- slack-desc.calligra-l10n-km - | | |-- slack-desc.calligra-l10n-lo - | | |-- slack-desc.calligra-l10n-lt - | | |-- slack-desc.calligra-l10n-lv - | | |-- slack-desc.calligra-l10n-mk - | | |-- slack-desc.calligra-l10n-ms - | | |-- slack-desc.calligra-l10n-mt - | | |-- slack-desc.calligra-l10n-nb - | | |-- slack-desc.calligra-l10n-nds - | | |-- slack-desc.calligra-l10n-ne - | | |-- slack-desc.calligra-l10n-nl - | | |-- slack-desc.calligra-l10n-nn - | | |-- slack-desc.calligra-l10n-no - | | |-- slack-desc.calligra-l10n-no_NY - | | |-- slack-desc.calligra-l10n-pl - | | |-- slack-desc.calligra-l10n-pt - | | |-- slack-desc.calligra-l10n-pt_BR - | | |-- slack-desc.calligra-l10n-ro - | | |-- slack-desc.calligra-l10n-ru - | | |-- slack-desc.calligra-l10n-se - | | |-- slack-desc.calligra-l10n-sk - | | |-- slack-desc.calligra-l10n-sl - | | |-- slack-desc.calligra-l10n-sr - | | |-- slack-desc.calligra-l10n-sr@Latn - | | |-- slack-desc.calligra-l10n-sv - | | |-- slack-desc.calligra-l10n-ta - | | |-- slack-desc.calligra-l10n-tg - | | |-- slack-desc.calligra-l10n-th - | | |-- slack-desc.calligra-l10n-tr - | | |-- slack-desc.calligra-l10n-uk - | | |-- slack-desc.calligra-l10n-uz - | | |-- slack-desc.calligra-l10n-ven - | | |-- slack-desc.calligra-l10n-wa - | | |-- slack-desc.calligra-l10n-xh - | | |-- slack-desc.calligra-l10n-zh_CN - | | |-- slack-desc.calligra-l10n-zh_TW - | | `-- slack-desc.calligra-l10n-zu - | `-- kde-l10n - | |-- kde-l10n-ar-4.14.3.tar.xz - | |-- kde-l10n-bg-4.14.3.tar.xz - | |-- kde-l10n-bs-4.14.3.tar.xz - | |-- kde-l10n-ca-4.14.3.tar.xz - | |-- kde-l10n-ca@valencia-4.14.3.tar.xz - | |-- kde-l10n-cs-4.14.3.tar.xz - | |-- kde-l10n-da-4.14.3.tar.xz - | |-- kde-l10n-de-4.14.3.tar.xz - | |-- kde-l10n-el-4.14.3.tar.xz - | |-- kde-l10n-en_GB-4.14.3.tar.xz - | |-- kde-l10n-es-4.14.3.tar.xz - | |-- kde-l10n-et-4.14.3.tar.xz - | |-- kde-l10n-eu-4.14.3.tar.xz - | |-- kde-l10n-fa-4.14.3.tar.xz - | |-- kde-l10n-fi-4.14.3.tar.xz - | |-- kde-l10n-fr-4.14.3.tar.xz - | |-- kde-l10n-ga-4.14.3.tar.xz - | |-- kde-l10n-gl-4.14.3.tar.xz - | |-- kde-l10n-he-4.14.3.tar.xz - | |-- kde-l10n-hi-4.14.3.tar.xz - | |-- kde-l10n-hr-4.14.3.tar.xz - | |-- kde-l10n-hu-4.14.3.tar.xz - | |-- kde-l10n-ia-4.14.3.tar.xz - | |-- kde-l10n-id-4.14.3.tar.xz - | |-- kde-l10n-is-4.14.3.tar.xz - | |-- kde-l10n-it-4.14.3.tar.xz - | |-- kde-l10n-ja-4.14.3.tar.xz - | |-- kde-l10n-kk-4.14.3.tar.xz - | |-- kde-l10n-km-4.14.3.tar.xz - | |-- kde-l10n-ko-4.14.3.tar.xz - | |-- kde-l10n-lt-4.14.3.tar.xz - | |-- kde-l10n-lv-4.14.3.tar.xz - | |-- kde-l10n-mr-4.14.3.tar.xz - | |-- kde-l10n-nb-4.14.3.tar.xz - | |-- kde-l10n-nds-4.14.3.tar.xz - | |-- kde-l10n-nl-4.14.3.tar.xz - | |-- kde-l10n-nn-4.14.3.tar.xz - | |-- kde-l10n-pa-4.14.3.tar.xz - | |-- kde-l10n-pl-4.14.3.tar.xz - | |-- kde-l10n-pt-4.14.3.tar.xz - | |-- kde-l10n-pt_BR-4.14.3.tar.xz - | |-- kde-l10n-ro-4.14.3.tar.xz - | |-- kde-l10n-ru-4.14.3.tar.xz - | |-- kde-l10n-sk-4.14.3.tar.xz - | |-- kde-l10n-sl-4.14.3.tar.xz - | |-- kde-l10n-sr-4.14.3.tar.xz - | |-- kde-l10n-sv-4.14.3.tar.xz - | |-- kde-l10n-tr-4.14.3.tar.xz - | |-- kde-l10n-ug-4.14.3.tar.xz - | |-- kde-l10n-uk-4.14.3.tar.xz - | |-- kde-l10n-wa-4.14.3.tar.xz - | |-- kde-l10n-zh_CN-4.14.3.tar.xz - | |-- kde-l10n-zh_TW-4.14.3.tar.xz - | |-- kde-l10n.SlackBuild - | |-- kdepim-l10n - | | |-- extract-kdepim-goodness.sh - | | `-- kdepim-l10n-fr-4.4.5.korganizer.docbook.reorganize.diff.gz.defunct - | |-- languages - | |-- local.options - | `-- slack-desc - | |-- slack-desc.kde-l10n-ar - | |-- slack-desc.kde-l10n-bg - | |-- slack-desc.kde-l10n-bn_IN - | |-- slack-desc.kde-l10n-bs - | |-- slack-desc.kde-l10n-ca - | |-- slack-desc.kde-l10n-ca@valencia - | |-- slack-desc.kde-l10n-cs - | |-- slack-desc.kde-l10n-csb - | |-- slack-desc.kde-l10n-da - | |-- slack-desc.kde-l10n-de - | |-- slack-desc.kde-l10n-el - | |-- slack-desc.kde-l10n-en_GB - | |-- slack-desc.kde-l10n-eo - | |-- slack-desc.kde-l10n-es - | |-- slack-desc.kde-l10n-et - | |-- slack-desc.kde-l10n-eu - | |-- slack-desc.kde-l10n-fa - | |-- slack-desc.kde-l10n-fi - | |-- slack-desc.kde-l10n-fr - | |-- slack-desc.kde-l10n-fy - | |-- slack-desc.kde-l10n-ga - | |-- slack-desc.kde-l10n-gl - | |-- slack-desc.kde-l10n-gu - | |-- slack-desc.kde-l10n-he - | |-- slack-desc.kde-l10n-hi - | |-- slack-desc.kde-l10n-hne - | |-- slack-desc.kde-l10n-hr - | |-- slack-desc.kde-l10n-hu - | |-- slack-desc.kde-l10n-ia - | |-- slack-desc.kde-l10n-id - | |-- slack-desc.kde-l10n-is - | |-- slack-desc.kde-l10n-it - | |-- slack-desc.kde-l10n-ja - | |-- slack-desc.kde-l10n-kk - | |-- slack-desc.kde-l10n-km - | |-- slack-desc.kde-l10n-kn - | |-- slack-desc.kde-l10n-ko - | |-- slack-desc.kde-l10n-ku - | |-- slack-desc.kde-l10n-lt - | |-- slack-desc.kde-l10n-lv - | |-- slack-desc.kde-l10n-mai - | |-- slack-desc.kde-l10n-mk - | |-- slack-desc.kde-l10n-ml - | |-- slack-desc.kde-l10n-mr - | |-- slack-desc.kde-l10n-nb - | |-- slack-desc.kde-l10n-nds - | |-- slack-desc.kde-l10n-nl - | |-- slack-desc.kde-l10n-nn - | |-- slack-desc.kde-l10n-pa - | |-- slack-desc.kde-l10n-pl - | |-- slack-desc.kde-l10n-pt - | |-- slack-desc.kde-l10n-pt_BR - | |-- slack-desc.kde-l10n-ro - | |-- slack-desc.kde-l10n-ru - | |-- slack-desc.kde-l10n-si - | |-- slack-desc.kde-l10n-sk - | |-- slack-desc.kde-l10n-sl - | |-- slack-desc.kde-l10n-sr - | |-- slack-desc.kde-l10n-sv - | |-- slack-desc.kde-l10n-ta - | |-- slack-desc.kde-l10n-tg - | |-- slack-desc.kde-l10n-th - | |-- slack-desc.kde-l10n-tr - | |-- slack-desc.kde-l10n-ug - | |-- slack-desc.kde-l10n-uk - | |-- slack-desc.kde-l10n-vi - | |-- slack-desc.kde-l10n-wa - | |-- slack-desc.kde-l10n-zh_CN - | `-- slack-desc.kde-l10n-zh_TW - |-- l - | |-- ConsoleKit2 - | | |-- ConsoleKit2-1.0.0.tar.xz - | | |-- ConsoleKit2.SlackBuild - | | |-- doinst.sh.gz - | | |-- patches - | | | |-- 0001-Revert-Minor-code-refactoring.patch.gz - | | | |-- 0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch.gz - | | | |-- 0003-Filter-out-the-kdm-user.patch.gz - | | | `-- 0004-Apply-overlooked-prefix-lib-libdir-substitution.patch.gz - | | |-- rc.consolekit - | | `-- slack-desc - | |-- GConf - | | |-- GConf-3.2.6.tar.xz - | | |-- GConf.SlackBuild - | | |-- doinst.sh.gz - | | |-- patches - | | | |-- 0001-mconvert-enable-recursive-scheme-lookup-and-fix-a-cr.patch.gz - | | | |-- 0002-dbus-Don-t-spew-to-console-when-unable-to-connect-to.patch.gz - | | | |-- 0003-gsettings-data-convert-Warn-and-fix-invalid-schema-p.patch.gz - | | | `-- 0011-Fix-some-compiler-warnings.patch - | | `-- slack-desc - | |-- LibRaw - | | |-- LibRaw-0.17.2.tar.xz - | | |-- LibRaw-demosaic-pack-GPL2-0.17.2.tar.xz - | | |-- LibRaw-demosaic-pack-GPL3-0.17.2.tar.xz - | | |-- LibRaw.SlackBuild - | | `-- slack-desc - | |-- M2Crypto - | | |-- M2Crypto-0.23.0.tar.xz - | | |-- M2Crypto.SlackBuild - | | `-- slack-desc - | |-- PyQt - | | |-- PyQt-x11-gpl-4.11.4.tar.xz - | | |-- PyQt.SlackBuild - | | |-- PyQt.phonon.diff.gz - | | `-- slack-desc - | |-- QScintilla - | | |-- QScintilla-gpl-2.9.1.tar.xz - | | |-- QScintilla.SlackBuild - | | `-- slack-desc - | |-- a52dec - | | |-- a52dec-0.7.4.tar.xz - | | |-- a52dec.SlackBuild - | | `-- slack-desc - | |-- aalib - | | |-- aalib-1.4rc5.tar.gz - | | |-- aalib-aclocal.patch.gz - | | |-- aalib.SlackBuild - | | |-- slack-desc - | | `-- slack-desc.11line - | |-- adwaita-icon-theme - | | |-- adwaita-icon-theme-3.18.0.tar.xz - | | |-- adwaita-icon-theme.SlackBuild - | | |-- adwaita-xfce-icons-0.6.tar.xz - | | |-- doinst.sh.gz - | | |-- inherit-hicolor-theme.diff.gz - | | `-- slack-desc - | |-- akonadi - | | |-- akonadi-1.13.0.tar.bz2 - | | |-- akonadi.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- alsa-lib - | | |-- alsa-lib-1.1.1.tar.xz - | | |-- alsa-lib.SlackBuild - | | |-- alsa-lib.fdba9e1bad8f769a6137e565471f0227f23a3132.diff.gz - | | |-- asound.conf - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- alsa-oss - | | |-- alsa-oss-1.0.28.tar.xz - | | |-- alsa-oss.SlackBuild - | | `-- slack-desc - | |-- alsa-plugins - | | |-- alsa-plugins-1.1.1.tar.xz - | | |-- alsa-plugins.SlackBuild - | | `-- slack-desc - | |-- apr - | | |-- apr-1.5.2.tar.bz2 - | | |-- apr-1.5.2.tar.bz2.asc - | | |-- apr.SlackBuild - | | |-- apr.url - | | `-- slack-desc - | |-- apr-util - | | |-- apr-util-1.5.4.tar.bz2 - | | |-- apr-util-1.5.4.tar.bz2.asc - | | |-- apr-util.SlackBuild - | | |-- apr-util.url - | | `-- slack-desc - | |-- aspell - | | |-- aspell-0.60.6.1.tar.xz - | | |-- aspell.SlackBuild - | | `-- slack-desc - | |-- aspell-dict - | | |-- aspell-dict.SlackBuild - | | |-- build - | | | |-- aspell-af - | | | |-- aspell-br - | | | |-- aspell-cy - | | | |-- aspell-el - | | | |-- aspell-fr - | | | |-- aspell-gv - | | | |-- aspell-hr - | | | |-- aspell-ia - | | | |-- aspell-is - | | | |-- aspell-mi - | | | |-- aspell-mk - | | | |-- aspell-ms - | | | |-- aspell-mt - | | | |-- aspell-nb - | | | |-- aspell-nl - | | | |-- aspell-nn - | | | |-- aspell-no - | | | |-- aspell-pt - | | | |-- aspell-rw - | | | |-- aspell-sl - | | | |-- aspell-sv - | | | |-- aspell-sw - | | | |-- aspell-tr - | | | |-- aspell-wa - | | | |-- aspell-zu - | | | |-- aspell5-be - | | | |-- aspell5-da - | | | |-- aspell5-fo - | | | |-- aspell5-gd - | | | |-- aspell5-hil - | | | |-- aspell5-id - | | | |-- aspell5-mg - | | | |-- aspell5-ny - | | | |-- aspell5-sc - | | | |-- aspell5-tet - | | | |-- aspell5-tl - | | | |-- aspell5-tn - | | | |-- aspell6-am - | | | |-- aspell6-az - | | | |-- aspell6-bn - | | | |-- aspell6-ca - | | | |-- aspell6-cs - | | | |-- aspell6-csb - | | | |-- aspell6-de - | | | |-- aspell6-et - | | | |-- aspell6-fi - | | | |-- aspell6-he - | | | |-- aspell6-hu - | | | |-- aspell6-it - | | | |-- aspell6-la - | | | |-- aspell6-lv - | | | |-- aspell6-mr - | | | |-- aspell6-nds - | | | |-- aspell6-or - | | | |-- aspell6-pa - | | | |-- aspell6-qu - | | | |-- aspell6-ru - | | | |-- aspell6-sr - | | | |-- aspell6-ta - | | | |-- aspell6-te - | | | |-- aspell6-vi - | | | |-- aspell6-yi - | | | |-- increment-all-dict.sh - | | | `-- increment.sh - | | `-- src - | | |-- aspell-af-0.50-0.tar.bz2 - | | |-- aspell-br-0.50-2.tar.bz2 - | | |-- aspell-cy-0.50-3.tar.bz2 - | | |-- aspell-el-0.50-3.tar.bz2 - | | |-- aspell-fr-0.50-3.tar.bz2 - | | |-- aspell-gv-0.50-0.tar.bz2 - | | |-- aspell-hr-0.51-0.tar.bz2 - | | |-- aspell-ia-0.50-1.tar.bz2 - | | |-- aspell-is-0.51.1-0.tar.bz2 - | | |-- aspell-mi-0.50-0.tar.bz2 - | | |-- aspell-mk-0.50-0.tar.bz2 - | | |-- aspell-ms-0.50-0.tar.bz2 - | | |-- aspell-mt-0.50-0.tar.bz2 - | | |-- aspell-nb-0.50.1-0.tar.bz2 - | | |-- aspell-nl-0.50-2.tar.bz2 - | | |-- aspell-nn-0.50.1-1.tar.bz2 - | | |-- aspell-no-0.50-2.tar.bz2 - | | |-- aspell-pt-0.50-2.tar.bz2 - | | |-- aspell-rw-0.50-0.tar.bz2 - | | |-- aspell-sl-0.50-0.tar.bz2 - | | |-- aspell-sv-0.51-0.tar.bz2 - | | |-- aspell-sw-0.50-0.tar.bz2 - | | |-- aspell-tr-0.50-0.tar.bz2 - | | |-- aspell-wa-0.50-0.tar.bz2 - | | |-- aspell-zu-0.50-0.tar.bz2 - | | |-- aspell5-be-0.01.tar.bz2 - | | |-- aspell5-da-1.4.42-1.tar.bz2 - | | |-- aspell5-fo-0.2.16-1.tar.bz2 - | | |-- aspell5-ga-4.5-0.tar.bz2 - | | |-- aspell5-gd-0.1.1-1.tar.bz2 - | | |-- aspell5-hil-0.11-0.tar.bz2 - | | |-- aspell5-id-1.2-0.tar.bz2 - | | |-- aspell5-ku-0.20-1.tar.bz2 - | | |-- aspell5-mg-0.03-0.tar.bz2 - | | |-- aspell5-ny-0.01-0.tar.bz2 - | | |-- aspell5-ro-3.3-2.tar.bz2 - | | |-- aspell5-sc-1.0.tar.bz2 - | | |-- aspell5-tet-0.1.1.tar.bz2 - | | |-- aspell5-tl-0.02-1.tar.bz2 - | | |-- aspell5-tn-1.0.1-0.tar.bz2 - | | |-- aspell6-am-0.03-1.tar.bz2 - | | |-- aspell6-az-0.02-0.tar.bz2 - | | |-- aspell6-bg-4.1-0.tar.bz2 - | | |-- aspell6-bn-0.01.1-1.tar.bz2 - | | |-- aspell6-ca-20040130-1.tar.bz2 - | | |-- aspell6-cs-20040614-1.tar.bz2 - | | |-- aspell6-csb-0.02-0.tar.bz2 - | | |-- aspell6-de-20030222-1.tar.bz2 - | | |-- aspell6-en-7.1-0.tar.bz2 - | | |-- aspell6-eo-2.1.20000225a-2.tar.bz2 - | | |-- aspell6-es-1.11-2.tar.bz2 - | | |-- aspell6-et-0.1.21-1.tar.bz2 - | | |-- aspell6-fa-0.11-0.tar.bz2 - | | |-- aspell6-fi-0.7-0.tar.bz2 - | | |-- aspell6-gl-0.5a-2.tar.bz2 - | | |-- aspell6-gu-0.03-0.tar.bz2 - | | |-- aspell6-he-1.0-0.tar.bz2 - | | |-- aspell6-hi-0.02-0.tar.bz2 - | | |-- aspell6-hsb-0.02-0.tar.bz2 - | | |-- aspell6-hu-0.99.4.2-0.tar.bz2 - | | |-- aspell6-it-2.2_20050523-0.tar.bz2 - | | |-- aspell6-la-20020503-0.tar.bz2 - | | |-- aspell6-lt-1.2.1-0.tar.bz2 - | | |-- aspell6-lv-0.5.5-1.tar.bz2 - | | |-- aspell6-mn-0.06-2.tar.bz2 - | | |-- aspell6-mr-0.10-0.tar.bz2 - | | |-- aspell6-nds-0.01-0.tar.bz2 - | | |-- aspell6-or-0.03-1.tar.bz2 - | | |-- aspell6-pa-0.01-1.tar.bz2 - | | |-- aspell6-pl-6.0_20061121-0.tar.bz2 - | | |-- aspell6-pt_BR-20090702-0.tar.bz2 - | | |-- aspell6-qu-0.02-0.tar.bz2 - | | |-- aspell6-ru-0.99f7-1.tar.bz2 - | | |-- aspell6-sk-2.01-2.tar.bz2 - | | |-- aspell6-sr-0.02.tar.bz2 - | | |-- aspell6-ta-20040424-1.tar.bz2 - | | |-- aspell6-te-0.01-2.tar.bz2 - | | |-- aspell6-uk-1.4.0-0.tar.bz2 - | | |-- aspell6-uz-0.6-0.tar.bz2 - | | |-- aspell6-vi-0.01.1-1.tar.bz2 - | | `-- aspell6-yi-0.01.1-1.tar.bz2 - | |-- at-spi2-atk - | | |-- at-spi2-atk-2.18.1.tar.xz - | | |-- at-spi2-atk.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- at-spi2-core - | | |-- at-spi2-core-2.18.3.tar.xz - | | |-- at-spi2-core.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- atk - | | |-- atk-2.18.0.tar.xz - | | |-- atk.SlackBuild - | | `-- slack-desc - | |-- atkmm - | | |-- atkmm-2.24.2.tar.xz - | | |-- atkmm.SlackBuild - | | `-- slack-desc - | |-- attica - | | |-- attica-0.4.2.tar.bz2 - | | |-- attica.SlackBuild - | | `-- slack-desc - | |-- audiofile - | | |-- audiofile-0.3.6.tar.xz - | | |-- audiofile.SlackBuild - | | `-- slack-desc - | |-- automoc4 - | | |-- automoc4-0.9.88.tar.bz2 - | | |-- automoc4.SlackBuild - | | `-- slack-desc - | |-- babl - | | |-- babl-0.1.14.tar.xz - | | |-- babl.SlackBuild - | | `-- slack-desc - | |-- boost - | | |-- boost.SlackBuild - | | |-- boost_1_59_0.tar.xz - | | `-- slack-desc - | |-- cairo - | | |-- cairo-1.14.6.tar.xz - | | |-- cairo.SlackBuild - | | |-- cairo.c088ba1faab9579efdaed7a524124901a17801b0.diff.gz - | | |-- paredown.sh - | | `-- slack-desc - | |-- cairomm - | | |-- cairomm-1.12.0.tar.xz - | | |-- cairomm.SlackBuild - | | `-- slack-desc - | |-- chmlib - | | |-- chmlib-0.40.tar.bz2 - | | |-- chmlib.SlackBuild - | | |-- chmlib.info - | | `-- slack-desc - | |-- clucene - | | |-- clucene-src-2.3.3.4.tar.xz - | | |-- clucene.SlackBuild - | | |-- clucene.install_contribs_lib.diff.gz - | | |-- clucene.pkgconfig.diff.gz - | | `-- slack-desc - | |-- db42 - | | |-- db-4.2.52.tar.bz2 - | | |-- db42.SlackBuild - | | |-- patch.4.2.52.1.gz - | | |-- patch.4.2.52.2.gz - | | |-- patch.4.2.52.3.gz - | | |-- patch.4.2.52.4.gz - | | `-- slack-desc - | |-- db44 - | | |-- db-4.4.20.tar.bz2 - | | |-- db44.SlackBuild - | | |-- patch.4.4.20.1.gz - | | |-- patch.4.4.20.2.gz - | | `-- slack-desc - | |-- db48 - | | |-- db-4.8.30.tar.xz - | | |-- db48.SlackBuild - | | `-- slack-desc - | |-- dbus-glib - | | |-- dbus-glib-0.106.tar.xz - | | |-- dbus-glib.SlackBuild - | | `-- slack-desc - | |-- dbus-python - | | |-- dbus-python-1.2.4.tar.xz - | | |-- dbus-python.SlackBuild - | | `-- slack-desc - | |-- dconf - | | |-- dconf-0.24.0.tar.xz - | | |-- dconf.SlackBuild - | | |-- dconf.url - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- dconf-editor - | | |-- dconf-editor-3.18.2.tar.xz - | | |-- dconf-editor.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- desktop-file-utils - | | |-- desktop-file-utils-0.22.tar.xz - | | |-- desktop-file-utils.SlackBuild - | | |-- desktop-file-utils.quiet.warnings.diff.gz - | | |-- doinst.sh.gz - | | |-- gitpatches - | | | |-- 0001-desktop-file-validate-Trailing-semicolons-have-been-.patch - | | | |-- 0002-Add-Cinnamon-to-list-of-registered-environments.patch - | | | `-- 0003-Add-EDE-to-the-list-of-desktop-environments.patch - | | `-- slack-desc - | |-- djvulibre - | | |-- djvulibre-3.5.27.tar.xz - | | |-- djvulibre.SlackBuild - | | |-- djvulibre.info - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- ebook-tools - | | |-- ebook-tools-0.2.2.tar.xz - | | |-- ebook-tools.SlackBuild - | | |-- epub3_fixed_layout.patch.gz - | | `-- slack-desc - | |-- eigen2 - | | |-- eigen2-2.0.17.tar.xz - | | |-- eigen2.SlackBuild - | | `-- slack-desc - | |-- eigen3 - | | |-- eigen-3.2.7.tar.xz - | | |-- eigen3.SlackBuild - | | `-- slack-desc - | |-- elfutils - | | |-- elfutils-0.163-unstrip-shf_info_link.patch.gz - | | |-- elfutils-0.163.tar.xz - | | |-- elfutils-portability-0.163.patch.gz - | | |-- elfutils.SlackBuild - | | `-- slack-desc - | |-- enchant - | | |-- enchant-1.6.0.tar.xz - | | |-- enchant.SlackBuild - | | `-- slack-desc - | |-- esound - | | |-- doinst.sh.gz - | | |-- esound-0.2.41.tar.bz2 - | | |-- esound.SlackBuild - | | `-- slack-desc - | |-- exiv2 - | | |-- exiv2-0.25.tar.xz - | | |-- exiv2.SlackBuild - | | `-- slack-desc - | |-- expat - | | |-- expat-2.1.0.tar.xz - | | |-- expat.SlackBuild - | | `-- slack-desc - | |-- fftw - | | |-- fftw-3.3.4.tar.xz - | | |-- fftw.SlackBuild - | | `-- slack-desc - | |-- freetype - | | |-- freetype-2.6.3.tar.xz - | | |-- freetype.SlackBuild - | | |-- freetype.illadvisederror.diff.gz - | | |-- freetype.subpixel.rendering.diff.gz - | | `-- slack-desc - | |-- fribidi - | | |-- fribidi-0.19.7.tar.xz - | | |-- fribidi.SlackBuild - | | |-- fribidi.glib.h.diff.gz - | | `-- slack-desc - | |-- fuse - | | |-- doinst.sh.gz - | | |-- fuse-2.9.5.tar.xz - | | |-- fuse.SlackBuild - | | `-- slack-desc - | |-- gamin - | | |-- doinst.sh.gz - | | |-- fix-double-lock-in-inotify-helper-c.patch.gz - | | |-- gamin-0.1.10.tar.xz - | | |-- gamin.SlackBuild - | | |-- gaminrc.gz - | | |-- no_g_const_return.patch.gz - | | `-- slack-desc - | |-- gc - | | |-- gc-7.4.2.tar.xz - | | |-- gc.SlackBuild - | | |-- libatomic_ops-7.4.2.tar.xz - | | |-- noelision.patch.gz - | | |-- refer_to_GC_setup_mark_lock_only_in_PARALLEL_MARK_code.patch.gz - | | `-- slack-desc - | |-- gcr - | | |-- doinst.sh.gz - | | |-- gcr-3.16.0.tar.xz - | | |-- gcr.SlackBuild - | | `-- slack-desc - | |-- gd - | | |-- gd.SlackBuild - | | |-- libgd-2.2.1.tar.xz - | | `-- slack-desc - | |-- gdbm - | | |-- gdbm-1.12.tar.xz - | | |-- gdbm.SlackBuild - | | |-- gdbm.zeroheaders.patch.gz - | | `-- slack-desc - | |-- gdk-pixbuf2 - | | |-- doinst.sh.gz - | | |-- gdk-pixbuf-2.32.3.tar.xz - | | |-- gdk-pixbuf.pnglz.diff.gz - | | |-- gdk-pixbuf2.SlackBuild - | | |-- slack-desc - | | `-- update-gdk-pixbuf-loaders - | |-- gegl - | | |-- gegl-0.2.0.tar.xz - | | |-- gegl.SlackBuild - | | `-- slack-desc - | |-- giflib - | | |-- giflib-5.1.1.tar.xz - | | |-- giflib.SlackBuild - | | `-- slack-desc - | |-- glade3 - | | |-- glade3-3.8.5.tar.xz - | | |-- glade3.SlackBuild - | | `-- slack-desc - | |-- glib - | | |-- glib-1.2.10.tar.bz2 - | | |-- glib.SlackBuild - | | |-- glib1.2_1.2.10-17.diff.bz2 - | | `-- slack-desc - | |-- glib-networking - | | |-- doinst.sh.gz - | | |-- glib-networking-2.46.1.tar.xz - | | |-- glib-networking.SlackBuild - | | `-- slack-desc - | |-- glib2 - | | |-- 0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch - | | |-- doinst.sh.gz - | | |-- glib-2.46.2.tar.xz - | | |-- glib2.SlackBuild - | | |-- libglib2.csh - | | |-- libglib2.sh - | | `-- slack-desc - | |-- glibc - | | |-- doinst.sh-glibc - | | |-- doinst.sh-glibc-solibs - | | |-- glibc-2.10-dns-no-gethostbyname4.diff.gz - | | |-- glibc-2.23.tar.xz - | | |-- glibc-2.23.tar.xz.sig - | | |-- glibc-c-utf8-locale.patch.gz - | | |-- glibc-cvs-checkout.sh - | | |-- glibc.SlackBuild - | | |-- glibc.ldd.trace.through.dynamic.linker.diff.gz - | | |-- glibc.locale.no-archive.diff.gz - | | |-- glibc.make-3.82.diff.gz - | | |-- glibc.revert.to.fix.build.breakages.diff.gz - | | |-- glibc.ru_RU.CP1251.diff.gz - | | |-- is_IS.diff.gz - | | |-- profile.d - | | | |-- glibc.csh.new - | | | `-- glibc.sh.new - | | |-- slack-desc.glibc - | | |-- slack-desc.glibc-debug - | | |-- slack-desc.glibc-i18n - | | |-- slack-desc.glibc-profile - | | |-- slack-desc.glibc-solibs - | | `-- slack-desc.glibc-solibs-linuxthreads - | |-- glibmm - | | |-- glibmm-2.46.4.tar.xz - | | |-- glibmm.SlackBuild - | | `-- slack-desc - | |-- gmime - | | |-- gmime-2.6.20.tar.xz - | | |-- gmime.SlackBuild - | | `-- slack-desc - | |-- gmm - | | |-- gmm-4.2.tar.xz - | | |-- gmm.SlackBuild - | | |-- gmm.info - | | `-- slack-desc - | |-- gmp - | | |-- gmp-6.1.1.tar.xz - | | |-- gmp-6.1.1.tar.xz.sig - | | |-- gmp.SlackBuild - | | `-- slack-desc - | |-- gnome-keyring - | | |-- doinst.sh.gz - | | |-- gnome-keyring-3.16.0.tar.xz - | | |-- gnome-keyring.SlackBuild - | | `-- slack-desc - | |-- gnome-themes-standard - | | |-- doinst.sh.gz - | | |-- gnome-themes-standard-3.18.0.tar.xz - | | |-- gnome-themes-standard.SlackBuild - | | `-- slack-desc - | |-- gnu-efi - | | |-- gnu-efi-3.0.4.tar.xz - | | |-- gnu-efi.SlackBuild - | | `-- slack-desc - | |-- gobject-introspection - | | |-- gobject-introspection-1.46.0.tar.xz - | | |-- gobject-introspection.SlackBuild - | | `-- slack-desc - | |-- grantlee - | | |-- grantlee-0.5.1.tar.xz - | | |-- grantlee.SlackBuild - | | `-- slack-desc - | |-- gsettings-desktop-schemas - | | |-- doinst.sh.gz - | | |-- gsettings-desktop-schemas-3.18.1.tar.xz - | | |-- gsettings-desktop-schemas.SlackBuild - | | `-- slack-desc - | |-- gsl - | | |-- gsl-2.1.tar.xz - | | |-- gsl.SlackBuild - | | `-- slack-desc - | |-- gst-plugins-base - | | |-- gst-plugins-base-1.6.4.tar.xz - | | |-- gst-plugins-base.SlackBuild - | | `-- slack-desc - | |-- gst-plugins-base0 - | | |-- gst-plugins-base-0.10.36.tar.xz - | | |-- gst-plugins-base0.SlackBuild - | | `-- slack-desc - | |-- gst-plugins-good - | | |-- gst-plugins-good-1.6.4.tar.xz - | | |-- gst-plugins-good.SlackBuild - | | `-- slack-desc - | |-- gst-plugins-good0 - | | |-- gst-plugins-good-0.10.31.tar.xz - | | |-- gst-plugins-good0.SlackBuild - | | |-- slack-desc - | | `-- v4l.compile.fixes.diff.gz - | |-- gstreamer - | | |-- gstreamer-1.6.4.tar.xz - | | |-- gstreamer.SlackBuild - | | `-- slack-desc - | |-- gstreamer0 - | | |-- gstreamer-0.10.36.tar.xz - | | |-- gstreamer0.SlackBuild - | | `-- slack-desc - | |-- gtk+ - | | |-- gtk+-1.2.10.tar.bz2 - | | |-- gtk+.SlackBuild - | | |-- gtk+1.2_1.2.10-18.diff.bz2 - | | `-- slack-desc - | |-- gtk+2 - | | |-- doinst.sh.gz - | | |-- fix_build_issues_on_tutorial_and_faq.diff.gz - | | |-- gtk+-2.24.30.tar.xz - | | |-- gtk+-2.24.x.icon-compat.am.diff.gz - | | |-- gtk+-2.24.x.icon-compat.diff.gz - | | |-- gtk+2.SlackBuild - | | |-- gtk.gtk-faq.diff.gz - | | |-- gtk.gtk-tut.diff.gz - | | |-- gtk.xid.nowarningflood.diff.gz - | | |-- profile.d - | | | |-- gtk+.csh - | | | `-- gtk+.sh - | | |-- slack-desc - | | |-- update-gtk-immodules - | | `-- update-gtk-immodules-2.0 - | |-- gtk+3 - | | |-- doinst.sh.gz - | | |-- gtk+-3.18.9.tar.xz - | | |-- gtk+3.SlackBuild - | | |-- slack-desc - | | `-- update-gtk-immodules-3.0 - | |-- gtkmm2 - | | |-- gtkmm-2.24.4.tar.xz - | | |-- gtkmm2.SlackBuild - | | `-- slack-desc - | |-- gtkmm3 - | | |-- gtkmm-3.18.1.tar.xz - | | |-- gtkmm3.SlackBuild - | | `-- slack-desc - | |-- gtkspell - | | |-- gtkspell-2.0.16.tar.xz - | | |-- gtkspell.SlackBuild - | | `-- slack-desc - | |-- gvfs - | | |-- doinst.sh.gz - | | |-- gvfs-1.26.3.tar.xz - | | |-- gvfs.SlackBuild - | | `-- slack-desc - | |-- harfbuzz - | | |-- harfbuzz-1.2.7.tar.xz - | | |-- harfbuzz.SlackBuild - | | `-- slack-desc - | |-- herqq - | | |-- herqq-1.0.0.zip - | | |-- herqq.SlackBuild - | | `-- slack-desc - | |-- hicolor-icon-theme - | | |-- doinst.sh.gz - | | |-- hicolor-icon-theme-0.15.tar.xz - | | |-- hicolor-icon-theme.SlackBuild - | | |-- setup.08.gtk-update-icon-cache - | | `-- slack-desc - | |-- hunspell - | | |-- hunspell-1.3.3.tar.xz - | | |-- hunspell.SlackBuild - | | `-- slack-desc - | |-- icon-naming-utils - | | |-- icon-naming-utils-0.8.90.tar.gz - | | |-- icon-naming-utils.SlackBuild - | | |-- icon-naming-utils.pkgconfigdir.diff.gz - | | `-- slack-desc - | |-- icu4c - | | |-- icu4c-56_1-src.tar.xz - | | |-- icu4c.SlackBuild - | | |-- icu4c.closenull.patch.gz - | | `-- slack-desc - | |-- ilmbase - | | |-- ilmbase-2.2.0-no_undefined.patch.gz - | | |-- ilmbase-2.2.0.tar.xz - | | |-- ilmbase.SlackBuild - | | `-- slack-desc - | |-- iso-codes - | | |-- iso-codes-3.67.tar.xz - | | |-- iso-codes-3.67.tar.xz.sig - | | |-- iso-codes.SlackBuild - | | `-- slack-desc - | |-- jasper - | | |-- jasper-1.900.1.tar.bz2 - | | |-- jasper.SlackBuild - | | |-- patches - | | | |-- jasper-1.900.1-CVE-2008-3520.patch.gz - | | | |-- jasper-1.900.1-CVE-2008-3522.patch.gz - | | | |-- jasper-1.900.1-CVE-2011-4516-CVE-2011-4517-CERT-VU-887409.patch.gz - | | | |-- jasper-1.900.1-Coverity-BAD_SIZEOF.patch.gz - | | | |-- jasper-1.900.1-Coverity-CHECKED_RETURN.patch.gz - | | | |-- jasper-1.900.1-Coverity-FORWARD_NULL.patch.gz - | | | |-- jasper-1.900.1-Coverity-NULL_RETURNS.patch.gz - | | | |-- jasper-1.900.1-Coverity-RESOURCE_LEAK.patch.gz - | | | |-- jasper-1.900.1-Coverity-UNREACHABLE.patch.gz - | | | |-- jasper-1.900.1-Coverity-UNUSED_VALUE.patch.gz - | | | |-- jasper-CVE-2014-8137.patch.gz - | | | |-- jasper-CVE-2014-8138.patch.gz - | | | |-- jasper-CVE-2014-8157.patch.gz - | | | |-- jasper-CVE-2014-8158.patch.gz - | | | |-- jasper-CVE-2014-9029.patch.gz - | | | |-- jpc_dec.c.patch.gz - | | | `-- patch-libjasper-stepsizes-overflow.diff.gz - | | `-- slack-desc - | |-- jemalloc - | | |-- jemalloc-3.6.0.tar.xz - | | |-- jemalloc.SlackBuild - | | `-- slack-desc - | |-- js185 - | | |-- js185-1.0.0.tar.xz - | | |-- js185-destdir.patch - | | |-- js185.SlackBuild - | | `-- slack-desc - | |-- json-c - | | |-- json-c-0.12.tar.xz - | | |-- json-c.SlackBuild - | | |-- slack-desc - | | `-- unset-vars-build-fix.diff.gz - | |-- judy - | | |-- Judy-1.0.5.tar.xz - | | |-- judy.SlackBuild - | | `-- slack-desc - | |-- keybinder - | | |-- keybinder-0.3.1.tar.xz - | | |-- keybinder-3.0-0.3.1.tar.xz - | | |-- keybinder.SlackBuild - | | `-- slack-desc - | |-- keyutils - | | |-- keyutils-1.5.9.tar.bz2 - | | |-- keyutils.SlackBuild - | | `-- slack-desc - | |-- lcms - | | |-- lcms-1.19.tar.xz - | | |-- lcms.SlackBuild - | | `-- slack-desc - | |-- lcms2 - | | |-- lcms2-2.7.tar.xz - | | |-- lcms2.SlackBuild - | | `-- slack-desc - | |-- libaio - | | |-- libaio-0.3.109.tar.bz2 - | | |-- libaio-0.3.109.tar.sign - | | |-- libaio.SlackBuild - | | `-- slack-desc - | |-- libao - | | |-- libao-1.2.0.tar.xz - | | |-- libao.SlackBuild - | | `-- slack-desc - | |-- libarchive - | | |-- libarchive-3.2.1.tar.xz - | | |-- libarchive.SlackBuild - | | `-- slack-desc - | |-- libart_lgpl - | | |-- libart_lgpl-2.3.21.tar.xz - | | |-- libart_lgpl.SlackBuild - | | `-- slack-desc - | |-- libasyncns - | | |-- libasyncns-0.8.tar.xz - | | |-- libasyncns.SlackBuild - | | `-- slack-desc - | |-- libatasmart - | | |-- README - | | |-- libatasmart-0.19.tar.xz - | | |-- libatasmart.SlackBuild - | | |-- libatasmart.info - | | `-- slack-desc - | |-- libbluedevil - | | |-- libbluedevil-2.1.tar.xz - | | |-- libbluedevil.SlackBuild - | | `-- slack-desc - | |-- libcaca - | | |-- libcaca-0.99.beta18.tar.xz - | | |-- libcaca.SlackBuild - | | `-- slack-desc - | |-- libcanberra - | | |-- libcanberra-0.30.tar.xz - | | |-- libcanberra.SlackBuild - | | |-- libcanberra.url - | | `-- slack-desc - | |-- libcap - | | |-- README.SLACKWARE - | | |-- capfaq-0.2.txt - | | |-- libcap-2.22.tar.bz2 - | | |-- libcap-2.22.tar.bz2.sign - | | |-- libcap.SlackBuild - | | |-- libcap.capability.h.fix.broken.includes.diff.gz - | | `-- slack-desc - | |-- libcap-ng - | | |-- libcap-ng-0.7.7.tar.xz - | | |-- libcap-ng.SlackBuild - | | `-- slack-desc - | |-- libcddb - | | |-- libcddb-1.3.2.tar.xz - | | |-- libcddb.SlackBuild - | | `-- slack-desc - | |-- libcdio - | | |-- libcdio-0.93.tar.xz - | | |-- libcdio.SlackBuild - | | |-- libcdio.url - | | `-- slack-desc - | |-- libcdio-paranoia - | | |-- libcdio-paranoia-10.2+0.93+1.tar.xz - | | |-- libcdio-paranoia.SlackBuild - | | |-- libcdio-paranoia.url - | | `-- slack-desc - | |-- libcroco - | | |-- libcroco-0.6.11.tar.xz - | | |-- libcroco.SlackBuild - | | |-- libcroco.url - | | `-- slack-desc - | |-- libdbusmenu-qt - | | |-- libdbusmenu-qt-0.9.2.tar.bz2 - | | |-- libdbusmenu-qt.SlackBuild - | | `-- slack-desc - | |-- libdiscid - | | |-- libdiscid-0.6.1.tar.xz - | | |-- libdiscid.SlackBuild - | | `-- slack-desc - | |-- libdvdnav - | | |-- libdvdnav-5.0.3.tar.xz - | | |-- libdvdnav.SlackBuild - | | `-- slack-desc - | |-- libdvdread - | | |-- libdvdread-5.0.3.tar.xz - | | |-- libdvdread.SlackBuild - | | `-- slack-desc - | |-- libevent - | | |-- libevent-2.0.22-stable.tar.xz - | | |-- libevent.SlackBuild - | | `-- slack-desc - | |-- libexif - | | |-- libexif-0.6.21.tar.xz - | | |-- libexif.SlackBuild - | | |-- libexif.pc.diff.gz - | | `-- slack-desc - | |-- libfakekey - | | |-- libfakekey-0.1.tar.xz - | | |-- libfakekey.SlackBuild - | | `-- slack-desc - | |-- libffi - | | |-- libffi-3.2.1.tar.xz - | | |-- libffi.SlackBuild - | | |-- libffi.includedir.diff.gz - | | `-- slack-desc - | |-- libglade - | | |-- libglade-2.6.4.tar.bz2 - | | |-- libglade.SlackBuild - | | `-- slack-desc - | |-- libgnome-keyring - | | |-- libgnome-keyring-3.12.0.tar.xz - | | |-- libgnome-keyring.SlackBuild - | | `-- slack-desc - | |-- libgphoto2 - | | |-- libgphoto2-2.5.10.tar.xz - | | |-- libgphoto2.SlackBuild - | | `-- slack-desc - | |-- libgpod - | | |-- doinst.sh.gz - | | |-- libgpod-0.8.3.tar.xz - | | |-- libgpod.SlackBuild - | | `-- slack-desc - | |-- libgsf - | | |-- libgsf-1.14.36.tar.xz - | | |-- libgsf.SlackBuild - | | `-- slack-desc - | |-- libical - | | |-- libical-2.0.0.tar.xz - | | |-- libical.SlackBuild - | | `-- slack-desc - | |-- libid3tag - | | |-- id3tag.pc - | | |-- libid3tag-0.15.1b.tar.gz - | | |-- libid3tag-0.15.1b.tar.gz.sign - | | |-- libid3tag.SlackBuild - | | `-- slack-desc - | |-- libidl - | | |-- libIDL-0.8.14.tar.xz - | | |-- libidl.SlackBuild - | | `-- slack-desc - | |-- libidn - | | |-- libidn-1.30.tar.xz - | | |-- libidn.SlackBuild - | | `-- slack-desc - | |-- libieee1284 - | | |-- libieee1284-0.2.11.tar.bz2 - | | |-- libieee1284.SlackBuild - | | `-- slack-desc - | |-- libimobiledevice - | | |-- libimobiledevice-1.2.0.tar.xz - | | |-- libimobiledevice.SlackBuild - | | `-- slack-desc - | |-- libiodbc - | | |-- libiodbc-3.52.10.tar.xz - | | |-- libiodbc.SlackBuild - | | |-- libiodbc.disable.rpath.diff.gz - | | `-- slack-desc - | |-- libjpeg-turbo - | | |-- libjpeg-turbo-1.5.0.tar.xz - | | |-- libjpeg-turbo.SlackBuild - | | `-- slack-desc - | |-- libkarma - | | |-- libkarma-0.1.1.tar.gz - | | |-- libkarma.SlackBuild - | | `-- slack-desc - | |-- liblastfm - | | |-- liblastfm-1.0.9.tar.xz - | | |-- liblastfm.SlackBuild - | | `-- slack-desc - | |-- libmad - | | |-- libmad-0.15.1b.tar.gz - | | |-- libmad-0.15.1b.tar.gz.sign - | | |-- libmad.SlackBuild - | | |-- mad.pc - | | `-- slack-desc - | |-- libmcrypt - | | |-- libmcrypt-2.5.8.tar.bz2 - | | |-- libmcrypt.SlackBuild - | | `-- slack-desc - | |-- libmcs - | | |-- libmcs-0.7.2.tar.bz2 - | | |-- libmcs.SlackBuild - | | `-- slack-desc - | |-- libmng - | | |-- libmng-2.0.3.tar.xz - | | |-- libmng-2.0.3.tar.xz.asc - | | |-- libmng.SlackBuild - | | `-- slack-desc - | |-- libmowgli - | | |-- libmowgli-0.7.1.tar.bz2 - | | |-- libmowgli.SlackBuild - | | `-- slack-desc - | |-- libmpc - | | |-- libmpc.SlackBuild - | | |-- mpc-1.0.3.tar.xz - | | `-- slack-desc - | |-- libmsn - | | |-- libmsn-4.2.1.tar.bz2 - | | |-- libmsn.SlackBuild - | | |-- libmsn.gcc47.diff.gz - | | `-- slack-desc - | |-- libmtp - | | |-- libmtp-1.1.11.tar.xz - | | |-- libmtp.SlackBuild - | | `-- slack-desc - | |-- libnih - | | |-- libnih-1.0.3.tar.xz - | | |-- libnih.SlackBuild - | | `-- slack-desc - | |-- libnjb - | | |-- 80-libnjb.rules - | | |-- libnjb-2.2.6.tar.bz2 - | | |-- libnjb.SlackBuild - | | `-- slack-desc - | |-- libnl - | | |-- libnl-1.1.4.tar.gz - | | |-- libnl.SlackBuild - | | |-- libnl.info - | | `-- slack-desc - | |-- libnl3 - | | |-- doinst.sh.gz - | | |-- libnl-3.2.27.tar.xz - | | |-- libnl3.SlackBuild - | | `-- slack-desc - | |-- libnotify - | | |-- libnotify-0.7.6.tar.xz - | | |-- libnotify.SlackBuild - | | `-- slack-desc - | |-- libodfgen - | | |-- libodfgen-0.1.6.tar.xz - | | |-- libodfgen.SlackBuild - | | `-- slack-desc - | |-- libogg - | | |-- libogg-1.3.2.tar.xz - | | |-- libogg.SlackBuild - | | `-- slack-desc - | |-- liboggz - | | |-- liboggz-1.1.1.tar.xz - | | |-- liboggz.SlackBuild - | | `-- slack-desc - | |-- liboil - | | |-- liboil-0.3.17.tar.xz - | | |-- liboil.SlackBuild - | | `-- slack-desc - | |-- libpcap - | | |-- libpcap-1.7.4.tar.gz - | | |-- libpcap-1.7.4.tar.gz.sig - | | |-- libpcap.SlackBuild - | | `-- slack-desc - | |-- libplist - | | |-- libplist-1.12.tar.xz - | | |-- libplist.SlackBuild - | | `-- slack-desc - | |-- libpng - | | |-- libpng-1.6.23.tar.xz - | | |-- libpng-1.6.23.tar.xz.asc - | | |-- libpng.SlackBuild - | | |-- libpng.url - | | `-- slack-desc - | |-- libproxy - | | |-- libproxy-0.4.12.tar.xz - | | |-- libproxy.SlackBuild - | | |-- libproxy.url - | | `-- slack-desc - | |-- libraw1394 - | | |-- libraw1394-2.1.1.tar.sign - | | |-- libraw1394-2.1.1.tar.xz - | | |-- libraw1394.SlackBuild - | | `-- slack-desc - | |-- librevenge - | | |-- librevenge-0.0.4.tar.xz - | | |-- librevenge.SlackBuild - | | `-- slack-desc - | |-- librsvg - | | |-- librsvg-2.40.16.tar.xz - | | |-- librsvg.SlackBuild - | | `-- slack-desc - | |-- libsamplerate - | | |-- libsamplerate-0.1.8.tar.xz - | | |-- libsamplerate.SlackBuild - | | `-- slack-desc - | |-- libsecret - | | |-- libsecret-0.18.5.tar.xz - | | |-- libsecret.SlackBuild - | | `-- slack-desc - | |-- libsigc++ - | | |-- libsigc++-2.6.2.tar.xz - | | |-- libsigc++.SlackBuild - | | `-- slack-desc - | |-- libsigsegv - | | |-- libsigsegv-2.10.tar.xz - | | |-- libsigsegv.SlackBuild - | | `-- slack-desc - | |-- libsndfile - | | |-- libsndfile-1.0.26.tar.xz - | | |-- libsndfile.SlackBuild - | | `-- slack-desc - | |-- libsoup - | | |-- libsoup-2.52.2.tar.xz - | | |-- libsoup.SlackBuild - | | `-- slack-desc - | |-- libspectre - | | |-- libspectre-0.2.7.tar.xz - | | |-- libspectre.SlackBuild - | | `-- slack-desc - | |-- libssh - | | |-- libssh-0.7.3.tar.asc - | | |-- libssh-0.7.3.tar.xz - | | |-- libssh.SlackBuild - | | `-- slack-desc - | |-- libssh2 - | | |-- libssh2-1.7.0.tar.gz - | | |-- libssh2-1.7.0.tar.gz.asc - | | |-- libssh2.SlackBuild - | | `-- slack-desc - | |-- libtasn1 - | | |-- libtasn1-4.8.tar.xz - | | |-- libtasn1.SlackBuild - | | `-- slack-desc - | |-- libtermcap - | | |-- libtermcap.SlackBuild - | | |-- slack-desc - | | |-- termcap-compat_1.2.3.diff.gz - | | |-- termcap-compat_1.2.3.dsc - | | |-- termcap-compat_1.2.3.tar.gz - | | |-- termcap.bufsize.diff.gz - | | `-- termcap.h.diff.gz - | |-- libtheora - | | |-- libtheora-1.1.1.tar.xz - | | |-- libtheora.SlackBuild - | | `-- slack-desc - | |-- libtiff - | | |-- libtiff-am-version.patch.gz - | | |-- libtiff-make-check.patch.gz - | | |-- libtiff.SlackBuild - | | |-- slack-desc - | | `-- tiff-4.0.6.tar.xz - | |-- libunistring - | | |-- libunistring-0.9.3.tar.xz - | | |-- libunistring.SlackBuild - | | `-- slack-desc - | |-- libusb - | | |-- libusb-1.0.20.tar.xz - | | |-- libusb.SlackBuild - | | `-- slack-desc - | |-- libusb-compat - | | |-- libusb-compat-0.1.5.tar.xz - | | |-- libusb-compat.SlackBuild - | | `-- slack-desc - | |-- libusbmuxd - | | |-- libusbmuxd-1.0.10.tar.xz - | | |-- libusbmuxd.SlackBuild - | | `-- slack-desc - | |-- libvisio - | | |-- libvisio-0.1.5.tar.xz - | | |-- libvisio.SlackBuild - | | `-- slack-desc - | |-- libvisual - | | |-- libvisual-0.4.0.tar.bz2 - | | |-- libvisual.SlackBuild - | | |-- libvisual.glib.h.diff.gz - | | `-- slack-desc - | |-- libvisual-plugins - | | |-- libvisual-plugins-0.4.0.tar.bz2 - | | |-- libvisual-plugins.SlackBuild - | | |-- libvisual-plugins.gstreamer.diff.gz - | | `-- slack-desc - | |-- libvncserver - | | |-- LibVNCServer-0.9.10.tar.xz - | | |-- libvncserver.SlackBuild - | | `-- slack-desc - | |-- libvorbis - | | |-- libvorbis-1.3.5.tar.xz - | | |-- libvorbis.SlackBuild - | | `-- slack-desc - | |-- libvpx - | | |-- libvpx-1.5.0.tar.xz - | | |-- libvpx.SlackBuild - | | `-- slack-desc - | |-- libwmf - | | |-- libwmf-0.2.8.4.tar.xz - | | |-- libwmf.SlackBuild - | | |-- libwmf.png14.diff.gz - | | |-- slack-desc - | | `-- slack-desc-docs - | |-- libwnck - | | |-- libwnck-2.31.0.tar.xz - | | |-- libwnck.SlackBuild - | | `-- slack-desc - | |-- libwpd - | | |-- libwpd-0.10.1.tar.xz - | | |-- libwpd.SlackBuild - | | `-- slack-desc - | |-- libwpg - | | |-- libwpg-0.3.1.tar.xz - | | |-- libwpg.SlackBuild - | | `-- slack-desc - | |-- libxklavier - | | |-- libxklavier-5.4.tar.xz - | | |-- libxklavier.SlackBuild - | | `-- slack-desc - | |-- libxml2 - | | |-- 0001-Fix-attribute-decoding-during-XML-schema-validation.diff.gz - | | |-- libxml2-2.9.4.tar.xz - | | |-- libxml2.SlackBuild - | | |-- libxml2.do-not-check-crc.diff.gz - | | `-- slack-desc - | |-- libxslt - | | |-- libxslt-1.1.29.tar.xz - | | |-- libxslt.SlackBuild - | | `-- slack-desc - | |-- libyaml - | | |-- libyaml.SlackBuild - | | |-- libyaml.url - | | |-- slack-desc - | | `-- yaml-0.1.6.tar.xz - | |-- libzip - | | |-- libzip-1.0.1.tar.xz - | | |-- libzip.SlackBuild - | | `-- slack-desc - | |-- loudmouth - | | |-- loudmouth-1.5.2.tar.xz - | | |-- loudmouth.SlackBuild - | | `-- slack-desc - | |-- lzo - | | |-- lzo-2.09.tar.xz - | | |-- lzo.SlackBuild - | | `-- slack-desc - | |-- media-player-info - | | |-- media-player-info-18.tar.xz - | | |-- media-player-info.SlackBuild - | | `-- slack-desc - | |-- mhash - | | |-- mhash-0.9.9.9.tar.bz2 - | | |-- mhash.SlackBuild - | | `-- slack-desc - | |-- mm - | | |-- mm-1.4.2.tar.bz2 - | | |-- mm.SlackBuild - | | `-- slack-desc - | |-- mozilla-nss - | | |-- MPL-1.1.txt - | | |-- faq.html - | | |-- gpl-2.0.txt - | | |-- lgpl-2.1.txt - | | |-- mozilla-nss.SlackBuild - | | |-- nspr-4.12.tar.xz - | | |-- nss-3.23.tar.xz - | | |-- nss-config.in - | | `-- slack-desc - | |-- mpfr - | | |-- mpfr-3.1.4.tar.xz - | | |-- mpfr-3.1.4.tar.xz.sig - | | |-- mpfr.SlackBuild - | | |-- patches - | | `-- slack-desc - | |-- ncurses - | | |-- Eterm.ti - | | |-- ncurses-5.9-20141206-patch.sh.xz - | | |-- ncurses-5.9.tar.xz - | | |-- ncurses.SlackBuild - | | |-- ncurses.mkhashsize.diff.gz - | | |-- patches - | | |-- rxvt.terminfo - | | |-- screeninfo.src - | | |-- slack-desc - | | `-- xterm.terminfo - | |-- neon - | | |-- neon-0.30.1.tar.xz - | | |-- neon.SlackBuild - | | `-- slack-desc - | |-- netpbm - | | |-- config.mk.gz - | | |-- netpbm-10.66.02.tar.xz - | | |-- netpbm-manpages.tar.bz2 - | | |-- netpbm-noppmtompeg.patch.gz - | | |-- netpbm-pnmtops.patch.gz - | | |-- netpbm.SlackBuild - | | |-- slack-desc - | | `-- svn-checkout-stable.sh - | |-- newt - | | |-- newt-0.52.19.tar.xz - | | |-- newt.SlackBuild - | | `-- slack-desc - | |-- notify-python - | | |-- libnotify07.patch.gz - | | |-- notify-python-0.1.1-fix-GTK-symbols.patch.gz - | | |-- notify-python-0.1.1.tar.bz2 - | | |-- notify-python.SlackBuild - | | `-- slack-desc - | |-- openexr - | | |-- openexr-2.2.0.tar.xz - | | |-- openexr.SlackBuild - | | `-- slack-desc - | |-- openjpeg - | | |-- openjpeg-2.1.0.tar.xz - | | |-- openjpeg.SlackBuild - | | `-- slack-desc - | |-- orc - | | |-- orc-0.4.24.tar.xz - | | |-- orc.SlackBuild - | | `-- slack-desc - | |-- pango - | | |-- pango-1.38.1.tar.xz - | | |-- pango.SlackBuild - | | `-- slack-desc - | |-- pangomm - | | |-- pangomm-2.38.1.tar.xz - | | |-- pangomm.SlackBuild - | | `-- slack-desc - | |-- parted - | | |-- parted-3.2.tar.xz - | | |-- parted-3.2.tar.xz.sig - | | |-- parted.SlackBuild - | | |-- parted.SlackBuild.static - | | |-- parted.configure.diff.gz - | | `-- slack-desc - | |-- pcre - | | |-- pcre-8.39.tar.xz - | | |-- pcre.SlackBuild - | | `-- slack-desc - | |-- phonon - | | |-- phonon-4.8.3.tar.xz - | | |-- phonon.SlackBuild - | | `-- slack-desc - | |-- phonon-gstreamer - | | |-- phonon-backend-gstreamer-4.8.2.tar.xz - | | |-- phonon-gstreamer.SlackBuild - | | `-- slack-desc - | |-- pilot-link - | | |-- pilot-link-0.12.5-redefinePerlsymbols.patch.gz - | | |-- pilot-link-0.12.5.tar.bz2 - | | |-- pilot-link-0.12.5.tar.bz2.asc - | | |-- pilot-link.SlackBuild - | | |-- pilot-link.png14.diff.gz - | | `-- slack-desc - | |-- polkit - | | |-- 10-org.freedesktop.NetworkManager.rules - | | |-- 20-plugdev-group-mount-override.rules - | | |-- doinst.sh.gz - | | |-- dont-set-wheel-group-as-admin.diff.gz - | | |-- polkit-0.113.tar.gz - | | |-- polkit.SlackBuild - | | `-- slack-desc - | |-- polkit-gnome - | | |-- polkit-gnome-0.105.tar.xz - | | |-- polkit-gnome-authentication-agent-1.desktop - | | |-- polkit-gnome.SlackBuild - | | `-- slack-desc - | |-- polkit-qt-1 - | | |-- polkit-qt-1-0.103.0.tar.bz2 - | | |-- polkit-qt-1.SlackBuild - | | |-- pull-polkit-qt-1 - | | `-- slack-desc - | |-- poppler - | | |-- poppler-0.45.0.tar.xz - | | |-- poppler.SlackBuild - | | `-- slack-desc - | |-- poppler-data - | | |-- poppler-data-0.4.7.tar.xz - | | |-- poppler-data.SlackBuild - | | `-- slack-desc - | |-- popt - | | |-- popt-1.16.tar.xz - | | |-- popt.SlackBuild - | | `-- slack-desc - | |-- pulseaudio - | | |-- 0001-client-conf-Add-allow-autospawn-for-root.patch.gz - | | |-- 0002-allow-autospawn-for-root-default.diff.gz - | | |-- 0003-no-root-warn.diff.gz - | | |-- 020_no-parallel-make.diff.gz - | | |-- 030_posix-completion.diff.gz - | | |-- doinst.sh.gz - | | |-- pulseaudio-9.0.tar.xz - | | |-- pulseaudio-autostart.patch.gz - | | |-- pulseaudio.SlackBuild - | | |-- rc.pulseaudio - | | `-- slack-desc - | |-- pycairo - | | |-- py2cairo-1.10.0.tar.xz - | | |-- pycairo.SlackBuild - | | |-- pycairo.url - | | `-- slack-desc - | |-- pycups - | | |-- pycups-1.9.73.tar.bz2 - | | |-- pycups.SlackBuild - | | |-- pycups.info - | | `-- slack-desc - | |-- pycurl - | | |-- pycurl-7.43.0.tar.xz - | | |-- pycurl.SlackBuild - | | `-- slack-desc - | |-- pygobject - | | |-- pygobject-2.28.6.tar.xz - | | |-- pygobject.SlackBuild - | | |-- pygobject.flags.diff.gz - | | |-- pygobject.url - | | `-- slack-desc - | |-- pygobject3 - | | |-- pygobject-3.18.2.tar.xz - | | |-- pygobject3.SlackBuild - | | |-- pygobject3.url - | | `-- slack-desc - | |-- pygtk - | | |-- pygtk-2.24.0.tar.xz - | | |-- pygtk.SlackBuild - | | `-- slack-desc - | |-- pyrex - | | |-- Pyrex-0.9.9.tar.xz - | | |-- Pyrex.url - | | |-- pyrex.SlackBuild - | | `-- slack-desc - | |-- python-pillow - | | |-- Pillow-3.0.0.tar.xz - | | |-- Sane-2.8.2.tar.xz - | | |-- python-pillow.SlackBuild - | | `-- slack-desc - | |-- qca - | | |-- 0011-use-_DEFAULT_SOURCE-instead-of-_BSD_SOURCE.patch.gz - | | |-- qca-2.1.1.tar.xz - | | |-- qca.SlackBuild - | | `-- slack-desc - | |-- qimageblitz - | | |-- qimageblitz-0.0.6.tar.bz2 - | | |-- qimageblitz.SlackBuild - | | |-- qimageblitz.info - | | `-- slack-desc - | |-- qjson - | | |-- qjson-0.8.1.tar.bz2 - | | |-- qjson.SlackBuild - | | `-- slack-desc - | |-- qt - | | |-- Qt.pc - | | |-- README - | | |-- doinst.sh.gz - | | |-- profile.d - | | | |-- qt4.csh - | | | `-- qt4.sh - | | |-- qt-everywhere-opensource-src-4.8.7.tar.xz - | | |-- qt-nowebkit.SlackBuild - | | |-- qt.SlackBuild - | | |-- qt.fix.broken.gif.crash.diff.gz - | | |-- qt.glib-honor-ExcludeSocketNotifiers-flag.diff.gz - | | |-- qt.mysql.h.diff.gz - | | |-- qt.qclipboard_delay.patch.gz - | | |-- qt.qclipboard_fix_recursive.patch.gz - | | |-- qt.qsystemtrayicon-plugin-system.diff.gz - | | |-- qt.webkit-no_Werror.patch.gz - | | |-- qtwebkit - | | | |-- doinst.sh.gz - | | | |-- qtwebkit-2.3.4.tar.xz - | | | |-- qtwebkit.SlackBuild - | | | |-- qtwebkit.putByIndexBeyondVectorLengthWithArrayStorage.diff.gz - | | | |-- qtwebkit.url - | | | `-- slack-desc - | | `-- slack-desc - | |-- qt-gstreamer - | | |-- doinst.sh.gz - | | |-- qt-gstreamer-1.2.0.tar.xz - | | |-- qt-gstreamer.SlackBuild - | | `-- slack-desc - | |-- qtscriptgenerator - | | |-- include-everything.patch.gz - | | |-- qtscriptgenerator-src-0.2.0.tar.xz - | | |-- qtscriptgenerator.SlackBuild - | | |-- qtscriptgenerator.info - | | `-- slack-desc - | |-- raptor2 - | | |-- raptor2-2.0.15.tar.xz - | | |-- raptor2.SlackBuild - | | `-- slack-desc - | |-- rasqal - | | |-- rasqal-0.9.30.tar.xz - | | |-- rasqal.SlackBuild - | | `-- slack-desc - | |-- readline - | | |-- readline-6.3-patches - | | | |-- readline63-001 - | | | |-- readline63-001.sig - | | | |-- readline63-002 - | | | |-- readline63-002.sig - | | | |-- readline63-003 - | | | |-- readline63-003.sig - | | | |-- readline63-004 - | | | |-- readline63-004.sig - | | | |-- readline63-005 - | | | |-- readline63-005.sig - | | | |-- readline63-006 - | | | |-- readline63-006.sig - | | | |-- readline63-007 - | | | |-- readline63-007.sig - | | | |-- readline63-008 - | | | `-- readline63-008.sig - | | |-- readline-6.3.tar.xz - | | |-- readline.SlackBuild - | | `-- slack-desc - | |-- redland - | | |-- redland-1.0.16.tar.xz - | | |-- redland.SlackBuild - | | `-- slack-desc - | |-- sbc - | | |-- sbc-1.3.tar.xz - | | |-- sbc.SlackBuild - | | `-- slack-desc - | |-- sdl - | | |-- SDL-1.2.15.tar.xz - | | |-- SDL_image-1.2.12.tar.xz - | | |-- SDL_mixer-1.2.12.tar.xz - | | |-- SDL_mixer.usrlocal.diff.gz - | | |-- SDL_net-1.2.8.tar.xz - | | |-- SDL_ttf-2.0.11.tar.xz - | | |-- SDL_ttf.shaded.text.diff.gz - | | |-- libsdl-1.2.15-resizing.patch.gz - | | |-- sdl-1.2.14-fix-mouse-clicking.patch.gz - | | |-- sdl.SlackBuild - | | `-- slack-desc - | |-- serf - | | |-- serf-1.3.8.tar.xz - | | |-- serf.SlackBuild - | | `-- slack-desc - | |-- sg3_utils - | | |-- sg3_utils-1.42.tar.xz - | | |-- sg3_utils.SlackBuild - | | |-- sg3_utils.info - | | `-- slack-desc - | |-- shared-desktop-ontologies - | | |-- shared-desktop-ontologies-0.11.0.tar.bz2 - | | |-- shared-desktop-ontologies.SlackBuild - | | `-- slack-desc - | |-- shared-mime-info - | | |-- doinst.sh.gz - | | |-- shared-mime-info-1.6.tar.xz - | | |-- shared-mime-info.SlackBuild - | | `-- slack-desc - | |-- sip - | | |-- sip-4.18.tar.xz - | | |-- sip.SlackBuild - | | `-- slack-desc - | |-- slang - | | |-- slack-desc - | | |-- slang-2.3.0.tar.xz - | | `-- slang.SlackBuild - | |-- slang1 - | | |-- slack-desc - | | |-- slang-1.4.9.tar.bz2 - | | `-- slang1.SlackBuild - | |-- soprano - | | |-- slack-desc - | | |-- soprano-2.9.4.tar.bz2 - | | `-- soprano.SlackBuild - | |-- sound-theme-freedesktop - | | |-- slack-desc - | | |-- sound-theme-freedesktop-0.7.tar.xz - | | |-- sound-theme-freedesktop.SlackBuild - | | `-- sound-theme-freedesktop.url - | |-- speexdsp - | | |-- slack-desc - | | |-- speexdsp-1.2rc3.tar.xz - | | `-- speexdsp.SlackBuild - | |-- startup-notification - | | |-- slack-desc - | | |-- startup-notification-0.12.tar.xz - | | `-- startup-notification.SlackBuild - | |-- strigi - | | |-- README - | | |-- libstreamanalyzer-0001-Fix-for-non-valid-values-in-Exif-field-ISOSpeedRatin.patch.gz - | | |-- libstreamanalyzer-0002-order-matters-for-systems-that-have-things-already-i.patch.gz - | | |-- libstreamanalyzer-0003-Fix-Krazy-issues.patch.gz - | | |-- libstreamanalyzer-0004-ffmpeg-Rename-mutex-to-g_mutex.patch.gz - | | |-- libstreamanalyzer-0005-use-rpath-only-when-needed.patch.gz - | | |-- libstreams-0001-Generate-config.h-after-looking-for-dependencies.patch.gz - | | |-- libstreams-0002-Reduce-noise-in-analysis-tools-complain-about-resour.patch.gz - | | |-- libstreams-0003-Build-fix-for-gcc-4.8.patch.gz - | | |-- libstreams-0004-Fix-Krazy-issues.patch.gz - | | |-- libstreams-0005-use-rpath-only-when-needed.patch.gz - | | |-- slack-desc - | | |-- strigi-0.7.8.tar.xz - | | |-- strigi.SlackBuild - | | `-- strigi.info - | |-- svgalib - | | |-- slack-desc - | | |-- svgalib-1.9.25-kernel-2.6.26.diff.gz - | | |-- svgalib-1.9.25-round_gtf_gtfcalc_c.patch.gz - | | |-- svgalib-1.9.25-vga_getmodenumber.patch.gz - | | |-- svgalib-1.9.25.tar.bz2 - | | |-- svgalib.SlackBuild - | | |-- svgalib.nohelper.diff.gz - | | `-- svgalib.prefix.diff.gz - | |-- system-config-printer - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- system-config-printer-1.3.13.tar.xz - | | |-- system-config-printer-1.3.13.tar.xz.sig - | | `-- system-config-printer.SlackBuild - | |-- t1lib - | | |-- slack-desc - | | |-- t1lib-5.1.2.tar.xz - | | |-- t1lib.SlackBuild - | | `-- t1lib_5.1.2-3.5.diff.gz - | |-- taglib - | | |-- slack-desc - | | |-- taglib-1.10.tar.xz - | | `-- taglib.SlackBuild - | |-- taglib-extras - | | |-- slack-desc - | | |-- taglib-extras-1.0.1.tar.gz - | | `-- taglib-extras.SlackBuild - | |-- tango-icon-theme - | | |-- slack-desc - | | |-- tango-icon-theme-0.8.90.tar.bz2 - | | `-- tango-icon-theme.SlackBuild - | |-- tango-icon-theme-extras - | | |-- slack-desc - | | |-- tango-icon-theme-extras-0.1.0.tar.bz2 - | | `-- tango-icon-theme-extras.SlackBuild - | |-- urwid - | | |-- slack-desc - | | |-- urwid-1.0.3.tar.xz - | | |-- urwid.SlackBuild - | | `-- urwid.url - | |-- v4l-utils - | | |-- slack-desc - | | |-- v4l-utils-1.10.0.tar.xz - | | `-- v4l-utils.SlackBuild - | |-- virtuoso-ose - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- virtuoso-opensource-6.1.8.tar.xz - | | `-- virtuoso-ose.SlackBuild - | |-- vte - | | |-- fix_meta_alt_keybinding.patch.gz - | | |-- slack-desc - | | |-- vte-0.28.2.tar.xz - | | |-- vte.SlackBuild - | | `-- vte.escape.cpu.usage.diff.gz - | |-- wavpack - | | |-- slack-desc - | | |-- wavpack-4.75.2.tar.xz - | | `-- wavpack.SlackBuild - | |-- xapian-core - | | |-- slack-desc - | | |-- xapian-core-1.2.22.tar.xz - | | `-- xapian-core.SlackBuild - | `-- zlib - | |-- slack-desc - | |-- zlib-1.2.8.tar.xz - | `-- zlib.SlackBuild - |-- n - | |-- ModemManager - | | |-- ModemManager-1.4.14.tar.xz - | | |-- ModemManager.SlackBuild - | | |-- WeDoNotHaveSystemD.patch.gz - | | `-- slack-desc - | |-- NetworkManager - | | |-- 55NetworkManager - | | |-- NetworkManager-1.2.2.tar.xz - | | |-- NetworkManager.SlackBuild - | | |-- NetworkManager.conf - | | |-- conf.d - | | | |-- 00-dhcp-client.conf - | | | `-- 00-rc-manager.conf - | | |-- doinst.sh - | | |-- rc.networkmanager - | | `-- slack-desc - | |-- alpine - | | |-- alpine-2.20.tar.xz - | | |-- alpine.SlackBuild - | | |-- alpine.manpage.diff.gz - | | |-- doinst.sh.alpine - | | |-- pinepgp-0.18.0-makefile-sed-fix.diff.gz - | | |-- pinepgp-0.18.0.tar.gz - | | |-- pinepgp-0.18.0.tar.gz.sig - | | |-- pinepgp.pinegpgp.in.diff.gz - | | |-- slack-desc.alpine - | | `-- slack-desc.imapd - | |-- autofs - | | |-- autofs-5.0.7.tar.sign - | | |-- autofs-5.0.7.tar.xz - | | |-- autofs.SlackBuild - | | |-- autofs.sasl.diff.gz - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- biff+comsat - | | |-- biff+comsat-0.17.diff.gz - | | |-- biff+comsat-0.17.tar.gz - | | |-- biff+comsat.SlackBuild - | | |-- biff+comsat.badutmp.diff.gz - | | |-- biff+comsat.offset.diff.gz - | | `-- slack-desc - | |-- bind - | | |-- 3link.sh - | | |-- bind-9.10.4-P1.tar.gz - | | |-- bind-9.10.4-P1.tar.gz.asc - | | |-- bind-9.10.4-P1.tar.gz.sha1.asc - | | |-- bind-9.10.4-P1.tar.gz.sha256.asc - | | |-- bind-9.10.4-P1.tar.gz.sha512.asc - | | |-- bind.SlackBuild - | | |-- bind.so_bsdcompat.diff.gz - | | |-- caching-example - | | | |-- localhost.zone - | | | |-- named.conf - | | | |-- named.local - | | | `-- named.root - | | |-- doinst.sh.gz - | | |-- rc.bind - | | `-- slack-desc - | |-- bluez - | | |-- bluez-5.30-obexd_without_systemd-1.patch.gz - | | |-- bluez-5.40.tar.xz - | | |-- bluez.SlackBuild - | | |-- btusb.conf - | | |-- config - | | | |-- defaultconfig - | | | |-- rc.bluetooth - | | | `-- uart.conf - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- bluez-firmware - | | |-- bluez-firmware-1.2.tar.bz2 - | | |-- bluez-firmware.SlackBuild - | | `-- slack-desc - | |-- bootp - | | |-- _bootp.tar.gz - | | |-- bootp.SlackBuild - | | |-- bootp_2.4.3-15.diff.gz - | | |-- bootp_2.4.3.orig.tar.gz - | | |-- bootptab.gz - | | `-- slack-desc - | |-- bridge-utils - | | |-- bridge-utils-1.5-linux_3.8.x.patch.gz - | | |-- bridge-utils-1.5.tar.xz - | | |-- bridge-utils.SlackBuild - | | `-- slack-desc - | |-- bsd-finger - | | |-- bsd-finger-0.17.diff.gz - | | |-- bsd-finger-0.17.tar.gz - | | |-- bsd-finger.SlackBuild - | | `-- slack-desc - | |-- ca-certificates - | | |-- ca-certificates.SlackBuild - | | |-- ca-certificates_20160104.tar.xz - | | |-- doinst.sh.gz - | | |-- patches - | | | |-- fixup_DESTDIR.diff.gz - | | | `-- fixup_update-ca-certificates.diff.gz - | | |-- setup.11.cacerts - | | `-- slack-desc - | |-- cifs-utils - | | |-- cifs-utils-6.4.tar.xz - | | |-- cifs-utils.SlackBuild - | | `-- slack-desc - | |-- conntrack-tools - | | |-- conntrack-tools-1.4.3.tar.xz - | | |-- conntrack-tools.SlackBuild - | | `-- slack-desc - | |-- crda - | | |-- crda-3.18.tar.sign - | | |-- crda-3.18.tar.xz - | | |-- crda.SlackBuild - | | |-- get_regdb.sh - | | |-- slack-desc - | | |-- wireless-regdb-2016.02.08.tar.sign - | | `-- wireless-regdb-2016.02.08.tar.xz - | |-- curl - | | |-- cacert-fetch.sh - | | |-- cacert.pem.bz2 - | | |-- curl-7.49.1.tar.bz2 - | | |-- curl-7.49.1.tar.bz2.asc - | | |-- curl.SlackBuild - | | `-- slack-desc - | |-- cyrus-sasl - | | |-- cyrus-sasl-2.1.26-null-crypt.patch.gz - | | |-- cyrus-sasl-2.1.26-size_t.patch.gz - | | |-- cyrus-sasl-2.1.26.tar.xz - | | |-- cyrus-sasl.SlackBuild - | | |-- doinst.sh.gz - | | |-- rc.saslauthd.gz - | | `-- slack-desc - | |-- dhcp - | | |-- dhclient-script.PATH.diff.gz - | | |-- dhcp-4.3.4.tar.gz - | | |-- dhcp-4.3.4.tar.gz.asc - | | |-- dhcp-4.3.4.tar.gz.sha1.asc - | | |-- dhcp-4.3.4.tar.gz.sha256.asc - | | |-- dhcp-4.3.4.tar.gz.sha512.asc - | | |-- dhcp-remove-bind-tarball.sh - | | |-- dhcp.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- dhcpcd - | | |-- COPYRIGHT.gz - | | |-- dhcpcd-6.8.2.tar.xz - | | |-- dhcpcd.SlackBuild - | | |-- doinst.sh.gz - | | |-- patches - | | | `-- dhcpcd.conf-Don-t-invoke-wpa_supplicant-by-default.patch - | | `-- slack-desc - | |-- dirmngr - | | |-- dirmngr-1.1.1.tar.xz - | | |-- dirmngr-pth-fix.patch.gz - | | |-- dirmngr.SlackBuild - | | `-- slack-desc - | |-- dnsmasq - | | |-- dnsmasq-2.76.tar.xz - | | |-- dnsmasq-2.76.tar.xz.asc - | | |-- dnsmasq.SlackBuild - | | |-- dnsmasq.leasedir.diff.gz - | | |-- doinst.sh.gz - | | |-- rc.dnsmasq.gz - | | `-- slack-desc - | |-- ebtables - | | |-- doinst.sh.gz - | | |-- ebtables-v2.0.10-4.tar.xz - | | |-- ebtables.SlackBuild - | | `-- slack-desc - | |-- elm - | | |-- config.sh - | | |-- elm.SlackBuild - | | |-- elm2.5.8.tar.bz2 - | | `-- slack-desc - | |-- epic5 - | | |-- epic-help-current.tar.xz - | | |-- epic5-2.0.tar.xz - | | |-- epic5.SlackBuild - | | `-- slack-desc - | |-- ethtool - | | |-- ethtool-4.5.tar.sign - | | |-- ethtool-4.5.tar.xz - | | |-- ethtool.SlackBuild - | | `-- slack-desc - | |-- fetchmail - | | |-- fetchmail-6.3.26.tar.xz - | | |-- fetchmail-6.3.26.tar.xz.asc - | | |-- fetchmail.SlackBuild - | | |-- fetchmail.url - | | `-- slack-desc - | |-- getmail - | | |-- getmail-4.47.0.tar.gz - | | |-- getmail.SlackBuild - | | `-- slack-desc - | |-- gnupg - | | |-- gnupg-1.4.20.tar.xz - | | |-- gnupg.SlackBuild - | | `-- slack-desc.gnupg - | |-- gnupg2 - | | |-- gnupg-2.0.30.tar.xz - | | |-- gnupg2.SlackBuild - | | `-- slack-desc - | |-- gnutls - | | |-- gnutls-3.4.13.tar.xz - | | |-- gnutls-3.4.13.tar.xz.sig - | | |-- gnutls.SlackBuild - | | `-- slack-desc - | |-- gpa - | | |-- doinst.sh.gz - | | |-- gpa-0.9.9.tar.xz - | | |-- gpa.SlackBuild - | | `-- slack-desc - | |-- gpgme - | | |-- gpgme-1.6.0.tar.bz2 - | | |-- gpgme-1.6.0.tar.bz2.sig - | | |-- gpgme.SlackBuild - | | `-- slack-desc - | |-- htdig - | | |-- doinst.sh.gz - | | |-- htdig-3.2.0b6.diff.gz - | | |-- htdig-3.2.0b6.tar.bz2 - | | |-- htdig.SlackBuild - | | |-- htdig.conf.diff.gz - | | `-- slack-desc - | |-- httpd - | | |-- doinst.sh.gz - | | |-- httpd-2.4.20.tar.bz2 - | | |-- httpd-2.4.20.tar.bz2.asc - | | |-- httpd.SlackBuild - | | |-- httpd.runasapache.diff.gz - | | |-- httpd.url - | | |-- logrotate.httpd - | | |-- rc.httpd - | | `-- slack-desc - | |-- icmpinfo - | | |-- icmpinfo-1.11-time.diff.gz - | | |-- icmpinfo-1.11.diff.gz - | | |-- icmpinfo-1.11.tar.gz - | | |-- icmpinfo.SlackBuild - | | `-- slack-desc - | |-- idnkit - | | |-- idnkit-1.0-src.tar.xz - | | |-- idnkit.SlackBuild - | | `-- slack-desc - | |-- iftop - | | |-- iftop-1.0pre2.tar.xz - | | |-- iftop.SlackBuild - | | `-- slack-desc - | |-- imapd -> alpine - | |-- inetd - | | |-- _inetd.tar.gz - | | |-- fix-x86_64-daytime-segfault.diff.gz - | | |-- inetd-OpenBSD-1.79.diff.gz - | | |-- inetd-OpenBSD-1.79.tar.gz - | | |-- inetd.SlackBuild - | | |-- inetd.loopingdos.diff.gz - | | `-- slack-desc - | |-- iproute2 - | | |-- doinst.sh.gz - | | |-- iproute2-4.4.0.tar.sign - | | |-- iproute2-4.4.0.tar.xz - | | |-- iproute2.SlackBuild - | | `-- slack-desc - | |-- ipset - | | |-- ipset-6.20.tar.xz - | | |-- ipset.SlackBuild - | | `-- slack-desc - | |-- iptables - | | |-- iptables-1.6.0.tar.xz - | | |-- iptables.SlackBuild - | | `-- slack-desc - | |-- iptraf-ng - | | |-- iptraf-ng-1.1.4.tar.xz - | | |-- iptraf-ng.SlackBuild - | | `-- slack-desc - | |-- iputils - | | |-- iputils-s20140519.tar.xz - | | |-- iputils.SlackBuild - | | `-- slack-desc - | |-- ipw2100-fw - | | |-- ipw2100-fw-1.3.tar.bz2 - | | `-- ipw2100-fw.SlackBuild - | |-- ipw2200-fw - | | |-- ipw2200-fw-3.1.tar.xz - | | `-- ipw2200-fw.SlackBuild - | |-- irssi - | | |-- doinst.sh.gz - | | |-- irssi-0.8.19.tar.xz - | | |-- irssi-0.8.19.tar.xz.asc - | | |-- irssi.SlackBuild - | | `-- slack-desc - | |-- iw - | | |-- iw-4.3.tar.xz - | | |-- iw.SlackBuild - | | |-- iw.url - | | `-- slack-desc - | |-- lftp - | | |-- doinst.sh.gz - | | |-- lftp-4.7.2.tar.xz - | | |-- lftp-4.7.2.tar.xz.asc - | | |-- lftp.SlackBuild - | | `-- slack-desc - | |-- libassuan - | | |-- libassuan-2.4.2.tar.bz2 - | | |-- libassuan-2.4.2.tar.bz2.sig - | | |-- libassuan.SlackBuild - | | `-- slack-desc - | |-- libgcrypt - | | |-- libgcrypt-1.7.1.tar.bz2 - | | |-- libgcrypt-1.7.1.tar.bz2.sig - | | |-- libgcrypt.SlackBuild - | | `-- slack-desc - | |-- libgpg-error - | | |-- libgpg-error-1.23.tar.bz2 - | | |-- libgpg-error-1.23.tar.bz2.sig - | | |-- libgpg-error.SlackBuild - | | `-- slack-desc - | |-- libksba - | | |-- libksba-1.3.3.tar.bz2 - | | |-- libksba-1.3.3.tar.bz2.sig - | | |-- libksba.SlackBuild - | | `-- slack-desc - | |-- libmbim - | | |-- libmbim-1.12.2.tar.xz - | | |-- libmbim.SlackBuild - | | `-- slack-desc - | |-- libmnl - | | |-- libmnl-1.0.3.tar.xz - | | |-- libmnl.SlackBuild - | | `-- slack-desc - | |-- libndp - | | |-- libndp-1.6.tar.xz - | | |-- libndp.SlackBuild - | | `-- slack-desc - | |-- libnetfilter_acct - | | |-- libnetfilter_acct-1.0.2.tar.xz - | | |-- libnetfilter_acct.SlackBuild - | | `-- slack-desc - | |-- libnetfilter_conntrack - | | |-- libnetfilter_conntrack-1.0.5.tar.xz - | | |-- libnetfilter_conntrack.SlackBuild - | | `-- slack-desc - | |-- libnetfilter_cthelper - | | |-- libnetfilter_cthelper-1.0.0.tar.xz - | | |-- libnetfilter_cthelper.SlackBuild - | | `-- slack-desc - | |-- libnetfilter_cttimeout - | | |-- libnetfilter_cttimeout-1.0.0.tar.xz - | | |-- libnetfilter_cttimeout.SlackBuild - | | `-- slack-desc - | |-- libnetfilter_log - | | |-- libnetfilter_log-1.0.1.tar.xz - | | |-- libnetfilter_log.SlackBuild - | | `-- slack-desc - | |-- libnetfilter_queue - | | |-- libnetfilter_queue-1.0.2.tar.xz - | | |-- libnetfilter_queue.SlackBuild - | | `-- slack-desc - | |-- libnfnetlink - | | |-- libnfnetlink-1.0.1.tar.xz - | | |-- libnfnetlink.SlackBuild - | | `-- slack-desc - | |-- libnftnl - | | |-- libnftnl-1.0.6.tar.xz - | | |-- libnftnl.SlackBuild - | | `-- slack-desc - | |-- libqmi - | | |-- libqmi-1.12.6.tar.xz - | | |-- libqmi.SlackBuild - | | `-- slack-desc - | |-- libtirpc - | | |-- doinst.sh.gz - | | |-- libtirpc-1.0.1.tar.xz - | | |-- libtirpc.SlackBuild - | | `-- slack-desc - | |-- links - | | |-- links-2.12.tar.xz - | | |-- links.SlackBuild - | | `-- slack-desc - | |-- lynx - | | |-- lynx.SlackBuild - | | |-- lynx.cfg.diff.gz - | | |-- lynx2.8.8rel.2.tar.xz - | | `-- slack-desc - | |-- mailx - | | |-- doinst.sh.gz - | | |-- heirloom-mailx-12.5-fixes-1.patch.gz - | | |-- mailx-12.5.tar.xz - | | |-- mailx.SlackBuild - | | `-- slack-desc - | |-- mcabber - | | |-- mcabber-1.0.1.tar.xz - | | |-- mcabber.SlackBuild - | | `-- slack-desc - | |-- metamail - | | |-- metamail-2.7.tar.xz - | | |-- metamail.SlackBuild - | | |-- metamail.automake.diff.xz - | | |-- metamail.uue.getline.diff.gz - | | |-- metamail_2.7-54.diff.xz - | | `-- slack-desc - | |-- mobile-broadband-provider-info - | | |-- README - | | |-- mobile-broadband-provider-info-20151214.tar.xz - | | |-- mobile-broadband-provider-info.SlackBuild - | | |-- mobile-broadband-provider-info.pc.diff.gz - | | `-- slack-desc - | |-- mtr - | | |-- mtr-0.86.tar.xz - | | |-- mtr.SlackBuild - | | `-- slack-desc - | |-- mutt - | | |-- doinst.sh.gz - | | |-- mutt-1.6.1.tar.xz - | | |-- mutt.SlackBuild - | | `-- slack-desc - | |-- nc - | | |-- nc-110-21.diff.gz - | | |-- nc.SlackBuild - | | |-- nc.diff.gz - | | |-- nc110.tgz - | | `-- slack-desc - | |-- ncftp - | | |-- ncftp-3.2.5-src.tar.bz2 - | | |-- ncftp.SlackBuild - | | `-- slack-desc - | |-- net-snmp - | | |-- doinst.sh.gz - | | |-- net-snmp-5.7.3.tar.xz - | | |-- net-snmp.SlackBuild - | | |-- net-snmp.net-snmp-create-v3-user.etc.snmpd.conf.diff.gz - | | |-- rc.snmpd - | | |-- slack-desc - | | `-- snmpd.conf.gz - | |-- net-tools - | | |-- ipmask.8 - | | |-- ipmask.c - | | |-- net-tools-1.60.20120726git.tar.xz - | | |-- net-tools.SlackBuild - | | |-- net-tools.config.h.gz - | | |-- net-tools.url - | | `-- slack-desc - | |-- netatalk - | | |-- afppasswd - | | |-- doinst.sh.gz - | | |-- netatalk-2.2.3.tar.xz - | | |-- netatalk.SlackBuild - | | |-- netatalk.etc2ps.diff.gz - | | |-- rc.atalk.new - | | `-- slack-desc - | |-- netdate - | | |-- netdate.SlackBuild - | | |-- netdate.diff.gz - | | |-- netdate.diff2.gz - | | |-- netdate.tar.gz - | | `-- slack-desc - | |-- netkit-bootparamd - | | |-- netkit-bootparamd-0.17.tar.gz - | | |-- netkit-bootparamd.SlackBuild - | | `-- slack-desc - | |-- netkit-ftp - | | |-- netkit-ftp-0.17.tar.gz - | | |-- netkit-ftp.SlackBuild - | | |-- patches - | | | |-- 01-netkit-ftp-0.17-pre20000412.pasv-security.patch - | | | |-- 02-netkit-ftp-0.17-acct.patch - | | | |-- 03-netkit-ftp.usagi-ipv6.patch - | | | |-- 04-netkit-ftp-0.17-segv.patch - | | | |-- 05-netkit-ftp-0.17-volatile.patch - | | | |-- 06-netkit-ftp-0.17-runique_mget.patch - | | | |-- 06-netkit-ftp-locale.patch - | | | |-- 07-netkit-ftp-0.17-printf.patch - | | | |-- 08-netkit-ftp-0.17-longint.patch - | | | |-- 09-netkit-ftp-0.17-vsftp165083.patch - | | | |-- 10-netkit-ftp-0.17-C-Frame121.patch - | | | |-- 11-netkit-ftp-0.17-data.patch - | | | |-- 12-netkit-ftp-0.17-multihome.patch - | | | |-- 13-netkit-ftp-0.17-longnames.patch - | | | |-- 14-netkit-ftp-0.17-multiipv6.patch - | | | |-- 15-netkit-ftp-0.17-nodebug.patch - | | | |-- 16-netkit-ftp-0.17-stamp.patch - | | | |-- 17-netkit-ftp-0.17-sigseg.patch - | | | |-- 18-netkit-ftp-0.17-size.patch - | | | |-- 19-netkit-ftp-0.17-fdleak.patch - | | | |-- 20-netkit-ftp-0.17-fprintf.patch - | | | |-- 21-netkit-ftp-0.17-bitrate.patch - | | | |-- 22-netkit-ftp-0.17-arg_max.patch - | | | |-- 23-netkit-ftp-0.17-case.patch - | | | |-- 24-netkit-ftp-0.17-chkmalloc.patch - | | | |-- 25-netkit-ftp-0.17-man.patch - | | | |-- 26-netkit-ftp-0.17-acct_ovl.patch - | | | |-- 27-netkit-ftp-0.17-remove-nested-include.patch - | | | |-- 28-netkit-ftp-0.17-linelen.patch - | | | |-- 29-netkit-ftp-0.17-active-mode-option.patch - | | | |-- 30-netkit-ftp-0.17-commands-leaks.patch - | | | |-- 31-netkit-ftp-0.17-lsn-timeout.patch - | | | |-- 32-netkit-ftp-0.17-getlogin.patch - | | | `-- 33-netkit-ftp-0.17-token.patch - | | `-- slack-desc - | |-- netkit-ntalk - | | |-- netkit-ntalk-0.11.diff.gz - | | |-- netkit-ntalk-0.11.tar.gz - | | |-- netkit-ntalk-0.17.diff.gz - | | |-- netkit-ntalk-0.17.tar.gz - | | |-- netkit-ntalk.SlackBuild - | | |-- ntalk-0.17-slackware-alt-talkd.patch.gz - | | `-- slack-desc - | |-- netkit-routed - | | |-- netkit-routed-0.17.diff.gz - | | |-- netkit-routed-0.17.tar.gz - | | |-- netkit-routed.SlackBuild - | | |-- routed.18.candidate.final.patch.gz - | | `-- slack-desc - | |-- netkit-rsh - | | |-- netkit-rsh-0.17.tar.gz - | | |-- netkit-rsh.SlackBuild - | | `-- slack-desc - | |-- netkit-rusers - | | |-- netkit-rusers-0.17.diff.gz - | | |-- netkit-rusers-0.17.tar.gz - | | |-- netkit-rusers.SlackBuild - | | `-- slack-desc - | |-- netkit-rwall - | | |-- netkit-rwall-0.17.tar.gz - | | |-- netkit-rwall.SlackBuild - | | `-- slack-desc - | |-- netkit-rwho - | | |-- netkit-rwho-0.17.diff.gz - | | |-- netkit-rwho-0.17.tar.gz - | | |-- netkit-rwho.SlackBuild - | | |-- rwhod_getloadavg.diff.gz - | | `-- slack-desc - | |-- netkit-timed - | | |-- netkit-timed-0.17.diff.gz - | | |-- netkit-timed-0.17.tar.gz - | | |-- netkit-timed.SlackBuild - | | `-- slack-desc - | |-- netpipes - | | |-- _netpipes.tar.gz - | | |-- netpipes-4.2-export.tar.gz - | | |-- netpipes.SlackBuild - | | `-- slack-desc - | |-- nettle - | | |-- nettle-3.2.tar.xz - | | |-- nettle.SlackBuild - | | `-- slack-desc - | |-- netwatch - | | |-- netwatch-1.3.1-2.tar.xz - | | |-- netwatch.SlackBuild - | | |-- netwatch.makefile.diff.gz - | | |-- netwatch.phonemyself.diff.gz - | | `-- slack-desc - | |-- network-scripts - | | |-- README.rc.inet1 - | | |-- doinst.sh.gz - | | |-- manpages - | | | |-- rc.inet1.8 - | | | `-- rc.inet1.conf.5 - | | |-- network-scripts.SlackBuild - | | |-- scripts - | | | |-- HOSTNAME - | | | |-- host.conf - | | | |-- hosts - | | | |-- hosts.allow - | | | |-- hosts.deny - | | | |-- hosts.equiv - | | | |-- netconfig - | | | |-- networks - | | | |-- nntpserver - | | | |-- protocols - | | | |-- rc.inet1 - | | | |-- rc.inet1.conf - | | | |-- rc.inet2 - | | | |-- rc.ip_forward - | | | |-- resolv.conf - | | | `-- setup.netconfig - | | `-- slack-desc - | |-- netwrite - | | |-- netwrite-0.17.diff.gz - | | |-- netwrite-0.17.tar.gz - | | |-- netwrite.SlackBuild - | | `-- slack-desc - | |-- newspost - | | |-- newspost-2.1.1.tar.gz - | | |-- newspost.SlackBuild - | | `-- slack-desc - | |-- nfacct - | | |-- nfacct-1.0.1.tar.xz - | | |-- nfacct.SlackBuild - | | `-- slack-desc - | |-- nfs-utils - | | |-- _nfs-utils.tar.gz - | | |-- doinst.sh.gz - | | |-- ignore_unsupported_address_types_in_nfssvc_setfds.diff.gz - | | |-- nfs-utils-1.3.3.tar.sign - | | |-- nfs-utils-1.3.3.tar.xz - | | |-- nfs-utils.SlackBuild - | | |-- nfs-utils.lwrap.needs.lnsl.diff.gz - | | |-- rc.nfsd - | | `-- slack-desc - | |-- nftables - | | |-- nftables-0.6.tar.xz - | | |-- nftables.SlackBuild - | | `-- slack-desc - | |-- nmap - | | |-- nmap-7.12.tar.xz - | | |-- nmap.SlackBuild - | | `-- slack-desc - | |-- nn - | | |-- NNTP.gz - | | |-- doinst.sh.gz - | | |-- m-x86_64.h.gz - | | |-- nn-6.7.3.tar.bz2 - | | |-- nn.SlackBuild - | | |-- nn.badnntphost.diff.gz - | | |-- nn.destdir.diff.gz - | | |-- nn.diff.gz - | | |-- nntpserver.gz - | | `-- slack-desc - | |-- ntp - | | |-- doinst.sh.gz - | | |-- ntp-4.2.8p8.tar.xz - | | |-- ntp.SlackBuild - | | |-- ntp.conf - | | |-- ntp.keys - | | |-- ntp.nano.diff.gz - | | |-- rc.ntpd - | | `-- slack-desc - | |-- obexftp - | | |-- obexftp-0.24-Source.tar.xz - | | |-- obexftp.SlackBuild - | | |-- patches - | | | |-- obexftp-0.24-fix-absurd-install-path.patch.gz - | | | |-- obexftp-0.24-fuse.patch.gz - | | | |-- obexftp-norpath.patch.gz - | | | `-- obexftp-pkgconfig_requires.patch.gz - | | `-- slack-desc - | |-- openldap-client - | | |-- doinst.sh.gz - | | |-- openldap-2.4.42.tar.xz - | | |-- openldap-client.SlackBuild - | | `-- slack-desc - | |-- openobex - | | |-- openobex-1.7.1-Source.tar.xz - | | |-- openobex.SlackBuild - | | `-- slack-desc - | |-- openssh - | | |-- doinst.sh.gz - | | |-- openssh-7.2p1-libwrap.diff.gz - | | |-- openssh-7.2p2.tar.gz - | | |-- openssh-7.2p2.tar.gz.asc - | | |-- openssh.SlackBuild - | | |-- rc.sshd - | | `-- slack-desc - | |-- openssl - | | |-- certwatch.gz - | | |-- doinst.sh-openssl-solibs.gz - | | |-- doinst.sh-openssl.gz - | | |-- openssl-1.0.2h.tar.gz - | | |-- openssl-1.0.2h.tar.gz.asc - | | |-- openssl.SlackBuild - | | |-- slack-desc.openssl - | | `-- slack-desc.openssl-solibs - | |-- openvpn - | | |-- README - | | |-- openvpn-2.3.11.tar.xz - | | |-- openvpn-2.3.11.tar.xz.asc - | | |-- openvpn.SlackBuild - | | |-- openvpn.conf.sample - | | |-- openvpn.url - | | `-- slack-desc - | |-- p11-kit - | | |-- p11-kit-0.23.2.tar.xz - | | |-- p11-kit.SlackBuild - | | `-- slack-desc - | |-- php - | | |-- doinst.sh.gz - | | |-- fetch-php.sh - | | |-- mod_php.conf.example - | | |-- pear - | | |-- php-5.6.23.tar.xz - | | |-- php-fpm.conf.diff.gz - | | |-- php.SlackBuild - | | |-- php.ini-development.diff.gz - | | `-- slack-desc - | |-- pidentd - | | |-- doinst.sh.gz - | | |-- pidentd-3.0.19.tar.gz - | | |-- pidentd-3.0.19.tar.gz.sig - | | |-- pidentd.SlackBuild - | | |-- pidentd.conf.diff.gz - | | `-- slack-desc - | |-- pinentry - | | |-- pinentry-0.9.7.tar.xz - | | |-- pinentry.SlackBuild - | | `-- slack-desc - | |-- popa3d - | | |-- doinst.sh.gz - | | |-- popa3d-1.0.3.tar.gz - | | |-- popa3d-1.0.3.tar.gz.sign - | | |-- popa3d.SlackBuild - | | |-- popa3d.diff.gz - | | `-- slack-desc - | |-- ppp - | | |-- doinst.sh.gz - | | |-- freeradius-client-1.1.6.tar.xz - | | |-- options.new.gz - | | |-- ppp-2.4.7.tar.xz - | | |-- ppp.CVE-2015-3310.diff.gz - | | |-- ppp.SlackBuild - | | |-- ppp.slack.diff.gz - | | |-- pppsetup-1.98.backupfiles.diff.gz - | | |-- pppsetup-1.98.moredevs.diff.gz - | | |-- pppsetup-1.98.pppoff.diff.gz - | | |-- pppsetup-1.98.slack.diff.gz - | | |-- pppsetup-1.98.tar.xz - | | |-- radius.msdict.gz - | | |-- realms.gz - | | `-- slack-desc - | |-- procmail - | | |-- _procmail.tar.gz - | | |-- procmail-3.22.tar.gz - | | |-- procmail-3.22.tar.gz.sig - | | |-- procmail.SlackBuild - | | |-- procmail.lfs.diff.gz - | | |-- procmail_3.22-5.diff.gz - | | `-- slack-desc - | |-- proftpd - | | |-- doinst.sh.gz - | | |-- etc - | | | |-- ftpusers - | | | `-- proftpd.conf - | | |-- proftpd-1.3.5b.tar.xz - | | |-- proftpd.SlackBuild - | | `-- slack-desc - | |-- pssh - | | |-- pssh-2.3.1.tar.gz - | | |-- pssh.SlackBuild - | | `-- slack-desc - | |-- pth - | | |-- pth-2.0.7.tar.bz2 - | | |-- pth.SlackBuild - | | `-- slack-desc - | |-- rdist - | | |-- rdist-6.1.5-00.linux.diff.gz - | | |-- rdist-6.1.5-01.links.diff.gz - | | |-- rdist-6.1.5-03.hardlink.diff.gz - | | |-- rdist-6.1.5-04.bison.diff.gz - | | |-- rdist-6.1.5-05.varargs.diff.gz - | | |-- rdist-6.1.5-06.maxargs.diff.gz - | | |-- rdist-6.1.5-07.lfs.diff.gz - | | |-- rdist-6.1.5-08.cleanup.diff.gz - | | |-- rdist-6.1.5-09.svr4.diff.gz - | | |-- rdist-6.1.5-10.ssh.diff.gz - | | |-- rdist-6.1.5-11.mkstemp.diff.gz - | | |-- rdist-6.1.5-12.stat64.diff.gz - | | |-- rdist-6.1.5-14.fix-msgsndnotify-loop.diff.gz - | | |-- rdist-6.1.5.tar.gz - | | |-- rdist-eu-license.txt - | | |-- rdist.SlackBuild - | | `-- slack-desc - | |-- rfkill - | | |-- rfkill-0.5.tar.xz - | | |-- rfkill.SlackBuild - | | |-- rfkill.url - | | `-- slack-desc - | |-- rp-pppoe - | | |-- doinst.sh.gz - | | |-- rp-pppoe-3.12.tar.xz - | | |-- rp-pppoe.SlackBuild - | | `-- slack-desc - | |-- rpcbind - | | |-- 0001-security.c-removed-warning.patch.gz - | | |-- 0002-Fix-memory-corruption-in-PMAP_CALLIT-code.patch.gz - | | |-- 0003-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch.gz - | | |-- 0004-Delete-the-unix-socket-only-if-we-have-created-it.patch.gz - | | |-- 01.rpcbind-manpage-statefile-explanation.patch.gz - | | |-- doinst.sh.gz - | | |-- rc.rpc.gz - | | |-- rpcbind-0.2.3.tar.bz2 - | | |-- rpcbind.SlackBuild - | | |-- rpcbind.lwrap.needs.lnsl.diff.gz - | | `-- slack-desc - | |-- rsync - | | |-- rsync-3.1.2.tar.xz - | | |-- rsync.SlackBuild - | | `-- slack-desc - | |-- samba - | | |-- doinst.sh.gz - | | |-- pytalloc-util.pc - | | |-- rc.samba - | | |-- samba-4.4.4.tar.asc - | | |-- samba-4.4.4.tar.xz - | | |-- samba.SlackBuild - | | |-- samba.install.talloc.tevent.tdb.diff.gz - | | |-- slack-desc - | | |-- smb.conf.default - | | |-- smb.conf.default.orig - | | |-- smb.conf.diff.gz - | | `-- talloc.pc - | |-- sendmail - | | |-- Build.gz - | | |-- SlackBuild-sendmail - | | |-- SlackBuild-sendmail-cf - | | |-- _sendmail.tar.gz - | | |-- linux.uucp.mc - | | |-- sendmail-slackware-tls-sasl.mc - | | |-- sendmail-slackware-tls.mc - | | |-- sendmail-slackware.mc - | | |-- sendmail.8.15.2.tar.gz - | | |-- sendmail.8.15.2.tar.gz.sig - | | |-- sendmail.SlackBuild - | | |-- site.config.m4 - | | |-- slack-desc.sendmail - | | `-- slack-desc.sendmail-cf - | |-- slrn - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- slrn-1.0.2.tar.xz - | | `-- slrn.SlackBuild - | |-- snownews - | | |-- slack-desc - | | |-- snownews-1.5.12.tar.gz - | | |-- snownews-1.5.12.tar.gz.asc - | | `-- snownews.SlackBuild - | |-- stunnel - | | |-- doinst.sh.gz - | | |-- generate-stunnel-key.sh - | | |-- slack-desc - | | |-- stunnel-5.31.tar.gz - | | |-- stunnel-5.31.tar.gz.asc - | | `-- stunnel.SlackBuild - | |-- tcp_wrappers - | | |-- slack-desc - | | |-- tcp_wrappers.SlackBuild - | | `-- tcp_wrappers_7.6.tar.gz - | |-- tcpdump - | | |-- slack-desc - | | |-- tcpdump-4.7.4.tar.gz - | | |-- tcpdump-4.7.4.tar.gz.sig - | | `-- tcpdump.SlackBuild - | |-- telnet - | | |-- netkit-telnet-0.17-ayt.patch.gz - | | |-- netkit-telnet-0.17.diff.gz - | | |-- netkit-telnet-0.17.tar.gz - | | |-- slack-desc - | | |-- telnet-OpenBSD-014_telnet.diff.gz - | | |-- telnet-OpenBSD-20020321.diff.gz - | | |-- telnet-OpenBSD-20020321.tar.gz - | | `-- telnet.SlackBuild - | |-- tftp-hpa - | | |-- slack-desc - | | |-- tftp-hpa-5.2.tar.sign - | | |-- tftp-hpa-5.2.tar.xz - | | `-- tftp-hpa.SlackBuild - | |-- tin - | | |-- slack-desc - | | |-- tin-2.2.1.tar.xz - | | |-- tin-2.2.1.tar.xz.sign - | | `-- tin.SlackBuild - | |-- traceroute - | | |-- slack-desc - | | |-- traceroute-2.0.21.tar.gz - | | `-- traceroute.SlackBuild - | |-- trn - | | |-- _trn.tar.gz - | | |-- config.sh.gz - | | |-- config.x86_64.sh.gz - | | |-- slack-desc - | | |-- trn-3.6.tar.gz - | | `-- trn.SlackBuild - | |-- ulogd - | | |-- doinst.sh.gz - | | |-- rc.ulogd - | | |-- slack-desc - | | |-- ulogd-2.0.5.tar.xz - | | `-- ulogd.SlackBuild - | |-- uucp - | | |-- _uucp.tar.gz - | | |-- policy.h.diff.gz - | | |-- slack-desc - | | |-- uucp-1.07.tar.gz - | | `-- uucp.SlackBuild - | |-- vlan - | | |-- slack-desc - | | |-- vlan.1.9.tar.bz2 - | | `-- vlan.SlackBuild - | |-- vsftpd - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- vsftpd-3.0.3.tar.gz - | | |-- vsftpd-3.0.3.tar.gz.asc - | | |-- vsftpd.SlackBuild - | | |-- vsftpd.builddefs.diff.gz - | | |-- vsftpd.conf.diff.gz - | | |-- vsftpd.crypt.diff.gz - | | `-- vsftpd.log.gz - | |-- wget - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- wget-1.18.tar.xz - | | |-- wget-1.18.tar.xz.sig - | | `-- wget.SlackBuild - | |-- whois - | | |-- slack-desc - | | |-- whois.SlackBuild - | | `-- whois_5.2.12.tar.xz - | |-- wireless-tools - | | |-- doinst.sh.gz - | | |-- scripts - | | | |-- rc.wireless - | | | `-- rc.wireless.conf - | | |-- slack-desc - | | |-- wireless_tools.29.tar.gz - | | |-- wireless_tools.SlackBuild - | | |-- wireless_tools.nowhine.diff.gz - | | `-- wireless_tools.static.diff.gz - | |-- wpa_supplicant - | | |-- README.slackware - | | |-- config - | | | |-- dot.config - | | | |-- wpa_gui.desktop - | | | |-- wpa_gui.png - | | | |-- wpa_supplicant.conf - | | | `-- wpa_supplicant.logrotate - | | |-- doinst.sh.gz - | | |-- patches - | | | |-- assoc-timeout.diff - | | | |-- dbus-service-file-args.diff - | | | |-- flush-debug-output.diff - | | | `-- quiet-scan-results-message.diff - | | |-- slack-desc - | | |-- wpa_supplicant-2.5.tar.xz - | | `-- wpa_supplicant.SlackBuild - | |-- yptools - | | |-- nsswitch.conf-nis.gz - | | |-- rc.yp.gz - | | |-- slack-desc - | | |-- yp-tools-2.14-glibc217-crypt.diff.gz - | | |-- yp-tools-2.14.tar.bz2 - | | |-- ypbind-mt-1.38.tar.bz2 - | | |-- ypserv-2.32.1.tar.bz2 - | | `-- yptools.SlackBuild - | |-- ytalk - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- ytalk-3.3.0.tar.bz2 - | | `-- ytalk.SlackBuild - | `-- zd1211-firmware - | |-- zd1211-firmware-1.4.tar.bz2 - | `-- zd1211-firmware.SlackBuild - |-- t - | |-- tetex - | | |-- jadetex-3.13.tar.gz - | | |-- jadetex.build - | | |-- profile.d - | | | |-- tetex.csh - | | | `-- tetex.sh - | | |-- slack-desc.tetex - | | |-- slack-desc.tetex-doc - | | |-- tetex-src-3.0.tar.xz - | | |-- tetex-texmf-3.0.tar.xz - | | |-- tetex-texmfsrc-3.0.tar.xz - | | |-- tetex.CVE-2005-3193.diff.gz - | | |-- tetex.SlackBuild - | | |-- tetex.afm2tfm.getline.diff.gz - | | |-- tetex.amstex.fmtutil.diff.gz - | | |-- tetex.browsers.diff.gz - | | |-- tetex.cpascal.getline.posix.2008.diff.gz - | | |-- tetex.dvipdfm.mkstemp.diff.gz - | | |-- tetex.etex.diff.gz - | | |-- tetex.fontcachedirinhome.diff.gz - | | |-- tetex.leet.diff.gz - | | |-- tetex.png14.diff.gz - | | |-- tetex.png16.diff.gz - | | |-- tetex.scripts.mktemp.diff.gz - | | |-- tetex.tmp.cleanup.diff.gz - | | `-- tetex.var.fonts.diff.gz - | |-- transfig - | | |-- slack-desc - | | |-- transfig.3.2.5e.tar.xz - | | |-- transfig.SlackBuild - | | `-- transfig.diff.gz - | `-- xfig - | |-- slack-desc - | |-- xfig-3.2.5c.paths.diff.gz - | |-- xfig-3.2.5c.skip.missing.html.manpage.diff.gz - | |-- xfig.3.2.5c.full.tar.xz - | |-- xfig.SlackBuild - | |-- xfig.fig.ad.diff.gz - | |-- xfig.no.pdf.ref.diff.gz - | `-- xfig.no.xfig_ref_en.pdf.diff.gz - |-- tcl - | |-- expect - | | |-- expect.SlackBuild - | | |-- expect5.45.tar.xz - | | `-- slack-desc - | |-- hfsutils - | | |-- hfsutils-3.2.6.tar.gz - | | |-- hfsutils-3.2.6.tar.gz.sign - | | |-- hfsutils.SlackBuild - | | |-- hfsutils.errno.diff.gz - | | `-- slack-desc - | |-- tcl - | | |-- slack-desc - | | |-- tcl.SlackBuild - | | `-- tcl8.6.5-src.tar.xz - | |-- tclx - | | |-- slack-desc - | | |-- tclx.SlackBuild - | | `-- tclx8.4.1.tar.xz - | |-- tix - | | |-- Tix8.4.3.tar.gz - | | |-- slack-desc - | | |-- tix.SlackBuild - | | |-- tix.soname.patch.gz - | | `-- tix.tcl8.5.patch.gz - | `-- tk - | |-- slack-desc - | |-- tk.SlackBuild - | `-- tk8.6.5-src.tar.xz - |-- x - | |-- anthy - | | |-- anthy-9100h.tar.xz - | | |-- anthy.SlackBuild - | | `-- slack-desc - | |-- dejavu-fonts-ttf - | | |-- dejavu-fonts-ttf-2.34.tar.xz - | | |-- dejavu-fonts-ttf.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- fontconfig - | | |-- doinst.sh.gz - | | |-- fontconfig-2.11.1.tar.xz - | | |-- fontconfig.SlackBuild - | | |-- fontconfig.dejavu.diff.gz - | | |-- fontconfig.font.dir.list.diff.gz - | | |-- setup.05.fontconfig - | | `-- slack-desc - | |-- freeglut - | | |-- RATIONALE - | | |-- freeglut-2.8.1.tar.xz - | | |-- freeglut.SlackBuild - | | `-- slack-desc - | |-- glew - | | |-- glew-1.13.0.tar.xz - | | |-- glew.SlackBuild - | | |-- glew.url - | | `-- slack-desc - | |-- glu - | | |-- glu-9.0.0.tar.xz - | | |-- glu.SlackBuild - | | |-- glu.url - | | `-- slack-desc - | |-- libXaw3dXft - | | |-- libXaw3dXft-1.6.2d.tar.xz - | | |-- libXaw3dXft.SlackBuild - | | `-- slack-desc - | |-- libdrm - | | |-- libdrm-2.4.68.tar.xz - | | |-- libdrm.SlackBuild - | | `-- slack-desc - | |-- libepoxy - | | |-- libepoxy-1.3.1.tar.xz - | | |-- libepoxy.SlackBuild - | | |-- libepoxy.url - | | `-- slack-desc - | |-- liberation-fonts-ttf - | | |-- 60-liberation.conf - | | |-- doinst.sh.gz - | | |-- liberation-fonts-ttf-1.07.4.tar.xz - | | |-- liberation-fonts-ttf.SlackBuild - | | `-- slack-desc - | |-- libevdev - | | |-- libevdev-1.4.1.tar.xz - | | |-- libevdev.SlackBuild - | | `-- slack-desc - | |-- libhangul - | | |-- libhangul-0.1.0.tar.xz - | | |-- libhangul.SlackBuild - | | `-- slack-desc - | |-- libva - | | |-- libva-1.6.2.tar.xz - | | |-- libva.SlackBuild - | | |-- libva.url - | | `-- slack-desc - | |-- libva-intel-driver - | | |-- libva-intel-driver-1.6.2.tar.xz - | | |-- libva-intel-driver.SlackBuild - | | |-- libva-intel-driver.url - | | `-- slack-desc - | |-- libvdpau - | | |-- doinst.sh - | | |-- libvdpau-1.1.1.tar.xz - | | |-- libvdpau.SlackBuild - | | |-- profile.d - | | | |-- vdpau.csh - | | | `-- vdpau.sh - | | `-- slack-desc - | |-- m17n-lib - | | |-- m17n-db-1.6.1.tar.xz - | | |-- m17n-lib-1.6.1.tar.xz - | | |-- m17n-lib.SlackBuild - | | `-- slack-desc - | |-- mesa - | | |-- README.GIT - | | |-- get-mesa.sh - | | |-- mesa-11.2.2.tar.xz - | | |-- mesa-11.2.2.tar.xz.sig - | | |-- mesa-demos-8.3.0.tar.xz - | | |-- mesa.SlackBuild - | | |-- mesa.no.mako.diff.gz - | | |-- mesa.url - | | |-- patches - | | `-- slack-desc - | |-- motif - | | |-- motif-2.3.4-bindings.patch.gz - | | |-- motif-2.3.4-mwmrc_dir.patch.gz - | | |-- motif-2.3.4-no_demos.patch.gz - | | |-- motif-2.3.5.tar.xz - | | |-- motif.SlackBuild - | | |-- motif.rgbtxt.patch.gz - | | `-- slack-desc - | |-- mtdev - | | |-- mtdev-1.1.5.tar.xz - | | |-- mtdev.SlackBuild - | | |-- mtdev.url - | | `-- slack-desc - | |-- sazanami-fonts-ttf - | | |-- sazanami-20040629.tar.bz2 - | | |-- sazanami-fonts-ttf.SlackBuild - | | `-- slack-desc - | |-- scim - | | |-- scim-1.4.15.tar.xz - | | |-- scim-disable-subdir-objects.patch.gz - | | |-- scim-setup.desktop - | | |-- scim.SlackBuild - | | |-- scim.desktop - | | `-- slack-desc - | |-- scim-anthy - | | |-- scim-anthy-1.2.7.tar.xz - | | |-- scim-anthy.SlackBuild - | | |-- scim-anthy.gcc43.diff.gz - | | `-- slack-desc - | |-- scim-hangul - | | |-- scim-hangul-0.3.2+gcc-4.3.patch.gz - | | |-- scim-hangul-0.3.2+gcc-4.7.patch.gz - | | |-- scim-hangul-0.4.0+gtk.patch.gz - | | |-- scim-hangul-0.4.0.tar.xz - | | |-- scim-hangul.SlackBuild - | | `-- slack-desc - | |-- scim-input-pad - | | |-- scim-input-pad-0.1.3.1.tar.xz - | | |-- scim-input-pad.SlackBuild - | | `-- slack-desc - | |-- scim-m17n - | | |-- scim-m17n-0.2.3.tar.gz - | | |-- scim-m17n.SlackBuild - | | `-- slack-desc - | |-- scim-pinyin - | | |-- scim-pinyin-0.5.92.tar.xz - | | |-- scim-pinyin.SlackBuild - | | `-- slack-desc - | |-- scim-tables - | | |-- scim-tables-0.5.14.1.tar.xz - | | |-- scim-tables.SlackBuild - | | `-- slack-desc - | |-- sinhala_lklug-font-ttf - | | |-- sinhala_lklug-font-ttf.SlackBuild - | | |-- sinhala_lklug.ttf - | | `-- slack-desc - | |-- tibmachuni-font-ttf - | | |-- TibetanMachineUnicodeFont.zip - | | |-- slack-desc - | | `-- tibmachuni-font-ttf.SlackBuild - | |-- ttf-indic-fonts - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- ttf-indic-fonts.SlackBuild - | | `-- ttf-indic-fonts_0.5.14.tar.xz - | |-- wqy-zenhei-font-ttf - | | |-- fixup-fontconfig-file.diff.gz - | | |-- slack-desc - | | |-- wqy-zenhei-0.8.38-1.tar.bz2 - | | `-- wqy-zenhei-font-ttf.SlackBuild - | |-- x11 - | | |-- arch.use.flags - | | |-- build - | | | |-- appres - | | | |-- bdftopcf - | | | |-- beforelight - | | | |-- bitmap - | | | |-- compiz - | | | |-- dri2proto - | | | |-- dri3proto - | | | |-- editres - | | | |-- fixesproto - | | | |-- font-util - | | | |-- fonttosfnt - | | | |-- fslsfonts - | | | |-- fstobdf - | | | |-- iceauth - | | | |-- ico - | | | |-- imake - | | | |-- increment-all-drivers.sh - | | | |-- increment.sh - | | | |-- intel-gpu-tools - | | | |-- libICE - | | | |-- libSM - | | | |-- libX11 - | | | |-- libXScrnSaver - | | | |-- libXau - | | | |-- libXaw3d - | | | |-- libXcm - | | | |-- libXcomposite - | | | |-- libXcursor - | | | |-- libXdamage - | | | |-- libXdmcp - | | | |-- libXevie - | | | |-- libXext - | | | |-- libXfont - | | | |-- libXfontcache - | | | |-- libXft - | | | |-- libXinerama - | | | |-- libXmu - | | | |-- libXp - | | | |-- libXpm - | | | |-- libXres - | | | |-- libXtst - | | | |-- libXv - | | | |-- libXvMC - | | | |-- libXxf86dga - | | | |-- libXxf86misc - | | | |-- libXxf86vm - | | | |-- libdmx - | | | |-- libxshmfence - | | | |-- listres - | | | |-- lndir - | | | |-- luit - | | | |-- makedepend - | | | |-- mkcomposecache - | | | |-- mkfontscale - | | | |-- oclock - | | | |-- presentproto - | | | |-- rgb - | | | |-- sessreg - | | | |-- showfont - | | | |-- transset - | | | |-- viewres - | | | |-- xauth - | | | |-- xbacklight - | | | |-- xbiff - | | | |-- xbitmaps - | | | |-- xcalc - | | | |-- xcb-proto - | | | |-- xcb-util - | | | |-- xcb-util-cursor - | | | |-- xcb-util-image - | | | |-- xcb-util-keysyms - | | | |-- xcb-util-renderutil - | | | |-- xcb-util-wm - | | | |-- xclipboard - | | | |-- xclock - | | | |-- xcm - | | | |-- xconsole - | | | |-- xcursorgen - | | | |-- xdbedizzy - | | | |-- xdm - | | | |-- xedit - | | | |-- xextproto - | | | |-- xeyes - | | | |-- xf86-input-acecad - | | | |-- xf86-input-aiptek - | | | |-- xf86-input-joystick - | | | |-- xf86-input-keyboard - | | | |-- xf86-input-mouse - | | | |-- xf86-input-penmount - | | | |-- xf86-input-synaptics - | | | |-- xf86-input-vmmouse - | | | |-- xf86-input-void - | | | |-- xf86-video-apm - | | | |-- xf86-video-ark - | | | |-- xf86-video-ast - | | | |-- xf86-video-chips - | | | |-- xf86-video-cirrus - | | | |-- xf86-video-dummy - | | | |-- xf86-video-glint - | | | |-- xf86-video-i128 - | | | |-- xf86-video-i740 - | | | |-- xf86-video-mach64 - | | | |-- xf86-video-mga - | | | |-- xf86-video-neomagic - | | | |-- xf86-video-nv - | | | |-- xf86-video-omap - | | | |-- xf86-video-s3 - | | | |-- xf86-video-s3virge - | | | |-- xf86-video-savage - | | | |-- xf86-video-siliconmotion - | | | |-- xf86-video-sis - | | | |-- xf86-video-sisusb - | | | |-- xf86-video-tdfx - | | | |-- xf86-video-tga - | | | |-- xf86-video-trident - | | | |-- xf86-video-tseng - | | | |-- xf86-video-v4l - | | | |-- xf86-video-vesa - | | | |-- xf86-video-vmware - | | | |-- xf86-video-voodoo - | | | |-- xf86-video-xgi - | | | |-- xf86-video-xgixp - | | | |-- xf86dga - | | | |-- xfd - | | | |-- xfontsel - | | | |-- xfs - | | | |-- xfsinfo - | | | |-- xinit - | | | |-- xkbcomp - | | | |-- xkbutils - | | | |-- xkill - | | | |-- xload - | | | |-- xlogo - | | | |-- xlsclients - | | | |-- xman - | | | |-- xmessage - | | | |-- xmore - | | | |-- xorg-cf-files - | | | |-- xorg-server - | | | |-- xorg-sgml-doctools - | | | |-- xpr - | | | |-- xprop - | | | |-- xpyb - | | | |-- xrdb - | | | |-- xrefresh - | | | |-- xscope - | | | |-- xset - | | | |-- xsetroot - | | | |-- xsm - | | | |-- xstdcmap - | | | |-- xvidtune - | | | |-- xwd - | | | |-- xwininfo - | | | `-- xwud - | | |-- configure - | | | |-- autogen - | | | |-- compiz - | | | |-- configure - | | | |-- font-bh-ttf - | | | |-- font-util - | | | |-- gccmakedep - | | | |-- intel-gpu-tools - | | | |-- libX11 - | | | |-- libXaw3d - | | | |-- libXp - | | | |-- libXt - | | | |-- libxcb - | | | |-- libxshmfence - | | | |-- pixman - | | | |-- setxkbmap - | | | |-- xf86-video-intel - | | | |-- xf86-video-nouveau - | | | |-- xfs - | | | |-- xkbcomp - | | | |-- xkeyboard-config - | | | |-- xorg-docs - | | | `-- xorg-server - | | |-- doinst.sh - | | | |-- font-adobe-100dpi - | | | |-- font-adobe-75dpi - | | | |-- font-adobe-utopia-100dpi - | | | |-- font-adobe-utopia-75dpi - | | | |-- font-adobe-utopia-type1 - | | | |-- font-arabic-misc - | | | |-- font-bh-100dpi - | | | |-- font-bh-75dpi - | | | |-- font-bh-lucidatypewriter-100dpi - | | | |-- font-bh-lucidatypewriter-75dpi - | | | |-- font-bh-ttf - | | | |-- font-bh-type1 - | | | |-- font-bitstream-100dpi - | | | |-- font-bitstream-75dpi - | | | |-- font-bitstream-speedo - | | | |-- font-bitstream-type1 - | | | |-- font-cronyx-cyrillic - | | | |-- font-cursor-misc - | | | |-- font-daewoo-misc - | | | |-- font-dec-misc - | | | |-- font-ibm-type1 - | | | |-- font-isas-misc - | | | |-- font-jis-misc - | | | |-- font-micro-misc - | | | |-- font-misc-cyrillic - | | | |-- font-misc-ethiopic - | | | |-- font-misc-meltho - | | | |-- font-misc-misc - | | | |-- font-mutt-misc - | | | |-- font-schumacher-misc - | | | |-- font-screen-cyrillic - | | | |-- font-sony-misc - | | | |-- font-sun-misc - | | | |-- font-winitzki-cyrillic - | | | |-- font-xfree86-type1 - | | | |-- xdm - | | | |-- xfs - | | | |-- xinit - | | | |-- xkeyboard-config - | | | `-- xorg-cf-files - | | |-- makepkg - | | | `-- xorg-server - | | |-- modularize - | | |-- noarch - | | |-- package-blacklist - | | |-- patch - | | | |-- README - | | | |-- luit - | | | | `-- luit_use_system_extensions.diff.gz - | | | |-- luit.patch - | | | |-- xcompmgr - | | | | |-- patch-XFixesSetPictureClipRegion-shadow-fix-xcompmgr.c.diff.gz - | | | | `-- xcompmgr-follow-icccm-spec.diff.gz - | | | |-- xcompmgr.patch - | | | |-- xdm - | | | | |-- xdm-1.1.11-arc4random-include.patch.gz - | | | | |-- xdm-1.1.11-setproctitle-include.patch.gz - | | | | |-- xdm-consolekit.patch.gz - | | | | `-- xdm.glibc.crypt.diff.gz - | | | |-- xdm.patch - | | | |-- xf86-video-apm.patch - | | | |-- xf86-video-ark.patch - | | | |-- xf86-video-ast.patch - | | | |-- xf86-video-dummy.patch - | | | |-- xf86-video-glint.patch - | | | |-- xf86-video-i128.patch - | | | |-- xf86-video-intel - | | | | `-- 0001-sna-Let-modestting-glamor-handle-gen9.patch.gz - | | | |-- xf86-video-intel.patch - | | | |-- xf86-video-nv.patch - | | | |-- xf86-video-s3.patch - | | | |-- xf86-video-sisusb.patch - | | | |-- xf86-video-tga.patch - | | | |-- xf86-video-tseng.patch - | | | |-- xf86-video-v4l - | | | | |-- xf86-video-v4l-0.2.0-build-fix.patch.gz - | | | | `-- xorg-x11-drv-v4l-support_v4l2_only_drivers.patch.gz - | | | |-- xf86-video-v4l.patch - | | | |-- xf86-video-vmware.patch - | | | |-- xf86-video-voodoo - | | | | `-- 0001-don-t-use-PCITAG-in-struct-anymore.patch.gz - | | | |-- xf86-video-voodoo.patch - | | | |-- xf86-video-xgi.patch - | | | |-- xf86-video-xgixp - | | | | |-- 0001-Remove-mibstore.h.patch.gz - | | | | |-- 0002-Remove-symbol-lists-as-they-are-not-used-any-more.patch.gz - | | | | |-- 0003-shadow-shadowInit-shadowAdd-Remove.patch.gz - | | | | |-- 0004-Stop-using-deprecated-xf86PciInfo.h.patch.gz - | | | | `-- 0005-Update-for-new-damage-API.patch.gz - | | | |-- xf86-video-xgixp.patch - | | | |-- xinit - | | | | `-- xinit.remove.systemd.kludge.diff.gz - | | | |-- xinit.patch - | | | |-- xorg-server - | | | | |-- x11.startwithblackscreen.diff.gz - | | | | `-- xorg-server.combo.mouse.keyboard.layout.patch.gz - | | | `-- xorg-server.patch - | | |-- post-install - | | | |-- beforelight.post-install - | | | |-- encodings.post-install - | | | |-- font-adobe-100dpi.post-install - | | | |-- font-adobe-75dpi.post-install - | | | |-- font-adobe-utopia-100dpi.post-install - | | | |-- font-adobe-utopia-75dpi.post-install - | | | |-- font-adobe-utopia-type1.post-install - | | | |-- font-alias.post-install - | | | |-- font-arabic-misc.post-install - | | | |-- font-bh-100dpi.post-install - | | | |-- font-bh-75dpi.post-install - | | | |-- font-bh-lucidatypewriter-100dpi.post-install - | | | |-- font-bh-lucidatypewriter-75dpi.post-install - | | | |-- font-bh-ttf.post-install - | | | |-- font-bh-type1.post-install - | | | |-- font-bitstream-100dpi.post-install - | | | |-- font-bitstream-75dpi.post-install - | | | |-- font-bitstream-speedo.post-install - | | | |-- font-bitstream-type1.post-install - | | | |-- font-cronyx-cyrillic.post-install - | | | |-- font-cursor-misc.post-install - | | | |-- font-daewoo-misc.post-install - | | | |-- font-dec-misc.post-install - | | | |-- font-ibm-type1.post-install - | | | |-- font-isas-misc.post-install - | | | |-- font-jis-misc.post-install - | | | |-- font-micro-misc.post-install - | | | |-- font-misc-cyrillic.post-install - | | | |-- font-misc-ethiopic.post-install - | | | |-- font-misc-meltho.post-install - | | | |-- font-misc-misc.post-install - | | | |-- font-mutt-misc.post-install - | | | |-- font-schumacher-misc.post-install - | | | |-- font-screen-cyrillic.post-install - | | | |-- font-sony-misc.post-install - | | | |-- font-sun-misc.post-install - | | | |-- font-util.post-install - | | | |-- font-winitzki-cyrillic.post-install - | | | |-- font-xfree86-type1.post-install - | | | |-- libSM.post-install - | | | |-- libX11 - | | | | `-- XKeysymDB.gz - | | | |-- libX11.post-install - | | | |-- libXaw.post-install - | | | |-- libXaw3d.post-install - | | | |-- libpthread-stubs.post-install - | | | |-- libxcb.post-install - | | | |-- mkfontdir - | | | | `-- setup.04.mkfontdir - | | | |-- mkfontdir.post-install - | | | |-- pixman.post-install - | | | |-- twm - | | | | `-- xinitrc.twm - | | | |-- twm.post-install - | | | |-- x11-app-test.post-install - | | | |-- x11-font.post-install - | | | |-- x11-util.post-install - | | | |-- xbitmaps.post-install - | | | |-- xcb-proto.post-install - | | | |-- xcb-util.post-install - | | | |-- xdm - | | | | |-- Xsession - | | | | |-- Xsession.orig - | | | | |-- Xsetup_0 - | | | | `-- Xsetup_0.orig - | | | |-- xdm.post-install - | | | |-- xf86-input-joystick.post-install - | | | |-- xf86-input-libinput.post-install - | | | |-- xf86-input-synaptics - | | | | `-- 50-synaptics.conf - | | | |-- xf86-input-synaptics.post-install - | | | |-- xf86-input-wacom - | | | | `-- 60-wacom.rules - | | | |-- xf86-input-wacom.post-install - | | | |-- xf86-video-intel.post-install - | | | |-- xfs.post-install - | | | |-- xinit - | | | | `-- README.Xmodmap - | | | |-- xinit.post-install - | | | |-- xkeyboard-config.post-install - | | | |-- xorg-cf-files - | | | | `-- x11.tmpl.lib64.kludge.diff.gz - | | | |-- xorg-cf-files.post-install - | | | |-- xorg-server.post-install - | | | |-- xorg-sgml-doctools.post-install - | | | `-- xproto.post-install - | | |-- slack-desc - | | | |-- appres - | | | |-- bdftopcf - | | | |-- beforelight - | | | |-- bigreqsproto - | | | |-- bitmap - | | | |-- compiz - | | | |-- compositeproto - | | | |-- damageproto - | | | |-- dmxproto - | | | |-- dri2proto - | | | |-- dri3proto - | | | |-- editres - | | | |-- encodings - | | | |-- evieext - | | | |-- fixesproto - | | | |-- font-adobe-100dpi - | | | |-- font-adobe-75dpi - | | | |-- font-adobe-utopia-100dpi - | | | |-- font-adobe-utopia-75dpi - | | | |-- font-adobe-utopia-type1 - | | | |-- font-alias - | | | |-- font-arabic-misc - | | | |-- font-bh-100dpi - | | | |-- font-bh-75dpi - | | | |-- font-bh-lucidatypewriter-100dpi - | | | |-- font-bh-lucidatypewriter-75dpi - | | | |-- font-bh-ttf - | | | |-- font-bh-type1 - | | | |-- font-bitstream-100dpi - | | | |-- font-bitstream-75dpi - | | | |-- font-bitstream-speedo - | | | |-- font-bitstream-type1 - | | | |-- font-cronyx-cyrillic - | | | |-- font-cursor-misc - | | | |-- font-daewoo-misc - | | | |-- font-dec-misc - | | | |-- font-ibm-type1 - | | | |-- font-isas-misc - | | | |-- font-jis-misc - | | | |-- font-micro-misc - | | | |-- font-misc-cyrillic - | | | |-- font-misc-ethiopic - | | | |-- font-misc-meltho - | | | |-- font-misc-misc - | | | |-- font-mutt-misc - | | | |-- font-schumacher-misc - | | | |-- font-screen-cyrillic - | | | |-- font-sony-misc - | | | |-- font-sun-misc - | | | |-- font-util - | | | |-- font-winitzki-cyrillic - | | | |-- font-xfree86-type1 - | | | |-- fontcacheproto - | | | |-- fontsproto - | | | |-- fonttosfnt - | | | |-- fslsfonts - | | | |-- fstobdf - | | | |-- gccmakedep - | | | |-- glamor-egl - | | | |-- glproto - | | | |-- iceauth - | | | |-- ico - | | | |-- imake - | | | |-- inputproto - | | | |-- intel-gpu-tools - | | | |-- kbproto - | | | |-- libFS - | | | |-- libICE - | | | |-- libSM - | | | |-- libX11 - | | | |-- libXScrnSaver - | | | |-- libXau - | | | |-- libXaw - | | | |-- libXaw3d - | | | |-- libXcm - | | | |-- libXcomposite - | | | |-- libXcursor - | | | |-- libXdamage - | | | |-- libXdmcp - | | | |-- libXevie - | | | |-- libXext - | | | |-- libXfixes - | | | |-- libXfont - | | | |-- libXfontcache - | | | |-- libXft - | | | |-- libXi - | | | |-- libXinerama - | | | |-- libXmu - | | | |-- libXp - | | | |-- libXpm - | | | |-- libXpresent - | | | |-- libXrandr - | | | |-- libXrender - | | | |-- libXres - | | | |-- libXt - | | | |-- libXtst - | | | |-- libXv - | | | |-- libXvMC - | | | |-- libXxf86dga - | | | |-- libXxf86misc - | | | |-- libXxf86vm - | | | |-- libdmx - | | | |-- libfontenc - | | | |-- libpciaccess - | | | |-- libpthread-stubs - | | | |-- libxcb - | | | |-- libxkbfile - | | | |-- libxshmfence - | | | |-- listres - | | | |-- lndir - | | | |-- luit - | | | |-- makedepend - | | | |-- mkcomposecache - | | | |-- mkfontdir - | | | |-- mkfontscale - | | | |-- oclock - | | | |-- pixman - | | | |-- presentproto - | | | |-- printproto - | | | |-- randrproto - | | | |-- recordproto - | | | |-- rendercheck - | | | |-- renderproto - | | | |-- resourceproto - | | | |-- rgb - | | | |-- scrnsaverproto - | | | |-- sessreg - | | | |-- setxkbmap - | | | |-- showfont - | | | |-- smproxy - | | | |-- transset - | | | |-- twm - | | | |-- util-macros - | | | |-- videoproto - | | | |-- viewres - | | | |-- x11perf - | | | |-- xauth - | | | |-- xbacklight - | | | |-- xbiff - | | | |-- xbitmaps - | | | |-- xcalc - | | | |-- xcb-proto - | | | |-- xcb-util - | | | |-- xcb-util-cursor - | | | |-- xcb-util-errors - | | | |-- xcb-util-image - | | | |-- xcb-util-keysyms - | | | |-- xcb-util-renderutil - | | | |-- xcb-util-wm - | | | |-- xclipboard - | | | |-- xclock - | | | |-- xcm - | | | |-- xcmiscproto - | | | |-- xcmsdb - | | | |-- xcompmgr - | | | |-- xconsole - | | | |-- xcursor-themes - | | | |-- xcursorgen - | | | |-- xdbedizzy - | | | |-- xditview - | | | |-- xdm - | | | |-- xdpyinfo - | | | |-- xdriinfo - | | | |-- xedit - | | | |-- xev - | | | |-- xextproto - | | | |-- xeyes - | | | |-- xf86-input-acecad - | | | |-- xf86-input-aiptek - | | | |-- xf86-input-evdev - | | | |-- xf86-input-joystick - | | | |-- xf86-input-keyboard - | | | |-- xf86-input-libinput - | | | |-- xf86-input-mouse - | | | |-- xf86-input-penmount - | | | |-- xf86-input-synaptics - | | | |-- xf86-input-vmmouse - | | | |-- xf86-input-void - | | | |-- xf86-input-wacom - | | | |-- xf86-video-amdgpu - | | | |-- xf86-video-apm - | | | |-- xf86-video-ark - | | | |-- xf86-video-ast - | | | |-- xf86-video-ati - | | | |-- xf86-video-chips - | | | |-- xf86-video-cirrus - | | | |-- xf86-video-dummy - | | | |-- xf86-video-fbdev - | | | |-- xf86-video-geode - | | | |-- xf86-video-glint - | | | |-- xf86-video-i128 - | | | |-- xf86-video-i740 - | | | |-- xf86-video-intel - | | | |-- xf86-video-mach64 - | | | |-- xf86-video-mga - | | | |-- xf86-video-modesetting - | | | |-- xf86-video-neomagic - | | | |-- xf86-video-nouveau - | | | |-- xf86-video-nv - | | | |-- xf86-video-openchrome - | | | |-- xf86-video-qxl - | | | |-- xf86-video-r128 - | | | |-- xf86-video-rendition - | | | |-- xf86-video-s3 - | | | |-- xf86-video-s3virge - | | | |-- xf86-video-savage - | | | |-- xf86-video-siliconmotion - | | | |-- xf86-video-sis - | | | |-- xf86-video-sisusb - | | | |-- xf86-video-tdfx - | | | |-- xf86-video-tga - | | | |-- xf86-video-trident - | | | |-- xf86-video-tseng - | | | |-- xf86-video-v4l - | | | |-- xf86-video-vesa - | | | |-- xf86-video-vmware - | | | |-- xf86-video-voodoo - | | | |-- xf86-video-xgi - | | | |-- xf86-video-xgixp - | | | |-- xf86bigfontproto - | | | |-- xf86dga - | | | |-- xf86dgaproto - | | | |-- xf86driproto - | | | |-- xf86miscproto - | | | |-- xf86vidmodeproto - | | | |-- xfd - | | | |-- xfontsel - | | | |-- xfs - | | | |-- xfsinfo - | | | |-- xfwp - | | | |-- xgamma - | | | |-- xgc - | | | |-- xhost - | | | |-- xineramaproto - | | | |-- xinit - | | | |-- xinput - | | | |-- xkbcomp - | | | |-- xkbevd - | | | |-- xkbprint - | | | |-- xkbutils - | | | |-- xkeyboard-config - | | | |-- xkill - | | | |-- xload - | | | |-- xlogo - | | | |-- xlsatoms - | | | |-- xlsclients - | | | |-- xlsfonts - | | | |-- xmag - | | | |-- xman - | | | |-- xmessage - | | | |-- xmh - | | | |-- xmodmap - | | | |-- xmore - | | | |-- xorg-cf-files - | | | |-- xorg-docs - | | | |-- xorg-server - | | | |-- xorg-server-xephyr - | | | |-- xorg-server-xnest - | | | |-- xorg-server-xvfb - | | | |-- xorg-sgml-doctools - | | | |-- xpr - | | | |-- xprop - | | | |-- xproto - | | | |-- xproxymanagementprotocol - | | | |-- xpyb - | | | |-- xrandr - | | | |-- xrdb - | | | |-- xrefresh - | | | |-- xscope - | | | |-- xset - | | | |-- xsetroot - | | | |-- xsm - | | | |-- xstdcmap - | | | |-- xtrans - | | | |-- xvidtune - | | | |-- xvinfo - | | | |-- xwd - | | | |-- xwininfo - | | | `-- xwud - | | |-- src - | | | |-- app - | | | | |-- appres-1.0.4.tar.xz - | | | | |-- bdftopcf-1.0.5.tar.xz - | | | | |-- beforelight-1.0.5.tar.xz - | | | | |-- bitmap-1.0.8.tar.xz - | | | | |-- compiz-0.8.8.tar.xz - | | | | |-- editres-1.0.6.tar.xz - | | | | |-- fonttosfnt-1.0.4.tar.xz - | | | | |-- fslsfonts-1.0.5.tar.xz - | | | | |-- fstobdf-1.0.6.tar.xz - | | | | |-- iceauth-1.0.7.tar.xz - | | | | |-- ico-1.0.4.tar.xz - | | | | |-- intel-gpu-tools-1.9.tar.xz - | | | | |-- listres-1.0.3.tar.xz - | | | | |-- luit-1.1.1.tar.xz - | | | | |-- mkcomposecache-1.2.1.tar.xz - | | | | |-- mkfontdir-1.0.7.tar.xz - | | | | |-- mkfontscale-1.1.2.tar.xz - | | | | |-- oclock-1.0.3.tar.xz - | | | | |-- rendercheck-1.5.tar.xz - | | | | |-- rgb-1.0.6.tar.xz - | | | | |-- sessreg-1.1.0.tar.xz - | | | | |-- setxkbmap-1.3.1.tar.xz - | | | | |-- showfont-1.0.5.tar.xz - | | | | |-- smproxy-1.0.6.tar.xz - | | | | |-- transset-1.0.1.tar.xz - | | | | |-- twm-1.0.9.tar.xz - | | | | |-- viewres-1.0.4.tar.xz - | | | | |-- x11perf-1.6.0.tar.xz - | | | | |-- xauth-1.0.9.tar.xz - | | | | |-- xbacklight-1.2.1.tar.xz - | | | | |-- xbiff-1.0.3.tar.xz - | | | | |-- xcalc-1.0.6.tar.xz - | | | | |-- xclipboard-1.1.3.tar.xz - | | | | |-- xclock-1.0.7.tar.xz - | | | | |-- xcm-0.5.2.tar.xz - | | | | |-- xcmsdb-1.0.5.tar.xz - | | | | |-- xcompmgr-1.1.7.tar.xz - | | | | |-- xconsole-1.0.6.tar.xz - | | | | |-- xcursorgen-1.0.6.tar.xz - | | | | |-- xdbedizzy-1.1.0.tar.xz - | | | | |-- xditview-1.0.4.tar.xz - | | | | |-- xdm-1.1.11.tar.xz - | | | | |-- xdpyinfo-1.3.2.tar.xz - | | | | |-- xdriinfo-1.0.5.tar.xz - | | | | |-- xedit-1.2.2.tar.xz - | | | | |-- xev-1.2.2.tar.xz - | | | | |-- xeyes-1.1.1.tar.xz - | | | | |-- xf86dga-1.0.3.tar.xz - | | | | |-- xfd-1.1.2.tar.xz - | | | | |-- xfontsel-1.0.5.tar.xz - | | | | |-- xfs-1.1.4.tar.xz - | | | | |-- xfsinfo-1.0.5.tar.xz - | | | | |-- xgamma-1.0.6.tar.xz - | | | | |-- xgc-1.0.5.tar.xz - | | | | |-- xhost-1.0.7.tar.xz - | | | | |-- xinit-1.3.4.tar.xz - | | | | |-- xinput-1.6.2.tar.xz - | | | | |-- xkbcomp-1.3.0.tar.xz - | | | | |-- xkbevd-1.1.4.tar.xz - | | | | |-- xkbprint-1.0.4.tar.xz - | | | | |-- xkbutils-1.0.4.tar.xz - | | | | |-- xkill-1.0.4.tar.xz - | | | | |-- xload-1.1.2.tar.xz - | | | | |-- xlogo-1.0.4.tar.xz - | | | | |-- xlsatoms-1.1.2.tar.xz - | | | | |-- xlsclients-1.1.3.tar.xz - | | | | |-- xlsfonts-1.0.5.tar.xz - | | | | |-- xmag-1.0.6.tar.xz - | | | | |-- xman-1.1.4.tar.xz - | | | | |-- xmessage-1.0.4.tar.xz - | | | | |-- xmh-1.0.3.tar.xz - | | | | |-- xmodmap-1.0.9.tar.xz - | | | | |-- xmore-1.0.2.tar.xz - | | | | |-- xpr-1.0.4.tar.xz - | | | | |-- xprop-1.2.2.tar.xz - | | | | |-- xrandr-1.5.0.tar.xz - | | | | |-- xrdb-1.1.0.tar.xz - | | | | |-- xrefresh-1.0.5.tar.xz - | | | | |-- xscope-1.4.1.tar.xz - | | | | |-- xset-1.2.3.tar.xz - | | | | |-- xsetroot-1.1.1.tar.xz - | | | | |-- xsm-1.0.3.tar.xz - | | | | |-- xstdcmap-1.0.3.tar.xz - | | | | |-- xvidtune-1.0.3.tar.xz - | | | | |-- xvinfo-1.1.3.tar.xz - | | | | |-- xwd-1.0.6.tar.xz - | | | | |-- xwininfo-1.1.3.tar.xz - | | | | `-- xwud-1.0.4.tar.xz - | | | |-- data - | | | | |-- xbitmaps-1.1.1.tar.xz - | | | | |-- xcursor-themes-1.0.4.tar.xz - | | | | `-- xkeyboard-config-2.17.tar.xz - | | | |-- doc - | | | | |-- xorg-docs-1.7.1.tar.xz - | | | | `-- xorg-sgml-doctools-1.11.tar.xz - | | | |-- driver - | | | | |-- xf86-input-acecad-1.5.0.tar.xz - | | | | |-- xf86-input-aiptek-1.4.1.tar.xz - | | | | |-- xf86-input-evdev-2.10.3.tar.xz - | | | | |-- xf86-input-joystick-1.6.1.tar.xz - | | | | |-- xf86-input-keyboard-1.8.1.tar.xz - | | | | |-- xf86-input-mouse-1.9.1.tar.xz - | | | | |-- xf86-input-penmount-1.5.0.tar.xz - | | | | |-- xf86-input-synaptics-1.8.3.tar.xz - | | | | |-- xf86-input-vmmouse-13.1.0.tar.xz - | | | | |-- xf86-input-void-1.4.0.tar.xz - | | | | |-- xf86-input-wacom-0.33.0.tar.xz - | | | | |-- xf86-video-amdgpu-1.1.0.tar.xz - | | | | |-- xf86-video-apm-1.2.5.tar.xz - | | | | |-- xf86-video-ark-0.7.5.tar.xz - | | | | |-- xf86-video-ast-1.1.5.tar.xz - | | | | |-- xf86-video-ati-7.7.0.tar.xz - | | | | |-- xf86-video-chips-1.2.6.tar.xz - | | | | |-- xf86-video-cirrus-1.5.3.tar.xz - | | | | |-- xf86-video-dummy-0.3.7.tar.xz - | | | | |-- xf86-video-geode-2.11.18.tar.xz - | | | | |-- xf86-video-glint-1.2.8.tar.xz - | | | | |-- xf86-video-i128-1.3.6.tar.xz - | | | | |-- xf86-video-i740-1.3.5.tar.xz - | | | | |-- xf86-video-intel-git_20160601_b617f80.tar.xz - | | | | |-- xf86-video-mach64-6.9.5.tar.xz - | | | | |-- xf86-video-mga-1.6.4.tar.xz - | | | | |-- xf86-video-modesetting-0.9.0.tar.xz - | | | | |-- xf86-video-neomagic-1.2.9.tar.xz - | | | | |-- xf86-video-nouveau-1.0.12.tar.xz - | | | | |-- xf86-video-nv-2.1.20.tar.xz - | | | | |-- xf86-video-omap-0.4.4.tar.xz - | | | | |-- xf86-video-openchrome-0.4.0.tar.xz - | | | | |-- xf86-video-r128-6.10.1.tar.xz - | | | | |-- xf86-video-rendition-4.2.6.tar.xz - | | | | |-- xf86-video-s3-0.6.5.tar.xz - | | | | |-- xf86-video-s3virge-1.10.7.tar.xz - | | | | |-- xf86-video-savage-2.3.8.tar.xz - | | | | |-- xf86-video-siliconmotion-1.7.8.tar.xz - | | | | |-- xf86-video-sis-0.10.8.tar.xz - | | | | |-- xf86-video-sisusb-0.9.6.tar.xz - | | | | |-- xf86-video-tdfx-1.4.6.tar.xz - | | | | |-- xf86-video-tga-1.2.2.tar.xz - | | | | |-- xf86-video-trident-1.3.7.tar.xz - | | | | |-- xf86-video-tseng-1.2.5.tar.xz - | | | | |-- xf86-video-v4l-0.2.0.tar.xz - | | | | |-- xf86-video-vesa-2.3.4.tar.xz - | | | | |-- xf86-video-vmware-13.1.0.tar.xz - | | | | |-- xf86-video-voodoo-1.2.5.tar.xz - | | | | |-- xf86-video-xgi-1.6.1.tar.xz - | | | | `-- xf86-video-xgixp-1.8.1.tar.xz - | | | |-- font - | | | | |-- encodings-1.0.4.tar.xz - | | | | |-- font-adobe-100dpi-1.0.3.tar.xz - | | | | |-- font-adobe-75dpi-1.0.3.tar.xz - | | | | |-- font-adobe-utopia-100dpi-1.0.4.tar.xz - | | | | |-- font-adobe-utopia-75dpi-1.0.4.tar.xz - | | | | |-- font-adobe-utopia-type1-1.0.4.tar.xz - | | | | |-- font-alias-1.0.3.tar.xz - | | | | |-- font-arabic-misc-1.0.3.tar.xz - | | | | |-- font-bh-100dpi-1.0.3.tar.xz - | | | | |-- font-bh-75dpi-1.0.3.tar.xz - | | | | |-- font-bh-lucidatypewriter-100dpi-1.0.3.tar.xz - | | | | |-- font-bh-lucidatypewriter-75dpi-1.0.3.tar.xz - | | | | |-- font-bh-ttf-1.0.3.tar.xz - | | | | |-- font-bh-type1-1.0.3.tar.xz - | | | | |-- font-bitstream-100dpi-1.0.3.tar.xz - | | | | |-- font-bitstream-75dpi-1.0.3.tar.xz - | | | | |-- font-bitstream-speedo-1.0.2.tar.xz - | | | | |-- font-bitstream-type1-1.0.3.tar.xz - | | | | |-- font-cronyx-cyrillic-1.0.3.tar.xz - | | | | |-- font-cursor-misc-1.0.3.tar.xz - | | | | |-- font-daewoo-misc-1.0.3.tar.xz - | | | | |-- font-dec-misc-1.0.3.tar.xz - | | | | |-- font-ibm-type1-1.0.3.tar.xz - | | | | |-- font-isas-misc-1.0.3.tar.xz - | | | | |-- font-jis-misc-1.0.3.tar.xz - | | | | |-- font-micro-misc-1.0.3.tar.xz - | | | | |-- font-misc-cyrillic-1.0.3.tar.xz - | | | | |-- font-misc-ethiopic-1.0.3.tar.xz - | | | | |-- font-misc-meltho-1.0.3.tar.xz - | | | | |-- font-misc-misc-1.1.2.tar.xz - | | | | |-- font-mutt-misc-1.0.3.tar.xz - | | | | |-- font-schumacher-misc-1.1.2.tar.xz - | | | | |-- font-screen-cyrillic-1.0.4.tar.xz - | | | | |-- font-sony-misc-1.0.3.tar.xz - | | | | |-- font-sun-misc-1.0.3.tar.xz - | | | | |-- font-util-1.3.1.tar.xz - | | | | |-- font-winitzki-cyrillic-1.0.3.tar.xz - | | | | `-- font-xfree86-type1-1.0.4.tar.xz - | | | |-- get-xf86-video-intel.sh - | | | |-- get-xf86-video-nouveau.sh - | | | |-- get-xf86-video-openchrome.sh - | | | |-- lib - | | | | |-- libFS-1.0.7.tar.xz - | | | | |-- libICE-1.0.9.tar.xz - | | | | |-- libSM-1.2.2.tar.xz - | | | | |-- libX11-1.6.3.tar.xz - | | | | |-- libXScrnSaver-1.2.2.tar.xz - | | | | |-- libXau-1.0.8.tar.xz - | | | | |-- libXaw-1.0.13.tar.xz - | | | | |-- libXaw3d-1.6.2.tar.xz - | | | | |-- libXcm-0.5.2.tar.xz - | | | | |-- libXcomposite-0.4.4.tar.xz - | | | | |-- libXcursor-1.1.14.tar.xz - | | | | |-- libXdamage-1.1.4.tar.xz - | | | | |-- libXdmcp-1.1.2.tar.xz - | | | | |-- libXevie-1.0.3.tar.xz - | | | | |-- libXext-1.3.3.tar.xz - | | | | |-- libXfixes-5.0.2.tar.xz - | | | | |-- libXfont-1.5.1.tar.xz - | | | | |-- libXfontcache-1.0.5.tar.xz - | | | | |-- libXft-2.3.2.tar.xz - | | | | |-- libXi-1.7.6.tar.xz - | | | | |-- libXinerama-1.1.3.tar.xz - | | | | |-- libXmu-1.1.2.tar.xz - | | | | |-- libXp-1.0.3.tar.xz - | | | | |-- libXpm-3.5.11.tar.xz - | | | | |-- libXpresent-1.0.0.tar.xz - | | | | |-- libXrandr-1.5.0.tar.xz - | | | | |-- libXrender-0.9.9.tar.xz - | | | | |-- libXres-1.0.7.tar.xz - | | | | |-- libXt-1.1.5.tar.xz - | | | | |-- libXtst-1.2.2.tar.xz - | | | | |-- libXv-1.0.10.tar.xz - | | | | |-- libXvMC-1.0.9.tar.xz - | | | | |-- libXxf86dga-1.1.4.tar.xz - | | | | |-- libXxf86misc-1.0.3.tar.xz - | | | | |-- libXxf86vm-1.1.4.tar.xz - | | | | |-- libdmx-1.1.3.tar.xz - | | | | |-- libfontenc-1.1.3.tar.xz - | | | | |-- libpciaccess-0.13.4.tar.xz - | | | | |-- libxkbfile-1.0.9.tar.xz - | | | | |-- libxshmfence-1.2.tar.xz - | | | | |-- pixman-0.34.0.tar.xz - | | | | `-- xtrans-1.3.5.tar.xz - | | | |-- proto - | | | | |-- bigreqsproto-1.1.2.tar.xz - | | | | |-- compositeproto-0.4.2.tar.xz - | | | | |-- damageproto-1.2.1.tar.xz - | | | | |-- dmxproto-2.3.1.tar.xz - | | | | |-- dri2proto-2.8.tar.xz - | | | | |-- dri3proto-1.0.tar.xz - | | | | |-- evieext-1.1.1.tar.xz - | | | | |-- fixesproto-5.0.tar.xz - | | | | |-- fontcacheproto-0.1.3.tar.xz - | | | | |-- fontsproto-2.1.3.tar.xz - | | | | |-- glproto-1.4.17.tar.xz - | | | | |-- inputproto-2.3.2.tar.xz - | | | | |-- kbproto-1.0.7.tar.xz - | | | | |-- presentproto-1.0.tar.xz - | | | | |-- printproto-1.0.5.tar.xz - | | | | |-- randrproto-1.5.0.tar.xz - | | | | |-- recordproto-1.14.2.tar.xz - | | | | |-- renderproto-0.11.1.tar.xz - | | | | |-- resourceproto-1.2.0.tar.xz - | | | | |-- scrnsaverproto-1.2.2.tar.xz - | | | | |-- videoproto-2.3.3.tar.xz - | | | | |-- xcmiscproto-1.2.2.tar.xz - | | | | |-- xextproto-7.3.0.tar.xz - | | | | |-- xf86bigfontproto-1.2.0.tar.xz - | | | | |-- xf86dgaproto-2.1.tar.xz - | | | | |-- xf86driproto-2.1.1.tar.xz - | | | | |-- xf86miscproto-0.9.3.tar.xz - | | | | |-- xf86vidmodeproto-2.3.1.tar.xz - | | | | |-- xineramaproto-1.2.1.tar.xz - | | | | `-- xproto-7.0.29.tar.xz - | | | |-- util - | | | | |-- gccmakedep-1.0.3.tar.xz - | | | | |-- imake-1.0.7.tar.xz - | | | | |-- lndir-1.0.3.tar.xz - | | | | |-- makedepend-1.0.5.tar.xz - | | | | |-- util-macros-1.19.0.tar.xz - | | | | `-- xorg-cf-files-1.0.6.tar.xz - | | | |-- xcb - | | | | |-- libpthread-stubs-0.3.tar.xz - | | | | |-- libxcb-1.11.1.tar.xz - | | | | |-- xcb-proto-1.11.tar.xz - | | | | |-- xcb-util-0.4.0.tar.xz - | | | | |-- xcb-util-cursor-0.1.2.tar.xz - | | | | |-- xcb-util-errors-1.0.tar.xz - | | | | |-- xcb-util-image-0.4.0.tar.xz - | | | | |-- xcb-util-keysyms-0.4.0.tar.xz - | | | | |-- xcb-util-renderutil-0.3.9.tar.xz - | | | | |-- xcb-util-wm-0.4.1.tar.xz - | | | | `-- xpyb-1.3.1.tar.xz - | | | |-- xf86-input-wacom.url - | | | `-- xserver - | | | `-- xorg-server-1.18.3.tar.xz - | | `-- x11.SlackBuild - | |-- x11-skel - | | |-- doinst.sh.gz - | | |-- manpages - | | | `-- xwmconfig.1 - | | |-- scripts - | | | |-- setup.xwmconfig - | | | |-- xorg.conf-fbdev - | | | |-- xorg.conf-vesa - | | | |-- xorgsetup - | | | `-- xwmconfig - | | |-- slack-desc - | | `-- x11-skel.SlackBuild - | |-- xdg-user-dirs - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xdg-user-dirs-0.15.tar.xz - | | `-- xdg-user-dirs.SlackBuild - | |-- xdg-utils - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xdg-utils-1.1.1.tar.xz - | | |-- xdg-utils.SlackBuild - | | `-- xdg-utils.url - | `-- xterm - | |-- doinst.sh.gz - | |-- slack-desc - | |-- xterm-325.tar.xz - | `-- xterm.SlackBuild - |-- xap - | |-- MPlayer - | | |-- Blue-1.11.tar.bz2 - | | |-- MPlayer-20160125.tar.xz - | | |-- MPlayer.SlackBuild - | | |-- MPlayer.demux_lavf.flac.diff.gz - | | |-- ffmpeg-2.8.6.tar.xz - | | |-- ffmpeg-2.8.6.tar.xz.asc - | | |-- include-samba-4.0.patch.gz - | | `-- slack-desc - | |-- audacious - | | |-- audacious-3.7.2.tar.xz - | | |-- audacious.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- audacious-plugins - | | |-- audacious-plugins-3.7.2.tar.xz - | | |-- audacious-plugins.SlackBuild - | | `-- slack-desc - | |-- blackbox - | | |-- bbkeys-0.9.1.tar.xz - | | |-- blackbox-0.70.1-gcc-4.3.patch.gz - | | |-- blackbox-0.70.1.tar.xz - | | |-- blackbox.SlackBuild - | | |-- slack-desc - | | |-- startblackbox.gz - | | |-- textpropertytostring-unconditional.diff.gz - | | `-- xinitrc.blackbox.gz - | |-- blueman - | | |-- 0001-Notification-Also-check-if-notification-daemon-suppo.patch.gz - | | |-- 0002-NetConf-Treat-UnicodeDecodeError-as-if-there-was-no-.patch.gz - | | |-- blueman-2.0.4.tar.xz - | | |-- blueman.SlackBuild - | | |-- doinst.sh.gz - | | `-- slack-desc - | |-- ddd - | | |-- ddd-3.3.12.tar.xz - | | |-- ddd.SlackBuild - | | |-- ddd.png - | | |-- doinst.sh.gz - | | |-- machine_code_window_fix.diff.gz - | | |-- slack-desc - | | `-- strclass.C.diff.gz - | |-- electricsheep - | | |-- README.slackware - | | |-- electricsheep-20090306.tar.xz - | | |-- electricsheep.SlackBuild - | | |-- electricsheep.mplayer.diff.gz - | | |-- electricsheep_gnome-open.patch - | | |-- flam3-3.0.1-libpng15.patch - | | `-- slack-desc - | |-- fluxbox - | | |-- fluxbox-1.3.7.tar.xz - | | |-- fluxbox.SlackBuild - | | |-- fluxbox.startfluxbox.dbus.diff.gz - | | |-- slack-desc - | | `-- xinitrc.fluxbox.gz - | |-- fvwm - | | |-- ancient-icons.tar.gz - | | |-- doinst.sh.gz - | | |-- fvwm-2.6.6.tar.xz - | | |-- fvwm.SlackBuild - | | |-- slack-desc - | | |-- startfvwm2.gz - | | `-- xinitrc.fvwm2.gz - | |-- geeqie - | | |-- doinst.sh.gz - | | |-- geeqie-1.3.tar.xz - | | |-- geeqie-1.3.tar.xz.asc - | | |-- geeqie.SlackBuild - | | `-- slack-desc - | |-- gftp - | | |-- gftp-2.0.19.tar.bz2 - | | |-- gftp.SlackBuild - | | |-- gftp.desktop.gz - | | `-- slack-desc - | |-- gimp - | | |-- gimp-2.8.16.tar.xz - | | |-- gimp.SlackBuild - | | `-- slack-desc - | |-- gkrellm - | | |-- gkrellm-2.3.7.tar.xz - | | |-- gkrellm-countdown-0.1.1.tar.gz - | | |-- gkrellm.SlackBuild - | | |-- gkrellm.theme.defaults.diff.gz - | | `-- slack-desc - | |-- gnuchess - | | |-- Sjeng-Free-11.2.tar.bz2 - | | |-- chess.png - | | |-- doinst.sh.gz - | | |-- eboard-1.1.1.tar.bz2 - | | |-- eboard.assert.diff.gz - | | |-- eboard.desktop - | | |-- eboard.ldl.diff.gz - | | |-- eboard.png16.diff.gz - | | |-- gnuchess-6.2.2.tar.xz - | | |-- gnuchess.SlackBuild - | | |-- slack-desc - | | |-- xboard-4.8.0.tar.xz - | | `-- xboard.conf.diff.gz - | |-- gnuplot - | | |-- gnuplot-5.0.3.tar.xz - | | |-- gnuplot.SlackBuild - | | `-- slack-desc - | |-- gparted - | | |-- com.slackware.pkexec.gparted.policy - | | |-- doinst.sh.gz - | | |-- gparted-0.26.1.tar.xz - | | |-- gparted.SlackBuild - | | |-- gparted_polkit - | | `-- slack-desc - | |-- gucharmap - | | |-- doinst.sh.gz - | | |-- gucharmap-3.12.1.tar.xz - | | |-- gucharmap.SlackBuild - | | `-- slack-desc - | |-- gv - | | |-- gv-3.7.4.tar.xz - | | |-- gv-xft.patch.gz - | | |-- gv.SlackBuild - | | `-- slack-desc - | |-- hexchat - | | |-- doinst.sh.gz - | | |-- hexchat-2.12.1.tar.xz - | | |-- hexchat.SlackBuild - | | `-- slack-desc - | |-- imagemagick - | | |-- ImageMagick-6.9.4-9.tar.xz - | | |-- ImageMagick-6.9.4-9.tar.xz.asc - | | |-- doinst.sh.gz - | | |-- imagemagick.SlackBuild - | | |-- policy.xml.diff.gz - | | `-- slack-desc - | |-- mozilla-firefox - | | |-- firefox-45.2.0esr.source.tar.xz - | | |-- firefox.moz_plugin_path.diff.gz - | | |-- gold - | | | |-- gold - | | | `-- ld -> gold - | | |-- mimeTypes.rdf.gz - | | |-- mozilla-firefox-mimeTypes-fix.diff.gz - | | |-- mozilla-firefox.SlackBuild - | | |-- mozilla-firefox.desktop - | | `-- slack-desc - | |-- mozilla-thunderbird - | | |-- gold - | | | |-- gold - | | | `-- ld -> gold - | | |-- mozilla-firefox.xpcom_arm.patch.gz - | | |-- mozilla-thunderbird.SlackBuild - | | |-- mozilla-thunderbird.desktop - | | |-- slack-desc - | | |-- thunderbird-45.1.1.source.tar.xz - | | `-- thunderbird.png - | |-- network-manager-applet - | | |-- doinst.sh.gz - | | |-- network-manager-applet-1.2.2.tar.xz - | | |-- network-manager-applet.SlackBuild - | | `-- slack-desc - | |-- pan - | | |-- pan-0.139.tar.xz - | | |-- pan.SlackBuild - | | |-- pan.gcc47.diff.gz - | | `-- slack-desc - | |-- pavucontrol - | | |-- doinst.sh.gz - | | |-- pavucontrol-3.0.tar.xz - | | |-- pavucontrol.SlackBuild - | | |-- replace-gtk-stock-lock-icon.diff.gz - | | `-- slack-desc - | |-- pidgin - | | |-- doinst.sh.gz - | | |-- fix-gmain_h-compile-error.diff.gz - | | |-- pidgin-2.10.12.tar.xz - | | |-- pidgin-encryption-3.1.tar.gz - | | |-- pidgin.SlackBuild - | | `-- slack-desc - | |-- rdesktop - | | |-- rdesktop-1.8.3.tar.xz - | | |-- rdesktop.SlackBuild - | | `-- slack-desc - | |-- rxvt - | | |-- rxvt-2.7.10.tar.bz2 - | | |-- rxvt.SlackBuild - | | |-- rxvt.utempter.diff.gz - | | `-- slack-desc - | |-- sane - | | |-- dll.conf.additions.gz - | | |-- doinst.sh.gz - | | |-- sane-backends-1.0.25.tar.xz - | | |-- sane-frontends-1.0.14-sane_cap_always_settable.diff.gz - | | |-- sane-frontends-1.0.14.tar.xz - | | |-- sane.SlackBuild - | | `-- slack-desc - | |-- seamonkey - | | |-- doinst.sh.gz - | | |-- gold - | | | |-- gold - | | | `-- ld -> gold - | | |-- pkgconfig - | | | |-- seamonkey-gtkmozembed.pc - | | | |-- seamonkey-libxul.pc - | | | |-- seamonkey-nspr.pc - | | | |-- seamonkey-nss.pc - | | | |-- seamonkey-plugin.pc - | | | `-- seamonkey-xpcom.pc - | | |-- seamonkey-2.40.source.tar.xz - | | |-- seamonkey-icon.png - | | |-- seamonkey-mail-icon.png - | | |-- seamonkey-mail.desktop - | | |-- seamonkey.SlackBuild - | | |-- seamonkey.desktop - | | `-- slack-desc - | |-- seyon - | | |-- seyon-2.20c.lsm - | | |-- seyon-2.20c.tar.gz - | | |-- seyon.SlackBuild - | | |-- seyon_2.20c-16.diff.gz - | | `-- slack-desc - | |-- vim-gvim -> ../ap/vim - | |-- windowmaker - | | |-- WindowMaker-0.95.7.tar.xz - | | |-- WindowMaker-extra-0.1.tar.xz - | | |-- WindowMaker.noopensusemenu.diff.gz - | | |-- slack-desc - | | |-- windowmaker.SlackBuild - | | |-- wmaker.inst.diff.gz - | | |-- wmmenugen.c.diff.gz - | | `-- xinitrc.wmaker.gz - | |-- x11-ssh-askpass - | | |-- README - | | |-- slack-desc - | | |-- x11-ssh-askpass-1.2.4.1.tar.gz - | | |-- x11-ssh-askpass.SlackBuild - | | |-- x11-ssh-askpass.info - | | `-- xprofile.sample - | |-- x3270 - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- x3270-3.3.12ga7.tar.xz - | | `-- x3270.SlackBuild - | |-- xaos - | | |-- slack-desc - | | |-- xaos-3.6.tar.xz - | | |-- xaos.6.gz - | | |-- xaos.SlackBuild - | | |-- xaos.desktop - | | |-- xaos.png - | | `-- xaos.x86.registers.diff.gz - | |-- xfractint - | | |-- palette.maps.tar.gz - | | |-- slack-desc - | | |-- xfractint-20.04p13.tar.xz - | | `-- xfractint.SlackBuild - | |-- xgames - | | |-- maze.diff.gz - | | |-- maze.tar.gz - | | |-- slack-desc - | | |-- spider.diff.gz - | | |-- spider.tar.gz - | | |-- xcolormap.diff.gz - | | |-- xcolormap.tar.gz - | | |-- xcuckoo-1.1.tar.gz - | | |-- xcuckoo.diff.gz - | | |-- xgames.SlackBuild - | | |-- xlander-2009-07-18.diff.gz - | | |-- xlander.fixes.diff.gz - | | |-- xlander.tar.gz - | | |-- xminesweep3.0.tar.gz - | | |-- xneko.tar.gz - | | |-- xroach.tar.gz - | | `-- xsnow-1.42.tar.gz - | |-- xine-lib - | | |-- slack-desc - | | |-- xine-lib-1.2.6.tar.xz - | | `-- xine-lib.SlackBuild - | |-- xine-ui - | | |-- slack-desc - | | |-- xine-ui-0.99.9.tar.xz - | | `-- xine-ui.SlackBuild - | |-- xlockmore - | | |-- l-bob.README - | | |-- l-bob.xbm - | | |-- l-linux.xbm - | | |-- s-bob.xbm - | | |-- slack-desc - | | |-- xlockmore-5.46.tar.xz - | | |-- xlockmore-5.46.tar.xz.asc - | | |-- xlockmore.SlackBuild - | | `-- xlockmore.bitmap.diff.gz - | |-- xmms - | | |-- slack-desc - | | |-- xmms-1.2.11.tar.bz2 - | | |-- xmms.SlackBuild - | | |-- xmms.alsa.default.diff.gz - | | |-- xmms.desktop - | | |-- xmms.gtk.doublesize.diff.gz - | | |-- xmms.png - | | `-- xmms.wmxmms_vis_depth_workaround.diff.gz - | |-- xpaint - | | |-- slack-desc - | | |-- xpaint-2.9.10.3.tar.xz - | | `-- xpaint.SlackBuild - | |-- xpdf - | | |-- doinst.sh.gz - | | |-- lang - | | | |-- xpdf-arabic-2011-aug-15.tar.gz - | | | |-- xpdf-arabic.diff.gz - | | | |-- xpdf-chinese-simplified-2011-sep-02.tar.gz - | | | |-- xpdf-chinese-simplified.diff.gz - | | | |-- xpdf-chinese-traditional-2011-sep-02.tar.gz - | | | |-- xpdf-chinese-traditional.diff.gz - | | | |-- xpdf-cyrillic-2011-aug-15.tar.gz - | | | |-- xpdf-cyrillic.diff.gz - | | | |-- xpdf-greek-2011-aug-15.tar.gz - | | | |-- xpdf-greek.diff.gz - | | | |-- xpdf-hebrew-2011-aug-15.tar.gz - | | | |-- xpdf-hebrew.diff.gz - | | | |-- xpdf-japanese-2011-sep-02.tar.gz - | | | |-- xpdf-japanese.diff.gz - | | | |-- xpdf-korean-2011-sep-02.tar.gz - | | | |-- xpdf-korean.diff.gz - | | | |-- xpdf-latin2-2011-aug-15.tar.gz - | | | |-- xpdf-latin2.diff.gz - | | | |-- xpdf-thai-2011-aug-15.tar.gz - | | | |-- xpdf-thai.diff.gz - | | | |-- xpdf-turkish-2011-aug-15.tar.gz - | | | `-- xpdf-turkish.diff.gz - | | |-- patches - | | | `-- xpdfrc.diff.gz - | | |-- slack-desc - | | |-- xpdf-3.04.tar.gz - | | |-- xpdf-3.04.tar.gz.sig - | | |-- xpdf.SlackBuild - | | `-- xpdf.desktop - | |-- xsane - | | |-- slack-desc - | | |-- xsane-0.995-close-fds.patch.gz - | | |-- xsane-0.995-xdg-open.patch.gz - | | |-- xsane-0.996-no-eula.patch.gz - | | |-- xsane-0.997-ipv6.patch.gz - | | |-- xsane-0.997-off-root-build.patch.gz - | | |-- xsane-0.998-desktop-file.patch.gz - | | |-- xsane-0.998-libpng.patch.gz - | | |-- xsane-0.998-preview-selection.patch.gz - | | |-- xsane-0.998-wmclass.patch.gz - | | |-- xsane-0.999-7-autoconf.patch.gz - | | |-- xsane-0.999-coverity.patch.gz - | | |-- xsane-0.999-lcms2.patch.gz - | | |-- xsane-0.999-man-page.patch.gz - | | |-- xsane-0.999-no-file-selected.patch.gz - | | |-- xsane-0.999-pdf-no-high-bpp.patch.gz - | | |-- xsane-0.999-signal-handling.patch.gz - | | |-- xsane-0.999-snprintf-update.patch.gz - | | |-- xsane-0.999.tar.xz - | | `-- xsane.SlackBuild - | |-- xscreensaver - | | |-- dump.android.osx.sources.sh - | | |-- setuid.c.gz - | | |-- slack-desc - | | |-- xscreensaver-5.35.tar.xz - | | |-- xscreensaver-getimage-file-5.14 - | | |-- xscreensaver.SlackBuild - | | |-- xscreensaver.electricsheep.diff.gz - | | |-- xscreensaver.no.expiration.date.diff.gz - | | `-- xscreensaver.setuid.diff.gz - | `-- xv - | |-- slack-desc - | |-- xv-3.10.tar.xz - | |-- xv-3.10a-enhancements.20070520-20081216.diff.bz2 - | |-- xv-3.10a-jumbo-README.txt - | |-- xv-3.10a-jumbo-additions.diff.bz2 - | |-- xv-3.10a-jumbo-fix-enh-patch-20070520.txt.bz2 - | |-- xv-3.10a.patch.gz - | |-- xv-libpng-1.5.patch.gz - | |-- xv.SlackBuild - | |-- xv.jasper.diff.gz - | |-- xv.prefix.diff.gz - | `-- xv.prefix_x86_64.diff.gz - |-- xfce - | |-- Thunar - | | |-- 0001-Deactivate-SEND_MOVED-code-paths.patch.gz - | | |-- Thunar-1.6.10.tar.xz - | | |-- Thunar.SlackBuild - | | `-- slack-desc - | |-- exo - | | |-- exo-0.10.7.tar.xz - | | |-- exo.SlackBuild - | | |-- exo.url - | | `-- slack-desc - | |-- garcon - | | |-- garcon-0.4.0.tar.xz - | | |-- garcon.SlackBuild - | | `-- slack-desc - | |-- gtk-xfce-engine - | | |-- gtk-xfce-engine-2.10.1.tar.xz - | | |-- gtk-xfce-engine.SlackBuild - | | `-- slack-desc - | |-- libxfce4ui - | | |-- libxfce4ui-4.12.1.tar.xz - | | |-- libxfce4ui.SlackBuild - | | |-- slack-desc - | | `-- vendorinfo - | |-- libxfce4util - | | |-- libxfce4util-4.12.1.tar.xz - | | |-- libxfce4util.SlackBuild - | | `-- slack-desc - | |-- orage - | | |-- orage-4.12.1.tar.xz - | | |-- orage.SlackBuild - | | `-- slack-desc - | |-- thunar-volman - | | |-- 0001-Fix-return-with-no-value-in-function-returning-non-v.patch - | | |-- slack-desc - | | |-- thunar-volman-0.8.1.tar.xz - | | `-- thunar-volman.SlackBuild - | |-- tumbler - | | |-- slack-desc - | | |-- tumbler-0.1.31.tar.xz - | | `-- tumbler.SlackBuild - | |-- xfce-build-all.sh - | |-- xfce4-appfinder - | | |-- slack-desc - | | |-- xfce4-appfinder-4.12.0.tar.xz - | | `-- xfce4-appfinder.SlackBuild - | |-- xfce4-clipman-plugin - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xfce4-clipman-plugin-1.2.6.tar.xz - | | |-- xfce4-clipman-plugin.SlackBuild - | | `-- xfce4-clipman-plugin.url - | |-- xfce4-dev-tools - | | |-- slack-desc - | | |-- xfce4-dev-tools-4.12.0.tar.xz - | | `-- xfce4-dev-tools.SlackBuild - | |-- xfce4-notifyd - | | |-- 0001-Set-notifications-as-override-redirect-windows-bug-1.patch - | | |-- 0002-Use-accessor-function-to-get-the-GdkWindow.patch - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xfce4-notifyd-0.2.4.tar.xz - | | `-- xfce4-notifyd.SlackBuild - | |-- xfce4-panel - | | |-- libxfce4panel.max_blinking_count.8.diff.gz - | | |-- slack-desc - | | |-- xfce4-panel-4.12.0.tar.xz - | | `-- xfce4-panel.SlackBuild - | |-- xfce4-power-manager - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xfce4-power-manager-1.4.4.tar.xz - | | `-- xfce4-power-manager.SlackBuild - | |-- xfce4-pulseaudio-plugin - | | |-- slack-desc - | | |-- xfce4-pulseaudio-plugin-0.2.4-gtk3_theme.patch.gz - | | |-- xfce4-pulseaudio-plugin-0.2.4-gtk3_theme_clean.patch.gz - | | |-- xfce4-pulseaudio-plugin-0.2.4.tar.xz - | | `-- xfce4-pulseaudio-plugin.SlackBuild - | |-- xfce4-screenshooter - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xfce4-screenshooter-1.8.2.tar.xz - | | |-- xfce4-screenshooter.SlackBuild - | | `-- xfce4-screenshooter.url - | |-- xfce4-session - | | |-- slack-desc - | | |-- xfce4-session-4.12.1.tar.xz - | | `-- xfce4-session.SlackBuild - | |-- xfce4-settings - | | |-- 0001-Make-sure-icon-NULL-if-no-icon-is-found.patch - | | |-- slack-desc - | | |-- xfce.xfsettingsd.display.crtc.diff.gz - | | |-- xfce4-settings-4.12.0.tar.xz - | | |-- xfce4-settings.SlackBuild - | | |-- xfce4-settings.theme.diff.gz - | | `-- xfce4-settings.xft.defaults.diff.gz - | |-- xfce4-systemload-plugin - | | |-- 0001-g_free-on-a-GtkWidget-is-wrong-on-so-many-levels.-bu.patch - | | |-- slack-desc - | | |-- xfce4-systemload-plugin-1.1.2.tar.xz - | | |-- xfce4-systemload-plugin.SlackBuild - | | `-- xfce4-systemload-plugin.url - | |-- xfce4-taskmanager - | | |-- doinst.sh.gz - | | |-- slack-desc - | | |-- xfce4-taskmanager-1.1.0.tar.xz - | | |-- xfce4-taskmanager.SlackBuild - | | `-- xfce4-taskmanager.url - | |-- xfce4-terminal - | | |-- slack-desc - | | |-- xfce4-terminal-0.6.3.tar.xz - | | `-- xfce4-terminal.SlackBuild - | |-- xfce4-weather-plugin - | | |-- slack-desc - | | |-- xfce4-weather-plugin-0.8.7.tar.xz - | | |-- xfce4-weather-plugin.SlackBuild - | | `-- xfce4-weather-plugin.url - | |-- xfconf - | | |-- slack-desc - | | |-- xfconf-4.12.0.tar.xz - | | `-- xfconf.SlackBuild - | |-- xfdesktop - | | |-- slack-desc - | | |-- xfdesktop-4.12.3.tar.xz - | | `-- xfdesktop.SlackBuild - | `-- xfwm4 - | |-- slack-desc - | |-- xfwm4-4.12.3.tar.xz - | |-- xfwm4.SlackBuild - | `-- xinitrc.xfce - `-- y - `-- bsd-games - |-- bsd-games-2.13.lsm - |-- bsd-games-2.13.tar.bz2 - |-- bsd-games-login-fortune.csh - |-- bsd-games-login-fortune.sh - |-- bsd-games.SlackBuild - |-- bsd-games.config.params.diff.gz - |-- bsd-games.fortlen.diff.gz - |-- bsd-games.fortunepath.diff.gz - |-- bsd-games.getline.diff.gz - |-- bsd-games.ospeed.diff.gz - |-- bsd-games.phantasia_install_fix.diff.gz - |-- bsd-games.pom.diff.gz - |-- bsd-games.strfile.8.diff.gz - |-- bsd-games.trek-gcc4.diff.gz - |-- fortune-fixes-sorry-no-additions-accepted-here - | `-- 20120302.diff.gz - |-- fortunes-linuxcookie.tar.gz - |-- fortunes-o.tar.gz - |-- hangman-words.gz - `-- slack-desc - -946 directories, 6219 files - diff --git a/isolinux/isolinux.boot b/isolinux/isolinux.boot deleted file mode 100644 index 2d2018920ac1eebed4ccfd2ae1d6da80b03f1617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmZQ%zztS~hOX)WOS3R+WW}y-;(JEy5>Qcyeh2P{On8-zN{)uWXb6mkz-S1JhQMeD H&@lu6Q^W>& diff --git a/patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txt b/patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..a316ff4a4 --- /dev/null +++ b/patches/packages/NetworkManager-1.8.4-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +NetworkManager: NetworkManager (Networking that Just Works) +NetworkManager: +NetworkManager: The point of NetworkManager is to make networking configuration and +NetworkManager: setup as painless and automatic as possible. NetworkManager sets IP +NetworkManager: addresses, default routes, associating with wireless access points +NetworkManager: or wired LANs, and other network configuration settings in a simple, +NetworkManager: automated fashion (manual overrides are still possible). +NetworkManager: +NetworkManager: Home page: http://projects.gnome.org/NetworkManager/ +NetworkManager: +NetworkManager: diff --git a/patches/packages/bash-4.3.048-x86_64-1_slack14.2.txt b/patches/packages/bash-4.3.048-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..99268883a --- /dev/null +++ b/patches/packages/bash-4.3.048-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +bash: bash (sh-compatible shell) +bash: +bash: The GNU Bourne-Again SHell. Bash is a sh-compatible command +bash: interpreter that executes commands read from the standard input or +bash: from a file. Bash also incorporates useful features from the Korn +bash: and C shells (ksh and csh). Bash is ultimately intended to be a +bash: conformant implementation of the IEEE Posix Shell and Tools +bash: specification (IEEE Working Group 1003.2). +bash: +bash: Bash must be present for the system to boot properly. +bash: diff --git a/patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txt b/patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..3289b10db --- /dev/null +++ b/patches/packages/bind-9.10.6_P1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +bind: bind (DNS server and utilities) +bind: +bind: The named daemon and support utilities such as dig, host, and +bind: nslookup. Sample configuration files for running a simple caching +bind: nameserver are included. Documentation for advanced name server +bind: setup can be found in /usr/doc/bind-9.x.x/. +bind: +bind: +bind: +bind: +bind: diff --git a/patches/packages/bluez-5.47-x86_64-1_slack14.2.txt b/patches/packages/bluez-5.47-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..b4b50d595 --- /dev/null +++ b/patches/packages/bluez-5.47-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +bluez: bluez (Bluetooth libraries and utilities) +bluez: +bluez: Bluez is the Bluetooth stack for Linux, allowing Bluetooth adaptors +bluez: and devices to be used with Linux. This package contains the Bluez +bluez: libraries, utilities, and other support files. +bluez: +bluez: For more info, visit: http://www.bluez.org +bluez: +bluez: +bluez: +bluez: diff --git a/patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txt b/patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txt new file mode 100644 index 000000000..a7215388c --- /dev/null +++ b/patches/packages/ca-certificates-20161130-noarch-1_slack14.2.txt @@ -0,0 +1,11 @@ +ca-certificates: ca-certificates (PEM Files of CA Certificates) +ca-certificates: +ca-certificates: This package includes PEM files of CA certificates to allow SSL-based +ca-certificates: applications to check for the authenticity of SSL connections. +ca-certificates: +ca-certificates: Homepage: http://packages.qa.debian.org/c/ca-certificates.html +ca-certificates: +ca-certificates: +ca-certificates: +ca-certificates: +ca-certificates: diff --git a/patches/packages/curl-7.60.0-x86_64-1_slack14.2.txt b/patches/packages/curl-7.60.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..eda0c0f28 --- /dev/null +++ b/patches/packages/curl-7.60.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +curl: curl (command line URL data transfer tool) +curl: +curl: Curl is a command line tool for transferring data specified with URL +curl: syntax. The command is designed to work without user interaction or +curl: any kind of interactivity. Curl offers a busload of useful tricks +curl: like proxy support, user authentication, ftp upload, HTTP post, SSL +curl: (https:) connections, cookies, file transfer resume and more. +curl: +curl: libcurl is a library that Curl uses to do its job. It is readily +curl: available to be used by your software, too. +curl: diff --git a/patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txt b/patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..43166b914 --- /dev/null +++ b/patches/packages/dbus-1.10.8-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +dbus: dbus (D-Bus message bus system) +dbus: +dbus: D-Bus supplies both a system daemon (for events such as "new hardware +dbus: device added" or "printer queue changed") and a per user login +dbus: session daemon (for general IPC needs among user applications). +dbus: Also, the message bus is built on top of a general one-to-one message +dbus: passing framework, which can be used by any two apps to communicate +dbus: directly (without going through the message bus daemon). +dbus: +dbus: +dbus: diff --git a/patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txt b/patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..beaa83c29 --- /dev/null +++ b/patches/packages/dhcp-4.4.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +dhcp: dhcp (DHCP server and client utilities) +dhcp: +dhcp: This package provides the ISC's DHCP utilities, including both a +dhcp: server and client. The DHCP protocol allows a host to contact a +dhcp: central server which maintains a list of IP addresses which may be +dhcp: assigned on one or more subnets. A DHCP client may request an +dhcp: address from this pool, and then use it temporarily for communication +dhcp: on the network. The DHCP protocol also provides a mechanism whereby +dhcp: a client can learn important details about the network to which it is +dhcp: attached, such as the location of a default router or name server. +dhcp: diff --git a/patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txt b/patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..4029c10ff --- /dev/null +++ b/patches/packages/dnsmasq-2.78-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +dnsmasq: dnsmasq (small DNS and DHCP server) +dnsmasq: +dnsmasq: Dnsmasq is a lightweight, easy to configure DNS forwarder and DHCP +dnsmasq: server. It is designed to provide DNS (and optionally DHCP) to a +dnsmasq: small network, and can serve the names of local machines which are not +dnsmasq: in the global DNS. +dnsmasq: +dnsmasq: Dnsmasq was written by Simon Kelley. +dnsmasq: +dnsmasq: Homepage: http://www.thekelleys.org.uk/dnsmasq/ +dnsmasq: diff --git a/patches/packages/emacs-25.3-x86_64-1_slack14.2.txt b/patches/packages/emacs-25.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..77e793c2b --- /dev/null +++ b/patches/packages/emacs-25.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +emacs: emacs (GNU Emacs) +emacs: +emacs: Emacs is the extensible, customizable, self-documenting real-time +emacs: display editor. If this seems to be a bit of a mouthful, an +emacs: easier explanation is that Emacs is a text editor and more. At +emacs: its core is an interpreter for Emacs Lisp, a dialect of the Lisp +emacs: programming language with extensions to support text editing. +emacs: This version supports X. +emacs: +emacs: http://www.gnu.org/software/emacs/ +emacs: diff --git a/patches/packages/expat-2.2.2-x86_64-1_slack14.2.txt b/patches/packages/expat-2.2.2-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..fcd3a0060 --- /dev/null +++ b/patches/packages/expat-2.2.2-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +expat: expat (C library for parsing XML) +expat: +expat: This is Expat, a C library for parsing XML, written by James Clark. +expat: Expat is a stream-oriented XML parser used by Python, GNOME, Xft2, +expat: and other things. +expat: +expat: +expat: +expat: +expat: +expat: diff --git a/patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txt b/patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..bf5425007 --- /dev/null +++ b/patches/packages/freetype-2.6.3-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +freetype: freetype (A free, high-quality, and portable font engine) +freetype: +freetype: FreeType is a free and portable font rendering engine. It has been +freetype: developed to provide support for a number of font formats, including +freetype: TrueType, Type 1, and OpenType, and is designed to be small, +freetype: efficient, highly customizable, and portable while capable of +freetype: producing high-quality output. +freetype: +freetype: Homepage: http://www.freetype.org +freetype: +freetype: diff --git a/patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7f4711ea7 --- /dev/null +++ b/patches/packages/gcc-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc: gcc (Base GCC package with C support) +gcc: +gcc: GCC is the GNU Compiler Collection. +gcc: +gcc: This package contains those parts of the compiler collection needed to +gcc: compile C code. Other packages add Ada, C++, Fortran, Go, +gcc: Objective-C, and Java support to the compiler core. +gcc: +gcc: +gcc: +gcc: diff --git a/patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..2af52d048 --- /dev/null +++ b/patches/packages/gcc-g++-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc-g++: gcc-g++ (C++ for GCC) +gcc-g++: +gcc-g++: C++ support for the GNU Compiler Collection. +gcc-g++: +gcc-g++: This package contains those parts of the compiler collection needed to +gcc-g++: compile C++ code. The base gcc package is also required. +gcc-g++: +gcc-g++: +gcc-g++: +gcc-g++: +gcc-g++: diff --git a/patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..2a94581bb --- /dev/null +++ b/patches/packages/gcc-gfortran-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc-gfortran: gcc-gfortran (Fortran support for GCC) +gcc-gfortran: +gcc-gfortran: The GNU Fortran compiler is fully compliant with the Fortran 95 +gcc-gfortran: Standard and includes legacy F77 support. In addition, a significant +gcc-gfortran: number of Fortran 2003 and Fortran 2008 features are implemented. +gcc-gfortran: GNU Fortran also contains many standard and extensions and can be +gcc-gfortran: used to run real-world programs. +gcc-gfortran: +gcc-gfortran: This package contains those parts of the compiler collection +gcc-gfortran: needed to compile Fortran code. The gcc package is also required. +gcc-gfortran: diff --git a/patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..53778c64c --- /dev/null +++ b/patches/packages/gcc-gnat-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc-gnat: gcc-gnat (Ada support for GCC) +gcc-gnat: +gcc-gnat: Ada support for the GNU Compiler Collection. +gcc-gnat: +gcc-gnat: This package contains those parts of the compiler collection needed to +gcc-gnat: compile Ada code. GNAT implements Ada 95, Ada 2005 and Ada 2012, and +gcc-gnat: it may also be invoked in Ada 83 compatibility mode. By default, GNAT +gcc-gnat: assumes Ada 2012. The base gcc package is also required. +gcc-gnat: +gcc-gnat: +gcc-gnat: diff --git a/patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..88a9554b2 --- /dev/null +++ b/patches/packages/gcc-go-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc-go: gcc-go (Go support for GCC) +gcc-go: +gcc-go: Go is a compiled, garbage-collected, concurrent programming language +gcc-go: developed by Google Inc. The initial design of Go was started in +gcc-go: September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. +gcc-go: Rob Pike has stated that Go is being used "for real stuff" at Google. +gcc-go: Go's "gc" compiler targets the Linux, Mac OS X, FreeBSD, OpenBSD and +gcc-go: Microsoft Windows operating systems, and the i386, amd64, and ARM +gcc-go: processor architectures. +gcc-go: +gcc-go: Homepage: http://golang.org diff --git a/patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..3dde254a5 --- /dev/null +++ b/patches/packages/gcc-java-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc-java: gcc-java (Java support for GCC) +gcc-java: +gcc-java: Java support for the GNU Compiler Collection. +gcc-java: +gcc-java: This package contains those parts of the compiler collection needed to +gcc-java: compile programs written in the Java programming language. The base +gcc-java: gcc package is also required. +gcc-java: +gcc-java: +gcc-java: +gcc-java: diff --git a/patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txt b/patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..1043a50fb --- /dev/null +++ b/patches/packages/gcc-objc-5.5.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gcc-objc: gcc-objc (Objective-C support for GCC) +gcc-objc: +gcc-objc: Objective-C support for the GNU Compiler Collection. +gcc-objc: +gcc-objc: This package contains those parts of the compiler collection needed to +gcc-objc: compile code written in Objective-C. Objective-C was originally +gcc-objc: developed to add object-oriented extensions to the C language, and is +gcc-objc: best known as the native language of the NeXT computer. +gcc-objc: +gcc-objc: The base gcc package is also required. +gcc-objc: diff --git a/patches/packages/gd-2.2.5-x86_64-1_slack14.2.txt b/patches/packages/gd-2.2.5-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..49e3e6d87 --- /dev/null +++ b/patches/packages/gd-2.2.5-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gd: gd (a graphics library) +gd: +gd: gd is a graphics library. It allows your code to quickly draw images +gd: complete with lines, arcs, text, multiple colors, cut and paste from +gd: other images, and flood fills, and write out the result as a PNG or +gd: JPEG file. This is particularly useful in web applications, where +gd: PNG and JPEG are two of the formats accepted for inline images by +gd: most browsers. The gd library was written by Thomas Boutell. +gd: +gd: Homepage: https://www.libgd.org +gd: diff --git a/patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txt b/patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txt new file mode 100644 index 000000000..e48bb58d5 --- /dev/null +++ b/patches/packages/gegl-0.2.0-x86_64-4_slack14.2.txt @@ -0,0 +1,11 @@ +gegl: GEGL (Generic Graphics Library) +gegl: +gegl: GEGL (Generic Graphics Library) is a graph based image processing +gegl: framework. +gegl: +gegl: GEGL provides infrastructure to do demand based cached non destructive +gegl: image editing on larger than RAM buffers. Through babl it provides +gegl: support for a wide range of color models and pixel storage formats for +gegl: input and output. +gegl: +gegl: diff --git a/patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txt b/patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..9ae0e9bcb --- /dev/null +++ b/patches/packages/getmail-4.54.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +getmail: getmail (POP3 mail retriever) +getmail: +getmail: getmail is a POP3 mail retriever, with support for both ordinary and +getmail: domain (or multidrop) POP3 mailboxes. It is written in Python, and +getmail: licensed under the GNU General Public License version 2. +getmail: +getmail: getmail was written by Charles Cazabon. +getmail: +getmail: +getmail: +getmail: diff --git a/patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txt b/patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7759a7efb --- /dev/null +++ b/patches/packages/gimp-2.8.18-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gimp: gimp (The GNU Image Manipulation Program) +gimp: +gimp: The GIMP is a powerful tool for the preparation and manipulation of +gimp: digital images. The GIMP provides the user with a wide variety of +gimp: image manipulation, painting, processing, and rendering tools. The +gimp: GIMP's open design and extensible architecture make for a very +gimp: powerful end product for photo and image retouching, web graphics +gimp: design, or digital illustration. +gimp: +gimp: +gimp: diff --git a/patches/packages/git-2.14.1-x86_64-1_slack14.2.txt b/patches/packages/git-2.14.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..059a95baf --- /dev/null +++ b/patches/packages/git-2.14.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +git: git (the stupid content tracker) +git: +git: Git is a fast, scalable, distributed revision control system with an +git: unusually rich command set that provides both high-level operations +git: and full access to internals. +git: +git: "git" can mean anything, depending on your mood. +git: +git: Git was originally written by Linus Torvalds and is currently +git: maintained by Junio C. Hamano. +git: diff --git a/patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txt b/patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..a5a6e2bed --- /dev/null +++ b/patches/packages/gkrellm-2.3.10-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gkrellm: gkrellm (GNU Krell Monitors) +gkrellm: +gkrellm: GKrellM charts SMP CPU, load, Disk, and all active net interfaces +gkrellm: automatically. An on/off button and online timer for the PPP interface +gkrellm: is provided. Monitors for memory and swap usage, file system, internet +gkrellm: connections, APM laptop battery, mbox style mailboxes, and cpu temps. +gkrellm: Also includes an uptime monitor, hostname label, and clock/calendar. +gkrellm: +gkrellm: Bill Wilson is the author of GKrellM. +gkrellm: +gkrellm: diff --git a/patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txt b/patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txt new file mode 100644 index 000000000..064177622 --- /dev/null +++ b/patches/packages/glib2-2.46.2-x86_64-3_slack14.2.txt @@ -0,0 +1,11 @@ +glib2: glib2 (library of C routines) +glib2: +glib2: GLib is a library which includes support routines for C such as lists, +glib2: trees, hashes, memory allocation, and many other things. +glib2: +glib2: +glib2: +glib2: +glib2: +glib2: +glib2: diff --git a/patches/packages/glibc-2.23-x86_64-4_slack14.2.txt b/patches/packages/glibc-2.23-x86_64-4_slack14.2.txt new file mode 100644 index 000000000..9b940f889 --- /dev/null +++ b/patches/packages/glibc-2.23-x86_64-4_slack14.2.txt @@ -0,0 +1,11 @@ +glibc: glibc (GNU C libraries) +glibc: +glibc: This package contains the GNU C libraries and header files. The GNU +glibc: C library was written originally by Roland McGrath, and is currently +glibc: maintained by Ulrich Drepper. Some parts of the library were +glibc: contributed or worked on by other people. +glibc: +glibc: You'll need this package to compile programs. +glibc: +glibc: +glibc: diff --git a/patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txt b/patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txt new file mode 100644 index 000000000..128c0e26b --- /dev/null +++ b/patches/packages/glibc-i18n-2.23-x86_64-4_slack14.2.txt @@ -0,0 +1,11 @@ +glibc-i18n: glibc-i18n (locale files from glibc) +glibc-i18n: +glibc-i18n: These files go in /usr/lib/locale, /usr/share/i18n/, and +glibc-i18n: /usr/share/locale/ to provide internationalization support. +glibc-i18n: You'll need this package unless you will be using US English only. +glibc-i18n: +glibc-i18n: +glibc-i18n: +glibc-i18n: +glibc-i18n: +glibc-i18n: diff --git a/patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txt b/patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txt new file mode 100644 index 000000000..f9b53ba66 --- /dev/null +++ b/patches/packages/glibc-profile-2.23-x86_64-4_slack14.2.txt @@ -0,0 +1,11 @@ +glibc-profile: glibc-profile (GNU C libraries with profiling support) +glibc-profile: +glibc-profile: This package contains static versions of the GNU C libraries with +glibc-profile: support for profiling binaries using gprof. gprof calculates how +glibc-profile: much time a program spends in each routine which can suggest where +glibc-profile: to concentrate efforts to improve performance. +glibc-profile: +glibc-profile: See the gprof man page for more details. +glibc-profile: +glibc-profile: +glibc-profile: diff --git a/patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txt b/patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txt new file mode 100644 index 000000000..3824184d8 --- /dev/null +++ b/patches/packages/glibc-solibs-2.23-x86_64-4_slack14.2.txt @@ -0,0 +1,11 @@ +glibc-solibs: glibc-solibs (shared GNU C libraries) +glibc-solibs: +glibc-solibs: This package contains the shared libraries, binaries, and support +glibc-solibs: files required to run most Linux applications linked with glibc. +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: diff --git a/patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txt b/patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txt new file mode 100644 index 000000000..c74ccc6a9 --- /dev/null +++ b/patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txt @@ -0,0 +1,11 @@ +glibc-zoneinfo: glibc-zoneinfo (timezone database) +glibc-zoneinfo: +glibc-zoneinfo: This package allows you to configure your time zone. +glibc-zoneinfo: +glibc-zoneinfo: This timezone database comes from the tzdata and tzcode packages by +glibc-zoneinfo: Arthur David Olson et.al. The latest version and more information +glibc-zoneinfo: may be found at: http://www.iana.org/time-zones +glibc-zoneinfo: +glibc-zoneinfo: Use the timeconfig utility to set your local time zone. +glibc-zoneinfo: +glibc-zoneinfo: diff --git a/patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txt b/patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..59d381368 --- /dev/null +++ b/patches/packages/gnupg-1.4.22-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gnupg: gnupg (The GNU Privacy Guard) +gnupg: +gnupg: GnuPG is GNU's tool for secure communication and data storage. It can +gnupg: be used to encrypt data and to create digital signatures. It includes +gnupg: an advanced key management facility and is compliant with the proposed +gnupg: OpenPGP Internet standard as described in RFC2440. +gnupg: +gnupg: +gnupg: +gnupg: +gnupg: diff --git a/patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txt b/patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..40c151dc5 --- /dev/null +++ b/patches/packages/gnutls-3.5.8-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gnutls: gnutls (GNU TLS library) +gnutls: +gnutls: This is a TLS (Transport Layer Security) 1.0 and SSL (Secure Sockets +gnutls: Layer) 3.0 implementation. In brief, GnuTLS can be described as a +gnutls: library which offers an API to access secure communication protocols. +gnutls: These protocols provide privacy over insecure lines, and were designed +gnutls: to prevent eavesdropping, tampering, or message forgery. +gnutls: +gnutls: Homepage: http://www.gnu.org/software/gnutls/ +gnutls: +gnutls: diff --git a/patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txt b/patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..22afdcc8f --- /dev/null +++ b/patches/packages/gtk+2-2.24.31-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +gtk+2: GTK+ version 2 (multi-platform GUI toolkit) +gtk+2: +gtk+2: This is GTK+, a multi-platform toolkit for creating graphical user +gtk+2: interfaces. Offering a complete set of widgets, GTK+ is suitable for +gtk+2: projects ranging from small one-off projects to complete application +gtk+2: suites. +gtk+2: +gtk+2: +gtk+2: +gtk+2: +gtk+2: diff --git a/patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txt b/patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..e0fe474dc --- /dev/null +++ b/patches/packages/httpd-2.4.29-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +httpd: httpd (The Apache HTTP Server) +httpd: +httpd: Apache is an HTTP server designed as a plug-in replacement for the +httpd: NCSA HTTP server. It fixes numerous bugs in the NCSA server and +httpd: includes many frequently requested new features, and has an API which +httpd: allows it to be extended to meet users' needs more easily. +httpd: +httpd: Apache is the most popular web server in the known universe; over +httpd: half of the servers on the Internet are running Apache or one of +httpd: its variants. +httpd: diff --git a/patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txt b/patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txt new file mode 100644 index 000000000..c94d6f310 --- /dev/null +++ b/patches/packages/intltool-0.51.0-x86_64-3_slack14.2.txt @@ -0,0 +1,11 @@ +intltool: intltool (Utilities for translation support) +intltool: +intltool: This package contains scripts and autoconf files for +intltool: internationalizing data. +intltool: +intltool: Homepage: https://edge.launchpad.net/intltool +intltool: +intltool: +intltool: +intltool: +intltool: diff --git a/patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txt b/patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..c7127d1f9 --- /dev/null +++ b/patches/packages/irssi-1.0.7-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +irssi: irssi (Internet Relay Chat client) +irssi: +irssi: Irssi is an Internet Relay Chat client. Designed to be both secure +irssi: and expandable, irssi is easily customized using modules and scripts. +irssi: +irssi: For more information, visit: http://irssi.org +irssi: +irssi: irssi was written by Timo Sirainen. +irssi: +irssi: +irssi: diff --git a/patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txt b/patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..d192ec7a5 --- /dev/null +++ b/patches/packages/kdelibs-4.14.32-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +kdelibs: kdelibs (KDE libraries) +kdelibs: +kdelibs: System libraries and other resources required for the KDE Platform. +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: diff --git a/patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txt b/patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7a0038ff4 --- /dev/null +++ b/patches/packages/libX11-1.6.4-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libX11: libX11 (Core X11 protocol client library) +libX11: +libX11: libX11 is part of X11. +libX11: +libX11: For more information about the X.Org Foundation (the providers of the +libX11: X.Org implementation of the X Window System), see their website: +libX11: +libX11: http://www.x.org +libX11: +libX11: +libX11: diff --git a/patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txt b/patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..a95a82df7 --- /dev/null +++ b/patches/packages/libXcursor-1.1.15-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXcursor: libXcursor (X Window System Cursor management library) +libXcursor: +libXcursor: libXcursor is part of X11. +libXcursor: +libXcursor: For more information about the X.Org Foundation (the providers of the +libXcursor: X.Org implementation of the X Window System), see their website: +libXcursor: +libXcursor: http://www.x.org +libXcursor: +libXcursor: +libXcursor: diff --git a/patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txt b/patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..cad880c53 --- /dev/null +++ b/patches/packages/libXfixes-5.0.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXfixes: libXfixes (client library for the Xfixes extension) +libXfixes: +libXfixes: libXfixes is part of X11. +libXfixes: +libXfixes: For more information about the X.Org Foundation (the providers of the +libXfixes: X.Org implementation of the X Window System), see their website: +libXfixes: +libXfixes: http://www.x.org +libXfixes: +libXfixes: +libXfixes: diff --git a/patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txt b/patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..fd4ecec9b --- /dev/null +++ b/patches/packages/libXfont-1.5.1-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +libXfont: libXfont (library for legacy X11 font system) +libXfont: +libXfont: libXfont provides the core of the legacy X11 font system, handling the +libXfont: index files (fonts.dir, fonts.alias, fonts.scale), the various font +libXfont: file formats, and rasterizing them. It is used by the X servers, the +libXfont: X Font Server (xfs), and some font utilities (bdftopcf for instance), +libXfont: but should not be used by normal X11 clients. X11 clients access fonts +libXfont: via either the new API's in libXft, or the legacy API's in libX11. +libXfont: +libXfont: +libXfont: diff --git a/patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txt b/patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..f8ef8ec2d --- /dev/null +++ b/patches/packages/libXi-1.7.8-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXi: libXi (library for the X Input Extension) +libXi: +libXi: libXi is part of X11. +libXi: +libXi: For more information about the X.Org Foundation (the providers of the +libXi: X.Org implementation of the X Window System), see their website: +libXi: +libXi: http://www.x.org +libXi: +libXi: +libXi: diff --git a/patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txt b/patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7025c9ef4 --- /dev/null +++ b/patches/packages/libXrandr-1.5.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXrandr: libXrandr (X Resize, Rotate and Reflection extension library) +libXrandr: +libXrandr: libXrandr is part of X11. +libXrandr: +libXrandr: For more information about the X.Org Foundation (the providers of the +libXrandr: X.Org implementation of the X Window System), see their website: +libXrandr: +libXrandr: http://www.x.org +libXrandr: +libXrandr: +libXrandr: diff --git a/patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txt b/patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..254411dd3 --- /dev/null +++ b/patches/packages/libXrender-0.9.10-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXrender: libXrender (library for the Render Extension to the X11 protocol) +libXrender: +libXrender: libXrender is part of X11. +libXrender: +libXrender: For more information about the X.Org Foundation (the providers of the +libXrender: X.Org implementation of the X Window System), see their website: +libXrender: +libXrender: http://www.x.org +libXrender: +libXrender: +libXrender: diff --git a/patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txt b/patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..6abe3e3db --- /dev/null +++ b/patches/packages/libXres-1.2.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXres: libXres (X-Resource extension client library) +libXres: +libXres: libXres is part of X11. +libXres: +libXres: For more information about the X.Org Foundation (the providers of the +libXres: X.Org implementation of the X Window System), see their website: +libXres: +libXres: http://www.x.org +libXres: +libXres: +libXres: diff --git a/patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txt b/patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..b44d139fb --- /dev/null +++ b/patches/packages/libXtst-1.2.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXtst: libXtst (client library for the XTEST & RECORD extensions) +libXtst: +libXtst: libXtst is part of X11. +libXtst: +libXtst: For more information about the X.Org Foundation (the providers of the +libXtst: X.Org implementation of the X Window System), see their website: +libXtst: +libXtst: http://www.x.org +libXtst: +libXtst: +libXtst: diff --git a/patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txt b/patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..57e519053 --- /dev/null +++ b/patches/packages/libXv-1.0.11-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXv: libXv (library for the X Video (Xv) extension to the X Window System) +libXv: +libXv: libXv is part of X11. +libXv: +libXv: For more information about the X.Org Foundation (the providers of the +libXv: X.Org implementation of the X Window System), see their website: +libXv: +libXv: http://www.x.org +libXv: +libXv: +libXv: diff --git a/patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txt b/patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..b23d9bd23 --- /dev/null +++ b/patches/packages/libXvMC-1.0.10-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libXvMC: libXvMC (X.Org X11 libXvMC runtime library) +libXvMC: +libXvMC: libXvMC is part of X11. +libXvMC: +libXvMC: For more information about the X.Org Foundation (the providers of the +libXvMC: X.Org implementation of the X Window System), see their website: +libXvMC: +libXvMC: http://www.x.org +libXvMC: +libXvMC: +libXvMC: diff --git a/patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txt b/patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..a3099b6cd --- /dev/null +++ b/patches/packages/libcgroup-0.41-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +libcgroup: libcgroup (library and utilities for kernel control groups) +libcgroup: +libcgroup: Control Groups provide a mechanism for aggregating/partitioning sets of +libcgroup: tasks, and all their future children, into hierarchical groups with +libcgroup: specialized behaviour. It makes use of a filesystem interface. +libcgroup: This package contains a library for developing applications that use +libcgroup: control groups, as well as some basic userspace tools for controlling +libcgroup: and monitoring control groups. +libcgroup: +libcgroup: Homepage: http://libcg.sourceforge.net/ +libcgroup: diff --git a/patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txt b/patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..079f2133e --- /dev/null +++ b/patches/packages/libgcrypt-1.7.9-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libgcrypt: libgcrypt (General purpose crypto library) +libgcrypt: +libgcrypt: Libgcrypt is a general purpose crypto library based on the code +libgcrypt: used in GnuPG. +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: diff --git a/patches/packages/libidn-1.34-x86_64-1_slack14.2.txt b/patches/packages/libidn-1.34-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..86ffee4f9 --- /dev/null +++ b/patches/packages/libidn-1.34-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libidn: libidn (GNU Internationalized Domain Name library) +libidn: +libidn: GNU Libidn is an implementation of the Stringprep, Punycode and IDNA +libidn: specifications defined by the IETF Internationalized Domain Names +libidn: (IDN) working group, used for internationalized domain names. +libidn: +libidn: +libidn: +libidn: +libidn: +libidn: diff --git a/patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txt b/patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..c8c985f3b --- /dev/null +++ b/patches/packages/libpcap-1.8.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libpcap: libpcap (packet capture library) +libpcap: +libpcap: libpcap is a library for user-level packet capture. libpcap provides +libpcap: a portable framework for low-level network monitoring. Applications +libpcap: include network statistics collection, security monitoring, network +libpcap: debugging, etc. The tcpdump utility uses libpcap. +libpcap: +libpcap: Project homepage: http://www.tcpdump.org +libpcap: +libpcap: +libpcap: diff --git a/patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txt b/patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..984b463c4 --- /dev/null +++ b/patches/packages/libplist-2.0.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libplist: libplist (A library for Apple Binary and XML Property Lists) +libplist: +libplist: libplist is a library that attempts to support Apple Binary and XML +libplist: Property Lists. It is used by libgpod. +libplist: +libplist: The libplist homepage: http://www.libimobiledevice.org/ +libplist: +libplist: +libplist: +libplist: +libplist: diff --git a/patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txt b/patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..3d0deb675 --- /dev/null +++ b/patches/packages/libpng-1.6.27-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libpng: libpng (Portable Network Graphics library) +libpng: +libpng: PNG (Portable Network Graphics) is an extensible file format for the +libpng: lossless, portable, well-compressed storage of raster images. PNG +libpng: provides a patent-free replacement for GIF and can also replace many +libpng: common uses of TIFF. Indexed-color, grayscale, and truecolor images +libpng: are supported, plus an optional alpha channel. Sample depths range +libpng: from 1 to 16 bits. +libpng: +libpng: +libpng: diff --git a/patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txt b/patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txt new file mode 100644 index 000000000..45e217419 --- /dev/null +++ b/patches/packages/libsoup-2.52.2-x86_64-3_slack14.2.txt @@ -0,0 +1,11 @@ +libsoup: libsoup (an HTTP client/server library) +libsoup: +libsoup: Soup is an HTTP client/server library implementation in C. It uses +libsoup: GObjects and the glib main loop to integrate well with GTK+ +libsoup: applications, and has a synchronous API suitable for use in threaded +libsoup: applications. +libsoup: +libsoup: +libsoup: +libsoup: +libsoup: diff --git a/patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txt b/patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..89df05edf --- /dev/null +++ b/patches/packages/libtiff-4.0.9-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libtiff: libtiff (a library for reading and writing TIFF files) +libtiff: +libtiff: This package provides support for the Tag Image File Format (TIFF), +libtiff: a widely used format for storing image data. Included is the libtiff +libtiff: library (for reading and writing TIFF files), and a collection of +libtiff: tools for working with TIFF images. +libtiff: +libtiff: +libtiff: +libtiff: +libtiff: diff --git a/patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txt b/patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..fe79aef73 --- /dev/null +++ b/patches/packages/libtirpc-1.0.2-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libtirpc: libtirpc (Transport-Independent RPC library) +libtirpc: +libtirpc: Libtirpc is a port of Sun's Transport-Independent RPC library to +libtirpc: Linux. It is being developed by Bull GNU/Linux NFSv4 project. +libtirpc: +libtirpc: You will need this library if you plan to use RPC with a GLIBC +libtirpc: version newer than 2.13, because the RPC stack has been removed +libtirpc: from GLIBC versions newer than 2.13. The library is required +libtirpc: by the 'rpcbind' package. +libtirpc: +libtirpc: http://sourceforge.net/projects/libtirpc/ diff --git a/patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txt b/patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..a6d181d9b --- /dev/null +++ b/patches/packages/libtool-2.4.6-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +libtool: libtool (a generic library support script) +libtool: +libtool: This is GNU Libtool, a generic library support script. Libtool hides +libtool: the complexity of using shared libraries behind a consistent, portable +libtool: interface. To use libtool, add the new generic library building +libtool: commands to your Makefile, Makefile.in, or Makefile.am. See the +libtool: documentation for details. +libtool: +libtool: You must install the "m4" package to be able to use libtool. +libtool: +libtool: diff --git a/patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txt b/patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..aeddb637e --- /dev/null +++ b/patches/packages/libvorbis-1.3.6-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libvorbis: libvorbis (Ogg Vorbis library) +libvorbis: +libvorbis: This library supports the Vorbis General Audio Compression Codec +libvorbis: (commonly known as Ogg Vorbis). Ogg Vorbis is a fully open, +libvorbis: non-proprietary, patent-and-royalty-free, general-purpose compressed +libvorbis: audio format for audio and music at fixed and variable bitrates. +libvorbis: +libvorbis: The libvorbis library requires libao and libogg. You'll find some +libvorbis: basic tools for creating and using Ogg Vorbis files in the +libvorbis: vorbis-tools package. +libvorbis: diff --git a/patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txt b/patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txt new file mode 100644 index 000000000..9ce901b81 --- /dev/null +++ b/patches/packages/libwmf-0.2.8.4-x86_64-7_slack14.2.txt @@ -0,0 +1,11 @@ +libwmf: libwmf (WMF graphics format library) +libwmf: +libwmf: libwmf is a library for interpreting metafile images and either +libwmf: displaying them using X or converting them to standard formats such +libwmf: as PNG, JPEG, PS, EPS and SVG. +libwmf: +libwmf: +libwmf: +libwmf: +libwmf: +libwmf: diff --git a/patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txt b/patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..806c97658 --- /dev/null +++ b/patches/packages/libxml2-2.9.5-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +libxml2: libxml2 (XML parser library) +libxml2: +libxml2: Libxml2 is the XML C parser library and toolkit. XML itself is a +libxml2: metalanguage to design markup languages -- i.e. a text language where +libxml2: structures are added to the content using extra "markup" information +libxml2: enclosed between angle brackets. HTML is the most well-known markup +libxml2: language. Though the library is written in C, a variety of language +libxml2: bindings make it available in other environments. +libxml2: +libxml2: +libxml2: diff --git a/patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txt b/patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txt new file mode 100644 index 000000000..7635509e2 --- /dev/null +++ b/patches/packages/libzip-1.0.1-x86_64-3_slack14.2.txt @@ -0,0 +1,11 @@ +libzip: libzip (A library to read, create, and modify Zip archives) +libzip: +libzip: This is libzip, a C library for reading, creating, and modifying +libzip: zip archives. Files can be added from data buffers, files, or +libzip: compressed data copied directly from other zip archives. Changes +libzip: made without closing the archive can be reverted. +libzip: +libzip: Homepage: http://www.nih.at/libzip/ +libzip: +libzip: +libzip: diff --git a/patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txt b/patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txt new file mode 100644 index 000000000..4b07a89f4 --- /dev/null +++ b/patches/packages/linux-4.4.132/kernel-firmware-20180518_2a9b2cf-noarch-1.txt @@ -0,0 +1,11 @@ +kernel-firmware: kernel-firmware (Firmware for the kernel) +kernel-firmware: +kernel-firmware: These are firmware files for the Linux kernel. +kernel-firmware: +kernel-firmware: You'll need these to use certain hardware drivers with Linux. +kernel-firmware: +kernel-firmware: Upstream site: +kernel-firmware: +kernel-firmware: git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git +kernel-firmware: +kernel-firmware: diff --git a/patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txt b/patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txt new file mode 100644 index 000000000..975a5ba6d --- /dev/null +++ b/patches/packages/linux-4.4.132/kernel-generic-4.4.132-x86_64-1.txt @@ -0,0 +1,11 @@ +kernel-generic: kernel-generic (a general purpose SMP Linux kernel) +kernel-generic: +kernel-generic: This is a Linux kernel with built-in support for most disk +kernel-generic: controllers. To use filesystems, or to load support for a SCSI or +kernel-generic: other controller, then you'll need to load one or more kernel +kernel-generic: modules using an initial ramdisk, or initrd. For more information +kernel-generic: about creating an initrd, see the README.initrd file in the /boot +kernel-generic: directory. +kernel-generic: +kernel-generic: SMP is "Symmetric multiprocessing", or multiple CPU/core support. +kernel-generic: diff --git a/patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txt b/patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txt new file mode 100644 index 000000000..27b46a0e6 --- /dev/null +++ b/patches/packages/linux-4.4.132/kernel-headers-4.4.132-x86-1.txt @@ -0,0 +1,11 @@ +kernel-headers: kernel-headers (Linux kernel include files) +kernel-headers: +kernel-headers: These are the include files from the Linux kernel. +kernel-headers: +kernel-headers: You'll need these to compile most system software for Linux. +kernel-headers: +kernel-headers: +kernel-headers: +kernel-headers: +kernel-headers: +kernel-headers: diff --git a/patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txt b/patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txt new file mode 100644 index 000000000..2d6170611 --- /dev/null +++ b/patches/packages/linux-4.4.132/kernel-huge-4.4.132-x86_64-1.txt @@ -0,0 +1,11 @@ +kernel-huge: kernel-huge (a fully-loaded SMP Linux kernel) +kernel-huge: +kernel-huge: This is a Linux kernel with built-in support for most disk +kernel-huge: controllers. If you're looking for a more stripped down kernel +kernel-huge: (this one contains everything but the kitchen sink ;-), then install +kernel-huge: the kernel-generic in the /boot directory along with an initrd to +kernel-huge: load support for your boot device and filesystem. For instructions +kernel-huge: on the initrd, see README.initrd in the /boot directory. +kernel-huge: +kernel-huge: SMP is "Symmetric multiprocessing", or multiple CPU/core support. +kernel-huge: diff --git a/patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txt b/patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txt new file mode 100644 index 000000000..9a9441043 --- /dev/null +++ b/patches/packages/linux-4.4.132/kernel-modules-4.4.132-x86_64-1.txt @@ -0,0 +1,11 @@ +kernel-modules: kernel-modules (Linux kernel modules) +kernel-modules: +kernel-modules: Kernel modules are pieces of code that can be loaded and unloaded into +kernel-modules: the kernel upon demand. They extend the functionality of the kernel +kernel-modules: without the need to reboot the system. These modules provide support +kernel-modules: for hardware such as USB devices, RAID controllers, network +kernel-modules: interfaces, and display devices, or add other additional capabilities +kernel-modules: to the kernel. +kernel-modules: +kernel-modules: +kernel-modules: diff --git a/patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txt b/patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txt new file mode 100644 index 000000000..eb2b0a30c --- /dev/null +++ b/patches/packages/linux-4.4.132/kernel-source-4.4.132-noarch-1.txt @@ -0,0 +1,11 @@ +kernel-source: kernel-source (Linux kernel source) +kernel-source: +kernel-source: Source code for Linus Torvalds' Linux kernel. +kernel-source: +kernel-source: This is the complete and unmodified source code for the Linux kernel. +kernel-source: +kernel-source: +kernel-source: +kernel-source: +kernel-source: +kernel-source: diff --git a/patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txt b/patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..f77991098 --- /dev/null +++ b/patches/packages/loudmouth-1.5.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +loudmouth: loudmouth (XMPP C programming library) +loudmouth: +loudmouth: Loudmouth is a lightweight and easy-to-use C library for programming +loudmouth: with the Jabber protocol. It is designed to be easy to get started +loudmouth: with, and yet extensible enough to allow you to do anything that the +loudmouth: Jabber protocol allows. +loudmouth: +loudmouth: loudmouth home: https://github.com/mcabber/loudmouth +loudmouth: +loudmouth: +loudmouth: diff --git a/patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txt b/patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txt new file mode 100644 index 000000000..925b5830e --- /dev/null +++ b/patches/packages/lynx-2.8.8rel.2-x86_64-3_slack14.2.txt @@ -0,0 +1,11 @@ +lynx: Lynx (text mode browser) +lynx: +lynx: Lynx is a distributed hypertext browser with full World Wide Web +lynx: capabilities. Lynx can be used to access information on the World +lynx: Wide Web, or to build information systems intended primarily for local +lynx: access. For example, Lynx has been used to build several Campus Wide +lynx: Information Systems (CWIS). +lynx: +lynx: Lynx's authors include Lou Montulli, Garrett Blythe, Craig Lavender, +lynx: Michael Grobe, and Charles Rezac. +lynx: diff --git a/patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txt b/patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..6c42fc57d --- /dev/null +++ b/patches/packages/mariadb-10.0.35-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mariadb: mariadb (Drop-in replacement for the MySQL Database Server) +mariadb: +mariadb: MariaDB is a backward compatible, drop-in replacement branch of the +mariadb: MySQL(R) Database Server. It includes all major open source storage +mariadb: engines, including the Aria storage engine. +mariadb: +mariadb: Homepage: http://mariadb.org/ +mariadb: +mariadb: +mariadb: +mariadb: diff --git a/patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txt b/patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..b88d33ff7 --- /dev/null +++ b/patches/packages/mcabber-1.0.5-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mcabber: mcabber (Jabber console client) +mcabber: +mcabber: mcabber is a small Jabber console client for Linux, maintained by +mcabber: Mikael Berthe. Mcabber includes features such as SSL support, +mcabber: multi-user chat (MUC), history logging, commands completion, and +mcabber: external actions triggers. +mcabber: +mcabber: mcabber project home is: http://www.lilotux.net/~mikael/mcabber/ +mcabber: +mcabber: +mcabber: diff --git a/patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txt b/patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..74728542a --- /dev/null +++ b/patches/packages/mercurial-4.3.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mercurial: mercurial (a distributed source management system) +mercurial: +mercurial: Mercurial is a cross-platform, distributed source management tool for +mercurial: software developers. It is written in Python, with a binary diff +mercurial: implementation written in C. Its major features include high- +mercurial: performance; serverless, fully distributed collaborative development; +mercurial: robust handling of both plain text and binary files; advanced +mercurial: branching and merging capabilities; and full source code available +mercurial: under the terms of the LGPL. +mercurial: +mercurial: Mercurial was written by Matt Mackall and other contributors. diff --git a/patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txt b/patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..ec008506a --- /dev/null +++ b/patches/packages/minicom-2.7.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +minicom: minicom (communications package) +minicom: +minicom: Minicom - a full featured menu-driven communications package similar +minicom: to the DOS program 'Telix'. Also includes sz/rz - utilities used to +minicom: upload and download files using the Zmodem protocol. +minicom: +minicom: Homepage: http://alioth.debian.org/projects/minicom +minicom: +minicom: +minicom: +minicom: diff --git a/patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txt b/patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..ac8d3a741 --- /dev/null +++ b/patches/packages/mkinitrd-1.4.10-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mkinitrd: mkinitrd (make an initial ramdisk) +mkinitrd: +mkinitrd: mkinitrd is a script to create an initial ramdisk that is loaded at +mkinitrd: the same time as the kernel. The initial ramdisk may be responsible +mkinitrd: for loading kernel modules (such a filesystem or SCSI controller +mkinitrd: module) that are needed to mount the root filesystem. +mkinitrd: +mkinitrd: The "initrd" is implemented as an initramfs. See the kernel +mkinitrd: documentation for more information on this, if you are interested. +mkinitrd: +mkinitrd: diff --git a/patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txt b/patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..1d399dbf1 --- /dev/null +++ b/patches/packages/mozilla-firefox-52.8.0esr-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mozilla-firefox: mozilla-firefox (Mozilla Firefox Web browser) +mozilla-firefox: +mozilla-firefox: This project is a redesign of the Mozilla browser component written +mozilla-firefox: using the XUL user interface language. Firefox empowers you to +mozilla-firefox: browse faster, more safely and more efficiently than with any other +mozilla-firefox: browser. +mozilla-firefox: +mozilla-firefox: Visit the Mozilla Firefox project online: +mozilla-firefox: http://www.mozilla.org/projects/firefox/ +mozilla-firefox: +mozilla-firefox: diff --git a/patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txt b/patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..9d2fe7086 --- /dev/null +++ b/patches/packages/mozilla-nss-3.31.1-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mozilla-nss: mozilla-nss (Network Security Services) +mozilla-nss: +mozilla-nss: Network Security Services (NSS) is a set of libraries designed to +mozilla-nss: support cross-platform development of security-enabled client and +mozilla-nss: server applications. Applications built with NSS can support +mozilla-nss: SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, +mozilla-nss: X.509 v3 certificates, and other security standards. +mozilla-nss: +mozilla-nss: +mozilla-nss: Read http://www.mozilla.org/projects/security/pki/nss/overview.html +mozilla-nss: diff --git a/patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txt b/patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..79d022522 --- /dev/null +++ b/patches/packages/mozilla-thunderbird-52.8.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +mozilla-thunderbird: mozilla-thunderbird (Mozilla Thunderbird mail application) +mozilla-thunderbird: +mozilla-thunderbird: Mozilla Thunderbird is a redesign of the Mozilla mail component +mozilla-thunderbird: written using the XUL user interface language. Thunderbird makes +mozilla-thunderbird: emailing safer, faster, and easier than ever before with the +mozilla-thunderbird: industry's best implementations of features such as intelligent spam +mozilla-thunderbird: filters, built-in RSS reader, quick search, and much more. +mozilla-thunderbird: +mozilla-thunderbird: Visit the Mozilla Thunderbird project online: +mozilla-thunderbird: http://www.mozilla.org/projects/thunderbird/ +mozilla-thunderbird: diff --git a/patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txt b/patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..a8bb4e99f --- /dev/null +++ b/patches/packages/nasm-2.13.01-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +nasm: nasm (NASM assembler) +nasm: +nasm: NASM is the Netwide Assembler, a free portable assembler for the Intel +nasm: 80x86 microprocessor series, using primarily the traditional Intel +nasm: instruction mnemonics and syntax. +nasm: +nasm: NASM was written by Simon Tatham and Julian Hall. +nasm: +nasm: Homepage: http://www.nasm.us +nasm: +nasm: diff --git a/patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txt b/patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..1a05675db --- /dev/null +++ b/patches/packages/network-manager-applet-1.8.4-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +network-manager-applet: network-manager-applet (NetworkManager Applet) +network-manager-applet: +network-manager-applet: nm-applet is a gui frontend for NetworkManager. +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: diff --git a/patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txt b/patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..128dd5c60 --- /dev/null +++ b/patches/packages/ntp-4.2.8p11-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +ntp: ntp (Network Time Protocol daemon) +ntp: +ntp: The Network Time Protocol (NTP) is used to synchronize the time of a +ntp: computer client or server to another server or reference time source, +ntp: such as a radio or satellite receiver or modem. It provides client +ntp: accuracies typically within a millisecond on LANs and up to a few tens +ntp: of milliseconds on WANs relative to a primary server synchronized to +ntp: Coordinated Universal Time (UTC) via a Global Positioning Service +ntp: (GPS) receiver, for example. +ntp: +ntp: diff --git a/patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txt b/patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..d24e37780 --- /dev/null +++ b/patches/packages/openexr-2.2.0-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +openexr: openexr (HDR Image File Format & Library) +openexr: +openexr: OpenEXR is an image file format and library developed by Industrial +openexr: Light & Magic, and later released to the public. It provides support +openexr: for high dynamic range and a 16-bit floating point "half" data type +openexr: which is compatible with the half data type in the Cg programming +openexr: language. +openexr: +openexr: Homepage: http://www.openexr.org/ +openexr: +openexr: diff --git a/patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txt b/patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..824f52509 --- /dev/null +++ b/patches/packages/openjpeg-2.3.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +openjpeg: openjpeg (JPEG2000 Codec) +openjpeg: +openjpeg: The OpenJPEG library is an open-source JPEG 2000 codec. +openjpeg: +openjpeg: Homepage: http://www.openjpeg.org +openjpeg: +openjpeg: +openjpeg: +openjpeg: +openjpeg: +openjpeg: diff --git a/patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txt b/patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..65f391715 --- /dev/null +++ b/patches/packages/openssh-7.4p1-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +openssh: openssh (Secure Shell daemon and clients) +openssh: +openssh: ssh (Secure Shell) is a program for logging into a remote machine and +openssh: for executing commands on a remote machine. It is intended to replace +openssh: rlogin and rsh, and provide secure encrypted communications between +openssh: two untrusted hosts over an insecure network. sshd (SSH Daemon) is +openssh: the daemon program for ssh. OpenSSH is based on the last free version +openssh: of Tatu Ylonen's SSH, further enhanced and cleaned up by Aaron +openssh: Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt, and +openssh: Dug Song. It has a homepage at http://www.openssh.com/ +openssh: diff --git a/patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txt b/patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..26048b4f4 --- /dev/null +++ b/patches/packages/openssl-1.0.2o-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +openssl: openssl (Secure Sockets Layer toolkit) +openssl: +openssl: The OpenSSL certificate management tool and the shared libraries that +openssl: provide various encryption and decryption algorithms and protocols. +openssl: +openssl: This product includes software developed by the OpenSSL Project for +openssl: use in the OpenSSL Toolkit (http://www.openssl.org). This product +openssl: includes cryptographic software written by Eric Young +openssl: (eay@cryptsoft.com). This product includes software written by Tim +openssl: Hudson (tjh@cryptsoft.com). +openssl: diff --git a/patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txt b/patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..2811c662a --- /dev/null +++ b/patches/packages/openssl-solibs-1.0.2o-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +openssl-solibs: openssl-solibs (OpenSSL shared libraries) +openssl-solibs: +openssl-solibs: These shared libraries provide encryption routines required by +openssl-solibs: programs such as openssh, bind, sendmail, and many others. +openssl-solibs: +openssl-solibs: This product includes software developed by the OpenSSL Project for +openssl-solibs: use in the OpenSSL Toolkit (http://www.openssl.org). This product +openssl-solibs: includes cryptographic software written by Eric Young +openssl-solibs: (eay@cryptsoft.com). This product includes software written by Tim +openssl-solibs: Hudson (tjh@cryptsoft.com). +openssl-solibs: diff --git a/patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txt b/patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..73bb76e03 --- /dev/null +++ b/patches/packages/openvpn-2.4.6-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +openvpn: openvpn (secure IP tunnel daemon) +openvpn: +openvpn: OpenVPN is a full-featured SSL VPN which can accommodate a wide range +openvpn: of configurations, including remote access, site-to-site VPNs, WiFi +openvpn: security, and enterprise-scale remote access with load balancing, +openvpn: failover, and fine-grained access-controls. +openvpn: +openvpn: OpenVPN's home on the net is: http://openvpn.net +openvpn: +openvpn: +openvpn: diff --git a/patches/packages/patch-2.7.6-x86_64-1_slack14.2.txt b/patches/packages/patch-2.7.6-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..0120ae50d --- /dev/null +++ b/patches/packages/patch-2.7.6-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +patch: patch (apply a diff file to an original file or files) +patch: +patch: Patch is a utility used to apply diffs (or patches) to files, which +patch: are usually source code. +patch: +patch: Larry Wall wrote the original version of patch. Paul Eggert removed +patch: patch's arbitrary limits; added support for binary files, setting +patch: file times, and deleting files; and made it conform better to POSIX. +patch: Other contributors include Wayne Davison, who added unidiff support, +patch: and David MacKenzie, who added configuration and backup support. +patch: diff --git a/patches/packages/php-5.6.36-x86_64-1_slack14.2.txt b/patches/packages/php-5.6.36-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..e771b5f33 --- /dev/null +++ b/patches/packages/php-5.6.36-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +php: php (HTML-embedded scripting language) +php: +php: PHP is an HTML-embedded scripting language. It shares syntax +php: characteristics with C, Java, and Perl. The primary objective behind +php: this language is to make a fast and easy-to-use scripting language +php: for dynamic web sites. +php: +php: More information can be found online at http://www.php.net/ +php: +php: +php: diff --git a/patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txt b/patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..1eb97f006 --- /dev/null +++ b/patches/packages/pidgin-2.12.0-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +pidgin: pidgin (GTK+ instant messaging program) +pidgin: +pidgin: Pidgin allows you to talk to anyone using a variety of messaging +pidgin: protocols, including AIM (Oscar and TOC), ICQ, IRC, Yahoo!, MSN +pidgin: Messenger, Jabber, Gadu-Gadu, Napster, and Zephyr. These protocols +pidgin: are implemented using a modular, easy to use design. To use a +pidgin: protocol, just load the plugin for it. +pidgin: +pidgin: For more info, see: http://www.pidgin.im +pidgin: +pidgin: diff --git a/patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txt b/patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..49f4bfcc8 --- /dev/null +++ b/patches/packages/pkg-config-0.29.2-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +pkg-config: pkg-config (system for managing library compile/link flags) +pkg-config: +pkg-config: pkg-config is a system for managing library compile/link flags +pkg-config: that works with automake and autoconf. It replaces the ubiquitous +pkg-config: *-config scripts you may have seen with a single tool. See the man +pkg-config: page that comes with pkg-config for full documentation. +pkg-config: +pkg-config: +pkg-config: +pkg-config: +pkg-config: diff --git a/patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txt b/patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..19ad8b211 --- /dev/null +++ b/patches/packages/procps-ng-3.3.15-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +procps-ng: procps-ng (utilities for displaying process information) +procps-ng: +procps-ng: The procps-ng package provides the classic set of utilities used to +procps-ng: display information about the processes currently running on the +procps-ng: machine. +procps-ng: +procps-ng: Homepage: http://sourceforge.net/projects/procps-ng/ +procps-ng: +procps-ng: +procps-ng: +procps-ng: diff --git a/patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txt b/patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7053edf3e --- /dev/null +++ b/patches/packages/proftpd-1.3.5e-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +proftpd: proftpd (FTP server daemon) +proftpd: +proftpd: ProFTPD is the Professional File Transfer Protocol (FTP) server +proftpd: daemon. ProFTPD grew out of the desire to have a secure and +proftpd: configurable FTP server, and out of a significant admiration of the +proftpd: Apache web server. +proftpd: +proftpd: +proftpd: +proftpd: +proftpd: diff --git a/patches/packages/python-2.7.15-x86_64-1_slack14.2.txt b/patches/packages/python-2.7.15-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..047c1bd44 --- /dev/null +++ b/patches/packages/python-2.7.15-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +python: python (object-oriented interpreted programming language) +python: +python: Python is an interpreted, interactive, object-oriented programming +python: language that combines remarkable power with very clear syntax. +python: Python's basic power can be extended with your own modules written in +python: C or C++. Python is also adaptable as an extension language for +python: existing applications. +python: +python: +python: +python: diff --git a/patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txt b/patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..1b4be2ef9 --- /dev/null +++ b/patches/packages/rpcbind-0.2.4-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +rpcbind: rpcbind (a daemon to manage RPC connections) +rpcbind: +rpcbind: This is a network daemon used to manage connections to RPC services. +rpcbind: It is meant as a replacement for the 'rpc.portmap' server from the +rpcbind: 'portmap' package. Daemons that offer RPC services (such as the +rpcbind: daemons for NFS) tell the rpcbind on what port they listen. +rpcbind: RPC network port numbers may change each time the system is booted. +rpcbind: +rpcbind: This package is required to use NFS or other RPC services. +rpcbind: +rpcbind: Homepage: http://sourceforge.net/projects/rpcbind/ diff --git a/patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txt b/patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7565757a9 --- /dev/null +++ b/patches/packages/rsync-3.1.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +rsync: rsync (remote file sync) +rsync: +rsync: rsync is a replacement for rcp that has many more features. It +rsync: uses the "rsync algorithm" which provides a very fast method for +rsync: bringing remote files into sync. It does this by sending just the +rsync: differences in the files across the link, without requiring that both +rsync: sets of files are present at one of the ends of the link beforehand. +rsync: rsync was written by Andrew Tridgell and Paul Mackerras. +rsync: +rsync: Homepage: http://rsync.samba.org +rsync: diff --git a/patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txt b/patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..265efadf6 --- /dev/null +++ b/patches/packages/ruby-2.2.10-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +ruby: ruby (Interpreted object-oriented scripting language) +ruby: +ruby: Ruby is an interpreted scripting language for quick and easy +ruby: object-oriented programming. It has many features to process text +ruby: files and to do system management tasks (as in Perl). It is simple, +ruby: straight-forward, and extensible. +ruby: +ruby: Visit the Ruby project online at http://www.ruby-lang.org/ +ruby: +ruby: +ruby: diff --git a/patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txt b/patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..21fc353f9 --- /dev/null +++ b/patches/packages/rxvt-2.7.10-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +rxvt: rxvt (terminal emulator) +rxvt: +rxvt: rxvt is a color vt102 terminal emulator intended as an xterm +rxvt: replacement for users who do not require features such as Tektronix +rxvt: 4014 emulation and toolkit-style configurability. As a result, rxvt +rxvt: uses much less memory -- a significant advantage on a machine serving +rxvt: many X sessions. Also included is rclock, an analog clock for X. +rxvt: +rxvt: +rxvt: +rxvt: diff --git a/patches/packages/samba-4.4.16-x86_64-3_slack14.2.txt b/patches/packages/samba-4.4.16-x86_64-3_slack14.2.txt new file mode 100644 index 000000000..f4b2ff06d --- /dev/null +++ b/patches/packages/samba-4.4.16-x86_64-3_slack14.2.txt @@ -0,0 +1,11 @@ +samba: samba (CIFS file and print server) +samba: +samba: Samba is a CIFS file and print server for CIFS clients. It allows +samba: you to make file space or printers on a Samba host available to CIFS +samba: clients (such as PCs running Windows). +samba: +samba: If you have any Windows file servers, you may be able to replace them +samba: or supplement them with Samba. One of Samba's big strengths is +samba: integration, so you can use it to tie together your Linux hosts and +samba: Windows PC clients. +samba: diff --git a/patches/packages/scim-1.4.17-x86_64-1_slack14.2.txt b/patches/packages/scim-1.4.17-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..f38ca50f2 --- /dev/null +++ b/patches/packages/scim-1.4.17-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +scim: scim (Smart Common Input Method platform) +scim: +scim: SCIM is an input platform for CJK and other languages. +scim: It aims to significantly reduce the difficulty of input method +scim: development. +scim: +scim: See the scim scripts in /etc/profile.d/ for setup info. +scim: +scim: scim home: http://www.scim-im.org/ +scim: +scim: diff --git a/patches/packages/screen-4.4.0-x86_64-2_slack14.2.txt b/patches/packages/screen-4.4.0-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..b788c2976 --- /dev/null +++ b/patches/packages/screen-4.4.0-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +screen: screen (screen manager with VT100/ANSI terminal emulation) +screen: +screen: Screen is a full-screen window manager that multiplexes a physical +screen: terminal between several processes (typically interactive shells). +screen: Each virtual terminal provides the functions of a DEC VT100 terminal +screen: and several control functions from the ISO 6492 (ECMA 48, ANSI X3.64) +screen: and ISO 2022 standards (e.g. insert/delete line and support for +screen: multiple character sets). There is a scrollback history buffer for +screen: each virtual terminal and a copy-and-paste mechanism that allows +screen: moving text regions between windows. +screen: diff --git a/patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txt b/patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..5706c71ec --- /dev/null +++ b/patches/packages/sdl-1.2.15-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +sdl: sdl (Simple DirectMedia Layer library) +sdl: +sdl: This is the Simple DirectMedia Layer, a generic API that provides low +sdl: level access to audio, keyboard, mouse, joystick, 3D hardware via +sdl: OpenGL, and 2D framebuffer across multiple platforms. +sdl: +sdl: SDL links against alsa-lib, audiofile, esound, and the X11 libraries. +sdl: Make sure all of these are installed if you're planning to use SDL +sdl: (a full installation will cover all of the prerequisites). +sdl: +sdl: diff --git a/patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txt b/patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..da07187a3 --- /dev/null +++ b/patches/packages/seamonkey-2.49.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +seamonkey: SeaMonkey (an open-source web browser suite) +seamonkey: +seamonkey: The SeaMonkey browser suite. SeaMonkey features a state-of-the-art +seamonkey: web browser and powerful email client, as well as a WYSIWYG web page +seamonkey: composer and a feature-rich IRC chat client. +seamonkey: +seamonkey: +seamonkey: +seamonkey: Visit the SeaMonkey project at this URL: +seamonkey: http://www.mozilla.org/projects/seamonkey/ +seamonkey: diff --git a/patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txt b/patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..830b825d0 --- /dev/null +++ b/patches/packages/seamonkey-solibs-2.49.3-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +seamonkey-solibs: seamonkey-solibs (Shared libraries from Seamonkey) +seamonkey-solibs: +seamonkey-solibs: This package contains a subset of the shared libraries from Seamonkey +seamonkey-solibs: to provide runtime support for various programs. +seamonkey-solibs: This package is built from the Seamonkey sources and is provided +seamonkey-solibs: as a standalone runtime package for people who do not want to install +seamonkey-solibs: the entire seamonkey package (as for server use). +seamonkey-solibs: +seamonkey-solibs: This package is runtime only. The include files and other files for +seamonkey-solibs: development can be found in the seamonkey package. +seamonkey-solibs: diff --git a/patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txt b/patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..9f6c65dd3 --- /dev/null +++ b/patches/packages/squashfs-tools-4.3-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +squashfs-tools: squashfs-tools (squashed read-only filesystem for Linux) +squashfs-tools: +squashfs-tools: Squashfs is a highly compressed read-only filesystem for Linux. +squashfs-tools: Squashfs compresses both files, inodes and directories, and +squashfs-tools: supports block sizes up to 1Mbytes for greater compression. +squashfs-tools: It is implemented as a kernel module under VFS. +squashfs-tools: The package contains tools for manipulation of squashfs bundles. +squashfs-tools: +squashfs-tools: +squashfs-tools: squashfs-tools home: http://squashfs.sourceforge.net/ +squashfs-tools: diff --git a/patches/packages/stunnel-5.35-x86_64-2_slack14.2.txt b/patches/packages/stunnel-5.35-x86_64-2_slack14.2.txt new file mode 100644 index 000000000..2e5c70caf --- /dev/null +++ b/patches/packages/stunnel-5.35-x86_64-2_slack14.2.txt @@ -0,0 +1,11 @@ +stunnel: stunnel (Universal SSL tunnel) +stunnel: +stunnel: The stunnel program is designed to work as an SSL encryption wrapper +stunnel: between remote client and local (inetd-startable) or remote servers. +stunnel: The goal is to facilitate SSL encryption and authentication for +stunnel: non-SSL-aware programs. +stunnel: +stunnel: stunnel can be used to add SSL functionality to commonly used inetd +stunnel: daemons like POP-2, POP-3 and IMAP servers without any changes in the +stunnel: programs' code. +stunnel: diff --git a/patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txt b/patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..7b4386899 --- /dev/null +++ b/patches/packages/subversion-1.9.7-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +subversion: subversion (a version control system) +subversion: +subversion: Subversion is a version control system which allows you to keep old +subversion: versions of files and directories (usually source code), and keep a +subversion: log of who, when, and why changes occurred, similar to other such +subversion: systems like CVS, RCS or SCCS. Subversion keeps all the information +subversion: to permit extracting previous versions of those files at any time. +subversion: +subversion: For more information about the Subversion project, visit: +subversion: http://subversion.apache.org +subversion: diff --git a/patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txt b/patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..1f1087d7c --- /dev/null +++ b/patches/packages/sudo-1.8.20p2-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +sudo: sudo (give limited root privileges to certain users) +sudo: +sudo: 'sudo' is a command that allows users to execute some commands as +sudo: root. The /etc/sudoers file (edited with 'visudo') specifies which +sudo: users have access to sudo and which commands they can run. 'sudo' +sudo: logs all its activities to /var/log/ so the system administrator +sudo: can keep an eye on things. +sudo: +sudo: +sudo: +sudo: diff --git a/patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txt b/patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..cee0ef1a1 --- /dev/null +++ b/patches/packages/tcpdump-4.9.2-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +tcpdump: tcpdump (network monitoring tool) +tcpdump: +tcpdump: Tcpdump is a tool for network monitoring and data acquisition. You +tcpdump: can use it to dump information on all the packets on a network that +tcpdump: match a boolean expression. Tcpdump uses libpcap, a system +tcpdump: independent interface for user-level packet capture. +tcpdump: +tcpdump: Project homepage: http://www.tcpdump.org +tcpdump: +tcpdump: +tcpdump: diff --git a/patches/packages/wget-1.19.5-x86_64-1_slack14.2.txt b/patches/packages/wget-1.19.5-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..cd0faad01 --- /dev/null +++ b/patches/packages/wget-1.19.5-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +wget: wget (a non-interactive network retriever) +wget: +wget: GNU Wget is a free network utility to retrieve files from the +wget: World Wide Web using HTTP and FTP, the two most widely used Internet +wget: protocols. It works non-interactively, thus enabling work in the +wget: background after having logged off. +wget: +wget: The author of Wget is Hrvoje Niksic . +wget: +wget: +wget: diff --git a/patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txt b/patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..3c64dd12e --- /dev/null +++ b/patches/packages/wpa_supplicant-2.6-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +wpa_supplicant: wpa_supplicant (WPA/WPA2/IEEE 802.1X Supplicant) +wpa_supplicant: +wpa_supplicant: wpa_supplicant is a WPA Supplicant for Linux with support for WPA and +wpa_supplicant: WPA2 (IEEE 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA +wpa_supplicant: component that is used in the client stations. It implements key +wpa_supplicant: negotiation with a WPA Authenticator and it controls the roaming and +wpa_supplicant: IEEE 802.11 authentication/association of the wlan driver. +wpa_supplicant: +wpa_supplicant: More info: http://hostap.epitest.fi/wpa_supplicant/ +wpa_supplicant: +wpa_supplicant: diff --git a/patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txt b/patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..fa3bc6268 --- /dev/null +++ b/patches/packages/xfce4-weather-plugin-0.8.10-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +xfce4-weather-plugin: xfce4-weather-plugin (weather plugin for the Xfce panel) +xfce4-weather-plugin: +xfce4-weather-plugin: The weather plugin displays current weather conditions and forecasts. +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: diff --git a/patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txt b/patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..1ebe1b270 --- /dev/null +++ b/patches/packages/xorg-server-1.18.3-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +xorg-server: xorg-server (The Xorg server, the core of the X Window System) +xorg-server: +xorg-server: Xorg is a full featured X server that was originally designed for UNIX +xorg-server: and UNIX-like operating systems running on Intel x86 hardware. It now +xorg-server: runs on a wider range of hardware and OS platforms. This work was +xorg-server: derived by the X.Org Foundation from the XFree86 Project's XFree86 +xorg-server: 4.4rc2 release. The XFree86 release was originally derived from X386 +xorg-server: 1.2 by Thomas Roell which was contributed to X11R5 by Snitily Graphics +xorg-server: Consulting Service. +xorg-server: +xorg-server: The home page for the X project is: http://www.x.org diff --git a/patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txt b/patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..2ffb35f60 --- /dev/null +++ b/patches/packages/xorg-server-xephyr-1.18.3-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +xorg-server-xephyr: xorg-server-xephyr (Improved nested X server/client) +xorg-server-xephyr: +xorg-server-xephyr: Xephyr is a nested X-Client like Xnest, but with some additional +xorg-server-xephyr: features like XRender support. +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: diff --git a/patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txt b/patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..31dc1e78e --- /dev/null +++ b/patches/packages/xorg-server-xnest-1.18.3-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +xorg-server-xnest: xorg-server-xnest (a nested X server) +xorg-server-xnest: +xorg-server-xnest: Xnest is an experimental nested server for X that acts as both a +xorg-server-xnest: client and a server. Xnest is a client of the real server which +xorg-server-xnest: manages windows and graphics requests on its behalf. Xnest is a +xorg-server-xnest: server to its own clients. Xnest manages windows and graphics +xorg-server-xnest: requests on their behalf. To these clients Xnest appears to be a +xorg-server-xnest: conventional server. +xorg-server-xnest: +xorg-server-xnest: +xorg-server-xnest: diff --git a/patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txt b/patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txt new file mode 100644 index 000000000..3a7122df2 --- /dev/null +++ b/patches/packages/xorg-server-xvfb-1.18.3-x86_64-5_slack14.2.txt @@ -0,0 +1,11 @@ +xorg-server-xvfb: xorg-server-xvfb (virtual framebuffer X server) +xorg-server-xvfb: +xorg-server-xvfb: Xvfb is an X server that can run on machines with no display hardware +xorg-server-xvfb: and no physical input devices. It emulates a dumb framebuffer using +xorg-server-xvfb: virtual memory. The primary use of this server is intended to be +xorg-server-xvfb: server testing. The mfb or cfb code for any depth can be exercised +xorg-server-xvfb: with this server without the need for real hardware that supports the +xorg-server-xvfb: desired depths. A secondary use is testing clients against unusual +xorg-server-xvfb: depths and screen configurations. +xorg-server-xvfb: +xorg-server-xvfb: diff --git a/patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txt b/patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txt new file mode 100644 index 000000000..62dcff517 --- /dev/null +++ b/patches/packages/xscreensaver-5.38-x86_64-1_slack14.2.txt @@ -0,0 +1,11 @@ +xscreensaver: xscreensaver (a screen saver and locker for X) +xscreensaver: +xscreensaver: A modular screen saver and locker for the X Window System. Highly +xscreensaver: customizable: allows the use of any program that can draw on the +xscreensaver: root window as a display mode. More than 100 display modes are +xscreensaver: included in this package. +xscreensaver: +xscreensaver: Homepage: http://www.jwz.org/xscreensaver +xscreensaver: +xscreensaver: +xscreensaver: diff --git a/patches/source/NetworkManager/55NetworkManager b/patches/source/NetworkManager/55NetworkManager new file mode 100644 index 000000000..d7b3ee6ae --- /dev/null +++ b/patches/source/NetworkManager/55NetworkManager @@ -0,0 +1,39 @@ +#!/bin/sh +# If we are running NetworkManager, tell it we are going to sleep. + +. "${PM_FUNCTIONS}" + +suspend_nm() +{ + # Tell NetworkManager to shut down networking + printf "Having NetworkManager put all interaces to sleep..." + dbus_send --system --print-reply \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.Sleep \ + boolean:true && \ + echo Done. || echo Failed. +} + +resume_nm() +{ + # Wake up NetworkManager and make it do a new connection + printf "Having NetworkManager wake interfaces back up..." + dbus_send --system --print-reply \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.Sleep \ + boolean:false && \ + echo Done. || echo Failed. +} + +case "$1" in + hibernate|suspend) + suspend_nm + ;; + thaw|resume) + resume_nm + ;; + *) exit $NA + ;; +esac diff --git a/patches/source/NetworkManager/NetworkManager.SlackBuild b/patches/source/NetworkManager/NetworkManager.SlackBuild new file mode 100755 index 000000000..ae5dc7caf --- /dev/null +++ b/patches/source/NetworkManager/NetworkManager.SlackBuild @@ -0,0 +1,181 @@ +#!/bin/sh + +# Copyright 2010, 2011, 2014, 2016 Robby Workman, Northport, Alabama, USA +# Copyright 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2011, 2012 by Eric Hameleers, Eindhoven, NL + +PKGNAM=NetworkManager +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Find the version number for pppd, used to specify the plugin directory: +PPPD=$(echo /usr/lib${LIBDIRSUFFIX}/pppd/?.?.? | rev | cut -f 1 -d / | rev) + +# Apply bugfix patches from upstream git: +for dfile in $CWD/patches/* ; do + zcat $dfile | patch -p1 --verbose || exit 1 +done + +# For git-patched builds +autoreconf -vif +automake +./autogen.sh + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --with-udev-dir=/lib/udev \ + --with-pppd-plugin-dir=/usr/lib${LIBDIRSUFFIX}/pppd/$PPPD \ + --with-crypto=nss \ + --enable-more-warnings=no \ + --without-resolvconf \ + --with-dhcpcd=/sbin/dhcpcd \ + --with-dhclient=yes \ + --with-modem-manager-1=yes \ + --with-nmtui=yes \ + --disable-vala \ + --disable-json-validation \ + --with-session-tracking=consolekit \ + --with-suspend-resume=consolekit \ + --with-hostname-persist=slackware \ + --build=$TARGET || exit 1 + +make $NUMJOBS || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +# Fix hardlinked manpages: +( cd $PKG/usr/man/man1 + ln -sf nmtui.1 nmtui-connect.1 + ln -sf nmtui.1 nmtui-edit.1 + ln -sf nmtui.1 nmtui-hostname.1 +) + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +# In case NetworkManager tries to install something here: +rm -f $PKG/etc/rc.d/rc.networkmanager + +# Don't clobber existing rc.networkmanager +# Don't run NetworkManager by default just because it got installed. +# Instead, the init script will have to be made executable first. +# This should avoid nasty surprises on potentially remotely located machines. +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.networkmanager > $PKG/etc/rc.d/rc.networkmanager.new +chmod 0644 $PKG/etc/rc.d/rc.networkmanager.new + +# Add the pm-utils hook back in +# xfce4-power-manager needs to be built *without* NM support +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pm-utils/sleep.d/ +cat $CWD/55NetworkManager > $PKG/usr/lib${LIBDIRSUFFIX}/pm-utils/sleep.d/55NetworkManager +chmod 0755 $PKG/usr/lib${LIBDIRSUFFIX}/pm-utils/sleep.d/55NetworkManager + +# Add default (plain) config file to enable keyfile plugin +cat $CWD/NetworkManager.conf > $PKG/etc/NetworkManager/NetworkManager.conf.new + +# Set dhcp client to "dhcpcd" and rc-manager to "file" by default +mkdir -p $PKG/etc/NetworkManager/conf.d +cat $CWD/conf.d/00-dhcp-client.conf > $PKG/etc/NetworkManager/conf.d/00-dhcp-client.conf.new +cat $CWD/conf.d/00-rc-manager.conf > $PKG/etc/NetworkManager/conf.d/00-rc-manager.conf.new + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS CONTRIBUTING COPYING ChangeLog INSTALL NEWS README TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PKGNAM-$VERSION/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PKGNAM-$VERSION/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg --prepend -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/NetworkManager/NetworkManager.conf b/patches/source/NetworkManager/NetworkManager.conf new file mode 100644 index 000000000..eb8f6ae19 --- /dev/null +++ b/patches/source/NetworkManager/NetworkManager.conf @@ -0,0 +1,7 @@ +# /etc/NetworkManager/NetworkManager.conf +# +# See additional config files (such as for DHCP settings) in ./conf.d + +[main] +plugins=keyfile + diff --git a/patches/source/NetworkManager/conf.d/00-dhcp-client.conf b/patches/source/NetworkManager/conf.d/00-dhcp-client.conf new file mode 100644 index 000000000..7b52815f9 --- /dev/null +++ b/patches/source/NetworkManager/conf.d/00-dhcp-client.conf @@ -0,0 +1,8 @@ +[main] +# Choose a DHCP client below. Upstream recommends dhclient, but results may vary. +# dhcpcd is the DHCP client usually used by Slackware: +dhcp=dhcpcd +# dhclient is the ISC reference DHCP client, part of the dhcp package: +#dhcp=dhclient +# This is a simple DHCP client that is built into NetworkManager: +#dhcp=internal diff --git a/patches/source/NetworkManager/conf.d/00-rc-manager.conf b/patches/source/NetworkManager/conf.d/00-rc-manager.conf new file mode 100644 index 000000000..c848c0039 --- /dev/null +++ b/patches/source/NetworkManager/conf.d/00-rc-manager.conf @@ -0,0 +1,2 @@ +[main] +rc-manager=file diff --git a/patches/source/NetworkManager/doinst.sh b/patches/source/NetworkManager/doinst.sh new file mode 100644 index 000000000..6c88b8cf5 --- /dev/null +++ b/patches/source/NetworkManager/doinst.sh @@ -0,0 +1,42 @@ + +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + mv ${NEW} ${OLD} +} + +if [ -e etc/HOSTNAME ]; then + sed -i "s,yourhostname,$(cat etc/HOSTNAME | cut -f1 -d .)," \ + etc/NetworkManager/NetworkManager.conf.new +fi + +# Preserve permissions, but move this into place. Otherwise the net +# connection could be lost at a remote location. +preserve_perms etc/rc.d/rc.networkmanager.new +config etc/NetworkManager/NetworkManager.conf.new +config etc/NetworkManager/conf.d/00-rc-manager.conf.new +config etc/NetworkManager/conf.d/00-dhcp-client.conf.new + +# If the .pid file is found in the old location, move it to the new one: +if [ -r var/run/NetworkManager.pid ]; then + mv var/run/NetworkManager.pid var/run/NetworkManager/NetworkManager.pid +fi + diff --git a/patches/source/NetworkManager/rc.networkmanager b/patches/source/NetworkManager/rc.networkmanager new file mode 100644 index 000000000..b6b311ed1 --- /dev/null +++ b/patches/source/NetworkManager/rc.networkmanager @@ -0,0 +1,113 @@ +#!/bin/sh +# +# NetworkManager: NetworkManager daemon +# +# description: This is a daemon for automatically switching network \ +# connections to the best available connection. \ +# +# processname: NetworkManager +# pidfile: /var/run/NetworkManager/NetworkManager.pid +# + +prefix=/usr +exec_prefix=/usr +sbindir=${exec_prefix}/sbin + +NETWORKMANAGER_BIN=${sbindir}/NetworkManager + +# Sanity checks. +[ -x $NETWORKMANAGER_BIN ] || exit 0 + +PIDFILE=/var/run/NetworkManager/NetworkManager.pid + +nm_start() +{ + if [ "`pgrep dbus-daemon`" = "" ]; then + echo "D-BUS must be running to start NetworkManager" + return + fi + + # Just in case the pidfile is still there, we may need to nuke it. + if [ -e "$PIDFILE" ]; then + rm -f $PIDFILE + fi + + echo "Starting NetworkManager daemon: $NETWORKMANAGER_BIN" + XDG_CACHE_HOME=/root/.cache $NETWORKMANAGER_BIN +} + +nm_status() +{ + local pidlist=`cat $PIDFILE 2>/dev/null` + if [ -z "$pidlist" ]; then + return 1 + fi + local command=`ps -p $pidlist -o comm=` + if [ "$command" != 'NetworkManager' ]; then + return 1 + fi +} + +nm_stop() +{ + echo -en "Stopping NetworkManager: " + # Shut down any DHCP connections, otherwise the processes will be orphaned + # and the connections will not come up when NetworkManager restarts. + if ps ax | grep /sbin/dhcpcd | grep -q libexec/nm-dhcp ; then + ps ax | grep /sbin/dhcpcd | grep libexec/nm-dhcp | while read line ; do + kill -HUP $(echo $line | cut -b 1-5) + done + fi + if ps ax | grep /sbin/dhclient | grep -q /var/lib/NetworkManager ; then + ps ax | grep /sbin/dhclient | grep /var/lib/NetworkManager | while read line ; do + kill -HUP $(echo $line | cut -b 1-5) + done + fi + local pidlist=`cat $PIDFILE 2>/dev/null` + if [ ! -z "$pidlist" ]; then + kill $pidlist &>/dev/null + sleep 3 + rm -f $PIDFILE &>/dev/null + fi + # If wpa_supplicant is running here, it needs to be shut down as well. + # Since you're asking for NetworkManager to shut down, we have to assume + # that wpa_supplicant was started by it. + if [ -r /var/run/wpa_supplicant.pid ]; then + kill $(cat /var/run/wpa_supplicant.pid) + elif [ -r /run/wpa_supplicant.pid ]; then + kill $(cat /run/wpa_supplicant.pid) + fi + echo "stopped"; + sleep 3 +} + +nm_restart() +{ + nm_stop + nm_start +} + +case "$1" in +'start') + if ( ! nm_status ); then + nm_start + else + echo "NetworkManager is already running (will not start it twice)." + fi + ;; +'stop') + nm_stop + ;; +'restart') + nm_restart + ;; +'status') + if ( nm_status ); then + echo "NetworkManager is currently running" + else + echo "NetworkManager is not running." + fi + ;; +*) + echo "usage $0 start|stop|status|restart" +esac diff --git a/patches/source/NetworkManager/slack-desc b/patches/source/NetworkManager/slack-desc new file mode 100644 index 000000000..964960480 --- /dev/null +++ b/patches/source/NetworkManager/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +NetworkManager: NetworkManager (Networking that Just Works) +NetworkManager: +NetworkManager: The point of NetworkManager is to make networking configuration and +NetworkManager: setup as painless and automatic as possible. NetworkManager sets IP +NetworkManager: addresses, default routes, associating with wireless access points +NetworkManager: or wired LANs, and other network configuration settings in a simple, +NetworkManager: automated fashion (manual overrides are still possible). +NetworkManager: +NetworkManager: Home page: http://projects.gnome.org/NetworkManager/ +NetworkManager: +NetworkManager: diff --git a/patches/source/bash/bash-4.3-patches/bash43-001 b/patches/source/bash/bash-4.3-patches/bash43-001 new file mode 100644 index 000000000..ea1c6b265 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-001 @@ -0,0 +1,58 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-001 + +Bug-Reported-by: NBaH +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html + +Bug-Description: + +A missing check for a valid option prevented `test -R' from working. There +is another problem that causes bash to look up the wrong variable name when +processing the argument to `test -R'. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500 +--- test.c 2014-02-28 21:22:44.000000000 -0500 +*************** +*** 647,652 **** + + case 'R': +! v = find_variable (arg); +! return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE); + } + +--- 647,652 ---- + + case 'R': +! v = find_variable_noref (arg); +! return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE); + } + +*************** +*** 724,727 **** +--- 724,728 ---- + case 'u': case 'v': case 'w': case 'x': case 'z': + case 'G': case 'L': case 'O': case 'S': case 'N': ++ case 'R': + return (1); + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 0 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-002 b/patches/source/bash/bash-4.3-patches/bash43-002 new file mode 100644 index 000000000..735b7b81a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-002 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-002 + +Bug-Reported-by: Moe Tunes +Bug-Reference-ID: <53103F49.3070100@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html + +Bug-Description: + +A change to save state while running the DEBUG trap caused pipelines to hang +on systems which need process group synchronization while building pipelines. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500 +--- trap.c 2014-02-28 09:51:43.000000000 -0500 +*************** +*** 921,925 **** + + #if defined (JOB_CONTROL) +! save_pipeline (1); /* XXX only provides one save level */ + #endif + +--- 921,926 ---- + + #if defined (JOB_CONTROL) +! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ +! save_pipeline (1); /* XXX only provides one save level */ + #endif + +*************** +*** 941,945 **** + + #if defined (JOB_CONTROL) +! restore_pipeline (1); + #endif + +--- 942,947 ---- + + #if defined (JOB_CONTROL) +! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ +! restore_pipeline (1); + #endif + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-003 b/patches/source/bash/bash-4.3-patches/bash43-003 new file mode 100644 index 000000000..0f32f410d --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-003 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-003 + +Bug-Reported-by: Anatol Pomozov +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html + +Bug-Description: + +When in callback mode, some readline commands can cause readline to seg +fault by passing invalid contexts to callback functions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 +--- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400 +*************** +*** 745,749 **** + + RL_CHECK_SIGNALS (); +! if (r == 0) /* success! */ + { + _rl_keyseq_chain_dispose (); +--- 745,750 ---- + + RL_CHECK_SIGNALS (); +! /* We only treat values < 0 specially to simulate recursion. */ +! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ + { + _rl_keyseq_chain_dispose (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-004 b/patches/source/bash/bash-4.3-patches/bash43-004 new file mode 100644 index 000000000..010f04a2a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-004 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-004 + +Bug-Reported-by: Daan van Rossum +Bug-Reference-ID: <20140307072523.GA14250@flash.uchicago.edu> +Bug-Reference-URL: + +Bug-Description: + +The `.' command in vi mode cannot undo multi-key commands beginning with +`c', `d', and `y' (command plus motion specifier). + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 +--- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500 +*************** +*** 965,969 **** + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +! rl_key_sequence_length == 1 && /* XXX */ + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +--- 965,969 ---- + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +! _rl_dispatching_keymap == vi_movement_keymap && + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-005 b/patches/source/bash/bash-4.3-patches/bash43-005 new file mode 100644 index 000000000..bcd40697c --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-005 @@ -0,0 +1,63 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-005 + +Bug-Reported-by: David Sines +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html + +Bug-Description: + +When in Posix mode, bash did not correctly interpret the ANSI-C-style +$'...' quoting mechanism when performing pattern substitution word +expansions within double quotes. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500 +--- parse.y 2014-03-07 20:57:15.000000000 -0500 +*************** +*** 3399,3403 **** + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +--- 3399,3403 ---- + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 +--- y.tab.c 2014-03-28 10:41:15.000000000 -0400 +*************** +*** 5711,5715 **** + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +--- 5711,5715 ---- + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-006 b/patches/source/bash/bash-4.3-patches/bash43-006 new file mode 100644 index 000000000..24ff057a5 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-006 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-006 + +Bug-Reported-by: Eduardo A . Bustamante Lopez +Bug-Reference-ID: <20140228170013.GA16015@dualbus.me> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html + +Bug-Description: + +A shell that started with job control active but was not interactive left +the terminal in the wrong process group when exiting, causing its parent +shell to get a stop signal when it attempted to read from the terminal. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500 +--- jobs.c 2014-03-02 18:05:09.000000000 -0500 +*************** +*** 4375,4379 **** + end_job_control () + { +! if (interactive_shell) /* XXX - should it be interactive? */ + { + terminate_stopped_jobs (); +--- 4375,4379 ---- + end_job_control () + { +! if (interactive_shell || job_control) /* XXX - should it be just job_control? */ + { + terminate_stopped_jobs (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-007 b/patches/source/bash/bash-4.3-patches/bash43-007 new file mode 100644 index 000000000..0d62c9ec6 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-007 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-007 + +Bug-Reported-by: geir.hauge@gmail.com +Bug-Reference-ID: <20140318093650.B181C1C5B0B@gina.itea.ntnu.no> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html + +Bug-Description: + +Using compound assignments for associative arrays like + +assoc=( [x]= [y]=bar ) + +left the value corresponding to the key `x' NULL. This caused subsequent +lookups to interpret it as unset. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 +--- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 +*************** +*** 598,601 **** +--- 598,606 ---- + { + val = expand_assignment_string_to_string (val, 0); ++ if (val == 0) ++ { ++ val = (char *)xmalloc (1); ++ val[0] = '\0'; /* like do_assignment_internal */ ++ } + free_val = 1; + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-008 b/patches/source/bash/bash-4.3-patches/bash43-008 new file mode 100644 index 000000000..0ae7c9522 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-008 @@ -0,0 +1,188 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-008 + +Bug-Reported-by: Stephane Chazelas +Bug-Reference-ID: <20140318135901.GB22158@chaz.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html + +Bug-Description: + +Some extended glob patterns incorrectly matched filenames with a leading +dot, regardless of the setting of the `dotglob' option. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 +--- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 +*************** +*** 211,214 **** +--- 211,215 ---- + case '!': + case '@': ++ case '?': + return (pat[1] == LPAREN); + default: +*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 +--- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 +*************** +*** 180,202 **** + int flags; + { +! char *pp, *pe, *t; +! int n, r; + + pp = pat + 2; +! pe = pp + strlen (pp) - 1; /*(*/ +! if (*pe != ')') +! return 0; +! if ((t = strchr (pp, '|')) == 0) /* easy case first */ + { + *pe = '\0'; + r = skipname (pp, dname, flags); /*(*/ + *pe = ')'; + return r; + } + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; + t[-1] = '\0'; + r = skipname (pp, dname, flags); + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ +--- 180,215 ---- + int flags; + { +! char *pp, *pe, *t, *se; +! int n, r, negate; + ++ negate = *pat == '!'; + pp = pat + 2; +! se = pp + strlen (pp) - 1; /* end of string */ +! pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ +! /* we should check for invalid extglob pattern here */ +! /* if pe != se we have more of the pattern at the end of the extglob +! pattern. Check the easy case first ( */ +! if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) + { + *pe = '\0'; ++ #if defined (HANDLE_MULTIBYTE) ++ r = mbskipname (pp, dname, flags); ++ #else + r = skipname (pp, dname, flags); /*(*/ ++ #endif + *pe = ')'; + return r; + } ++ ++ /* check every subpattern */ + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; + t[-1] = '\0'; ++ #if defined (HANDLE_MULTIBYTE) ++ r = mbskipname (pp, dname, flags); ++ #else + r = skipname (pp, dname, flags); ++ #endif + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ +*************** +*** 205,219 **** + } /*(*/ + +! if (pp == pe) /* glob_patscan might find end of pattern */ + return r; + +! *pe = '\0'; +! # if defined (HANDLE_MULTIBYTE) +! r = mbskipname (pp, dname, flags); /*(*/ +! # else +! r = skipname (pp, dname, flags); /*(*/ +! # endif +! *pe = ')'; +! return r; + } + #endif +--- 218,227 ---- + } /*(*/ + +! /* glob_patscan might find end of pattern */ +! if (pp == se) + return r; + +! /* but if it doesn't then we didn't match a leading dot */ +! return 0; + } + #endif +*************** +*** 278,289 **** + { + #if EXTENDED_GLOB +! wchar_t *pp, *pe, *t, n; +! int r; + + pp = pat + 2; +! pe = pp + wcslen (pp) - 1; /*(*/ +! if (*pe != L')') +! return 0; +! if ((t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; +--- 286,298 ---- + { + #if EXTENDED_GLOB +! wchar_t *pp, *pe, *t, n, *se; +! int r, negate; + ++ negate = *pat == L'!'; + pp = pat + 2; +! se = pp + wcslen (pp) - 1; /*(*/ +! pe = glob_patscan_wc (pp, se, 0); +! +! if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; +*************** +*** 292,295 **** +--- 301,306 ---- + return r; + } ++ ++ /* check every subpattern */ + while (t = glob_patscan_wc (pp, pe, '|')) + { +*************** +*** 306,313 **** + return r; + +! *pe = L'\0'; +! r = wchkname (pp, dname); /*(*/ +! *pe = L')'; +! return r; + #else + return (wchkname (pat, dname)); +--- 317,322 ---- + return r; + +! /* but if it doesn't then we didn't match a leading dot */ +! return 0; + #else + return (wchkname (pat, dname)); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-009 b/patches/source/bash/bash-4.3-patches/bash43-009 new file mode 100644 index 000000000..015835cde --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-009 @@ -0,0 +1,64 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-009 + +Bug-Reported-by: Matthias Klose +Bug-Reference-ID: <53346FC8.6090005@debian.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html + +Bug-Description: + +There is a problem with unsigned sign extension when attempting to reallocate +the input line when it is fewer than 3 characters long and there has been a +history expansion. The sign extension causes the shell to not reallocate the +line, which results in a segmentation fault when it writes past the end. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500 +--- parse.y 2014-03-27 16:33:29.000000000 -0400 +*************** +*** 2425,2429 **** + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +--- 2425,2429 ---- + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400 +--- y.tab.c 2014-04-07 11:48:31.000000000 -0400 +*************** +*** 4737,4741 **** + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +--- 4737,4741 ---- + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-010 b/patches/source/bash/bash-4.3-patches/bash43-010 new file mode 100644 index 000000000..835a96ead --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-010 @@ -0,0 +1,157 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-010 + +Bug-Reported-by: Albert Shih +Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html + +Bug-Description: + +Patch (apply with `patch -p0'): + +This patch changes the behavior of programmable completion to compensate +for two assumptions made by the bash-completion package. Bash-4.3 changed +to dequote the argument to programmable completion only under certain +circumstances, to make the behavior of compgen more consistent when run +from the command line -- closer to the behavior when run by a shell function +run as part of programmable completion. Bash-completion can pass quoted +arguments to compgen when the original word to be completed was not quoted, +expecting programmable completion to dequote the word before attempting +completion. + +This patch fixes two cases: + +1. An empty string that bash-completion passes to compgen as a quoted null + string (''). + +2. An unquoted word that bash-completion quotes using single quotes or + backslashes before passing it to compgen. + +In these cases, since readline did not detect a quote character in the original +word to be completed, bash-4.3 + +*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500 +--- externs.h 2014-03-13 14:42:57.000000000 -0400 +*************** +*** 325,328 **** +--- 325,329 ---- + extern char *sh_backslash_quote_for_double_quotes __P((char *)); + extern int sh_contains_shell_metas __P((char *)); ++ extern int sh_contains_quotes __P((char *)); + + /* declarations for functions defined in lib/sh/spell.c */ +*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400 +--- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400 +*************** +*** 312,313 **** +--- 312,327 ---- + return (0); + } ++ ++ int ++ sh_contains_quotes (string) ++ char *string; ++ { ++ char *s; ++ ++ for (s = string; s && *s; s++) ++ { ++ if (*s == '\'' || *s == '"' || *s == '\\') ++ return 1; ++ } ++ return 0; ++ } +*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400 +--- pcomplete.c 2014-03-25 17:23:23.000000000 -0400 +*************** +*** 184,187 **** +--- 184,188 ---- + COMPSPEC *pcomp_curcs; + const char *pcomp_curcmd; ++ const char *pcomp_curtxt; + + #ifdef DEBUG +*************** +*** 754,757 **** +--- 755,784 ---- + dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + } ++ /* Intended to solve a mismatched assumption by bash-completion. If ++ the text to be completed is empty, but bash-completion turns it into ++ a quoted string ('') assuming that this code will dequote it before ++ calling readline, do the dequoting. */ ++ else if (iscompgen && iscompleting && ++ pcomp_curtxt && *pcomp_curtxt == 0 && ++ text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && ++ rl_filename_dequoting_function) ++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); ++ /* Another mismatched assumption by bash-completion. If compgen is being ++ run as part of bash-completion, and the argument to compgen is not ++ the same as the word originally passed to the programmable completion ++ code, dequote the argument if it has quote characters. It's an ++ attempt to detect when bash-completion is quoting its filename ++ argument before calling compgen. */ ++ /* We could check whether gen_shell_function_matches is in the call ++ stack by checking whether the gen-shell-function-matches tag is in ++ the unwind-protect stack, but there's no function to do that yet. ++ We could simply check whether we're executing in a function by ++ checking variable_context, and may end up doing that. */ ++ else if (iscompgen && iscompleting && rl_filename_dequoting_function && ++ pcomp_curtxt && text && ++ STREQ (pcomp_curtxt, text) == 0 && ++ variable_context && ++ sh_contains_quotes (text)) /* guess */ ++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + else + dfn = savestring (text); +*************** +*** 1523,1527 **** + { + COMPSPEC *cs, *oldcs; +! const char *oldcmd; + STRINGLIST *ret; + +--- 1550,1554 ---- + { + COMPSPEC *cs, *oldcs; +! const char *oldcmd, *oldtxt; + STRINGLIST *ret; + +*************** +*** 1546,1552 **** +--- 1573,1581 ---- + oldcs = pcomp_curcs; + oldcmd = pcomp_curcmd; ++ oldtxt = pcomp_curtxt; + + pcomp_curcs = cs; + pcomp_curcmd = cmd; ++ pcomp_curtxt = word; + + ret = gen_compspec_completions (cs, cmd, word, start, end, foundp); +*************** +*** 1554,1557 **** +--- 1583,1587 ---- + pcomp_curcs = oldcs; + pcomp_curcmd = oldcmd; ++ pcomp_curtxt = oldtxt; + + /* We need to conditionally handle setting *retryp here */ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-011 b/patches/source/bash/bash-4.3-patches/bash43-011 new file mode 100644 index 000000000..cdc1572ee --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-011 @@ -0,0 +1,49 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-011 + +Bug-Reported-by: Egmont Koblinger +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html + +Bug-Description: + +The signal handling changes to bash and readline (to avoid running any code +in a signal handler context) cause the cursor to be placed on the wrong +line of a multi-line command after a ^C interrupts editing. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000 -0500 +--- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400 +*************** +*** 2678,2682 **** + if (_rl_echoing_p) + { +! _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); +--- 2678,2683 ---- + if (_rl_echoing_p) + { +! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ +! _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-012 b/patches/source/bash/bash-4.3-patches/bash43-012 new file mode 100644 index 000000000..176fa15bd --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-012 @@ -0,0 +1,43 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-012 + +Bug-Reported-by: Eduardo A. Bustamante López +Bug-Reference-ID: <5346B54C.4070205@case.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html + +Bug-Description: + +When a SIGCHLD trap runs a command containing a shell builtin while +a script is running `wait' to wait for all running children to complete, +the SIGCHLD trap will not be run once for each child that terminates. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400 +--- jobs.c 2014-04-15 08:47:03.000000000 -0400 +*************** +*** 3598,3601 **** +--- 3598,3602 ---- + unwind_protect_pointer (the_pipeline); + unwind_protect_pointer (subst_assign_varlist); ++ unwind_protect_pointer (this_shell_builtin); + + /* We have to add the commands this way because they will be run +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-013 b/patches/source/bash/bash-4.3-patches/bash43-013 new file mode 100644 index 000000000..8f4006b48 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-013 @@ -0,0 +1,66 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-013 + +Bug-Reported-by: +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html + +Bug-Description: + +Using reverse-i-search when horizontal scrolling is enabled does not redisplay +the entire line containing the successful search results. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000 -0400 +--- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400 +*************** +*** 1638,1642 **** + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ +! if (current_line == 0 && !_rl_horizontal_scroll_mode && + current_invis_chars != visible_wrap_offset) + { +--- 1638,1642 ---- + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ +! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ + current_invis_chars != visible_wrap_offset) + { +*************** +*** 1826,1831 **** + _rl_last_c_pos += bytes_to_insert; + + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) +! goto clear_rest_of_line; + } + } +--- 1826,1836 ---- + _rl_last_c_pos += bytes_to_insert; + ++ /* XXX - we only want to do this if we are at the end of the line ++ so we move there with _rl_move_cursor_relative */ + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) +! { +! _rl_move_cursor_relative (ne-new, new); +! goto clear_rest_of_line; +! } + } + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-014 b/patches/source/bash/bash-4.3-patches/bash43-014 new file mode 100644 index 000000000..f8371967f --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-014 @@ -0,0 +1,102 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-014 + +Bug-Reported-by: Greg Wooledge +Bug-Reference-ID: <20140418202123.GB7660@eeg.ccf.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html + +Bug-Description: + +Under certain circumstances, $@ is expanded incorrectly in contexts where +word splitting is not performed. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500 +--- subst.c 2014-04-19 15:41:26.000000000 -0400 +*************** +*** 3249,3254 **** +--- 3249,3256 ---- + return ((char *)NULL); + ++ expand_no_split_dollar_star = 1; + w->flags |= W_NOSPLIT2; + l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); ++ expand_no_split_dollar_star = 0; + if (l) + { +*************** +*** 7848,7851 **** +--- 7850,7857 ---- + according to POSIX.2, this expands to a list of the positional + parameters no matter what IFS is set to. */ ++ /* XXX - what to do when in a context where word splitting is not ++ performed? Even when IFS is not the default, posix seems to imply ++ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 ++ here. */ + temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted); + +*************** +*** 8817,8820 **** +--- 8823,8827 ---- + { + char *ifs_chars; ++ char *tstring; + + ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; +*************** +*** 8831,8834 **** +--- 8838,8865 ---- + if (split_on_spaces) + list = list_string (istring, " ", 1); /* XXX quoted == 1? */ ++ /* If we have $@ (has_dollar_at != 0) and we are in a context where we ++ don't want to split the result (W_NOSPLIT2), and we are not quoted, ++ we have already separated the arguments with the first character of ++ $IFS. In this case, we want to return a list with a single word ++ with the separator possibly replaced with a space (it's what other ++ shells seem to do). ++ quoted_dollar_at is internal to this function and is set if we are ++ passed an argument that is unquoted (quoted == 0) but we encounter a ++ double-quoted $@ while expanding it. */ ++ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) ++ { ++ /* Only split and rejoin if we have to */ ++ if (*ifs_chars && *ifs_chars != ' ') ++ { ++ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); ++ tstring = string_list (list); ++ } ++ else ++ tstring = istring; ++ tword = make_bare_word (tstring); ++ if (tstring != istring) ++ free (tstring); ++ goto set_word_flags; ++ } + else if (has_dollar_at && ifs_chars) + list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); +*************** +*** 8836,8839 **** +--- 8867,8871 ---- + { + tword = make_bare_word (istring); ++ set_word_flags: + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) + tword->flags |= W_QUOTED; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-015 b/patches/source/bash/bash-4.3-patches/bash43-015 new file mode 100644 index 000000000..9c4e5ea48 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-015 @@ -0,0 +1,58 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-015 + +Bug-Reported-by: Clark Wang +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html + +Bug-Description: + +When completing directory names, the directory name is dequoted twice. +This causes problems for directories with single and double quotes in +their names. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500 +--- bashline.c 2014-04-25 14:57:52.000000000 -0400 +*************** +*** 4168,4174 **** + + qc = rl_dispatching ? rl_completion_quote_character : 0; +! dfn = bash_dequote_filename ((char *)text, qc); + m1 = rl_completion_matches (dfn, rl_filename_completion_function); +! free (dfn); + + if (m1 == 0 || m1[0] == 0) +--- 4209,4222 ---- + + qc = rl_dispatching ? rl_completion_quote_character : 0; +! /* If rl_completion_found_quote != 0, rl_completion_matches will call the +! filename dequoting function, causing the directory name to be dequoted +! twice. */ +! if (rl_dispatching && rl_completion_found_quote == 0) +! dfn = bash_dequote_filename ((char *)text, qc); +! else +! dfn = (char *)text; + m1 = rl_completion_matches (dfn, rl_filename_completion_function); +! if (dfn != text) +! free (dfn); + + if (m1 == 0 || m1[0] == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-016 b/patches/source/bash/bash-4.3-patches/bash43-016 new file mode 100644 index 000000000..882d5939b --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-016 @@ -0,0 +1,132 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-016 + +Bug-Reported-by: Pierre Gaston +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html + +Bug-Description: + +An extended glob pattern containing a slash (`/') causes the globbing code +to misinterpret it as a directory separator. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400 +--- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400 +*************** +*** 124,127 **** +--- 124,129 ---- + extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); + ++ extern char *glob_dirscan __P((char *, int)); ++ + /* Compile `glob_loop.c' for single-byte characters. */ + #define CHAR unsigned char +*************** +*** 188,191 **** +--- 190,196 ---- + pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ + /* we should check for invalid extglob pattern here */ ++ if (pe == 0) ++ return 0; ++ + /* if pe != se we have more of the pattern at the end of the extglob + pattern. Check the easy case first ( */ +*************** +*** 1016,1020 **** + char **result; + unsigned int result_size; +! char *directory_name, *filename, *dname; + unsigned int directory_len; + int free_dirname; /* flag */ +--- 1021,1025 ---- + char **result; + unsigned int result_size; +! char *directory_name, *filename, *dname, *fn; + unsigned int directory_len; + int free_dirname; /* flag */ +*************** +*** 1032,1035 **** +--- 1037,1052 ---- + /* Find the filename. */ + filename = strrchr (pathname, '/'); ++ #if defined (EXTENDED_GLOB) ++ if (filename && extended_glob) ++ { ++ fn = glob_dirscan (pathname, '/'); ++ #if DEBUG_MATCHING ++ if (fn != filename) ++ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename); ++ #endif ++ filename = fn; ++ } ++ #endif ++ + if (filename == NULL) + { +*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -0400 +--- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400 +*************** +*** 43,46 **** +--- 43,48 ---- + #define WRPAREN L')' + ++ extern char *glob_patscan __P((char *, char *, int)); ++ + /* Return 1 of the first character of WSTRING could match the first + character of pattern WPAT. Wide character version. */ +*************** +*** 376,377 **** +--- 378,410 ---- + return matlen; + } ++ ++ /* Skip characters in PAT and return the final occurrence of DIRSEP. This ++ is only called when extended_glob is set, so we have to skip over extglob ++ patterns x(...) */ ++ char * ++ glob_dirscan (pat, dirsep) ++ char *pat; ++ int dirsep; ++ { ++ char *p, *d, *pe, *se; ++ ++ d = pe = se = 0; ++ for (p = pat; p && *p; p++) ++ { ++ if (extglob_pattern_p (p)) ++ { ++ if (se == 0) ++ se = p + strlen (p) - 1; ++ pe = glob_patscan (p + 2, se, 0); ++ if (pe == 0) ++ continue; ++ else if (*pe == 0) ++ break; ++ p = pe - 1; /* will do increment above */ ++ continue; ++ } ++ if (*p == dirsep) ++ d = p; ++ } ++ return d; ++ } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-017 b/patches/source/bash/bash-4.3-patches/bash43-017 new file mode 100644 index 000000000..4016fb934 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-017 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-017 + +Bug-Reported-by: Dan Douglas +Bug-Reference-ID: <7781746.RhfoTROLxF@smorgbox> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html + +Bug-Description: + +The code that creates local variables should not clear the `invisible' +attribute when returning an existing local variable. Let the code that +actually assigns a value clear it. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500 +--- variables.c 2014-05-07 10:53:57.000000000 -0400 +*************** +*** 2198,2205 **** + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) +! { +! VUNSETATTR (old_var, att_invisible); /* XXX */ +! return (old_var); +! } + + was_tmpvar = old_var && tempvar_p (old_var); +--- 2260,2264 ---- + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) +! return (old_var); + + was_tmpvar = old_var && tempvar_p (old_var); + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-018 b/patches/source/bash/bash-4.3-patches/bash43-018 new file mode 100644 index 000000000..39499f663 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-018 @@ -0,0 +1,44 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-018 + +Bug-Reported-by: Geir Hauge +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html + +Bug-Description: + +When assigning an array variable using the compound assignment syntax, +but using `declare' with the rhs of the compound assignment quoted, the +shell did not mark the variable as visible after successfully performing +the assignment. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400 +--- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400 +*************** +*** 180,183 **** +--- 180,184 ---- + FREE (newval); + ++ VUNSETATTR (entry, att_invisible); /* no longer invisible */ + return (entry); + } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-019 b/patches/source/bash/bash-4.3-patches/bash43-019 new file mode 100644 index 000000000..a93714beb --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-019 @@ -0,0 +1,84 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-019 + +Bug-Reported-by: John Lenton +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 + +Bug-Description: + +The -t timeout option to `read' does not work when the -e option is used. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000 -0500 +--- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400 +*************** +*** 535,540 **** +--- 538,551 ---- + else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) + return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); ++ /* keyboard-generated signals of interest */ + else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) + RL_CHECK_SIGNALS (); ++ /* non-keyboard-generated signals of interest */ ++ else if (_rl_caught_signal == SIGALRM ++ #if defined (SIGVTALRM) ++ || _rl_caught_signal == SIGVTALRM ++ #endif ++ ) ++ RL_CHECK_SIGNALS (); + + if (rl_signal_event_hook) +*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0400 +--- builtins/read.def 2014-05-08 11:43:35.000000000 -0400 +*************** +*** 443,447 **** + #if defined (READLINE) + if (edit) +! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + #endif + falarm (tmsec, tmusec); +--- 443,450 ---- + #if defined (READLINE) + if (edit) +! { +! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); +! add_unwind_protect (bashline_reset_event_hook, (char *)NULL); +! } + #endif + falarm (tmsec, tmusec); +*************** +*** 1022,1025 **** +--- 1025,1029 ---- + old_attempted_completion_function = rl_attempted_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; ++ bashline_set_event_hook (); + if (itext) + { +*************** +*** 1033,1036 **** +--- 1037,1041 ---- + rl_attempted_completion_function = old_attempted_completion_function; + old_attempted_completion_function = (rl_completion_func_t *)NULL; ++ bashline_reset_event_hook (); + + if (ret == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-020 b/patches/source/bash/bash-4.3-patches/bash43-020 new file mode 100644 index 000000000..5f533ef8d --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-020 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-020 + +Bug-Reported-by: Jared Yanovich +Bug-Reference-ID: <20140417073654.GB26875@nightderanger.psc.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html + +Bug-Description: + +When PS2 contains a command substitution, here-documents entered in an +interactive shell can sometimes cause a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 +--- shell.h 2014-06-03 09:24:28.000000000 -0400 +*************** +*** 169,173 **** + int expand_aliases; + int echo_input_at_read; +! + } sh_parser_state_t; + +--- 169,174 ---- + int expand_aliases; + int echo_input_at_read; +! int need_here_doc; +! + } sh_parser_state_t; + +*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 +--- parse.y 2014-04-30 09:27:59.000000000 -0400 +*************** +*** 2643,2647 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 2643,2647 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 6076,6079 **** +--- 6076,6080 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 6124,6127 **** +--- 6125,6129 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); +*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400 +--- y.tab.c 2014-07-30 09:55:57.000000000 -0400 +*************** +*** 4955,4959 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 5151,5155 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 8388,8391 **** +--- 8584,8588 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 8436,8439 **** +--- 8633,8637 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-021 b/patches/source/bash/bash-4.3-patches/bash43-021 new file mode 100644 index 000000000..fd1c945ec --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-021 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-021 + +Bug-Reported-by: Jared Yanovich +Bug-Reference-ID: <20140625225019.GJ17044@nightderanger.psc.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html + +Bug-Description: + +When the readline `revert-all-at-newline' option is set, pressing newline +when the current line is one retrieved from history results in a double free +and a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 +--- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 +*************** +*** 462,465 **** +--- 462,466 ---- + /* Set up rl_line_buffer and other variables from history entry */ + rl_replace_from_history (entry, 0); /* entry->line is now current */ ++ entry->data = 0; /* entry->data is now current undo list */ + /* Undo all changes to this history entry */ + while (rl_undo_list) +*************** +*** 469,473 **** + FREE (entry->line); + entry->line = savestring (rl_line_buffer); +- entry->data = 0; + } + entry = previous_history (); +--- 470,473 ---- + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-022 b/patches/source/bash/bash-4.3-patches/bash43-022 new file mode 100644 index 000000000..7ce39ec0a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-022 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-022 + +Bug-Reported-by: scorp.dev.null@gmail.com +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html + +Bug-Description: + +Using nested pipelines within loops with the `lastpipe' option set can result +in a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 +--- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 +*************** +*** 2410,2414 **** + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! exec_result = job_exit_status (lastpipe_jid); + #endif + unfreeze_jobs_list (); +--- 2425,2438 ---- + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! /* If wait_for removes the job from the jobs table, use result of last +! command as pipeline's exit status as usual. The jobs list can get +! frozen and unfrozen at inconvenient times if there are multiple pipelines +! running simultaneously. */ +! if (INVALID_JOB (lastpipe_jid) == 0) +! exec_result = job_exit_status (lastpipe_jid); +! else if (pipefail_opt) +! exec_result = exec_result | lstdin; /* XXX */ +! /* otherwise we use exec_result */ +! + #endif + unfreeze_jobs_list (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-023 b/patches/source/bash/bash-4.3-patches/bash43-023 new file mode 100644 index 000000000..d1e4e9d7c --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-023 @@ -0,0 +1,104 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-023 + +Bug-Reported-by: Tim Friske +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html + +Bug-Description: + +Bash does not correctly parse process substitution constructs that contain +unbalanced parentheses as part of the contained command. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 +--- subst.h 2014-07-20 17:25:01.000000000 -0400 +*************** +*** 83,87 **** + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +! extern char *extract_process_subst __P((char *, char *, int *)); + #endif /* PROCESS_SUBSTITUTION */ + +--- 83,87 ---- + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +! extern char *extract_process_subst __P((char *, char *, int *, int)); + #endif /* PROCESS_SUBSTITUTION */ + +*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 +--- subst.c 2014-07-20 17:26:44.000000000 -0400 +*************** +*** 1193,1202 **** + Make (SINDEX) get the position of the matching ")". */ /*))*/ + char * +! extract_process_subst (string, starter, sindex) + char *string; + char *starter; + int *sindex; + { + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); + } + #endif /* PROCESS_SUBSTITUTION */ +--- 1193,1208 ---- + Make (SINDEX) get the position of the matching ")". */ /*))*/ + char * +! extract_process_subst (string, starter, sindex, xflags) + char *string; + char *starter; + int *sindex; ++ int xflags; + { ++ #if 0 + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); ++ #else ++ xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); ++ return (xparse_dolparen (string, string+*sindex, sindex, xflags)); ++ #endif + } + #endif /* PROCESS_SUBSTITUTION */ +*************** +*** 1786,1790 **** + if (string[si] == '\0') + CQ_RETURN(si); +! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si); + free (temp); /* no SX_ALLOC here */ + i = si; +--- 1792,1796 ---- + if (string[si] == '\0') + CQ_RETURN(si); +! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); + free (temp); /* no SX_ALLOC here */ + i = si; +*************** +*** 8250,8254 **** + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + +! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/ + sindex = t_index; + +--- 8256,8260 ---- + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + +! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/ + sindex = t_index; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-024 b/patches/source/bash/bash-4.3-patches/bash43-024 new file mode 100644 index 000000000..a24b8fbbc --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-024 @@ -0,0 +1,54 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-024 + +Bug-Reported-by: Corentin Peuvrel +Bug-Reference-ID: <53CE9E5D.6050203@pom-monitoring.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html + +Bug-Description: + +Indirect variable references do not work correctly if the reference +variable expands to an array reference using a subscript other than 0 +(e.g., foo='bar[1]' ; echo ${!foo}). + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400 +--- subst.c 2014-07-23 09:58:19.000000000 -0400 +*************** +*** 7375,7379 **** + + if (want_indir) +! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); + else + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); +--- 7445,7455 ---- + + if (want_indir) +! { +! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); +! /* Turn off the W_ARRAYIND flag because there is no way for this function +! to return the index we're supposed to be using. */ +! if (tdesc && tdesc->flags) +! tdesc->flags &= ~W_ARRAYIND; +! } + else + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-025 b/patches/source/bash/bash-4.3-patches/bash43-025 new file mode 100644 index 000000000..721aca030 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-025 @@ -0,0 +1,123 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-025 + +Bug-Reported-by: Stephane Chazelas +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under certain circumstances, bash will execute user code while processing the +environment for exported function definitions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400 +--- builtins/common.h 2014-09-12 14:25:47.000000000 -0400 +*************** +*** 34,37 **** +--- 49,54 ---- + #define SEVAL_PARSEONLY 0x020 + #define SEVAL_NOLONGJMP 0x040 ++ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ ++ #define SEVAL_ONECMD 0x100 /* only allow a single command */ + + /* Flags for describe_command, shared between type.def and command.def */ +*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 -0500 +--- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400 +*************** +*** 309,312 **** +--- 313,324 ---- + struct fd_bitmap *bitmap; + ++ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) ++ { ++ internal_warning ("%s: ignoring function definition attempt", from_file); ++ should_jump_to_top_level = 0; ++ last_result = last_command_exit_value = EX_BADUSAGE; ++ break; ++ } ++ + bitmap = new_fd_bitmap (FD_BITMAP_SIZE); + begin_unwind_frame ("pe_dispose"); +*************** +*** 369,372 **** +--- 381,387 ---- + dispose_fd_bitmap (bitmap); + discard_unwind_frame ("pe_dispose"); ++ ++ if (flags & SEVAL_ONECMD) ++ break; + } + } +*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 +--- variables.c 2014-09-14 14:23:35.000000000 -0400 +*************** +*** 359,369 **** + strcpy (temp_string + char_index + 1, string); + +! if (posixly_correct == 0 || legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); +! +! /* Ancient backwards compatibility. Old versions of bash exported +! functions like name()=() {...} */ +! if (name[char_index - 1] == ')' && name[char_index - 2] == '(') +! name[char_index - 2] = '\0'; + + if (temp_var = find_function (name)) +--- 364,372 ---- + strcpy (temp_string + char_index + 1, string); + +! /* Don't import function names that are invalid identifiers from the +! environment, though we still allow them to be defined as shell +! variables. */ +! if (legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + + if (temp_var = find_function (name)) +*************** +*** 382,389 **** + report_error (_("error importing function definition for `%s'"), name); + } +- +- /* ( */ +- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0') +- name[char_index - 2] = '('; /* ) */ + } + #if defined (ARRAY_VARS) +--- 385,388 ---- +*** ../bash-4.3-patched/subst.c 2014-08-11 11:16:35.000000000 -0400 +--- subst.c 2014-09-12 15:31:04.000000000 -0400 +*************** +*** 8048,8052 **** + goto return0; + } +! else if (var = find_variable_last_nameref (temp1)) + { + temp = nameref_cell (var); +--- 8118,8124 ---- + goto return0; + } +! else if (var && (invisible_p (var) || var_isset (var) == 0)) +! temp = (char *)NULL; +! else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0) + { + temp = nameref_cell (var); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-026 b/patches/source/bash/bash-4.3-patches/bash43-026 new file mode 100644 index 000000000..d5d5b1dd0 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-026 @@ -0,0 +1,60 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-026 + +Bug-Reported-by: Tavis Ormandy +Bug-Reference-ID: +Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929 + +Bug-Description: + +Under certain circumstances, bash can incorrectly save a lookahead character and +return it on a subsequent call, even when reading a new line. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.25/parse.y 2014-07-30 10:14:31.000000000 -0400 +--- parse.y 2014-09-25 20:20:21.000000000 -0400 +*************** +*** 2954,2957 **** +--- 2954,2959 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ eol_ungetc_lookahead = 0; ++ + current_token = '\n'; /* XXX */ + last_read_token = '\n'; +*** ../bash-4.3.25/y.tab.c 2014-07-30 10:14:32.000000000 -0400 +--- y.tab.c 2014-09-25 20:21:48.000000000 -0400 +*************** +*** 5266,5269 **** +--- 5266,5271 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ eol_ungetc_lookahead = 0; ++ + current_token = '\n'; /* XXX */ + last_read_token = '\n'; +*************** +*** 8540,8542 **** + } + #endif /* HANDLE_MULTIBYTE */ +- +--- 8542,8543 ---- +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-027 b/patches/source/bash/bash-4.3-patches/bash43-027 new file mode 100644 index 000000000..ef48bd82d --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-027 @@ -0,0 +1,221 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-027 + +Bug-Reported-by: Florian Weimer +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +This patch changes the encoding bash uses for exported functions to avoid +clashes with shell variables and to avoid depending only on an environment +variable's contents to determine whether or not to interpret it as a shell +function. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.26/variables.c 2014-09-25 23:02:18.000000000 -0400 +--- variables.c 2014-09-27 20:52:04.000000000 -0400 +*************** +*** 84,87 **** +--- 84,92 ---- + #define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') + ++ #define BASHFUNC_PREFIX "BASH_FUNC_" ++ #define BASHFUNC_PREFLEN 10 /* == strlen(BASHFUNC_PREFIX */ ++ #define BASHFUNC_SUFFIX "%%" ++ #define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */ ++ + extern char **environ; + +*************** +*** 280,284 **** + static void dispose_temporary_env __P((sh_free_func_t *)); + +! static inline char *mk_env_string __P((const char *, const char *)); + static char **make_env_array_from_var_list __P((SHELL_VAR **)); + static char **make_var_export_array __P((VAR_CONTEXT *)); +--- 285,289 ---- + static void dispose_temporary_env __P((sh_free_func_t *)); + +! static inline char *mk_env_string __P((const char *, const char *, int)); + static char **make_env_array_from_var_list __P((SHELL_VAR **)); + static char **make_var_export_array __P((VAR_CONTEXT *)); +*************** +*** 350,369 **** + /* If exported function, define it now. Don't import functions from + the environment in privileged mode. */ +! if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4)) + { + string_length = strlen (string); +! temp_string = (char *)xmalloc (3 + string_length + char_index); + +! strcpy (temp_string, name); +! temp_string[char_index] = ' '; +! strcpy (temp_string + char_index + 1, string); + + /* Don't import function names that are invalid identifiers from the + environment, though we still allow them to be defined as shell + variables. */ +! if (legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + +! if (temp_var = find_function (name)) + { + VSETATTR (temp_var, (att_exported|att_imported)); +--- 355,385 ---- + /* If exported function, define it now. Don't import functions from + the environment in privileged mode. */ +! if (privmode == 0 && read_but_dont_execute == 0 && +! STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) && +! STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) && +! STREQN ("() {", string, 4)) + { ++ size_t namelen; ++ char *tname; /* desired imported function name */ ++ ++ namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN; ++ ++ tname = name + BASHFUNC_PREFLEN; /* start of func name */ ++ tname[namelen] = '\0'; /* now tname == func name */ ++ + string_length = strlen (string); +! temp_string = (char *)xmalloc (namelen + string_length + 2); + +! memcpy (temp_string, tname, namelen); +! temp_string[namelen] = ' '; +! memcpy (temp_string + namelen + 1, string, string_length + 1); + + /* Don't import function names that are invalid identifiers from the + environment, though we still allow them to be defined as shell + variables. */ +! if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname))) +! parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + +! if (temp_var = find_function (tname)) + { + VSETATTR (temp_var, (att_exported|att_imported)); +*************** +*** 378,383 **** + } + last_command_exit_value = 1; +! report_error (_("error importing function definition for `%s'"), name); + } + } + #if defined (ARRAY_VARS) +--- 394,402 ---- + } + last_command_exit_value = 1; +! report_error (_("error importing function definition for `%s'"), tname); + } ++ ++ /* Restore original suffix */ ++ tname[namelen] = BASHFUNC_SUFFIX[0]; + } + #if defined (ARRAY_VARS) +*************** +*** 2955,2959 **** + + INVALIDATE_EXPORTSTR (var); +! var->exportstr = mk_env_string (name, value); + + array_needs_making = 1; +--- 2974,2978 ---- + + INVALIDATE_EXPORTSTR (var); +! var->exportstr = mk_env_string (name, value, 0); + + array_needs_making = 1; +*************** +*** 3853,3871 **** + + static inline char * +! mk_env_string (name, value) + const char *name, *value; + { +! int name_len, value_len; +! char *p; + + name_len = strlen (name); + value_len = STRLEN (value); +! p = (char *)xmalloc (2 + name_len + value_len); +! strcpy (p, name); +! p[name_len] = '='; + if (value && *value) +! strcpy (p + name_len + 1, value); + else +! p[name_len + 1] = '\0'; + return (p); + } +--- 3872,3911 ---- + + static inline char * +! mk_env_string (name, value, isfunc) + const char *name, *value; ++ int isfunc; + { +! size_t name_len, value_len; +! char *p, *q; + + name_len = strlen (name); + value_len = STRLEN (value); +! +! /* If we are exporting a shell function, construct the encoded function +! name. */ +! if (isfunc && value) +! { +! p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2); +! q = p; +! memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN); +! q += BASHFUNC_PREFLEN; +! memcpy (q, name, name_len); +! q += name_len; +! memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN); +! q += BASHFUNC_SUFFLEN; +! } +! else +! { +! p = (char *)xmalloc (2 + name_len + value_len); +! memcpy (p, name, name_len); +! q = p + name_len; +! } +! +! q[0] = '='; + if (value && *value) +! memcpy (q + 1, value, value_len + 1); + else +! q[1] = '\0'; +! + return (p); + } +*************** +*** 3953,3957 **** + using the cached exportstr... */ + list[list_index] = USE_EXPORTSTR ? savestring (value) +! : mk_env_string (var->name, value); + + if (USE_EXPORTSTR == 0) +--- 3993,3997 ---- + using the cached exportstr... */ + list[list_index] = USE_EXPORTSTR ? savestring (value) +! : mk_env_string (var->name, value, function_p (var)); + + if (USE_EXPORTSTR == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-028 b/patches/source/bash/bash-4.3-patches/bash43-028 new file mode 100644 index 000000000..7448cf814 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-028 @@ -0,0 +1,2265 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-028 + +Bug-Reported-by: Florian Weimer +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +There are two local buffer overflows in parse.y that can cause the shell +to dump core when given many here-documents attached to a single command +or many nested loops. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-09-25 23:02:35.000000000 -0400 +--- parse.y 2014-09-29 16:47:03.000000000 -0400 +*************** +*** 169,172 **** +--- 169,175 ---- + static int reserved_word_acceptable __P((int)); + static int yylex __P((void)); ++ ++ static void push_heredoc __P((REDIRECT *)); ++ static char *mk_alexpansion __P((char *)); + static int alias_expand_token __P((char *)); + static int time_command_acceptable __P((void)); +*************** +*** 266,270 **** + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! static REDIRECT *redir_stack[10]; + int need_here_doc; + +--- 269,275 ---- + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! #define HEREDOC_MAX 16 +! +! static REDIRECT *redir_stack[HEREDOC_MAX]; + int need_here_doc; + +*************** +*** 308,312 **** + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST]; + static int word_top = -1; + +--- 313,317 ---- + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST+1]; + static int word_top = -1; + +*************** +*** 521,525 **** + redir.filename = $2; + $$ = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS WORD +--- 526,530 ---- + redir.filename = $2; + $$ = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ($$); + } + | NUMBER LESS_LESS WORD +*************** +*** 528,532 **** + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | REDIR_WORD LESS_LESS WORD +--- 533,537 ---- + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ($$); + } + | REDIR_WORD LESS_LESS WORD +*************** +*** 535,539 **** + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = $$; + } + | LESS_LESS_MINUS WORD +--- 540,544 ---- + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ($$); + } + | LESS_LESS_MINUS WORD +*************** +*** 542,546 **** + redir.filename = $2; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS_MINUS WORD +--- 547,551 ---- + redir.filename = $2; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ($$); + } + | NUMBER LESS_LESS_MINUS WORD +*************** +*** 549,553 **** + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | REDIR_WORD LESS_LESS_MINUS WORD +--- 554,558 ---- + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ($$); + } + | REDIR_WORD LESS_LESS_MINUS WORD +*************** +*** 556,560 **** + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = $$; + } + | LESS_LESS_LESS WORD +--- 561,565 ---- + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ($$); + } + | LESS_LESS_LESS WORD +*************** +*** 2637,2640 **** +--- 2642,2660 ---- + static int esacs_needed_count; + ++ static void ++ push_heredoc (r) ++ REDIRECT *r; ++ { ++ if (need_here_doc >= HEREDOC_MAX) ++ { ++ last_command_exit_value = EX_BADUSAGE; ++ need_here_doc = 0; ++ report_syntax_error (_("maximum here-document count exceeded")); ++ reset_parser (); ++ exit_shell (last_command_exit_value); ++ } ++ redir_stack[need_here_doc++] = r; ++ } ++ + void + gather_here_documents () +*** ../bash-4.3.27/y.tab.c 2014-10-01 11:38:24.000000000 -0400 +--- y.tab.c 2014-10-01 12:46:11.000000000 -0400 +*************** +*** 169,173 **** + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/homes/chet/src/bash/src/parse.y" + + #include "config.h" +--- 169,173 ---- + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + #include "config.h" +*************** +*** 320,323 **** +--- 320,326 ---- + static int reserved_word_acceptable __P((int)); + static int yylex __P((void)); ++ ++ static void push_heredoc __P((REDIRECT *)); ++ static char *mk_alexpansion __P((char *)); + static int alias_expand_token __P((char *)); + static int time_command_acceptable __P((void)); +*************** +*** 417,421 **** + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! static REDIRECT *redir_stack[10]; + int need_here_doc; + +--- 420,426 ---- + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! #define HEREDOC_MAX 16 +! +! static REDIRECT *redir_stack[HEREDOC_MAX]; + int need_here_doc; + +*************** +*** 459,463 **** + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST]; + static int word_top = -1; + +--- 464,468 ---- + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST+1]; + static int word_top = -1; + +*************** +*** 493,497 **** + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 324 "/usr/homes/chet/src/bash/src/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +--- 498,502 ---- + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +*************** +*** 504,508 **** + } + /* Line 193 of yacc.c. */ +! #line 507 "y.tab.c" + YYSTYPE; + # define yystype YYSTYPE /* obsolescent; will be withdrawn */ +--- 509,513 ---- + } + /* Line 193 of yacc.c. */ +! #line 512 "y.tab.c" + YYSTYPE; + # define yystype YYSTYPE /* obsolescent; will be withdrawn */ +*************** +*** 517,521 **** + + /* Line 216 of yacc.c. */ +! #line 520 "y.tab.c" + + #ifdef short +--- 522,526 ---- + + /* Line 216 of yacc.c. */ +! #line 525 "y.tab.c" + + #ifdef short +*************** +*** 887,907 **** + static const yytype_uint16 yyrline[] = + { +! 0, 377, 377, 388, 397, 412, 422, 424, 428, 434, +! 440, 446, 452, 458, 464, 470, 476, 482, 488, 494, +! 500, 506, 512, 518, 525, 532, 539, 546, 553, 560, +! 566, 572, 578, 584, 590, 596, 602, 608, 614, 620, +! 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, +! 686, 692, 700, 702, 704, 708, 712, 723, 725, 729, +! 731, 733, 749, 751, 755, 757, 759, 761, 763, 765, +! 767, 769, 771, 773, 775, 779, 784, 789, 794, 799, +! 804, 809, 814, 821, 826, 831, 836, 843, 848, 853, +! 858, 863, 868, 875, 880, 885, 892, 895, 898, 902, +! 904, 935, 942, 947, 964, 969, 986, 993, 995, 997, +! 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029, +! 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053, +! 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100, +! 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130, +! 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200, +! 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276 + }; + #endif +--- 892,912 ---- + static const yytype_uint16 yyrline[] = + { +! 0, 382, 382, 393, 402, 417, 427, 429, 433, 439, +! 445, 451, 457, 463, 469, 475, 481, 487, 493, 499, +! 505, 511, 517, 523, 530, 537, 544, 551, 558, 565, +! 571, 577, 583, 589, 595, 601, 607, 613, 619, 625, +! 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, +! 691, 697, 705, 707, 709, 713, 717, 728, 730, 734, +! 736, 738, 754, 756, 760, 762, 764, 766, 768, 770, +! 772, 774, 776, 778, 780, 784, 789, 794, 799, 804, +! 809, 814, 819, 826, 831, 836, 841, 848, 853, 858, +! 863, 868, 873, 880, 885, 890, 897, 900, 903, 907, +! 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002, +! 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034, +! 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058, +! 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105, +! 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135, +! 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205, +! 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281 + }; + #endif +*************** +*** 2094,2098 **** + { + case 2: +! #line 378 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Case of regular command. Discard the error +--- 2099,2103 ---- + { + case 2: +! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command. Discard the error +*************** +*** 2108,2112 **** + + case 3: +! #line 389 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Case of regular command, but not a very +--- 2113,2117 ---- + + case 3: +! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command, but not a very +*************** +*** 2120,2124 **** + + case 4: +! #line 398 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Error during parsing. Return NULL command. */ +--- 2125,2129 ---- + + case 4: +! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Error during parsing. Return NULL command. */ +*************** +*** 2138,2142 **** + + case 5: +! #line 413 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +--- 2143,2147 ---- + + case 5: +! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +*************** +*** 2149,2163 **** + + case 6: +! #line 423 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 425 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 429 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2154,2168 ---- + + case 6: +! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2168,2172 **** + + case 9: +! #line 435 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2173,2177 ---- + + case 9: +! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2177,2181 **** + + case 10: +! #line 441 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2182,2186 ---- + + case 10: +! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2186,2190 **** + + case 11: +! #line 447 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2191,2195 ---- + + case 11: +! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2195,2199 **** + + case 12: +! #line 453 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2200,2204 ---- + + case 12: +! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2204,2208 **** + + case 13: +! #line 459 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2209,2213 ---- + + case 13: +! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2213,2217 **** + + case 14: +! #line 465 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2218,2222 ---- + + case 14: +! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2222,2226 **** + + case 15: +! #line 471 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2227,2231 ---- + + case 15: +! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2231,2235 **** + + case 16: +! #line 477 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2236,2240 ---- + + case 16: +! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2240,2244 **** + + case 17: +! #line 483 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2245,2249 ---- + + case 17: +! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2249,2253 **** + + case 18: +! #line 489 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2254,2258 ---- + + case 18: +! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2258,2262 **** + + case 19: +! #line 495 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2263,2267 ---- + + case 19: +! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2267,2271 **** + + case 20: +! #line 501 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2272,2276 ---- + + case 20: +! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2276,2280 **** + + case 21: +! #line 507 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2281,2285 ---- + + case 21: +! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2285,2289 **** + + case 22: +! #line 513 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2290,2294 ---- + + case 22: +! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2294,2358 **** + + case 23: +! #line 519 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 24: +! #line 526 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 25: +! #line 533 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 26: +! #line 540 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 27: +! #line 547 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 28: +! #line 554 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 29: +! #line 561 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2299,2363 ---- + + case 23: +! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 24: +! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 25: +! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ((yyval.redirect)); + } + break; + + case 26: +! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 27: +! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 28: +! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ((yyval.redirect)); + } + break; + + case 29: +! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2363,2367 **** + + case 30: +! #line 567 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2368,2372 ---- + + case 30: +! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2372,2376 **** + + case 31: +! #line 573 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2377,2381 ---- + + case 31: +! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2381,2385 **** + + case 32: +! #line 579 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2386,2390 ---- + + case 32: +! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2390,2394 **** + + case 33: +! #line 585 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2395,2399 ---- + + case 33: +! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2399,2403 **** + + case 34: +! #line 591 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2404,2408 ---- + + case 34: +! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2408,2412 **** + + case 35: +! #line 597 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2413,2417 ---- + + case 35: +! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2417,2421 **** + + case 36: +! #line 603 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2422,2426 ---- + + case 36: +! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2426,2430 **** + + case 37: +! #line 609 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2431,2435 ---- + + case 37: +! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2435,2439 **** + + case 38: +! #line 615 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2440,2444 ---- + + case 38: +! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2444,2448 **** + + case 39: +! #line 621 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2449,2453 ---- + + case 39: +! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2453,2457 **** + + case 40: +! #line 627 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2458,2462 ---- + + case 40: +! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2462,2466 **** + + case 41: +! #line 633 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2467,2471 ---- + + case 41: +! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2471,2475 **** + + case 42: +! #line 639 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2476,2480 ---- + + case 42: +! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2480,2484 **** + + case 43: +! #line 645 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2485,2489 ---- + + case 43: +! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2489,2493 **** + + case 44: +! #line 651 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2494,2498 ---- + + case 44: +! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2498,2502 **** + + case 45: +! #line 657 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2503,2507 ---- + + case 45: +! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2507,2511 **** + + case 46: +! #line 663 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2512,2516 ---- + + case 46: +! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2516,2520 **** + + case 47: +! #line 669 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2521,2525 ---- + + case 47: +! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2525,2529 **** + + case 48: +! #line 675 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2530,2534 ---- + + case 48: +! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2534,2538 **** + + case 49: +! #line 681 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2539,2543 ---- + + case 49: +! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2543,2547 **** + + case 50: +! #line 687 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2548,2552 ---- + + case 50: +! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2552,2556 **** + + case 51: +! #line 693 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2557,2561 ---- + + case 51: +! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2561,2580 **** + + case 52: +! #line 701 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 703 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 705 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 709 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +--- 2566,2585 ---- + + case 52: +! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +*************** +*** 2583,2587 **** + + case 56: +! #line 713 "/usr/homes/chet/src/bash/src/parse.y" + { + register REDIRECT *t; +--- 2588,2592 ---- + + case 56: +! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + register REDIRECT *t; +*************** +*** 2595,2619 **** + + case 57: +! #line 724 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 726 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 730 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 732 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 734 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2600,2624 ---- + + case 57: +! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2634,2703 **** + + case 62: +! #line 750 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 752 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 756 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 758 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 760 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 762 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 764 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 766 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 768 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 770 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 772 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 774 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 776 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 780 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2639,2708 ---- + + case 62: +! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2707,2711 **** + + case 76: +! #line 785 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2712,2716 ---- + + case 76: +! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2715,2719 **** + + case 77: +! #line 790 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2720,2724 ---- + + case 77: +! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2723,2727 **** + + case 78: +! #line 795 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2728,2732 ---- + + case 78: +! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2731,2735 **** + + case 79: +! #line 800 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2736,2740 ---- + + case 79: +! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2739,2743 **** + + case 80: +! #line 805 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2744,2748 ---- + + case 80: +! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2747,2751 **** + + case 81: +! #line 810 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2752,2756 ---- + + case 81: +! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2755,2759 **** + + case 82: +! #line 815 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2760,2764 ---- + + case 82: +! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2763,2767 **** + + case 83: +! #line 822 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2768,2772 ---- + + case 83: +! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2771,2775 **** + + case 84: +! #line 827 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2776,2780 ---- + + case 84: +! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2779,2783 **** + + case 85: +! #line 832 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2784,2788 ---- + + case 85: +! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2787,2791 **** + + case 86: +! #line 837 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2792,2796 ---- + + case 86: +! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2795,2799 **** + + case 87: +! #line 844 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2800,2804 ---- + + case 87: +! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2803,2807 **** + + case 88: +! #line 849 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2808,2812 ---- + + case 88: +! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2811,2815 **** + + case 89: +! #line 854 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2816,2820 ---- + + case 89: +! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2819,2823 **** + + case 90: +! #line 859 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2824,2828 ---- + + case 90: +! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2827,2831 **** + + case 91: +! #line 864 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2832,2836 ---- + + case 91: +! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2835,2839 **** + + case 92: +! #line 869 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2840,2844 ---- + + case 92: +! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2843,2847 **** + + case 93: +! #line 876 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +--- 2848,2852 ---- + + case 93: +! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +*************** +*** 2851,2855 **** + + case 94: +! #line 881 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +--- 2856,2860 ---- + + case 94: +! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +*************** +*** 2859,2863 **** + + case 95: +! #line 886 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +--- 2864,2868 ---- + + case 95: +! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +*************** +*** 2867,2891 **** + + case 96: +! #line 893 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 896 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 899 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 903 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 905 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2872,2896 ---- + + case 96: +! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2919,2923 **** + + case 101: +! #line 936 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +--- 2924,2928 ---- + + case 101: +! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +*************** +*** 2927,2931 **** + + case 102: +! #line 943 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +--- 2932,2936 ---- + + case 102: +! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +*************** +*** 2935,2939 **** + + case 103: +! #line 948 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2940,2944 ---- + + case 103: +! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2955,2959 **** + + case 104: +! #line 965 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +--- 2960,2964 ---- + + case 104: +! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +*************** +*** 2963,2967 **** + + case 105: +! #line 970 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2968,2972 ---- + + case 105: +! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2983,2987 **** + + case 106: +! #line 987 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +--- 2988,2992 ---- + + case 106: +! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +*************** +*** 2991,3105 **** + + case 107: +! #line 994 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 996 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 998 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1003 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1007 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1011 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1015 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1017 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1019 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1024 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1028 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1030 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1032 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1034 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1038 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1040 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1042 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1044 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1046 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1048 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1052 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1054 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1063 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 2996,3110 ---- + + case 107: +! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3110,3114 **** + + case 132: +! #line 1072 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 3115,3119 ---- + + case 132: +! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3117,3121 **** + + case 134: +! #line 1079 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3122,3126 ---- + + case 134: +! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3127,3141 **** + + case 136: +! #line 1090 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1092 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1094 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +--- 3132,3146 ---- + + case 136: +! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +*************** +*** 3147,3181 **** + + case 139: +! #line 1101 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1103 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1105 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1113 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1115 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1117 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1131 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +--- 3152,3186 ---- + + case 139: +! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +*************** +*** 3193,3197 **** + + case 150: +! #line 1144 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +--- 3198,3202 ---- + + case 150: +! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +*************** +*** 3212,3216 **** + + case 151: +! #line 1160 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +--- 3217,3221 ---- + + case 151: +! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +*************** +*** 3228,3242 **** + + case 152: +! #line 1175 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1177 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1179 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3233,3247 ---- + + case 152: +! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3248,3267 **** + + case 155: +! #line 1186 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1189 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1193 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1195 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3253,3272 ---- + + case 155: +! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3272,3276 **** + + case 159: +! #line 1201 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3277,3281 ---- + + case 159: +! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3281,3285 **** + + case 160: +! #line 1207 "/usr/homes/chet/src/bash/src/parse.y" + { + ELEMENT x; +--- 3286,3290 ---- + + case 160: +! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +*************** +*** 3301,3305 **** + + case 161: +! #line 1224 "/usr/homes/chet/src/bash/src/parse.y" + { + ELEMENT x; +--- 3306,3310 ---- + + case 161: +! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +*************** +*** 3322,3331 **** + + case 162: +! #line 1244 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1246 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +--- 3327,3336 ---- + + case 162: +! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +*************** +*** 3353,3372 **** + + case 164: +! #line 1269 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1273 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1275 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1277 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +--- 3358,3377 ---- + + case 164: +! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +*************** +*** 3374,3378 **** + + /* Line 1267 of yacc.c. */ +! #line 3377 "y.tab.c" + default: break; + } +--- 3379,3383 ---- + + /* Line 1267 of yacc.c. */ +! #line 3382 "y.tab.c" + default: break; + } +*************** +*** 3588,3592 **** + + +! #line 1279 "/usr/homes/chet/src/bash/src/parse.y" + + +--- 3593,3597 ---- + + +! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + +*************** +*** 4949,4952 **** +--- 4954,4972 ---- + static int esacs_needed_count; + ++ static void ++ push_heredoc (r) ++ REDIRECT *r; ++ { ++ if (need_here_doc >= HEREDOC_MAX) ++ { ++ last_command_exit_value = EX_BADUSAGE; ++ need_here_doc = 0; ++ report_syntax_error (_("maximum here-document count exceeded")); ++ reset_parser (); ++ exit_shell (last_command_exit_value); ++ } ++ redir_stack[need_here_doc++] = r; ++ } ++ + void + gather_here_documents () +*************** +*** 8542,8543 **** +--- 8562,8564 ---- + } + #endif /* HANDLE_MULTIBYTE */ ++ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-029 b/patches/source/bash/bash-4.3-patches/bash43-029 new file mode 100644 index 000000000..93bd390a8 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-029 @@ -0,0 +1,59 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-029 + +Bug-Reported-by: Michal Zalewski +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +When bash is parsing a function definition that contains a here-document +delimited by end-of-file (or end-of-string), it leaves the closing delimiter +uninitialized. This can result in an invalid memory access when the parsed +function is later copied. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.28/make_cmd.c 2011-12-16 08:08:01.000000000 -0500 +--- make_cmd.c 2014-10-02 11:24:23.000000000 -0400 +*************** +*** 693,696 **** +--- 693,697 ---- + temp->redirector = source; + temp->redirectee = dest_and_filename; ++ temp->here_doc_eof = 0; + temp->instruction = instruction; + temp->flags = 0; +*** ../bash-4.3.28/copy_cmd.c 2009-09-11 16:28:02.000000000 -0400 +--- copy_cmd.c 2014-10-02 11:24:23.000000000 -0400 +*************** +*** 127,131 **** + case r_reading_until: + case r_deblank_reading_until: +! new_redirect->here_doc_eof = savestring (redirect->here_doc_eof); + /*FALLTHROUGH*/ + case r_reading_string: +--- 127,131 ---- + case r_reading_until: + case r_deblank_reading_until: +! new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0; + /*FALLTHROUGH*/ + case r_reading_string: +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-030 b/patches/source/bash/bash-4.3-patches/bash43-030 new file mode 100644 index 000000000..78984da26 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-030 @@ -0,0 +1,2064 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-030 + +Bug-Reported-by: Michal Zalewski +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +A combination of nested command substitutions and function importing from +the environment can cause bash to execute code appearing in the environment +variable value following the function definition. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.29/builtins/evalstring.c 2014-10-01 12:57:47.000000000 -0400 +--- builtins/evalstring.c 2014-10-03 11:57:04.000000000 -0400 +*************** +*** 309,318 **** + struct fd_bitmap *bitmap; + +! if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) + { +! internal_warning ("%s: ignoring function definition attempt", from_file); +! should_jump_to_top_level = 0; +! last_result = last_command_exit_value = EX_BADUSAGE; +! break; + } + +--- 313,335 ---- + struct fd_bitmap *bitmap; + +! if (flags & SEVAL_FUNCDEF) + { +! char *x; +! +! /* If the command parses to something other than a straight +! function definition, or if we have not consumed the entire +! string, or if the parser has transformed the function +! name (as parsing will if it begins or ends with shell +! whitespace, for example), reject the attempt */ +! if (command->type != cm_function_def || +! ((x = parser_remaining_input ()) && *x) || +! (STREQ (from_file, command->value.Function_def->name->word) == 0)) +! { +! internal_warning (_("%s: ignoring function definition attempt"), from_file); +! should_jump_to_top_level = 0; +! last_result = last_command_exit_value = EX_BADUSAGE; +! reset_parser (); +! break; +! } + } + +*************** +*** 379,383 **** + + if (flags & SEVAL_ONECMD) +! break; + } + } +--- 396,403 ---- + + if (flags & SEVAL_ONECMD) +! { +! reset_parser (); +! break; +! } + } + } +*** ../bash-4.3.29/parse.y 2014-10-01 12:58:43.000000000 -0400 +--- parse.y 2014-10-03 14:48:59.000000000 -0400 +*************** +*** 2539,2542 **** +--- 2539,2552 ---- + } + ++ char * ++ parser_remaining_input () ++ { ++ if (shell_input_line == 0) ++ return 0; ++ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) ++ return '\0'; /* XXX */ ++ return (shell_input_line + shell_input_line_index); ++ } ++ + #ifdef INCLUDE_UNUSED + /* Back the input pointer up by one, effectively `ungetting' a character. */ +*************** +*** 4028,4033 **** + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! if (interactive) +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +--- 4053,4058 ---- + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +*** ../bash-4.3.29/shell.h 2014-10-01 12:57:39.000000000 -0400 +--- shell.h 2014-10-03 14:49:12.000000000 -0400 +*************** +*** 181,184 **** +--- 181,186 ---- + + /* Let's try declaring these here. */ ++ extern char *parser_remaining_input __P((void)); ++ + extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *)); + extern void restore_parser_state __P((sh_parser_state_t *)); +*** ../bash-4.3.28/y.tab.c 2014-10-01 13:09:46.000000000 -0400 +--- y.tab.c 2014-10-04 19:26:22.000000000 -0400 +*************** +*** 169,173 **** + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + #include "config.h" +--- 169,173 ---- + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y" + + #include "config.h" +*************** +*** 498,502 **** + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +--- 498,502 ---- + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +*************** +*** 2099,2103 **** + { + case 2: +! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command. Discard the error +--- 2099,2103 ---- + { + case 2: +! #line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of regular command. Discard the error +*************** +*** 2113,2117 **** + + case 3: +! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command, but not a very +--- 2113,2117 ---- + + case 3: +! #line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of regular command, but not a very +*************** +*** 2125,2129 **** + + case 4: +! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Error during parsing. Return NULL command. */ +--- 2125,2129 ---- + + case 4: +! #line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Error during parsing. Return NULL command. */ +*************** +*** 2143,2147 **** + + case 5: +! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +--- 2143,2147 ---- + + case 5: +! #line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +*************** +*** 2154,2168 **** + + case 6: +! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2154,2168 ---- + + case 6: +! #line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2173,2177 **** + + case 9: +! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2173,2177 ---- + + case 9: +! #line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2182,2186 **** + + case 10: +! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2182,2186 ---- + + case 10: +! #line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2191,2195 **** + + case 11: +! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2191,2195 ---- + + case 11: +! #line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2200,2204 **** + + case 12: +! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2200,2204 ---- + + case 12: +! #line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2209,2213 **** + + case 13: +! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2209,2213 ---- + + case 13: +! #line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2218,2222 **** + + case 14: +! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2218,2222 ---- + + case 14: +! #line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2227,2231 **** + + case 15: +! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2227,2231 ---- + + case 15: +! #line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2236,2240 **** + + case 16: +! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2236,2240 ---- + + case 16: +! #line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2245,2249 **** + + case 17: +! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2245,2249 ---- + + case 17: +! #line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2254,2258 **** + + case 18: +! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2254,2258 ---- + + case 18: +! #line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2263,2267 **** + + case 19: +! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2263,2267 ---- + + case 19: +! #line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2272,2276 **** + + case 20: +! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2272,2276 ---- + + case 20: +! #line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2281,2285 **** + + case 21: +! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2281,2285 ---- + + case 21: +! #line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2290,2294 **** + + case 22: +! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2290,2294 ---- + + case 22: +! #line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2299,2303 **** + + case 23: +! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2299,2303 ---- + + case 23: +! #line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2309,2313 **** + + case 24: +! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2309,2313 ---- + + case 24: +! #line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2319,2323 **** + + case 25: +! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2319,2323 ---- + + case 25: +! #line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2329,2333 **** + + case 26: +! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2329,2333 ---- + + case 26: +! #line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2339,2343 **** + + case 27: +! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2339,2343 ---- + + case 27: +! #line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2349,2353 **** + + case 28: +! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2349,2353 ---- + + case 28: +! #line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2359,2363 **** + + case 29: +! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2359,2363 ---- + + case 29: +! #line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2368,2372 **** + + case 30: +! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2368,2372 ---- + + case 30: +! #line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2377,2381 **** + + case 31: +! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2377,2381 ---- + + case 31: +! #line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2386,2390 **** + + case 32: +! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2386,2390 ---- + + case 32: +! #line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2395,2399 **** + + case 33: +! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2395,2399 ---- + + case 33: +! #line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2404,2408 **** + + case 34: +! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2404,2408 ---- + + case 34: +! #line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2413,2417 **** + + case 35: +! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2413,2417 ---- + + case 35: +! #line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2422,2426 **** + + case 36: +! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2422,2426 ---- + + case 36: +! #line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2431,2435 **** + + case 37: +! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2431,2435 ---- + + case 37: +! #line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2440,2444 **** + + case 38: +! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2440,2444 ---- + + case 38: +! #line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2449,2453 **** + + case 39: +! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2449,2453 ---- + + case 39: +! #line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2458,2462 **** + + case 40: +! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2458,2462 ---- + + case 40: +! #line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2467,2471 **** + + case 41: +! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2467,2471 ---- + + case 41: +! #line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2476,2480 **** + + case 42: +! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2476,2480 ---- + + case 42: +! #line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2485,2489 **** + + case 43: +! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2485,2489 ---- + + case 43: +! #line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2494,2498 **** + + case 44: +! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2494,2498 ---- + + case 44: +! #line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2503,2507 **** + + case 45: +! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2503,2507 ---- + + case 45: +! #line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2512,2516 **** + + case 46: +! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2512,2516 ---- + + case 46: +! #line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2521,2525 **** + + case 47: +! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2521,2525 ---- + + case 47: +! #line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2530,2534 **** + + case 48: +! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2530,2534 ---- + + case 48: +! #line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2539,2543 **** + + case 49: +! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2539,2543 ---- + + case 49: +! #line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2548,2552 **** + + case 50: +! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2548,2552 ---- + + case 50: +! #line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2557,2561 **** + + case 51: +! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2557,2561 ---- + + case 51: +! #line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2566,2585 **** + + case 52: +! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +--- 2566,2585 ---- + + case 52: +! #line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +*************** +*** 2588,2592 **** + + case 56: +! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + register REDIRECT *t; +--- 2588,2592 ---- + + case 56: +! #line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + register REDIRECT *t; +*************** +*** 2600,2624 **** + + case 57: +! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2600,2624 ---- + + case 57: +! #line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2639,2708 **** + + case 62: +! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2639,2708 ---- + + case 62: +! #line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2712,2716 **** + + case 76: +! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2712,2716 ---- + + case 76: +! #line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2720,2724 **** + + case 77: +! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2720,2724 ---- + + case 77: +! #line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2728,2732 **** + + case 78: +! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2728,2732 ---- + + case 78: +! #line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2736,2740 **** + + case 79: +! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2736,2740 ---- + + case 79: +! #line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2744,2748 **** + + case 80: +! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2744,2748 ---- + + case 80: +! #line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2752,2756 **** + + case 81: +! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2752,2756 ---- + + case 81: +! #line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2760,2764 **** + + case 82: +! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2760,2764 ---- + + case 82: +! #line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2768,2772 **** + + case 83: +! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2768,2772 ---- + + case 83: +! #line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2776,2780 **** + + case 84: +! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2776,2780 ---- + + case 84: +! #line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2784,2788 **** + + case 85: +! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2784,2788 ---- + + case 85: +! #line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2792,2796 **** + + case 86: +! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2792,2796 ---- + + case 86: +! #line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2800,2804 **** + + case 87: +! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2800,2804 ---- + + case 87: +! #line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2808,2812 **** + + case 88: +! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2808,2812 ---- + + case 88: +! #line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2816,2820 **** + + case 89: +! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2816,2820 ---- + + case 89: +! #line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2824,2828 **** + + case 90: +! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2824,2828 ---- + + case 90: +! #line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2832,2836 **** + + case 91: +! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2832,2836 ---- + + case 91: +! #line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2840,2844 **** + + case 92: +! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2840,2844 ---- + + case 92: +! #line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2848,2852 **** + + case 93: +! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +--- 2848,2852 ---- + + case 93: +! #line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +*************** +*** 2856,2860 **** + + case 94: +! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +--- 2856,2860 ---- + + case 94: +! #line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +*************** +*** 2864,2868 **** + + case 95: +! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +--- 2864,2868 ---- + + case 95: +! #line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +*************** +*** 2872,2896 **** + + case 96: +! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2872,2896 ---- + + case 96: +! #line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2924,2928 **** + + case 101: +! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +--- 2924,2928 ---- + + case 101: +! #line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +*************** +*** 2932,2936 **** + + case 102: +! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +--- 2932,2936 ---- + + case 102: +! #line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +*************** +*** 2940,2944 **** + + case 103: +! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2940,2944 ---- + + case 103: +! #line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2960,2964 **** + + case 104: +! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +--- 2960,2964 ---- + + case 104: +! #line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +*************** +*** 2968,2972 **** + + case 105: +! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2968,2972 ---- + + case 105: +! #line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2988,2992 **** + + case 106: +! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +--- 2988,2992 ---- + + case 106: +! #line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +*************** +*** 2996,3110 **** + + case 107: +! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 2996,3110 ---- + + case 107: +! #line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3115,3119 **** + + case 132: +! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 3115,3119 ---- + + case 132: +! #line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3122,3126 **** + + case 134: +! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3122,3126 ---- + + case 134: +! #line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3132,3146 **** + + case 136: +! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +--- 3132,3146 ---- + + case 136: +! #line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +*************** +*** 3152,3186 **** + + case 139: +! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +--- 3152,3186 ---- + + case 139: +! #line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +*************** +*** 3198,3202 **** + + case 150: +! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +--- 3198,3202 ---- + + case 150: +! #line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +*************** +*** 3217,3221 **** + + case 151: +! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +--- 3217,3221 ---- + + case 151: +! #line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +*************** +*** 3233,3247 **** + + case 152: +! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3233,3247 ---- + + case 152: +! #line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3253,3272 **** + + case 155: +! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3253,3272 ---- + + case 155: +! #line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3277,3281 **** + + case 159: +! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3277,3281 ---- + + case 159: +! #line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3286,3290 **** + + case 160: +! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +--- 3286,3290 ---- + + case 160: +! #line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + ELEMENT x; +*************** +*** 3306,3310 **** + + case 161: +! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +--- 3306,3310 ---- + + case 161: +! #line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + ELEMENT x; +*************** +*** 3327,3336 **** + + case 162: +! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +--- 3327,3336 ---- + + case 162: +! #line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +*************** +*** 3358,3377 **** + + case 164: +! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +--- 3358,3377 ---- + + case 164: +! #line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +*************** +*** 3593,3597 **** + + +! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + +--- 3593,3597 ---- + + +! #line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y" + + +*************** +*** 4851,4854 **** +--- 4851,4864 ---- + } + ++ char * ++ parser_remaining_input () ++ { ++ if (shell_input_line == 0) ++ return 0; ++ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) ++ return '\0'; /* XXX */ ++ return (shell_input_line + shell_input_line_index); ++ } ++ + #ifdef INCLUDE_UNUSED + /* Back the input pointer up by one, effectively `ungetting' a character. */ +*************** +*** 6340,6345 **** + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! if (interactive) +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +--- 6350,6355 ---- + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-031 b/patches/source/bash/bash-4.3-patches/bash43-031 new file mode 100644 index 000000000..a6519560a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-031 @@ -0,0 +1,112 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-031 + +Bug-Reported-by: lolilolicon +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html + +Bug-Description: + +The new nameref assignment functionality introduced in bash-4.3 did not perform +enough validation on the variable value and would create variables with +invalid names. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 +--- subst.h 2014-09-01 12:16:56.000000000 -0400 +*************** +*** 48,51 **** +--- 48,52 ---- + #define ASS_MKGLOBAL 0x0008 /* force global assignment */ + #define ASS_NAMEREF 0x0010 /* assigning to nameref variable */ ++ #define ASS_FROMREF 0x0020 /* assigning from value of nameref variable */ + + /* Flags for the string extraction functions. */ +*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 +--- variables.c 2014-09-01 14:37:44.000000000 -0400 +*************** +*** 2504,2511 **** + int hflags, aflags; + { +! char *newval; + SHELL_VAR *entry; + + entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table); + /* Follow the nameref chain here if this is the global variables table */ + if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table) +--- 2566,2590 ---- + int hflags, aflags; + { +! char *newname, *newval; + SHELL_VAR *entry; ++ #if defined (ARRAY_VARS) ++ arrayind_t ind; ++ char *subp; ++ int sublen; ++ #endif + ++ newname = 0; ++ #if defined (ARRAY_VARS) ++ if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name)) ++ { ++ newname = array_variable_name (name, &subp, &sublen); ++ if (newname == 0) ++ return (SHELL_VAR *)NULL; /* XXX */ ++ entry = hash_lookup (newname, table); ++ } ++ else ++ #endif + entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table); ++ + /* Follow the nameref chain here if this is the global variables table */ + if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table) +*************** +*** 2538,2541 **** +--- 2617,2630 ---- + } + } ++ #if defined (ARRAY_VARS) ++ else if (entry == 0 && newname) ++ { ++ entry = make_new_array_variable (newname); /* indexed array by default */ ++ if (entry == 0) ++ return entry; ++ ind = array_expand_index (name, subp, sublen); ++ bind_array_element (entry, ind, value, aflags); ++ } ++ #endif + else if (entry == 0) + { +*************** +*** 2658,2662 **** + if (nameref_cell (nv) == 0) + return (bind_variable_internal (nv->name, value, nvc->table, 0, flags)); +! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags)); + } + else +--- 2747,2752 ---- + if (nameref_cell (nv) == 0) + return (bind_variable_internal (nv->name, value, nvc->table, 0, flags)); +! /* XXX - bug here with ref=array[index] */ +! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF)); + } + else +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-032 b/patches/source/bash/bash-4.3-patches/bash43-032 new file mode 100644 index 000000000..0843719cb --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-032 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-032 + +Bug-Reported-by: crispusfairbairn@gmail.com +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html + +Bug-Description: + +When bash is running in Posix mode, it allows signals -- including SIGCHLD -- +to interrupt the `wait' builtin, as Posix requires. However, the interrupt +causes bash to not run a SIGCHLD trap for all exited children. This patch +fixes the issue and restores the documented behavior in Posix mode. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/jobs.c 2014-05-14 09:20:15.000000000 -0400 +--- jobs.c 2014-09-09 11:50:38.000000000 -0400 +*************** +*** 3340,3344 **** + { + interrupt_immediately = 0; +! trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */ + wait_signal_received = SIGCHLD; + /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up; +--- 3346,3352 ---- + { + interrupt_immediately = 0; +! /* This was trap_handler (SIGCHLD) but that can lose traps if +! children_exited > 1 */ +! queue_sigchld_trap (children_exited); + wait_signal_received = SIGCHLD; + /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-033 b/patches/source/bash/bash-4.3-patches/bash43-033 new file mode 100644 index 000000000..5f5147ffd --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-033 @@ -0,0 +1,225 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-033 + +Bug-Reported-by: mickael9@gmail.com, Jan Rome +Bug-Reference-ID: <20140907224046.382ED3610CC@mickael-laptop.localdomain>, + <540D661D.50908@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html + http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html + +Bug-Description: + +Bash does not clean up the terminal state in all cases where bash or +readline modifies it and bash is subsequently terminated by a fatal signal. +This happens when the `read' builtin modifies the terminal settings, both +when readline is active and when it is not. It occurs most often when a script +installs a trap that exits on a signal without re-sending the signal to itself. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/shell.c 2014-01-14 08:04:32.000000000 -0500 +--- shell.c 2014-12-22 10:27:50.000000000 -0500 +*************** +*** 74,77 **** +--- 74,78 ---- + + #if defined (READLINE) ++ # include + # include "bashline.h" + #endif +*************** +*** 910,913 **** +--- 912,923 ---- + fflush (stderr); + ++ /* Clean up the terminal if we are in a state where it's been modified. */ ++ #if defined (READLINE) ++ if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function) ++ (*rl_deprep_term_function) (); ++ #endif ++ if (read_tty_modified ()) ++ read_tty_cleanup (); ++ + /* Do trap[0] if defined. Allow it to override the exit status + passed to us. */ +*** ../bash-4.3-patched/builtins/read.def 2014-10-01 12:57:38.000000000 -0400 +--- builtins/read.def 2014-12-22 10:48:54.000000000 -0500 +*************** +*** 141,148 **** + int sigalrm_seen; + +! static int reading; + static SigHandler *old_alrm; + static unsigned char delim; + + /* In all cases, SIGALRM just sets a flag that we check periodically. This + avoids problems with the semi-tricky stuff we do with the xfree of +--- 141,150 ---- + int sigalrm_seen; + +! static int reading, tty_modified; + static SigHandler *old_alrm; + static unsigned char delim; + ++ static struct ttsave termsave; ++ + /* In all cases, SIGALRM just sets a flag that we check periodically. This + avoids problems with the semi-tricky stuff we do with the xfree of +*************** +*** 189,193 **** + SHELL_VAR *var; + TTYSTRUCT ttattrs, ttset; +- struct ttsave termsave; + #if defined (ARRAY_VARS) + WORD_LIST *alist; +--- 191,194 ---- +*************** +*** 222,226 **** + USE_VAR(lastsig); + +! sigalrm_seen = reading = 0; + + i = 0; /* Index into the string that we are reading. */ +--- 223,227 ---- + USE_VAR(lastsig); + +! sigalrm_seen = reading = tty_modified = 0; + + i = 0; /* Index into the string that we are reading. */ +*************** +*** 439,442 **** +--- 440,445 ---- + goto assign_vars; + } ++ if (interactive_shell == 0) ++ initialize_terminating_signals (); + old_alrm = set_signal_handler (SIGALRM, sigalrm); + add_unwind_protect (reset_alarm, (char *)NULL); +*************** +*** 483,487 **** +--- 486,493 ---- + if (i < 0) + sh_ttyerror (1); ++ tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); ++ if (interactive_shell == 0) ++ initialize_terminating_signals (); + } + } +*************** +*** 498,502 **** +--- 504,511 ---- + sh_ttyerror (1); + ++ tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); ++ if (interactive_shell == 0) ++ initialize_terminating_signals (); + } + +*************** +*** 589,592 **** +--- 598,603 ---- + else + lastsig = 0; ++ if (terminating_signal && tty_modified) ++ ttyrestore (&termsave); /* fix terminal before exiting */ + CHECK_TERMSIG; + eof = 1; +*************** +*** 979,982 **** +--- 990,1007 ---- + { + ttsetattr (ttp->fd, ttp->attrs); ++ tty_modified = 0; ++ } ++ ++ void ++ read_tty_cleanup () ++ { ++ if (tty_modified) ++ ttyrestore (&termsave); ++ } ++ ++ int ++ read_tty_modified () ++ { ++ return (tty_modified); + } + +*** ../bash-4.3-patched/builtins/common.h 2014-10-01 12:57:47.000000000 -0400 +--- builtins/common.h 2014-12-22 10:10:14.000000000 -0500 +*************** +*** 123,126 **** +--- 141,148 ---- + extern void getopts_reset __P((int)); + ++ /* Functions from read.def */ ++ extern void read_tty_cleanup __P((void)); ++ extern int read_tty_modified __P((void)); ++ + /* Functions from set.def */ + extern int minus_o_option_value __P((char *)); +*** ../bash-4.3-patched/bashline.c 2014-05-14 09:22:39.000000000 -0400 +--- bashline.c 2014-09-08 11:28:56.000000000 -0400 +*************** +*** 203,206 **** +--- 203,207 ---- + extern int array_needs_making; + extern int posixly_correct, no_symbolic_links; ++ extern int sigalrm_seen; + extern char *current_prompt_string, *ps1_prompt; + extern STRING_INT_ALIST word_token_alist[]; +*************** +*** 4209,4214 **** + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, +! calling run_interrupt_trap along the way. */ +! if (interrupt_state) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); +--- 4262,4268 ---- + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, +! calling run_interrupt_trap along the way. The check for sigalrm_seen is +! to clean up the read builtin's state. */ +! if (terminating_signal || interrupt_state || sigalrm_seen) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); +*** ../bash-4.3-patched/sig.c 2014-01-10 15:06:06.000000000 -0500 +--- sig.c 2014-09-08 11:26:33.000000000 -0400 +*************** +*** 533,538 **** + /* Set the event hook so readline will call it after the signal handlers + finish executing, so if this interrupted character input we can get +! quick response. */ +! if (interactive_shell && interactive && no_line_editing == 0) + bashline_set_event_hook (); + #endif +--- 533,540 ---- + /* Set the event hook so readline will call it after the signal handlers + finish executing, so if this interrupted character input we can get +! quick response. If readline is active or has modified the terminal we +! need to set this no matter what the signal is, though the check for +! RL_STATE_TERMPREPPED is possibly redundant. */ +! if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED)) + bashline_set_event_hook (); + #endif +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-034 b/patches/source/bash/bash-4.3-patches/bash43-034 new file mode 100644 index 000000000..17372aa2a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-034 @@ -0,0 +1,90 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-034 + +Bug-Reported-by: Dreamcat4 +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html + +Bug-Description: + +If neither the -f nor -v options is supplied to unset, and a name argument is +found to be a function and unset, subsequent name arguments are not treated as +variables before attempting to unset a function by that name. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/builtins/set.def 2013-04-19 07:20:34.000000000 -0400 +--- builtins/set.def 2015-05-05 13:25:36.000000000 -0400 +*************** +*** 752,758 **** +--- 797,805 ---- + { + int unset_function, unset_variable, unset_array, opt, nameref, any_failed; ++ int global_unset_func, global_unset_var; + char *name; + + unset_function = unset_variable = unset_array = nameref = any_failed = 0; ++ global_unset_func = global_unset_var = 0; + + reset_internal_getopt (); +*************** +*** 762,769 **** + { + case 'f': +! unset_function = 1; + break; + case 'v': +! unset_variable = 1; + break; + case 'n': +--- 809,816 ---- + { + case 'f': +! global_unset_func = 1; + break; + case 'v': +! global_unset_var = 1; + break; + case 'n': +*************** +*** 778,782 **** + list = loptend; + +! if (unset_function && unset_variable) + { + builtin_error (_("cannot simultaneously unset a function and a variable")); +--- 825,829 ---- + list = loptend; + +! if (global_unset_func && global_unset_var) + { + builtin_error (_("cannot simultaneously unset a function and a variable")); +*************** +*** 796,799 **** +--- 843,849 ---- + name = list->word->word; + ++ unset_function = global_unset_func; ++ unset_variable = global_unset_var; ++ + #if defined (ARRAY_VARS) + unset_array = 0; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-035 b/patches/source/bash/bash-4.3-patches/bash43-035 new file mode 100644 index 000000000..f18bc6026 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-035 @@ -0,0 +1,63 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-035 + +Bug-Reported-by: +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html + +Bug-Description: + +A locale with a long name can trigger a buffer overflow and core dump. This +applies on systems that do not have locale_charset in libc, are not using +GNU libiconv, and are not using the libintl that ships with bash in lib/intl. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/sh/unicode.c 2014-01-30 16:47:19.000000000 -0500 +--- lib/sh/unicode.c 2015-05-01 08:58:30.000000000 -0400 +*************** +*** 79,83 **** + if (s) + { +! strcpy (charsetbuf, s+1); + t = strchr (charsetbuf, '@'); + if (t) +--- 79,84 ---- + if (s) + { +! strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1); +! charsetbuf[sizeof (charsetbuf) - 1] = '\0'; + t = strchr (charsetbuf, '@'); + if (t) +*************** +*** 85,89 **** + return charsetbuf; + } +! strcpy (charsetbuf, locale); + return charsetbuf; + } +--- 86,91 ---- + return charsetbuf; + } +! strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1); +! charsetbuf[sizeof (charsetbuf) - 1] = '\0'; + return charsetbuf; + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-036 b/patches/source/bash/bash-4.3-patches/bash43-036 new file mode 100644 index 000000000..5b42c246c --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-036 @@ -0,0 +1,57 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-036 + +Bug-Reported-by: emanuelczirai@cryptolab.net +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html + +Bug-Description: + +When evaluating and setting integer variables, and the assignment fails to +create a variable (for example, when performing an operation on an array +variable with an invalid subscript), bash attempts to dereference a null +pointer, causing a segmentation violation. + +Patch (apply with `patch -p0'): + +*** ../bash-20150206/variables.c 2015-01-23 20:39:27.000000000 -0500 +--- variables.c 2015-02-19 13:56:12.000000000 -0500 +*************** +*** 2834,2841 **** + v = bind_variable (lhs, rhs, 0); + +! if (v && isint) +! VSETATTR (v, att_integer); +! +! VUNSETATTR (v, att_invisible); + + return (v); +--- 2834,2843 ---- + v = bind_variable (lhs, rhs, 0); + +! if (v) +! { +! if (isint) +! VSETATTR (v, att_integer); +! VUNSETATTR (v, att_invisible); +! } + + return (v); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-037 b/patches/source/bash/bash-4.3-patches/bash43-037 new file mode 100644 index 000000000..f04012bad --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-037 @@ -0,0 +1,43 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-037 + +Bug-Reported-by: Greg Wooledge +Bug-Reference-ID: <20150204144240.GN13956@eeg.ccf.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html + +Bug-Description: + +If an associative array uses `@' or `*' as a subscript, `declare -p' produces +output that cannot be reused as input. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/assoc.c 2011-11-05 16:39:05.000000000 -0400 +--- assoc.c 2015-02-04 15:28:25.000000000 -0500 +*************** +*** 437,440 **** +--- 440,445 ---- + if (sh_contains_shell_metas (tlist->key)) + istr = sh_double_quote (tlist->key); ++ else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0') ++ istr = sh_double_quote (tlist->key); + else + istr = tlist->key; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-038 b/patches/source/bash/bash-4.3-patches/bash43-038 new file mode 100644 index 000000000..e0de74e08 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-038 @@ -0,0 +1,88 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-038 + +Bug-Reported-by: worley@alum.mit.edu (Dale R. Worley) +Bug-Reference-ID: <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html + +Bug-Description: + +There are a number of instances where `time' is not recognized as a reserved +word when the shell grammar says it should be. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400 +--- parse.y 2014-06-11 10:25:53.000000000 -0400 +*************** +*** 2819,2827 **** + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ +! case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +--- 2819,2832 ---- + case OR_OR: + case '&': ++ case WHILE: + case DO: ++ case UNTIL: ++ case IF: + case THEN: ++ case ELIF: + case ELSE: + case '{': /* } */ +! case '(': /* )( */ +! case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +*** ../bash-4.3-patched/y.tab.c 2014-10-05 13:52:50.000000000 -0400 +--- y.tab.c 2015-05-19 15:08:43.000000000 -0400 +*************** +*** 5131,5139 **** + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ +! case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +--- 5131,5144 ---- + case OR_OR: + case '&': ++ case WHILE: + case DO: ++ case UNTIL: ++ case IF: + case THEN: ++ case ELIF: + case ELSE: + case '{': /* } */ +! case '(': /* )( */ +! case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-039 b/patches/source/bash/bash-4.3-patches/bash43-039 new file mode 100644 index 000000000..e5e388707 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-039 @@ -0,0 +1,57 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-039 + +Bug-Reported-by: SN +Bug-Reference-ID: <54E2554C.205@gazeta.pl> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html + +Bug-Description: + +Using the output of `declare -p' when run in a function can result in variables +that are invisible to `declare -p'. This problem occurs when an assignment +builtin such as `declare' receives a quoted compound array assignment as one of +its arguments. + +Patch (apply with `patch -p0'): + +*** /usr/src/local/bash/bash-4.3-patched/arrayfunc.c 2014-10-01 13:08:48.000000000 -0400 +--- arrayfunc.c 2015-02-19 14:33:05.000000000 -0500 +*************** +*** 405,408 **** +--- 405,411 ---- + else + array_insert (a, i, l->word->word); ++ ++ VUNSETATTR (var, att_invisible); /* no longer invisible */ ++ + return var; + } +*************** +*** 635,638 **** +--- 638,645 ---- + if (nlist) + dispose_words (nlist); ++ ++ if (var) ++ VUNSETATTR (var, att_invisible); /* no longer invisible */ ++ + return (var); + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-040 b/patches/source/bash/bash-4.3-patches/bash43-040 new file mode 100644 index 000000000..978ce1cd5 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-040 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-040 + +Bug-Reported-by: Jean Delvare +Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html + +Bug-Description: + +There is a memory leak that occurs when bash expands an array reference on +the rhs of an assignment statement. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400 +--- subst.c 2015-06-22 09:16:53.000000000 -0400 +*************** +*** 5783,5787 **** + if (pflags & PF_ASSIGNRHS) + { +! temp = array_variable_name (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); +--- 5783,5787 ---- + if (pflags & PF_ASSIGNRHS) + { +! var = array_variable_part (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-041 b/patches/source/bash/bash-4.3-patches/bash43-041 new file mode 100644 index 000000000..a040a2ac5 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-041 @@ -0,0 +1,72 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-041 + +Bug-Reported-by: Hanno Böck +Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html, + http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html + +Bug-Description: + +There are several out-of-bounds read errors that occur when completing command +lines where assignment statements appear before the command name. The first +two appear only when programmable completion is enabled; the last one only +happens when listing possible completions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.40/bashline.c 2014-12-29 14:39:43.000000000 -0500 +--- bashline.c 2015-08-12 10:21:58.000000000 -0400 +*************** +*** 1469,1476 **** +--- 1469,1489 ---- + os = start; + n = 0; ++ was_assignment = 0; + s = find_cmd_start (os); + e = find_cmd_end (end); + do + { ++ /* Don't read past the end of rl_line_buffer */ ++ if (s > rl_end) ++ { ++ s1 = s = e1; ++ break; ++ } ++ /* Or past point if point is within an assignment statement */ ++ else if (was_assignment && s > rl_point) ++ { ++ s1 = s = e1; ++ break; ++ } + /* Skip over assignment statements preceding a command name. If we + don't find a command name at all, we can perform command name +*** ../bash-4.3.40/lib/readline/complete.c 2013-10-14 09:27:10.000000000 -0400 +--- lib/readline/complete.c 2015-07-31 09:34:39.000000000 -0400 +*************** +*** 690,693 **** +--- 690,695 ---- + if (temp == 0 || *temp == '\0') + return (pathname); ++ else if (temp[1] == 0 && temp == pathname) ++ return (pathname); + /* If the basename is NULL, we might have a pathname like '/usr/src/'. + Look for a previous slash and, if one is found, return the portion +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-042 b/patches/source/bash/bash-4.3-patches/bash43-042 new file mode 100644 index 000000000..cc3e17c6f --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-042 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-042 + +Bug-Reported-by: Nathan Neulinger +Bug-Reference-ID: <558EFDF2.7060402@neulinger.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html + +Bug-Description: + +There is a problem when parsing command substitutions containing `case' +commands within pipelines that causes the parser to not correctly identify +the end of the command substitution. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400 +--- parse.y 2015-06-29 10:59:27.000000000 -0400 +*************** +*** 3709,3712 **** +--- 3709,3714 ---- + tflags |= LEX_INWORD; + lex_wlen = 0; ++ if (tflags & LEX_RESWDOK) ++ lex_rwlen = 0; + } + } +*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400 +--- y.tab.c 2015-06-29 10:59:27.000000000 -0400 +*************** +*** 6021,6024 **** +--- 6021,6026 ---- + tflags |= LEX_INWORD; + lex_wlen = 0; ++ if (tflags & LEX_RESWDOK) ++ lex_rwlen = 0; + } + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-043 b/patches/source/bash/bash-4.3-patches/bash43-043 new file mode 100644 index 000000000..ad82c2925 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-043 @@ -0,0 +1,59 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-043 + +Bug-Reported-by: lolilolicon +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00040.html + +Bug-Description: + +When the lastpipe option is enabled, the last component can contain nested +pipelines and cause a segmentation fault under certain circumestances. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/execute_cmd.c 2014-07-30 10:26:52.000000000 -0400 +--- execute_cmd.c 2014-08-15 08:55:24.000000000 -0400 +*************** +*** 2406,2412 **** + { + #if defined (JOB_CONTROL) +! append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid); +! #endif + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) + /* If wait_for removes the job from the jobs table, use result of last +--- 2433,2447 ---- + { + #if defined (JOB_CONTROL) +! if (INVALID_JOB (lastpipe_jid) == 0) +! { +! append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid); +! lstdin = wait_for (lastpid); +! } +! else +! lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */ +! #else + lstdin = wait_for (lastpid); ++ #endif ++ + #if defined (JOB_CONTROL) + /* If wait_for removes the job from the jobs table, use result of last +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-044 b/patches/source/bash/bash-4.3-patches/bash43-044 new file mode 100644 index 000000000..d8f1ce072 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-044 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-044 + +Bug-Reported-by: Ondrej Oprala +Bug-Reference-ID: <539ED55B.2080103@redhat.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00046.html + +Bug-Description: + +A typo prevents the `compat42' shopt option from working as intended. + +Patch (apply with `patch -p0'): + +diff -rC 2 bash-4.3.42/builtins/shopt.def bash-4.3.43/builtins/shopt.def +*** bash-4.3.42/builtins/shopt.def 2013-02-27 09:43:20.000000000 -0500 +--- builtins/shopt.def 2015-10-16 11:25:28.000000000 -0400 +*************** +*** 161,165 **** + { "compat40", &shopt_compat40, set_compatibility_level }, + { "compat41", &shopt_compat41, set_compatibility_level }, +! { "compat42", &shopt_compat41, set_compatibility_level }, + #if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, +--- 161,165 ---- + { "compat40", &shopt_compat40, set_compatibility_level }, + { "compat41", &shopt_compat41, set_compatibility_level }, +! { "compat42", &shopt_compat42, set_compatibility_level }, + #if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-045 b/patches/source/bash/bash-4.3-patches/bash43-045 new file mode 100644 index 000000000..25dc3587a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-045 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-045 + +Bug-Reported-by: Basin Ilya +Bug-Reference-ID: <5624C0AC.8070802@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-10/msg00141.html + +Bug-Description: + +If a file open attempted as part of a redirection fails because it is interrupted +by a signal, the shell needs to process any pending traps to allow the redirection +to be canceled. + +Patch (apply with `patch -p0'): + +*** bash-20150109/redir.c 2014-12-03 10:47:38.000000000 -0500 +--- redir.c 2015-01-16 10:15:47.000000000 -0500 +*************** +*** 672,676 **** + e = errno; + if (fd < 0 && e == EINTR) +! QUIT; + errno = e; + } +--- 672,679 ---- + e = errno; + if (fd < 0 && e == EINTR) +! { +! QUIT; +! run_pending_traps (); +! } + errno = e; + } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-046 b/patches/source/bash/bash-4.3-patches/bash43-046 new file mode 100644 index 000000000..bea3970a2 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-046 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-046 + +Bug-Reported-by: Sergey Tselikh +Bug-Reference-ID: <20150816110235.91f3e12e3f20d20cdaad963e@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-08/msg00080.html + +Bug-Description: + +An incorrect conversion from an indexed to associative array can result in a +core dump. + +Patch (apply with `patch -p0'): + +*** /fs2/chet/bash/bash-20150813/subst.c 2015-08-13 11:32:54.000000000 -0400 +--- subst.c 2015-08-18 10:13:59.000000000 -0400 +*************** +*** 9562,9566 **** + opts[opti] = '\0'; + if (opti > 0) +! make_internal_declare (tlist->word->word, opts); + + t = do_word_assignment (tlist->word, 0); +--- 9562,9573 ---- + opts[opti] = '\0'; + if (opti > 0) +! { +! t = make_internal_declare (tlist->word->word, opts); +! if (t != EXECUTION_SUCCESS) +! { +! last_command_exit_value = t; +! exp_jump_to_top_level (DISCARD); +! } +! } + + t = do_word_assignment (tlist->word, 0); + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-047 b/patches/source/bash/bash-4.3-patches/bash43-047 new file mode 100644 index 000000000..316e3afcd --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-047 @@ -0,0 +1,150 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-047 + +Bug-Reported-by: Bernd Dietzel +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1507025 + +Bug-Description: + +Bash performs word expansions on the prompt strings after the special +escape sequences are expanded. If a malicious user can modify the system +hostname or change the name of the bash executable and coerce a user into +executing it, and the new name contains word expansions (including +command substitution), bash will expand them in prompt strings containing +the \h or \H and \s escape sequences, respectively. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2015-08-13 15:11:54.000000000 -0400 +--- parse.y 2016-03-07 15:44:14.000000000 -0500 +*************** +*** 5259,5263 **** + int result_size, result_index; + int c, n, i; +! char *temp, octal_string[4]; + struct tm *tm; + time_t the_time; +--- 5259,5263 ---- + int result_size, result_index; + int c, n, i; +! char *temp, *t_host, octal_string[4]; + struct tm *tm; + time_t the_time; +*************** +*** 5407,5411 **** + case 's': + temp = base_pathname (shell_name); +! temp = savestring (temp); + goto add_string; + +--- 5407,5415 ---- + case 's': + temp = base_pathname (shell_name); +! /* Try to quote anything the user can set in the file system */ +! if (promptvars || posixly_correct) +! temp = sh_backslash_quote_for_double_quotes (temp); +! else +! temp = savestring (temp); + goto add_string; + +*************** +*** 5497,5503 **** + case 'h': + case 'H': +! temp = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + +--- 5501,5515 ---- + case 'h': + case 'H': +! t_host = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (t_host, '.'))) + *t = '\0'; ++ if (promptvars || posixly_correct) ++ /* Make sure that expand_prompt_string is called with a ++ second argument of Q_DOUBLE_QUOTES if we use this ++ function here. */ ++ temp = sh_backslash_quote_for_double_quotes (t_host); ++ else ++ temp = savestring (t_host); ++ free (t_host); + goto add_string; + +*** ../bash-4.3-patched/y.tab.c 2015-08-13 15:11:54.000000000 -0400 +--- y.tab.c 2016-03-07 15:44:14.000000000 -0500 +*************** +*** 7571,7575 **** + int result_size, result_index; + int c, n, i; +! char *temp, octal_string[4]; + struct tm *tm; + time_t the_time; +--- 7571,7575 ---- + int result_size, result_index; + int c, n, i; +! char *temp, *t_host, octal_string[4]; + struct tm *tm; + time_t the_time; +*************** +*** 7719,7723 **** + case 's': + temp = base_pathname (shell_name); +! temp = savestring (temp); + goto add_string; + +--- 7719,7727 ---- + case 's': + temp = base_pathname (shell_name); +! /* Try to quote anything the user can set in the file system */ +! if (promptvars || posixly_correct) +! temp = sh_backslash_quote_for_double_quotes (temp); +! else +! temp = savestring (temp); + goto add_string; + +*************** +*** 7809,7815 **** + case 'h': + case 'H': +! temp = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + +--- 7813,7827 ---- + case 'h': + case 'H': +! t_host = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (t_host, '.'))) + *t = '\0'; ++ if (promptvars || posixly_correct) ++ /* Make sure that expand_prompt_string is called with a ++ second argument of Q_DOUBLE_QUOTES if we use this ++ function here. */ ++ temp = sh_backslash_quote_for_double_quotes (t_host); ++ else ++ temp = savestring (t_host); ++ free (t_host); + goto add_string; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-048 b/patches/source/bash/bash-4.3-patches/bash43-048 new file mode 100644 index 000000000..6a8588ec0 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-048 @@ -0,0 +1,54 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-048 + +Bug-Reported-by: up201407890@alunos.dcc.fc.up.pt +Bug-Reference-ID: <20151210201649.126444eionzfsam8@webmail.alunos.dcc.fc.up.pt> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-12/msg00054.html + +Bug-Description: + +If a malicious user can inject a value of $SHELLOPTS containing `xtrace' +and a value for $PS4 that includes a command substitution into a shell +running as root, bash will expand the command substitution as part of +expanding $PS4 when it executes a traced command. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/variables.c 2015-11-26 12:31:21.000000000 -0500 +--- variables.c 2015-12-23 10:19:01.000000000 -0500 +*************** +*** 496,500 **** + set_if_not ("PS2", secondary_prompt); + } +! set_if_not ("PS4", "+ "); + + /* Don't allow IFS to be imported from the environment. */ +--- 496,504 ---- + set_if_not ("PS2", secondary_prompt); + } +! +! if (current_user.euid == 0) +! bind_variable ("PS4", "+ ", 0); +! else +! set_if_not ("PS4", "+ "); + + /* Don't allow IFS to be imported from the environment. */ + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 48 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash.SlackBuild b/patches/source/bash/bash.SlackBuild new file mode 100755 index 000000000..a2950c268 --- /dev/null +++ b/patches/source/bash/bash.SlackBuild @@ -0,0 +1,170 @@ +#!/bin/sh + +# Copyright 2005-2015 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2011, 2012 by Eric Hameleers for ARM port. + + +# Set initial variables: +CWD=`pwd` +if [ "$TMP" = "" ]; then + TMP=/tmp +fi +PKG=$TMP/package-bash + +VERSION=${VERSION:-$(echo bash-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mcpu=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" +else + SLKCFLAGS="-O2" +fi + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +if [ ! -d $TMP ]; then + mkdir -p $TMP # location to build the source +fi +rm -rf $PKG +mkdir -p $PKG + +# Determine bash patchlevel: +PATCHLEVEL="$( cd $CWD/bash-${VERSION}-patches ; /bin/ls bash4?-??? | tail -1 | cut -f 2 -d - 2> /dev/null )" +if [ "$PATCHLEVEL" = "" ]; then + PATCHLEVEL=0 +fi + +cd $TMP +rm -rf bash-$VERSION +tar xvf $CWD/bash-$VERSION.tar.?z* || exit 1 +cd bash-$VERSION || exit 1 +chown -R root:root . +find . -perm 664 | xargs chmod 644 +find . -perm 775 | xargs chmod 755 + +if [ -d $CWD/bash-${VERSION}-patches ]; then + ( cd $CWD/bash-${VERSION}-patches ; cat bash4?-??? ) | patch -p0 --verbose || exit 1 +fi + +# End of preparations +if echo "$*" | grep -qw -- --prep ; then + exit 0 +fi + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --build=$TARGET || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 +mv $PKG/usr/share/doc $PKG/usr +mkdir -p $PKG/bin +mv $PKG/usr/bin/bash $PKG/bin/bash4.new +# We don't include the "bashbug" script. +rm -rf $PKG/usr/bin $PKG/usr/man/man1/bashbug.1 + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# bash.1 is already installed by "make install" +( cd doc + for page in builtins.1 rbash.1 ; do + cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz + done +) + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +mkdir -p $PKG/usr/doc/bash-$VERSION +cp -a AUTHORS CHANGES COMPAT COPYING* INSTALL MANIFEST NEWS NOTES \ + README* Y2K doc/FAQ doc/INTRO \ + $PKG/usr/doc/bash-$VERSION +( cd doc ; groff -ms -Tascii article.ms > $PKG/usr/doc/bash-$VERSION/article.txt ) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +makepkg -l y -c n $TMP/bash-$VERSION.$PATCHLEVEL-$ARCH-$BUILD.txz + diff --git a/patches/source/bash/doinst.sh b/patches/source/bash/doinst.sh new file mode 100644 index 000000000..867958fb8 --- /dev/null +++ b/patches/source/bash/doinst.sh @@ -0,0 +1,18 @@ +if [ -r bin/bash ]; then + mv bin/bash bin/bash.old +fi +mv bin/bash4.new bin/bash +if [ -f bin/bash.old ]; then + rm -f bin/bash.old +fi +if [ ! -r etc/shells ]; then + touch etc/shells + chmod 644 etc/shells +fi +if grep -wq /bin/bash etc/shells ; then + true +else + echo /bin/bash >> etc/shells +fi +( cd usr/bin ; rm -rf bash ) +( cd usr/bin ; ln -sf /bin/bash bash ) diff --git a/patches/source/bash/slack-desc b/patches/source/bash/slack-desc new file mode 100644 index 000000000..f2fdb9292 --- /dev/null +++ b/patches/source/bash/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +bash: bash (sh-compatible shell) +bash: +bash: The GNU Bourne-Again SHell. Bash is a sh-compatible command +bash: interpreter that executes commands read from the standard input or +bash: from a file. Bash also incorporates useful features from the Korn +bash: and C shells (ksh and csh). Bash is ultimately intended to be a +bash: conformant implementation of the IEEE Posix Shell and Tools +bash: specification (IEEE Working Group 1003.2). +bash: +bash: Bash must be present for the system to boot properly. +bash: diff --git a/patches/source/bind/3link.sh b/patches/source/bind/3link.sh new file mode 100644 index 000000000..ec8ba4d19 --- /dev/null +++ b/patches/source/bind/3link.sh @@ -0,0 +1,136 @@ +rm -f lwres_addr_parse.3 +ln -sf lwres_resutil.3 lwres_addr_parse.3 +rm -f lwres_buffer_add.3 +ln -sf lwres_buffer.3 lwres_buffer_add.3 +rm -f lwres_buffer_back.3 +ln -sf lwres_buffer.3 lwres_buffer_back.3 +rm -f lwres_buffer_clear.3 +ln -sf lwres_buffer.3 lwres_buffer_clear.3 +rm -f lwres_buffer_first.3 +ln -sf lwres_buffer.3 lwres_buffer_first.3 +rm -f lwres_buffer_forward.3 +ln -sf lwres_buffer.3 lwres_buffer_forward.3 +rm -f lwres_buffer_getmem.3 +ln -sf lwres_buffer.3 lwres_buffer_getmem.3 +rm -f lwres_buffer_getuint16.3 +ln -sf lwres_buffer.3 lwres_buffer_getuint16.3 +rm -f lwres_buffer_getuint32.3 +ln -sf lwres_buffer.3 lwres_buffer_getuint32.3 +rm -f lwres_buffer_getuint8.3 +ln -sf lwres_buffer.3 lwres_buffer_getuint8.3 +rm -f lwres_buffer_init.3 +ln -sf lwres_buffer.3 lwres_buffer_init.3 +rm -f lwres_buffer_invalidate.3 +ln -sf lwres_buffer.3 lwres_buffer_invalidate.3 +rm -f lwres_buffer_putmem.3 +ln -sf lwres_buffer.3 lwres_buffer_putmem.3 +rm -f lwres_buffer_putuint16.3 +ln -sf lwres_buffer.3 lwres_buffer_putuint16.3 +rm -f lwres_buffer_putuint32.3 +ln -sf lwres_buffer.3 lwres_buffer_putuint32.3 +rm -f lwres_buffer_putuint8.3 +ln -sf lwres_buffer.3 lwres_buffer_putuint8.3 +rm -f lwres_buffer_subtract.3 +ln -sf lwres_buffer.3 lwres_buffer_subtract.3 +rm -f lwres_conf_clear.3 +ln -sf lwres_config.3 lwres_conf_clear.3 +rm -f lwres_conf_get.3 +ln -sf lwres_config.3 lwres_conf_get.3 +rm -f lwres_conf_init.3 +ln -sf lwres_config.3 lwres_conf_init.3 +rm -f lwres_conf_parse.3 +ln -sf lwres_config.3 lwres_conf_parse.3 +rm -f lwres_conf_print.3 +ln -sf lwres_config.3 lwres_conf_print.3 +rm -f lwres_context_allocmem.3 +ln -sf lwres_context.3 lwres_context_allocmem.3 +rm -f lwres_context_create.3 +ln -sf lwres_context.3 lwres_context_create.3 +rm -f lwres_context_destroy.3 +ln -sf lwres_context.3 lwres_context_destroy.3 +rm -f lwres_context_freemem.3 +ln -sf lwres_context.3 lwres_context_freemem.3 +rm -f lwres_context_initserial.3 +ln -sf lwres_context.3 lwres_context_initserial.3 +rm -f lwres_context_nextserial.3 +ln -sf lwres_context.3 lwres_context_nextserial.3 +rm -f lwres_context_sendrecv.3 +ln -sf lwres_context.3 lwres_context_sendrecv.3 +rm -f lwres_endhostent.3 +ln -sf lwres_gethostent.3 lwres_endhostent.3 +rm -f lwres_endhostent_r.3 +ln -sf lwres_gethostent.3 lwres_endhostent_r.3 +rm -f lwres_freeaddrinfo.3 +ln -sf lwres_getaddrinfo.3 lwres_freeaddrinfo.3 +rm -f lwres_freehostent.3 +ln -sf lwres_getipnode.3 lwres_freehostent.3 +rm -f lwres_gabnrequest_free.3 +ln -sf lwres_gabn.3 lwres_gabnrequest_free.3 +rm -f lwres_gabnrequest_parse.3 +ln -sf lwres_gabn.3 lwres_gabnrequest_parse.3 +rm -f lwres_gabnrequest_render.3 +ln -sf lwres_gabn.3 lwres_gabnrequest_render.3 +rm -f lwres_gabnresponse_free.3 +ln -sf lwres_gabn.3 lwres_gabnresponse_free.3 +rm -f lwres_gabnresponse_parse.3 +ln -sf lwres_gabn.3 lwres_gabnresponse_parse.3 +rm -f lwres_gabnresponse_render.3 +ln -sf lwres_gabn.3 lwres_gabnresponse_render.3 +rm -f lwres_getaddrsbyname.3 +ln -sf lwres_resutil.3 lwres_getaddrsbyname.3 +rm -f lwres_gethostbyaddr.3 +ln -sf lwres_gethostent.3 lwres_gethostbyaddr.3 +rm -f lwres_gethostbyaddr_r.3 +ln -sf lwres_gethostent.3 lwres_gethostbyaddr_r.3 +rm -f lwres_gethostbyname.3 +ln -sf lwres_gethostent.3 lwres_gethostbyname.3 +rm -f lwres_gethostbyname2.3 +ln -sf lwres_gethostent.3 lwres_gethostbyname2.3 +rm -f lwres_gethostbyname_r.3 +ln -sf lwres_gethostent.3 lwres_gethostbyname_r.3 +rm -f lwres_gethostent_r.3 +ln -sf lwres_gethostent.3 lwres_gethostent_r.3 +rm -f lwres_getipnodebyaddr.3 +ln -sf lwres_getipnode.3 lwres_getipnodebyaddr.3 +rm -f lwres_getipnodebyname.3 +ln -sf lwres_getipnode.3 lwres_getipnodebyname.3 +rm -f lwres_getnamebyaddr.3 +ln -sf lwres_resutil.3 lwres_getnamebyaddr.3 +rm -f lwres_gnbarequest_free.3 +ln -sf lwres_gnba.3 lwres_gnbarequest_free.3 +rm -f lwres_gnbarequest_parse.3 +ln -sf lwres_gnba.3 lwres_gnbarequest_parse.3 +rm -f lwres_gnbarequest_render.3 +ln -sf lwres_gnba.3 lwres_gnbarequest_render.3 +rm -f lwres_gnbaresponse_free.3 +ln -sf lwres_gnba.3 lwres_gnbaresponse_free.3 +rm -f lwres_gnbaresponse_parse.3 +ln -sf lwres_gnba.3 lwres_gnbaresponse_parse.3 +rm -f lwres_gnbaresponse_render.3 +ln -sf lwres_gnba.3 lwres_gnbaresponse_render.3 +rm -f lwres_herror.3 +ln -sf lwres_hstrerror.3 lwres_herror.3 +rm -f lwres_lwpacket_parseheader.3 +ln -sf lwres_packet.3 lwres_lwpacket_parseheader.3 +rm -f lwres_lwpacket_renderheader.3 +ln -sf lwres_packet.3 lwres_lwpacket_renderheader.3 +rm -f lwres_net_ntop.3 +ln -sf lwres_inetntop.3 lwres_net_ntop.3 +rm -f lwres_nooprequest_free.3 +ln -sf lwres_noop.3 lwres_nooprequest_free.3 +rm -f lwres_nooprequest_parse.3 +ln -sf lwres_noop.3 lwres_nooprequest_parse.3 +rm -f lwres_nooprequest_render.3 +ln -sf lwres_noop.3 lwres_nooprequest_render.3 +rm -f lwres_noopresponse_free.3 +ln -sf lwres_noop.3 lwres_noopresponse_free.3 +rm -f lwres_noopresponse_parse.3 +ln -sf lwres_noop.3 lwres_noopresponse_parse.3 +rm -f lwres_noopresponse_render.3 +ln -sf lwres_noop.3 lwres_noopresponse_render.3 +rm -f lwres_sethostent.3 +ln -sf lwres_gethostent.3 lwres_sethostent.3 +rm -f lwres_sethostent_r.3 +ln -sf lwres_gethostent.3 lwres_sethostent_r.3 +rm -f lwres_string_parse.3 +ln -sf lwres_resutil.3 lwres_string_parse.3 diff --git a/patches/source/bind/bind.SlackBuild b/patches/source/bind/bind.SlackBuild new file mode 100755 index 000000000..f20a83f9a --- /dev/null +++ b/patches/source/bind/bind.SlackBuild @@ -0,0 +1,165 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=bind +VERSION=${VERSION:-9.10.6-P1} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=/bind-$(mcookie) +PKG=$TMP/package-${PKGNAM} +rm -rf $PKG +mkdir -p $TMP $PKG/etc/default + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +fi + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.gz || exit 1 +cd ${PKGNAM}-$VERSION || exit 1 + +# Remove use of SO_BSDCOMPAT which has been obsolete since the 2.2.x kernel +# series, and generates warnings under 2.6.x kernels. This _might_ be fixed +# upstream already, but an explicit #undef SO_BSDCOMPAT does not hurt: +zcat $CWD/bind.so_bsdcompat.diff.gz | patch -p1 --verbose || exit + +# Thanks to Fedora for libidn support patch: +zcat $CWD/bind.libidn.patch.gz | patch -p1 --verbose || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-libtool \ + --mandir=/usr/man \ + --enable-shared \ + --disable-static \ + --enable-threads \ + --with-openssl=/usr \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# We like symlinks. +( cd $PKG/usr/sbin + ln -sf named lwresd +) + +# We like a lot of symlinks. +( cd $PKG/usr/man/man3 + sh $CWD/3link.sh +) + +# Install init script: +mkdir -p $PKG/etc/rc.d +cp -a $CWD/rc.bind $PKG/etc/rc.d/rc.bind.new +chmod 644 $PKG/etc/rc.d/rc.bind.new + +# Add /var/run/named directory: +mkdir -p $PKG/var/run/named + +# Fix library perms: +chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/* + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Symlink hardlinked man pages: +( cd $PKG/usr/man/man1 + ln -sf isc-config.sh.1 bind9-config.1 +) + +# Compress manual pages: +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do + ln -s $( readlink $i ).gz $i.gz + rm $i +done + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + CHANGES COPYRIGHT FAQ* README* \ + doc/arm doc/misc \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# This one should have the correct perms of the config file: +chmod 644 $PKG/usr/doc/${PKGNAM}-$VERSION/misc/rndc.conf-sample + +# One format of this is plenty. Especially get rid of the bloated PDF. +( cd $PKG/usr/doc/bind-$VERSION/arm + rm -f Makefile* *.pdf *.xml README.SGML latex-fixup.pl +) + +# Add sample config files for a simple caching nameserver: +mkdir -p $PKG/var/named/caching-example +cat $CWD/caching-example/named.conf > $PKG/etc/named.conf.new +cat $CWD/caching-example/localhost.zone > $PKG/var/named/caching-example/localhost.zone +cat $CWD/caching-example/named.local > $PKG/var/named/caching-example/named.local +cat $CWD/caching-example/named.root > $PKG/var/named/caching-example/named.root +# This name is deprecated, but having it here doesn't hurt in case +# an old configuration file wants it: +cat $CWD/caching-example/named.root > $PKG/var/named/caching-example/named.ca + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz + diff --git a/patches/source/bind/bind.libidn.patch b/patches/source/bind/bind.libidn.patch new file mode 100644 index 000000000..6e042be74 --- /dev/null +++ b/patches/source/bind/bind.libidn.patch @@ -0,0 +1,297 @@ +diff --git a/bin/dig/Makefile.in b/bin/dig/Makefile.in +index bd219c5..f71685b 100644 +--- a/bin/dig/Makefile.in ++++ b/bin/dig/Makefile.in +@@ -38,10 +38,10 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS} ${ISCDEPLIBS} \ + ${ISCCFGDEPLIBS} ${LWRESDEPLIBS} + + LIBS = ${LWRESLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ +- ${ISCLIBS} @IDNLIBS@ @LIBS@ ++ ${ISCLIBS} @IDNLIBS@ @LIBS@ -lidn + + NOSYMLIBS = ${LWRESLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ +- ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ ++ ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ -lidn + + SUBDIRS = + +@@ -59,6 +59,8 @@ HTMLPAGES = dig.html host.html nslookup.html + + MANOBJS = ${MANPAGES} ${HTMLPAGES} + ++EXT_CFLAGS = -DWITH_LIBIDN ++ + @BIND9_MAKE_RULES@ + + dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS} +diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook +index 7a7e8e4..b36047f 100644 +--- a/bin/dig/dig.docbook ++++ b/bin/dig/dig.docbook +@@ -1251,8 +1251,8 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr + dig appropriately converts character encoding of + domain name before sending a request to DNS server or displaying a + reply from the server. +- If you'd like to turn off the IDN support for some reason, defines +- the IDN_DISABLE environment variable. ++ If you'd like to turn off the IDN support for some reason, define ++ the CHARSET=ASCII environment variable. + The IDN support is disabled if the variable is set when + dig runs. + +diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c +index 1f8bcf2..f657c30 100644 +--- a/bin/dig/dighost.c ++++ b/bin/dig/dighost.c +@@ -33,6 +33,11 @@ + #include + #endif + ++#ifdef WITH_LIBIDN ++#include ++#include ++#endif ++ + #include + #ifdef DIG_SIGCHASE + #include +@@ -158,6 +163,14 @@ static void idn_check_result(idn_result_t r, const char *msg); + int idnoptions = 0; + #endif + ++#ifdef WITH_LIBIDN ++static isc_result_t libidn_locale_to_utf8 (const char* from, char *to); ++static isc_result_t libidn_utf8_to_ascii (const char* from, char *to); ++static isc_result_t output_filter (isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++#endif ++ + isc_socket_t *keep = NULL; + isc_sockaddr_t keepaddr; + +@@ -1448,8 +1461,15 @@ setup_system(isc_boolean_t ipv4only, isc_boolean_t ipv6only) { + + #ifdef WITH_IDN + initialize_idn(); ++ ++#endif ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter(output_filter); ++ check_result(result, "dns_name_settotextfilter"); ++#ifdef HAVE_SETLOCALE ++ setlocale (LC_ALL, ""); ++#endif + #endif +- + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +@@ -2231,8 +2251,11 @@ setup_lookup(dig_lookup_t *lookup) { + idn_result_t mr; + char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; + #endif ++#ifdef WITH_LIBIDN ++ char utf8_str[MXNAME], utf8_name[MXNAME], ascii_name[MXNAME]; ++#endif + +-#ifdef WITH_IDN ++#if defined (WITH_IDN) || defined (WITH_LIBIDN) + result = dns_name_settotextfilter(lookup->idnout ? + output_filter : NULL); + check_result(result, "dns_name_settotextfilter"); +@@ -2274,6 +2297,14 @@ setup_lookup(dig_lookup_t *lookup) { + mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname, + utf8_textname, sizeof(utf8_textname)); + idn_check_result(mr, "convert textname to UTF-8"); ++#elif defined (WITH_LIBIDN) ++ result = libidn_locale_to_utf8 (lookup->textname, utf8_str); ++ check_result (result, "convert textname to UTF-8"); ++ len = strlen (utf8_str); ++ if (len < MXNAME) ++ (void) strcpy (utf8_name, utf8_str); ++ else ++ fatal ("Too long name"); + #endif + + /* +@@ -2286,15 +2317,11 @@ setup_lookup(dig_lookup_t *lookup) { + if (lookup->new_search) { + #ifdef WITH_IDN + if ((count_dots(utf8_textname) >= ndots) || !usesearch) { +- lookup->origin = NULL; /* Force abs lookup */ +- lookup->done_as_is = ISC_TRUE; +- lookup->need_search = usesearch; +- } else if (lookup->origin == NULL && usesearch) { +- lookup->origin = ISC_LIST_HEAD(search_list); +- lookup->need_search = ISC_FALSE; +- } ++#elif defined (WITH_LIBIDN) ++ if ((count_dots(utf8_name) >= ndots) || !usesearch) { + #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) { ++#endif + lookup->origin = NULL; /* Force abs lookup */ + lookup->done_as_is = ISC_TRUE; + lookup->need_search = usesearch; +@@ -2302,7 +2329,6 @@ setup_lookup(dig_lookup_t *lookup) { + lookup->origin = ISC_LIST_HEAD(search_list); + lookup->need_search = ISC_FALSE; + } +-#endif + } + + #ifdef WITH_IDN +@@ -2319,6 +2345,20 @@ setup_lookup(dig_lookup_t *lookup) { + IDN_IDNCONV | IDN_LENCHECK, utf8_textname, + idn_textname, sizeof(idn_textname)); + idn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++#elif defined (WITH_LIBIDN) ++ if (lookup->origin != NULL) { ++ result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str); ++ check_result (result, "convert origin to UTF-8"); ++ if (len > 0 && utf8_name[len - 1] != '.') { ++ utf8_name[len++] = '.'; ++ if (len + strlen (utf8_str) < MXNAME) ++ (void) strcpy (utf8_name + len, utf8_str); ++ else ++ fatal ("Too long name + origin"); ++ } ++ } ++ ++ result = libidn_utf8_to_ascii (utf8_name, ascii_name); + #else + if (lookup->origin != NULL) { + debug("trying origin %s", lookup->origin->origin); +@@ -2389,6 +2429,13 @@ setup_lookup(dig_lookup_t *lookup) { + result = dns_name_fromtext(lookup->name, &b, + dns_rootname, 0, + &lookup->namebuf); ++#elif defined (WITH_LIBIDN) ++ len = strlen (ascii_name); ++ isc_buffer_init(&b, ascii_name, len); ++ isc_buffer_add(&b, len); ++ result = dns_name_fromtext(lookup->name, &b, ++ dns_rootname, 0, ++ &lookup->namebuf); + #else + len = (unsigned int) strlen(lookup->textname); + isc_buffer_init(&b, lookup->textname, len); +@@ -4377,7 +4424,7 @@ destroy_libs(void) { + void * ptr; + dig_message_t *chase_msg; + #endif +-#ifdef WITH_IDN ++#if defined (WITH_IDN) || defined (WITH_LIBIDN) + isc_result_t result; + #endif + +@@ -4418,6 +4465,10 @@ destroy_libs(void) { + result = dns_name_settotextfilter(NULL); + check_result(result, "dns_name_settotextfilter"); + #endif ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter (NULL); ++ check_result(result, "clearing dns_name_settotextfilter"); ++#endif + dns_name_destroy(); + + if (commctx != NULL) { +@@ -4603,6 +4654,97 @@ idn_check_result(idn_result_t r, const char *msg) { + } + } + #endif /* WITH_IDN */ ++#ifdef WITH_LIBIDN ++static isc_result_t ++libidn_locale_to_utf8 (const char *from, char *to) { ++ char *utf8_str; ++ ++ debug ("libidn_locale_to_utf8"); ++ utf8_str = stringprep_locale_to_utf8 (from); ++ if (utf8_str != NULL) { ++ (void) strcpy (to, utf8_str); ++ free (utf8_str); ++ return ISC_R_SUCCESS; ++ } ++ ++ debug ("libidn_locale_to_utf8: failure"); ++ return ISC_R_FAILURE; ++} ++static isc_result_t ++libidn_utf8_to_ascii (const char *from, char *to) { ++ char *ascii; ++ int iresult; ++ ++ debug ("libidn_utf8_to_ascii"); ++ iresult = idna_to_ascii_8z (from, &ascii, 0); ++ if (iresult != IDNA_SUCCESS) { ++ debug ("idna_to_ascii_8z: %s", idna_strerror (iresult)); ++ return ISC_R_FAILURE; ++ } ++ ++ (void) strcpy (to, ascii); ++ free (ascii); ++ return ISC_R_SUCCESS; ++} ++ ++static isc_result_t ++output_filter (isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) { ++ ++ char tmp1[MXNAME], *tmp2; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ int iresult; ++ ++ debug ("output_filter"); ++ ++ fromlen = isc_buffer_usedlength (buffer) - used_org; ++ if (fromlen >= MXNAME) ++ return ISC_R_SUCCESS; ++ memcpy (tmp1, (char *) isc_buffer_base (buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MXNAME) ++ return ISC_R_SUCCESS; ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ iresult = idna_to_unicode_8z8z (tmp1, &tmp2, 0); ++ if (iresult != IDNA_SUCCESS) { ++ debug ("output_filter: %s", idna_strerror (iresult)); ++ return ISC_R_SUCCESS; ++ } ++ ++ (void) strcpy (tmp1, tmp2); ++ free (tmp2); ++ ++ tmp2 = stringprep_utf8_to_locale (tmp1); ++ if (tmp2 == NULL) { ++ debug ("output_filter: stringprep_utf8_to_locale failed"); ++ return ISC_R_SUCCESS; ++ } ++ ++ (void) strcpy (tmp1, tmp2); ++ free (tmp2); ++ ++ tolen = strlen (tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length (buffer) < used_org + tolen) ++ return ISC_R_NOSPACE; ++ ++ debug ("%s", tmp1); ++ ++ isc_buffer_subtract (buffer, isc_buffer_usedlength (buffer) - used_org); ++ memcpy (isc_buffer_used (buffer), tmp1, tolen); ++ isc_buffer_add (buffer, tolen); ++ ++ return ISC_R_SUCCESS; ++} ++#endif /* WITH_LIBIDN*/ + + #ifdef DIG_SIGCHASE + void diff --git a/patches/source/bind/bind.so_bsdcompat.diff b/patches/source/bind/bind.so_bsdcompat.diff new file mode 100644 index 000000000..5d78031b7 --- /dev/null +++ b/patches/source/bind/bind.so_bsdcompat.diff @@ -0,0 +1,11 @@ +--- ./lib/isc/unix/socket.c.orig 2005-11-03 17:08:42.000000000 -0600 ++++ ./lib/isc/unix/socket.c 2006-02-18 13:09:15.000000000 -0600 +@@ -245,6 +245,8 @@ + + #define SOCK_DEAD(s) ((s)->references == 0) + ++#undef SO_BSDCOMPAT ++ + static void + manager_log(isc_socketmgr_t *sockmgr, + isc_logcategory_t *category, isc_logmodule_t *module, int level, diff --git a/patches/source/bind/caching-example/localhost.zone b/patches/source/bind/caching-example/localhost.zone new file mode 100644 index 000000000..c47baf5f1 --- /dev/null +++ b/patches/source/bind/caching-example/localhost.zone @@ -0,0 +1,11 @@ +$TTL 86400 +$ORIGIN localhost. +@ 1D IN SOA @ root ( + 42 ; serial (d. adams) + 3H ; refresh + 15M ; retry + 1W ; expiry + 1D ) ; minimum + + 1D IN NS @ + 1D IN A 127.0.0.1 diff --git a/patches/source/bind/caching-example/named.conf b/patches/source/bind/caching-example/named.conf new file mode 100644 index 000000000..a8ee2795f --- /dev/null +++ b/patches/source/bind/caching-example/named.conf @@ -0,0 +1,31 @@ +options { + directory "/var/named"; + /* + * If there is a firewall between you and nameservers you want + * to talk to, you might need to uncomment the query-source + * directive below. Previous versions of BIND always asked + * questions using port 53, but BIND 8.1 uses an unprivileged + * port by default. + */ + // query-source address * port 53; +}; + +// +// a caching only nameserver config +// +zone "." IN { + type hint; + file "caching-example/named.root"; +}; + +zone "localhost" IN { + type master; + file "caching-example/localhost.zone"; + allow-update { none; }; +}; + +zone "0.0.127.in-addr.arpa" IN { + type master; + file "caching-example/named.local"; + allow-update { none; }; +}; diff --git a/patches/source/bind/caching-example/named.local b/patches/source/bind/caching-example/named.local new file mode 100644 index 000000000..8f40bcf36 --- /dev/null +++ b/patches/source/bind/caching-example/named.local @@ -0,0 +1,10 @@ +$TTL 86400 +@ IN SOA localhost. root.localhost. ( + 2011032500 ; Serial + 28800 ; Refresh + 14400 ; Retry + 3600000 ; Expire + 86400 ) ; Minimum + IN NS localhost. + +1 IN PTR localhost. diff --git a/patches/source/bind/caching-example/named.root b/patches/source/bind/caching-example/named.root new file mode 100644 index 000000000..9cc20228c --- /dev/null +++ b/patches/source/bind/caching-example/named.root @@ -0,0 +1,90 @@ +; This file holds the information on root name servers needed to +; initialize cache of Internet domain name servers +; (e.g. reference this file in the "cache . " +; configuration file of BIND domain name servers). +; +; This file is made available by InterNIC +; under anonymous FTP as +; file /domain/named.cache +; on server FTP.INTERNIC.NET +; -OR- RS.INTERNIC.NET +; +; last update: November 05, 2014 +; related version of root zone: 2014110501 +; +; formerly NS.INTERNIC.NET +; +. 3600000 NS A.ROOT-SERVERS.NET. +A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 +A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30 +; +; FORMERLY NS1.ISI.EDU +; +. 3600000 NS B.ROOT-SERVERS.NET. +B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 +B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:84::b +; +; FORMERLY C.PSI.NET +; +. 3600000 NS C.ROOT-SERVERS.NET. +C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 +C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c +; +; FORMERLY TERP.UMD.EDU +; +. 3600000 NS D.ROOT-SERVERS.NET. +D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d +; +; FORMERLY NS.NASA.GOV +; +. 3600000 NS E.ROOT-SERVERS.NET. +E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 +; +; FORMERLY NS.ISC.ORG +; +. 3600000 NS F.ROOT-SERVERS.NET. +F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 +F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f +; +; FORMERLY NS.NIC.DDN.MIL +; +. 3600000 NS G.ROOT-SERVERS.NET. +G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 +; +; FORMERLY AOS.ARL.ARMY.MIL +; +. 3600000 NS H.ROOT-SERVERS.NET. +H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 +H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803f:235 +; +; FORMERLY NIC.NORDU.NET +; +. 3600000 NS I.ROOT-SERVERS.NET. +I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 +I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53 +; +; OPERATED BY VERISIGN, INC. +; +. 3600000 NS J.ROOT-SERVERS.NET. +J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 +J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30 +; +; OPERATED BY RIPE NCC +; +. 3600000 NS K.ROOT-SERVERS.NET. +K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 +K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1 +; +; OPERATED BY ICANN +; +. 3600000 NS L.ROOT-SERVERS.NET. +L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 +L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 +; +; OPERATED BY WIDE +; +. 3600000 NS M.ROOT-SERVERS.NET. +M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 +M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35 +; End of file diff --git a/patches/source/bind/doinst.sh b/patches/source/bind/doinst.sh new file mode 100644 index 000000000..afeff946f --- /dev/null +++ b/patches/source/bind/doinst.sh @@ -0,0 +1,36 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.bind.new: +if [ -e etc/rc.d/rc.bind ]; then + cp -a etc/rc.d/rc.bind etc/rc.d/rc.bind.new.incoming + cat etc/rc.d/rc.bind.new > etc/rc.d/rc.bind.new.incoming + mv etc/rc.d/rc.bind.new.incoming etc/rc.d/rc.bind.new +fi + +config etc/named.conf.new +config etc/rc.d/rc.bind.new + +# Add a /var/named if it doesn't exist: +if [ ! -d var/named ]; then + mkdir -p var/named + chmod 755 var/named +fi + +# Generate /etc/rndc.key if there's none there, +# and there also no /etc/rndc.conf (the other +# way to set this up). +if [ ! -r etc/rndc.key -a ! -r /etc/rndc.conf ]; then + chroot . /sbin/ldconfig + chroot . /usr/sbin/rndc-confgen -r /dev/urandom -a 2> /dev/null +fi diff --git a/patches/source/bind/rc.bind b/patches/source/bind/rc.bind new file mode 100644 index 000000000..6d77d73d9 --- /dev/null +++ b/patches/source/bind/rc.bind @@ -0,0 +1,112 @@ +#!/bin/sh +# Start/stop/restart the BIND name server daemon (named). + + +# Start bind. In the past it was more secure to run BIND as a non-root +# user (for example, with '-u daemon'), but the modern version of BIND +# knows how to use the kernel's capability mechanism to drop all root +# privileges except the ability to bind() to a privileged port and set +# process resource limits, so -u should not be needed. If you wish to +# use it anyway, chown the /var/run/named and /var/named directories to +# the non-root user. The command options can be set like this in +# /etc/default/named : +# NAMED_OPTIONS="-u daemon" +# So you will not have to edit this script. + +# You might also consider running BIND in a "chroot jail", +# a discussion of which may be found in +# /usr/doc/Linux-HOWTOs/Chroot-BIND-HOWTO. + +# One last note: rndc has a lot of other nice features that it is not +# within the scope of this start/stop/restart script to support. +# For more details, see "man rndc" or just type "rndc" to see the options. + +# Load command defaults: +if [ -f /etc/default/named ] ; then . /etc/default/named ; fi +if [ -f /etc/default/rndc ] ; then . /etc/default/rndc ; fi + +# Sanity check. If /usr/sbin/named is missing then it +# doesn't make much sense to try to run this script: +if [ ! -x /usr/sbin/named ]; then + echo "/etc/rc.d/rc.bind: no /usr/sbin/named found (or not executable); cannot start." + exit 1 +fi + +# Start BIND. As many times as you like. ;-) +# Seriously, don't run "rc.bind start" if BIND is already +# running or you'll get more than one copy running. +bind_start() { + if [ -x /usr/sbin/named ]; then + echo "Starting BIND: /usr/sbin/named $NAMED_OPTIONS" + /usr/sbin/named $NAMED_OPTIONS + sleep 1 + fi + if ! ps axc | grep -q named ; then + echo "WARNING: named did not start." + echo "Attempting to start named again: /usr/sbin/named $NAMED_OPTIONS" + /usr/sbin/named $NAMED_OPTIONS + sleep 1 + if ps axc | grep -q named ; then + echo "SUCCESS: named started." + else + echo "FAILED: Sorry, a second attempt to start named has also failed." + echo "There may be a configuration error that needs fixing. Good luck!" + fi + fi +} + +# Stop all running copies of BIND (/usr/sbin/named): +bind_stop() { + echo "Stopping BIND: /usr/sbin/rndc $RDNC_OPTIONS stop" + /usr/sbin/rndc $RDNC_OPTIONS stop + # A problem with using "/usr/sbin/rndc stop" is that if you + # managed to get multiple copies of named running it will + # only stop one of them and then can't stop the others even + # if you run it again. So, after doing things the nice way + # we'll do them the old-fashioned way. If you don't like + # it you can comment it out, but unless you have a lot of + # other programs you run called "named" this is unlikely + # to have any ill effects: + sleep 1 + if ps axc | grep -q named ; then + echo "Using "killall named" on additional BIND processes..." + /bin/killall named 2> /dev/null + fi +} + +# Reload BIND: +bind_reload() { + /usr/sbin/rndc $RDNC_OPTIONS reload +} + +# Restart BIND: +bind_restart() { + bind_stop + bind_start +} + +# Get BIND status: +bind_status() { + /usr/sbin/rndc $RDNC_OPTIONS status +} + +case "$1" in +'start') + bind_start + ;; +'stop') + bind_stop + ;; +'reload') + bind_reload + ;; +'restart') + bind_restart + ;; +'status') + bind_status + ;; +*) + echo "usage $0 start|stop|reload|restart|status" +esac + diff --git a/patches/source/bind/slack-desc b/patches/source/bind/slack-desc new file mode 100644 index 000000000..9e9b15d11 --- /dev/null +++ b/patches/source/bind/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +bind: bind (DNS server and utilities) +bind: +bind: The named daemon and support utilities such as dig, host, and +bind: nslookup. Sample configuration files for running a simple caching +bind: nameserver are included. Documentation for advanced name server +bind: setup can be found in /usr/doc/bind-9.x.x/. +bind: +bind: +bind: +bind: +bind: diff --git a/patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch b/patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch new file mode 100644 index 000000000..749787c5b --- /dev/null +++ b/patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch @@ -0,0 +1,61 @@ +Submitted By: Armin K. +Date: 2013-04-29 +Initial Package Version: 5.17 +Upstream Status: unknown +Origin: Arch Linux (Giovanni Campagna) +Description: Allow using obexd without systemd in the user session + +Not all sessions run systemd --user (actually, the majority +doesn't), so the dbus daemon must be able to spawn obexd +directly, and to do so it needs the full path of the daemon. +--- + Makefile.obexd | 4 ++-- + obexd/src/org.bluez.obex.service | 4 ---- + obexd/src/org.bluez.obex.service.in | 4 ++++ + 3 files changed, 6 insertions(+), 6 deletions(-) + delete mode 100644 obexd/src/org.bluez.obex.service + create mode 100644 obexd/src/org.bluez.obex.service.in + +diff --git a/Makefile.obexd b/Makefile.obexd +index 3760867..142e7c3 100644 +--- a/Makefile.obexd ++++ b/Makefile.obexd +@@ -2,12 +2,12 @@ + if SYSTEMD + systemduserunitdir = @SYSTEMD_USERUNITDIR@ + systemduserunit_DATA = obexd/src/obex.service ++endif + + dbussessionbusdir = @DBUS_SESSIONBUSDIR@ + dbussessionbus_DATA = obexd/src/org.bluez.obex.service +-endif + +-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service ++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in + + obex_plugindir = $(libdir)/obex/plugins + +diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service +deleted file mode 100644 +index a538088..0000000 +--- a/obexd/src/org.bluez.obex.service ++++ /dev/null +@@ -1,4 +0,0 @@ +-[D-BUS Service] +-Name=org.bluez.obex +-Exec=/bin/false +-SystemdService=dbus-org.bluez.obex.service +diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in +new file mode 100644 +index 0000000..9c815f2 +--- /dev/null ++++ b/obexd/src/org.bluez.obex.service.in +@@ -0,0 +1,4 @@ ++[D-BUS Service] ++Name=org.bluez.obex ++Exec=@libexecdir@/obexd ++SystemdService=dbus-org.bluez.obex.service +-- +1.8.3.1 + + diff --git a/patches/source/bluez/bluez.SlackBuild b/patches/source/bluez/bluez.SlackBuild new file mode 100755 index 000000000..4225f828d --- /dev/null +++ b/patches/source/bluez/bluez.SlackBuild @@ -0,0 +1,178 @@ +#!/bin/sh + +# Copyright 2009, 2010, 2011, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=bluez +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:--j7} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/${PKGNAM}-${VERSION}.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/bluez-5.30-obexd_without_systemd-1.patch.gz | patch -p1 --verbose || exit 1 + +autoreconf -vif + +sed -i -e 's|-lreadline|\0 -lncursesw|g' Makefile.{in,tools} + +# We're adding --enable-deprecated due to this commit: +# +# commit b1eb2c4cd057624312e0412f6c4be000f7fc3617 +#Author: Luiz Augusto von Dentz +#Date: Wed Jan 4 14:23:58 2017 +0200 +# +# build: Hide deprecated tools under --enable-deprecated +# +# This marks the following tools as deprecated as they are not longer +# maintained or have been replaced by other tools: +# +# hciattach hciconfig hcitool hcidump rfcomm sdptool ciptool gatttool + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --localstatedir=/var \ + --docdir=/usr/doc/${PKGNAM}-${VERSION} \ + --enable-library \ + --disable-systemd \ + --enable-deprecated \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Use reset=1 for the btusb module, which supposedly fixes reconnect problems: +mkdir -p $PKG/lib/modprobe.d +cp -a $CWD/btusb.conf $PKG/lib/modprobe.d +chown root:root $PKG/lib/modprobe.d/btusb.conf +chmod 644 $PKG/lib/modprobe.d/btusb.conf + +# Add bluetoothd to /usr/sbin +mkdir -p $PKG/usr/sbin +ln -s ../libexec/bluetooth/bluetoothd $PKG/usr/sbin + +# Install the configuration files +mkdir -p $PKG/etc/bluetooth $PKG/etc/default +cat src/main.conf > $PKG/etc/bluetooth/main.conf.new +cat profiles/input/input.conf > $PKG/etc/bluetooth/input.conf.new +cat profiles/network/network.conf > $PKG/etc/bluetooth/network.conf.new +cat profiles/proximity/proximity.conf > $PKG/etc/bluetooth/proximity.conf.new +cat $CWD/config/uart.conf > $PKG/etc/bluetooth/uart.conf.new +cat $CWD/config/defaultconfig > $PKG/etc/default/bluetooth.new + +# Add an init script +mkdir -p $PKG/etc/rc.d +cat $CWD/config/rc.bluetooth > $PKG/etc/rc.d/rc.bluetooth.new + +# Let's go ahead and let that start by default, unless an existing init +# script is not executable: +chmod 755 $PKG/etc/rc.d/rc.bluetooth.new + +# If the deprecated utility gatttool was built, go ahead and install it: +if [ -x attrib/gatttool ]; then + cp attrib/gatttool $PKG/usr/bin + chown root:root $PKG/usr/bin/gatttool + chmod 755 $PKG/usr/bin/gatttool +fi + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL README* TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install + +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/bluez/btusb.conf b/patches/source/bluez/btusb.conf new file mode 100644 index 000000000..3072d7885 --- /dev/null +++ b/patches/source/bluez/btusb.conf @@ -0,0 +1,3 @@ +# use "reset=1" as default, since it should be safe for recent devices and +# solves all kind of problems. +options btusb reset=1 diff --git a/patches/source/bluez/config/defaultconfig b/patches/source/bluez/config/defaultconfig new file mode 100644 index 000000000..b4da786e1 --- /dev/null +++ b/patches/source/bluez/config/defaultconfig @@ -0,0 +1,9 @@ +# /etc/default/bluetooth + +# A space delimied list of devices to start at boot time +ACTIVE_HCI_DEVICES_ON_BOOT="hci0" + +# A semicolon delimited list of SDP (Service Discovery Protocol) +# operations for bluetooth devices. See the sdptool for more details. +SDPTOOL_OPTIONS="" + diff --git a/patches/source/bluez/config/rc.bluetooth b/patches/source/bluez/config/rc.bluetooth new file mode 100644 index 000000000..b56fcd101 --- /dev/null +++ b/patches/source/bluez/config/rc.bluetooth @@ -0,0 +1,74 @@ +#!/bin/sh + +# /etc/rc.d/rc.bluetooth (based on BLFS script) + +# Populated from /etc/default/bluetooth: +# ACTIVE_HCI_DEVICES_ON_BOOT and SDPTOOL_OPTIONS + +[ -r /etc/default/bluetooth ] && . /etc/default/bluetooth + +start_hci_dev() { + for dev in ${ACTIVE_HCI_DEVICES_ON_BOOT} ; do + hciconfig $dev up > /dev/null 2>&1 + done +} + +run_sdptool() { + # Declaring IFS local in this function, removes the need to save/restore it + local IFS option + test -x /usr/bin/sdptool || return 1 + IFS=";" + for option in ${SDPTOOL_OPTIONS}; do + IFS=" " + /usr/bin/sdptool $option > /dev/null 2>&1 + done +} + +start_uarts() { + [ -r /etc/bluetooth/uart.conf ] || return + grep -v '^[[:space:]]*(#|$)' /etc/bluetooth/uart.conf | while read i; do + /usr/bin/hciattach $i > /dev/null 2>&1 + done +} + +stop_uarts() { + killall /usr/bin/hciattach > /dev/null 2>&1 +} + +start() { + if [ -d /sys/class/bluetooth ]; then + # Start as background process and assume OK + echo -n "Starting Bluetooth services: bluetoothd " + /usr/sbin/bluetoothd & + echo -n "hciconfig " + start_hci_dev + echo -n "sdptool " + run_sdptool + echo "hciattach" + start_uarts + fi +} + +stop() { + stop_uarts + killall /usr/sbin/bluetoothd > /dev/null 2>&1 +} + +case "${1}" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start + ;; + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 + ;; +esac + diff --git a/patches/source/bluez/config/uart.conf b/patches/source/bluez/config/uart.conf new file mode 100644 index 000000000..b2e276f4e --- /dev/null +++ b/patches/source/bluez/config/uart.conf @@ -0,0 +1,6 @@ +# /etc/bluetooth/uart.conf + +# Attach serial devices via UART HCI to BlueZ stack +# Use one line per device +# See the hciattach man page for options + diff --git a/patches/source/bluez/doinst.sh b/patches/source/bluez/doinst.sh new file mode 100644 index 000000000..7fc213834 --- /dev/null +++ b/patches/source/bluez/doinst.sh @@ -0,0 +1,27 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.bluetooth.new: +if [ -e etc/rc.d/rc.bluetooth ]; then + cp -a etc/rc.d/rc.bluetooth etc/rc.d/rc.bluetooth.new.incoming + cat etc/rc.d/rc.bluetooth.new > etc/rc.d/rc.bluetooth.new.incoming + mv etc/rc.d/rc.bluetooth.new.incoming etc/rc.d/rc.bluetooth.new +fi + +config etc/rc.d/rc.bluetooth.new +config etc/bluetooth/input.conf.new +config etc/bluetooth/main.conf.new +config etc/bluetooth/network.conf.new +config etc/bluetooth/proximity.conf.new +config etc/bluetooth/uart.conf.new +config etc/default/bluetooth.new + diff --git a/patches/source/bluez/slack-desc b/patches/source/bluez/slack-desc new file mode 100644 index 000000000..607fa4d96 --- /dev/null +++ b/patches/source/bluez/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +bluez: bluez (Bluetooth libraries and utilities) +bluez: +bluez: Bluez is the Bluetooth stack for Linux, allowing Bluetooth adaptors +bluez: and devices to be used with Linux. This package contains the Bluez +bluez: libraries, utilities, and other support files. +bluez: +bluez: For more info, visit: http://www.bluez.org +bluez: +bluez: +bluez: +bluez: diff --git a/patches/source/ca-certificates/ca-certificates.SlackBuild b/patches/source/ca-certificates/ca-certificates.SlackBuild new file mode 100755 index 000000000..6b3cf0105 --- /dev/null +++ b/patches/source/ca-certificates/ca-certificates.SlackBuild @@ -0,0 +1,91 @@ +#!/bin/sh + +# Slackware build script for ca-certificates + +# Copyright 2009,2011 Robby Workman Northport, AL, USA +# Copyright 2012, 2013, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=ca-certificates +VERSION=${VERSION:-20161130} +ARCH=noarch +BUILD=${BUILD:-1_slack14.2} + +TARVERSION=${VERSION}+nmu1 + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG/usr/share/ca-certificates $PKG/usr/sbin +cd $TMP + +# Need both $PKGNAM and $PKGNAM-$VERSION since upstream can't decide how +# to package their tarball: +rm -rf $PKGNAM $PKGNAM-$VERSION + +# Extract the tarball: +tar xvf $CWD/${PKGNAM}_$TARVERSION.tar.?z || exit 1 + +# Again, both $PKGNAM and $PKGNAM-$VERSION are needed here: +cd $PKGNAM-$VERSION || cd $PKGNAM || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Obsolete? +#zcat $CWD/patches/fixup_DESTDIR.diff.gz | patch -p1 || exit 1 + +# Remove incompatible command operators used to call 'run-parts': +zcat $CWD/patches/fixup_update-ca-certificates.diff.gz | patch -p1 || exit 1 + +make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/etc/ca-certificates/update.d +printf "# Automatically generated by $PKGNAM-$VERSION \n#\n" \ + > $PKG/etc/ca-certificates.conf.new +( cd $PKG/usr/share/ca-certificates + find . -name '*.crt' | sort | cut -b3- +) >> $PKG/etc/ca-certificates.conf.new + +mkdir -p $PKG/usr/man/man8 +gzip -9c sbin/update-ca-certificates.8 > \ + $PKG/usr/man/man8/update-ca-certificates.8.gz + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +mv debian/NEWS debian/NEWS.Debian +cp -a debian/NEWS.Debian debian/README.Debian $PKG/usr/doc/$PKGNAM-$VERSION + +mkdir -p $PKG/var/log/setup +cat $CWD/setup.11.cacerts > $PKG/var/log/setup/setup.11.cacerts +chmod 755 $PKG/var/log/setup/setup.11.cacerts + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/ca-certificates/doinst.sh b/patches/source/ca-certificates/doinst.sh new file mode 100644 index 000000000..cfd7d795e --- /dev/null +++ b/patches/source/ca-certificates/doinst.sh @@ -0,0 +1,19 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/ca-certificates.conf.new + +if [ -x /usr/sbin/update-ca-certificates ]; then + /usr/sbin/update-ca-certificates --fresh 1> /dev/null 2> /dev/null +fi + diff --git a/patches/source/ca-certificates/patches/fixup_DESTDIR.diff b/patches/source/ca-certificates/patches/fixup_DESTDIR.diff new file mode 100644 index 000000000..964064184 --- /dev/null +++ b/patches/source/ca-certificates/patches/fixup_DESTDIR.diff @@ -0,0 +1,49 @@ +--- ./cacert.org/Makefile.orig ++++ ./cacert.org/Makefile +@@ -7,6 +7,7 @@ + clean: + + install: ++ mkdir -p $(CERTSDIR) + for p in *.crt; do \ + install -m 644 $$p $(CERTSDIR)/cacert.org_$$p ; \ + done +--- ./mozilla/Makefile.orig ++++ ./mozilla/Makefile +@@ -9,6 +9,7 @@ + -rm -f *.crt + + install: ++ mkdir -p $(CERTSDIR) + for p in *.crt; do \ + install -m 644 $$p $(CERTSDIR)/$$p ; \ + done +--- ./sbin/Makefile.orig ++++ ./sbin/Makefile +@@ -8,4 +8,5 @@ + clean: + + install: ++ mkdir -p $(DESTDIR)/usr/sbin + install -m755 update-ca-certificates $(DESTDIR)/usr/sbin/ +--- ./Makefile.orig ++++ ./Makefile +@@ -17,7 +17,7 @@ + + install: + for dir in $(SUBDIRS); do \ +- mkdir $(DESTDIR)/$(CERTSDIR)/$$dir; \ ++ mkdir -p $(DESTDIR)/$(CERTSDIR)/$$dir; \ + $(MAKE) -C $$dir install CERTSDIR=$(DESTDIR)/$(CERTSDIR)/$$dir; \ + done + for dir in sbin; do \ +--- ./spi-inc.org/Makefile.orig ++++ ./spi-inc.org/Makefile +@@ -7,6 +7,7 @@ + clean: + + install: ++ mkdir -p $PKG/$(CERTSDIR) + for p in *.crt; do \ + install -m 644 $$p $(CERTSDIR)/$$p ; \ + done diff --git a/patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff b/patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff new file mode 100644 index 000000000..1c3940585 --- /dev/null +++ b/patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff @@ -0,0 +1,12 @@ +diff -urN ca-certificates-20150426.orig/sbin/update-ca-certificates ca-certificates-20150426/sbin/update-ca-certificates +--- ca-certificates-20150426.orig/sbin/update-ca-certificates 2015-04-01 13:47:25.000000000 +0100 ++++ ca-certificates-20150426/sbin/update-ca-certificates 2015-09-14 22:51:39.856021883 +0100 +@@ -193,7 +193,7 @@ + echo "Running hooks in $HOOKSDIR..." + VERBOSE_ARG= + [ "$verbose" = 0 ] || VERBOSE_ARG="--verbose" +- eval run-parts "$VERBOSE_ARG" --test -- "$HOOKSDIR" | while read hook ++ eval run-parts "$HOOKSDIR" | while read hook + do + ( cat "$ADDED" + cat "$REMOVED" ) | "$hook" || echo "E: $hook exited with code $?." diff --git a/patches/source/ca-certificates/setup.11.cacerts b/patches/source/ca-certificates/setup.11.cacerts new file mode 100644 index 000000000..328b61c0f --- /dev/null +++ b/patches/source/ca-certificates/setup.11.cacerts @@ -0,0 +1,3 @@ +#!/bin/sh +#BLURB="Rebuild SSL certificate database." +chroot . usr/sbin/update-ca-certificates --fresh 1> /dev/null 2> /dev/null diff --git a/patches/source/ca-certificates/slack-desc b/patches/source/ca-certificates/slack-desc new file mode 100644 index 000000000..c302e8283 --- /dev/null +++ b/patches/source/ca-certificates/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler-----------------------------------------------------| +ca-certificates: ca-certificates (PEM Files of CA Certificates) +ca-certificates: +ca-certificates: This package includes PEM files of CA certificates to allow SSL-based +ca-certificates: applications to check for the authenticity of SSL connections. +ca-certificates: +ca-certificates: Homepage: http://packages.qa.debian.org/c/ca-certificates.html +ca-certificates: +ca-certificates: +ca-certificates: +ca-certificates: +ca-certificates: diff --git a/patches/source/curl/cacert-fetch.sh b/patches/source/curl/cacert-fetch.sh new file mode 100755 index 000000000..d0f156e2d --- /dev/null +++ b/patches/source/curl/cacert-fetch.sh @@ -0,0 +1 @@ +lftpget http://curl.haxx.se/ca/cacert.pem && rm cacert.pem.bz2 && bzip2 -9 cacert.pem diff --git a/patches/source/curl/cacert.pem b/patches/source/curl/cacert.pem new file mode 100644 index 000000000..45654c0b9 --- /dev/null +++ b/patches/source/curl/cacert.pem @@ -0,0 +1,3338 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Wed Mar 7 04:12:06 2018 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.27. +## SHA256: 704f02707ec6b4c4a7597a8c6039b020def11e64f3ef0605a9c3543d48038a57 +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +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 +66+KAQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +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 +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +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 +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl +OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV +MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF +JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G3 +================================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y +olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t +x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy +EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K +Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur +mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 +1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp +07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo +FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE +41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu +yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq +KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 +v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA +8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b +8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r +mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq +1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI +JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV +tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= +-----END CERTIFICATE----- + +Staat der Nederlanden EV Root CA +================================ +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M +MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl +cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk +SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW +O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r +0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 +Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV +XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr +08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV +0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd +74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx +fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa +ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu +c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq +5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN +b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN +f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi +5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 +WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK +DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy +eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 +==================================================== +-----BEGIN CERTIFICATE----- +MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg +RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw +ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w +SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE +n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp +ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537 +jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m +ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP +9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV +4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH +HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI +hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo +BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq +URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl +lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8 +B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU= +-----END CERTIFICATE----- + +Certinomis - Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg +LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx +EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD +ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos +P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo +d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap +z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00 +8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x +RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE +6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t +FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV +PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH +i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj +YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I +6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF +AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV +WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw +Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX +lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ +y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9 +Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng +DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi +I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM +cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr +hkIGuUE= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GB CA +=============================== +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG +EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw +MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds +b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX +scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP +rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk +9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o +Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg +GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI +hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD +dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 +VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui +HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +SZAFIR ROOT CA2 +=============== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV +BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ +BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD +VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q +qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK +DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE +2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ +ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi +ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC +AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 +O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 +oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul +4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 ++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +Certum Trusted Network CA 2 +=========================== +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE +BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 +bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y +ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ +TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB +IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 +7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o +CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b +Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p +uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 +GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ +9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB +Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye +hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM +BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW +Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA +L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo +clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM +pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb +w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo +J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm +ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX +is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 +zAYspsbiDrW5viSP +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2015 +======================================================= +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT +BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 +aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx +MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg +QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV +BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw +MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv +bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh +iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ +6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd +FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr +i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F +GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 +fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu +iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI +hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ +D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM +d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y +d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn +82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb +davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F +Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt +J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa +JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q +p/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions ECC RootCA 2015 +=========================================================== +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 +aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw +MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj +IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD +VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 +Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP +dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK +Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA +GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn +dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +Certplus Root CA G1 +=================== +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV +BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe +Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD +ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN +r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx +Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj +BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv +LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2 +z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc +4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd +4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj +jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+ +ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G +A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY +lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh +66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG +YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/ +2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F +6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX +CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe +tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC +VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/ ++mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+ +qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo= +-----END CERTIFICATE----- + +Certplus Root CA G2 +=================== +-----BEGIN CERTIFICATE----- +MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT +AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x +NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0 +cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN +Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud +IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV +HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl +vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw== +-----END CERTIFICATE----- + +OpenTrust Root CA G1 +==================== +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx +MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM +CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa +Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87 +ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO +YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9 +xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO +9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq +3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi +n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9 +URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr +TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px +N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E +PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv +uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK +n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh +X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80 +nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm +GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/ +bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o +4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA +OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx +-----END CERTIFICATE----- + +OpenTrust Root CA G2 +==================== +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy +MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM +CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+ +Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz +4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV +eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt +UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz +3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj +3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz +9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0 +0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT +y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59 +M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz +Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI +mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG +S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp +EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ +6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr +gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo +SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0 +YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm +u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK +-----END CERTIFICATE----- + +OpenTrust Root CA G3 +==================== +-----BEGIN CERTIFICATE----- +MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X +DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w +ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B +ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf +BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM +BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta +3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB +-----END CERTIFICATE----- + +ISRG Root X1 +============ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE +BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD +EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG +EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT +DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r +Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 +3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K +b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN +Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ +4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf +1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH +usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r +OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY +9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV +0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt +hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw +TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx +e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA +JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD +YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n +JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ +m+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM +================ +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +Amazon Root CA 1 +================ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 +MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH +FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ +gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t +dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce +VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 +DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM +CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy +8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa +2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 +xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +Amazon Root CA 2 +================ +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 +MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 +kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp +N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 +AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd +fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx +kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS +btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 +Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN +c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ +3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw +DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA +A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE +YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW +xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ +gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW +aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV +Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 +KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi +JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= +-----END CERTIFICATE----- + +Amazon Root CA 3 +================ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB +f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr +Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 +rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc +eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +Amazon Root CA 4 +================ +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN +/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri +83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA +MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 +AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +LuxTrust Global Root 2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT +D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr +IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g +TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp +ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD +VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt +c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth +bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 +IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 +6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc +wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 +3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 +WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU +ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc +lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R +e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j +q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +GDCA TrustAUTH R5 ROOT +====================== +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw +BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD +DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow +YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs +AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p +OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr +pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ +9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ +xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM +R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ +D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 +oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx +9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 +H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 +6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd ++PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ +HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD +F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ +8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv +/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT +aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +TrustCor RootCert CA-1 +====================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx +MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu +YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe +VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy +dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq +jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4 +pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0 +JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h +gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw +/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j +BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5 +mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C +qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P +3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk= +-----END CERTIFICATE----- + +TrustCor RootCert CA-2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +TrustCor ECA-1 +============== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw +N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5 +MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y +IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR +MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23 +xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc +p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+ +fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj +YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL +f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF +AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u +/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs +J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC +jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g== +-----END CERTIFICATE----- + +SSL.com Root Certification Authority RSA +======================================== +-----BEGIN CERTIFICATE----- +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 +WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +SSL.com Root Certification Authority ECC +======================================== +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv +BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy +MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO +BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ +8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR +hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT +jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW +e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z +5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority RSA R2 +============================================== +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w +DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u +MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI +DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD +VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh +hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w +cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO +Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ +B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh +CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim +9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto +RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm +JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 ++qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp +qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 +++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx +Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G +guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz +OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 +CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq +lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR +rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 +hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX +9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority ECC +=========================================== +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy +BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw +MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM +LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy +3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O +BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe +5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ +N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm +m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- diff --git a/patches/source/curl/curl.SlackBuild b/patches/source/curl/curl.SlackBuild new file mode 100755 index 000000000..fef373d9b --- /dev/null +++ b/patches/source/curl/curl.SlackBuild @@ -0,0 +1,153 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2013, 2014, 2016, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=curl +VERSION=${VERSION:-$(echo curl-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-curl + +# Uncomment to build a no-SSL version: +#SSLOPT=--without-ssl + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $PKG +cd $TMP +rm -rf curl-$VERSION +tar xvf $CWD/curl-$VERSION.tar.xz || exit 1 +cd curl-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --with-ca-bundle=/usr/share/curl/ca-bundle.crt \ + --with-libssh2 \ + --enable-static=no \ + $SSLOPT || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# We have always installed the man3 documentation, so we'll keep doing it +# even though these are no longer installed by default. No || exit 1, if +# it works, it works, and if it doesn't, we tried. +( cd docs/libcurl + make install-man3 DESTDIR=$PKG + cd opts + make install-man3 DESTDIR=$PKG +) + +mkdir -p $PKG/usr/share/curl +cp -a $CWD/cacert.pem.bz2 $PKG/usr/share/curl +( cd $PKG/usr/share/curl + bzip2 -d cacert.pem.bz2 + mv cacert.pem ca-bundle.crt + chown root:root ca-bundle.crt + chmod 644 ca-bundle.crt +) + +# We don't ship the related perl script (yet): +rm -f $PKG/usr/man/man1/mk-ca-bundle.1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +strip -g $PKG/usr/lib${LIBDIRSUFFIX}/libcurl.a + +mkdir -p $PKG/usr/doc/curl-$VERSION +cp -a \ + COPYING* README* UPGRADE \ + $PKG/usr/doc/curl-$VERSION +( cd docs + cp -a \ + BUGS CONTRIBUTE FAQ FEATURES INSTALL INTERNALS MANUAL README* RESOURCES THANKS TODO examples \ + $PKG/usr/doc/curl-$VERSION ) +# Get rid of .deps cruft: +rm -rf $PKG/usr/doc/curl-$VERSION/examples/.deps + +# If there's a CHANGES file, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r CHANGES ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat CHANGES | head -n 1000 > $DOCSDIR/ChangeLog + touch -r CHANGES $DOCSDIR/ChangeLog +fi + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/curl-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/curl/slack-desc b/patches/source/curl/slack-desc new file mode 100644 index 000000000..0fe5c532c --- /dev/null +++ b/patches/source/curl/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +curl: curl (command line URL data transfer tool) +curl: +curl: Curl is a command line tool for transferring data specified with URL +curl: syntax. The command is designed to work without user interaction or +curl: any kind of interactivity. Curl offers a busload of useful tricks +curl: like proxy support, user authentication, ftp upload, HTTP post, SSL +curl: (https:) connections, cookies, file transfer resume and more. +curl: +curl: libcurl is a library that Curl uses to do its job. It is readily +curl: available to be used by your software, too. +curl: diff --git a/patches/source/dbus/dbus-1.10.x-allow_root_globally.diff b/patches/source/dbus/dbus-1.10.x-allow_root_globally.diff new file mode 100644 index 000000000..07d1ac333 --- /dev/null +++ b/patches/source/dbus/dbus-1.10.x-allow_root_globally.diff @@ -0,0 +1,18 @@ +diff -Nur dbus-1.10.0.orig/bus/system.conf.in dbus-1.10.0/bus/system.conf.in +--- dbus-1.10.0.orig/bus/system.conf.in 2015-07-21 11:46:00.000000000 -0500 ++++ dbus-1.10.0/bus/system.conf.in 2015-10-03 17:47:18.646635691 -0500 +@@ -100,6 +100,14 @@ + + @DBUS_SYSCONFDIR@/dbus-1/system.conf + ++ ++ ++ ++ ++ ++ + + system.d diff --git a/patches/source/dbus/dbus.SlackBuild b/patches/source/dbus/dbus.SlackBuild new file mode 100755 index 000000000..6b0c343b4 --- /dev/null +++ b/patches/source/dbus/dbus.SlackBuild @@ -0,0 +1,151 @@ +#!/bin/sh + +# Copyright 2007-2010 Robby Workman, Northport, Alabama, USA +# Copyright 2007-2015 Patrick Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=dbus +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | cut -d - -f 2 | rev | cut -f 3- -d . | rev)} +BUILD=${BUILD:-2_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/dbus-1.10.x-allow_root_globally.diff.gz | patch -p1 --verbose || exit 1 + +# Don't demand high-quality entropy from expat-2.2.2+ because 1) dbus doesn't +# need it and 2) it can cause the boot process to hang if dbus times out: +zcat $CWD/dbus.expat222fix.diff.gz | patch -p1 --verbose || exit 1 + +# Needed due to expat patch: +autoreconf -vif + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --disable-doxygen-docs \ + --enable-shared=yes \ + --enable-static=no \ + --enable-inotify \ + --enable-x11-autolaunch \ + --with-system-pid-file=/var/run/dbus/dbus.pid \ + --with-system-socket=/var/run/dbus/system_bus_socket \ + --with-console-auth-dir=/var/run/console \ + --with-init-scripts=slackware \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Install a custom init script for dbus - the included one is not good for us +rm $PKG/etc/rc.d/* +zcat $CWD/rc.messagebus.gz > $PKG/etc/rc.d/rc.messagebus.new +chmod 0755 $PKG/etc/rc.d/rc.messagebus.new + +# Fix some directory ownership +chown messagebus $PKG/var/lib/dbus + +# Add documentation +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS COPYING* HACKING INSTALL NEWS README* doc/*.{txt,html,dtd} \ + $PKG/usr/doc/$PKGNAM-$VERSION +find $PKG/usr/doc/$PKGNAM-$VERSION -type f -exec chmod 0644 {} \; + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/dbus/dbus.expat222fix.diff b/patches/source/dbus/dbus.expat222fix.diff new file mode 100644 index 000000000..4d7f9b741 --- /dev/null +++ b/patches/source/dbus/dbus.expat222fix.diff @@ -0,0 +1,74 @@ +From 4397b56a3c31ce0a1b99f528f2422d406ddbc2c8 Mon Sep 17 00:00:00 2001 +From: Simon McVittie +Date: Fri, 21 Jul 2017 10:46:39 +0100 +Subject: [PATCH] config-loader-expat: Tell Expat not to defend against hash + collisions + +By default, Expat uses cryptographic-quality random numbers as a salt for +its hash algorithm, and since 2.2.1 it gets them from the getrandom +syscall on Linux. That syscall refuses to return any entropy until the +kernel's CSPRNG (random pool) has been initialized. Unfortunately, this +can take as long as 40 seconds on embedded devices with few entropy +sources, which is too long: if the system dbus-daemon blocks for that +length of time, important D-Bus clients like systemd and systemd-logind +time out and fail to connect to it. + +We're parsing small configuration files here, and we trust them +completely, so we don't need to defend against hash collisions: nobody +is going to be crafting them to cause pathological performance. + +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101858 +Signed-off-by: Simon McVittie +--- + bus/config-loader-expat.c | 14 ++++++++++++++ + configure.ac | 8 ++++++++ + 2 files changed, 22 insertions(+) + +diff --git a/bus/config-loader-expat.c b/bus/config-loader-expat.c +index b571fda3..27cbe2d0 100644 +--- a/bus/config-loader-expat.c ++++ b/bus/config-loader-expat.c +@@ -203,6 +203,20 @@ bus_config_load (const DBusString *file, + goto failed; + } + ++ /* We do not need protection against hash collisions (CVE-2012-0876) ++ * because we are only parsing trusted XML; and if we let Expat block ++ * waiting for the CSPRNG to be initialized, as it does by default to ++ * defeat CVE-2012-0876, it can cause timeouts during early boot on ++ * entropy-starved embedded devices. ++ * ++ * TODO: When Expat gets a more explicit API for this than ++ * XML_SetHashSalt, check for that too, and use it preferentially. ++ * https://github.com/libexpat/libexpat/issues/91 */ ++#if defined(HAVE_XML_SETHASHSALT) ++ /* Any nonzero number will do. https://xkcd.com/221/ */ ++ XML_SetHashSalt (expat, 4); ++#endif ++ + if (!_dbus_string_get_dirname (file, &dirname)) + { + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); +diff --git a/configure.ac b/configure.ac +index e819611a..77548169 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -938,6 +938,14 @@ XML_CFLAGS= + AC_SUBST([XML_CFLAGS]) + AC_SUBST([XML_LIBS]) + ++save_cflags="$CFLAGS" ++save_libs="$LIBS" ++CFLAGS="$CFLAGS $XML_CFLAGS" ++LIBS="$LIBS $XML_LIBS" ++AC_CHECK_FUNCS([XML_SetHashSalt]) ++CFLAGS="$save_cflags" ++LIBS="$save_libs" ++ + # Thread lib detection + AC_ARG_VAR([THREAD_LIBS]) + save_libs="$LIBS" +-- +2.13.3 + + diff --git a/patches/source/dbus/doinst.sh b/patches/source/dbus/doinst.sh new file mode 100644 index 000000000..dcefd1ff5 --- /dev/null +++ b/patches/source/dbus/doinst.sh @@ -0,0 +1,26 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.messagebus.new: +if [ -e etc/rc.d/rc.messagebus ]; then + cp -a etc/rc.d/rc.messagebus etc/rc.d/rc.messagebus.new.incoming + cat etc/rc.d/rc.messagebus.new > etc/rc.d/rc.messagebus.new.incoming + mv etc/rc.d/rc.messagebus.new.incoming etc/rc.d/rc.messagebus.new +fi + +#config etc/rc.d/rc.messagebus.new +# No, just install the thing. Leaving it as .new will only lead to problems. +if [ -r etc/rc.d/rc.messagebus.new ]; then + mv etc/rc.d/rc.messagebus.new etc/rc.d/rc.messagebus +fi + diff --git a/patches/source/dbus/rc.messagebus b/patches/source/dbus/rc.messagebus new file mode 100644 index 000000000..9a1ffce9f --- /dev/null +++ b/patches/source/dbus/rc.messagebus @@ -0,0 +1,81 @@ +#!/bin/sh +# +# messagebus: The D-BUS systemwide message bus +# +# description: This is a daemon which broadcasts notifications of system events \ +# and other messages. See http://www.freedesktop.org/software/dbus/ +# +# processname: dbus-daemon + +# This is a modified version of the rc.messagebus script distributed with the +# dbus sources. Thanks to Don Tanner of the GWare Project +# for most of the work involved --Robby Workman + + +PIDFILE=/var/run/dbus/dbus.pid + +start() { + mkdir -p $(dirname $PIDFILE) + if ! ps -u messagebus -c | grep -wq dbus-daemon; then + rm -f $(dirname $PIDFILE)/* + if [ -x /usr/bin/dbus-uuidgen -a -x /usr/bin/dbus-daemon ] ; then + echo "Starting system message bus: /usr/bin/dbus-uuidgen --ensure ; /usr/bin/dbus-daemon --system" + /usr/bin/dbus-uuidgen --ensure + /usr/bin/dbus-daemon --system 1> /dev/null + fi + fi +} + +stop() { + if [ -e "$PIDFILE" ]; then + echo "Stopping system message bus..." + pid=$(cat $PIDFILE) + kill $pid 1> /dev/null 2> /dev/null + # Just in case: + killall dbus-daemon 1> /dev/null 2> /dev/null + rm -f $PIDFILE + fi +} + +reload() { + echo "Reloading system message bus configuration..." + if [ -e "$PIDFILE" ]; then + pid=$(cat $PIDFILE) + kill -HUP $pid + else + killall -HUP dbus-daemon + fi +} + +status() { + if ps -u messagebus -c | grep -wq dbus-daemon; then + echo "System dbus-daemon is running." + else + echo "System dbus-daemon is stopped." + fi +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + echo "You may need to restart your Window Manager to reconnect to the system dbus." + ;; + reload) + reload + ;; + status) + status + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|status}" + ;; +esac + diff --git a/patches/source/dbus/slack-desc b/patches/source/dbus/slack-desc new file mode 100644 index 000000000..0610ab8d3 --- /dev/null +++ b/patches/source/dbus/slack-desc @@ -0,0 +1,18 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + |-----handy-ruler------------------------------------------------------| +dbus: dbus (D-Bus message bus system) +dbus: +dbus: D-Bus supplies both a system daemon (for events such as "new hardware +dbus: device added" or "printer queue changed") and a per user login +dbus: session daemon (for general IPC needs among user applications). +dbus: Also, the message bus is built on top of a general one-to-one message +dbus: passing framework, which can be used by any two apps to communicate +dbus: directly (without going through the message bus daemon). +dbus: +dbus: +dbus: diff --git a/patches/source/dhcp/dhclient-script.PATH.diff b/patches/source/dhcp/dhclient-script.PATH.diff new file mode 100644 index 000000000..567ed2a4f --- /dev/null +++ b/patches/source/dhcp/dhclient-script.PATH.diff @@ -0,0 +1,13 @@ +--- ./client/scripts/linux.orig 2017-07-25 08:39:54.000000000 -0500 ++++ ./client/scripts/linux 2017-08-03 15:31:41.067873392 -0500 +@@ -22,6 +22,10 @@ + # 4. TIMEOUT not tested. ping has a flag I don't know, and I'm suspicious + # of the $1 in its args. + ++# Set a reasonable default path for Linux: ++PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin ++export PATH ++ + # 5. Script refresh in 2017. The aliasing code was too convoluted and needs + # to go away. Migrated DHCPv4 script to ip command from iproute2 suite. + # This is based on Debian script with some tweaks. ifconfig is no longer diff --git a/patches/source/dhcp/dhcp-remove-bind-tarball.sh b/patches/source/dhcp/dhcp-remove-bind-tarball.sh new file mode 100755 index 000000000..5249f9679 --- /dev/null +++ b/patches/source/dhcp/dhcp-remove-bind-tarball.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +# Copyright 2011 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=dhcp +VERSION=${VERSION:-4.2.1-P1} +BUILD=${BUILD:-1} + +# This is not yet used, but eventually we would like to be able to purge +# the bundled BIND and use the system's instead. Maybe wishful thinking. + +CWD=$(pwd) +TMP=${TMP:-/tmp} + +cd $TMP +rm -rf dhcp-$VERSION +tar xvf $CWD/dhcp-$VERSION.tar.?z* || exit 1 +cd dhcp-$VERSION || exit 1 + +# good "bob" why? ... +rm -rf bind/* + +# Generate a new .xz compressed tarball in /tmp: +cd $TMP +rm -f dhcp-$VERSION.tar* +tar cf dhcp-$VERSION.tar dhcp-$VERSION +xz -9 dhcp-$VERSION.tar + +echo "$TMP/dhcp-$VERSION.tar.xz created" + diff --git a/patches/source/dhcp/dhcp.SlackBuild b/patches/source/dhcp/dhcp.SlackBuild new file mode 100755 index 000000000..32e372d51 --- /dev/null +++ b/patches/source/dhcp/dhcp.SlackBuild @@ -0,0 +1,179 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=dhcp +# Leave this one .gz as other compressors do not help much and we can keep +# the original upstream .asc +VERSION=${VERSION:-$(basename $(echo $PKGNAM-*.tar.gz | cut -f 2- -d -) .tar.gz)} +BUILD=${BUILD:-1_slack14.2} + +PKG_VERSION=$(echo $VERSION | tr - _) + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-dhcp + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf dhcp-$VERSION +tar xvf $CWD/dhcp-$VERSION.tar.gz || exit 1 +cd dhcp-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Add PATH setting to /sbin/dhclient-script +zcat $CWD/dhclient-script.PATH.diff.gz | patch -p1 || exit 1 + +# Fix paths in manual pages +sed -i \ + -e "s,ETCDIR,/etc,g" \ + -e "s,DBDIR,/var/state/dhcp,g" \ + -e "s,RUNDIR,/var/run,g" \ + client/*.{5,8} \ + server/*.{5,8} \ + doc/*/*.{5,8} + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --docdir=/usr/doc/dhcp-$VERSION \ + --build=$ARCH-slackware-linux \ + --with-srv-lease-file=/var/state/dhcp/dhcpd.leases \ + --with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases \ + --with-cli-lease-file=/var/state/dhcp/dhclient.leases \ + --with-cli6-lease-file=/var/state/dhcp/dhclient6.leases +# Default pid dir is still /var/run, so no need to declare it + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# DHCP libraries need not be included, yet. +rm -rf $PKG/usr/{include,lib${LIBDIRSUFFIX}} + +# We need this in /sbin +mkdir -p $PKG/sbin +mv $PKG/usr/sbin/dhclient $PKG/sbin + +# Install the dhclient-script for linux +cat client/scripts/linux > $PKG/sbin/dhclient-script +chmod 700 $PKG/sbin/dhclient-script + +# Create the initial *.leases files: +mkdir -p $PKG/var/state/dhcp +touch $PKG/var/state/dhcp/dhcpd.leases.new +touch $PKG/var/state/dhcp/dhcpd6.leases.new +touch $PKG/var/state/dhcp/dhclient.leases.new +touch $PKG/var/state/dhcp/dhclient6.leases.new + +cat << EOF > $PKG/etc/dhcpd.conf.new +# dhcpd.conf +# +# Configuration file for ISC dhcpd (see 'man dhcpd.conf') +# +EOF + +cat << EOF > $PKG/etc/dhclient.conf.new +# dhclient.conf +# +# Configuration file for ISC dhclient (see 'man dhclient.conf') +# +EOF + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc/dhcp-$VERSION/examples +cp -a \ + LICENSE README RELNOTES \ + $PKG/usr/doc/dhcp-$VERSION +mv $PKG/etc/dhcpd.conf $PKG/etc/dhclient.conf \ + $PKG/usr/doc/dhcp-$VERSION/examples + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/dhcp-$PKG_VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/dhcp/doinst.sh b/patches/source/dhcp/doinst.sh new file mode 100644 index 000000000..a376034a5 --- /dev/null +++ b/patches/source/dhcp/doinst.sh @@ -0,0 +1,21 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/dhcpd.conf.new +config etc/dhclient.conf.new +config var/state/dhcp/dhcpd.leases.new +config var/state/dhcp/dhcpd6.leases.new +config var/state/dhcp/dhclient.leases.new +config var/state/dhcp/dhclient6.leases.new +rm -f var/state/dhcp/*.leases.new + diff --git a/patches/source/dhcp/slack-desc b/patches/source/dhcp/slack-desc new file mode 100644 index 000000000..f586e4e1b --- /dev/null +++ b/patches/source/dhcp/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +dhcp: dhcp (DHCP server and client utilities) +dhcp: +dhcp: This package provides the ISC's DHCP utilities, including both a +dhcp: server and client. The DHCP protocol allows a host to contact a +dhcp: central server which maintains a list of IP addresses which may be +dhcp: assigned on one or more subnets. A DHCP client may request an +dhcp: address from this pool, and then use it temporarily for communication +dhcp: on the network. The DHCP protocol also provides a mechanism whereby +dhcp: a client can learn important details about the network to which it is +dhcp: attached, such as the location of a default router or name server. +dhcp: diff --git a/patches/source/dnsmasq/dnsmasq.SlackBuild b/patches/source/dnsmasq/dnsmasq.SlackBuild new file mode 100755 index 000000000..7334056a4 --- /dev/null +++ b/patches/source/dnsmasq/dnsmasq.SlackBuild @@ -0,0 +1,107 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2015, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo dnsmasq-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-dnsmasq + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf dnsmasq-$VERSION +tar xvf $CWD/dnsmasq-$VERSION.tar.xz || exit 1 +cd dnsmasq-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/dnsmasq.leasedir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + +make $NUMJOBS all-i18n PREFIX=/usr MANDIR=/usr/man || exit 1 +make install-i18n PREFIX=/usr DESTDIR=$PKG MANDIR=/usr/man || exit 1 +chmod 0755 $PKG/usr/sbin/dnsmasq + +mkdir -p $PKG/etc/dnsmasq.d + +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/var/state/dnsmasq + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/etc +cat dnsmasq.conf.example > $PKG/etc/dnsmasq.conf.new +mkdir -p $PKG/etc/rc.d +zcat $CWD/rc.dnsmasq.gz > $PKG/etc/rc.d/rc.dnsmasq.new + +mkdir -p $PKG/usr/doc/dnsmasq-$VERSION +cp -a \ + COPYING FAQ doc.html setup.html \ + $PKG/usr/doc/dnsmasq-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r CHANGELOG ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat CHANGELOG | head -n 1000 > $DOCSDIR/CHANGELOG + touch -r CHANGELOG $DOCSDIR/CHANGELOG +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/dnsmasq-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/dnsmasq/dnsmasq.leasedir.diff b/patches/source/dnsmasq/dnsmasq.leasedir.diff new file mode 100644 index 000000000..9fec6b439 --- /dev/null +++ b/patches/source/dnsmasq/dnsmasq.leasedir.diff @@ -0,0 +1,24 @@ +diff -Nur dnsmasq-2.52.orig/dnsmasq.conf.example dnsmasq-2.52/dnsmasq.conf.example +--- dnsmasq-2.52.orig/dnsmasq.conf.example 2009-11-25 06:55:16.000000000 -0600 ++++ dnsmasq-2.52/dnsmasq.conf.example 2010-01-22 15:32:41.137807274 -0600 +@@ -415,7 +415,7 @@ + # The DHCP server needs somewhere on disk to keep its lease database. + # This defaults to a sane location, but if you want to change it, use + # the line below. +-#dhcp-leasefile=/var/lib/misc/dnsmasq.leases ++#dhcp-leasefile=/var/state/dnsmasq/dnsmasq.leases + + # Set the DHCP server to authoritative mode. In this mode it will barge in + # and take over the lease for any client which broadcasts on the network, +diff -Nur dnsmasq-2.52.orig/src/config.h dnsmasq-2.52/src/config.h +--- dnsmasq-2.52.orig/src/config.h 2010-01-21 08:22:06.000000000 -0600 ++++ dnsmasq-2.52/src/config.h 2010-01-22 15:32:41.136833058 -0600 +@@ -47,7 +47,7 @@ + # elif defined(__sun__) || defined (__sun) + # define LEASEFILE "/var/cache/dnsmasq.leases" + # else +-# define LEASEFILE "/var/lib/misc/dnsmasq.leases" ++# define LEASEFILE "/var/state/dnsmasq/dnsmasq.leases" + # endif + #endif + diff --git a/patches/source/dnsmasq/doinst.sh b/patches/source/dnsmasq/doinst.sh new file mode 100644 index 000000000..9aadc3e55 --- /dev/null +++ b/patches/source/dnsmasq/doinst.sh @@ -0,0 +1,26 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + config ${NEW} +} +config etc/dnsmasq.conf.new +preserve_perms etc/rc.d/rc.dnsmasq.new + +# This should be mostly useless... +rm -f etc/rc.d/rc.dnsmasq.new diff --git a/patches/source/dnsmasq/rc.dnsmasq b/patches/source/dnsmasq/rc.dnsmasq new file mode 100644 index 000000000..ce584cbd2 --- /dev/null +++ b/patches/source/dnsmasq/rc.dnsmasq @@ -0,0 +1,36 @@ +#!/bin/sh +# Start/stop/restart dnsmasq (a small DNS/DHCP server): + +# Start dnsmasq: +dnsmasq_start() { + if [ -x /usr/sbin/dnsmasq ]; then + echo "Starting dnsmasq: /usr/sbin/dnsmasq" + /usr/sbin/dnsmasq + fi +} + +# Stop dnsmasq: +dnsmasq_stop() { + killall dnsmasq +} + +# Restart dnsmasq: +dnsmasq_restart() { + dnsmasq_stop + sleep 1 + dnsmasq_start +} + +case "$1" in +'start') + dnsmasq_start + ;; +'stop') + dnsmasq_stop + ;; +'restart') + dnsmasq_restart + ;; +*) + echo "usage rc.dnsmasq: start|stop|restart" +esac diff --git a/patches/source/dnsmasq/slack-desc b/patches/source/dnsmasq/slack-desc new file mode 100644 index 000000000..3db2c42e3 --- /dev/null +++ b/patches/source/dnsmasq/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +dnsmasq: dnsmasq (small DNS and DHCP server) +dnsmasq: +dnsmasq: Dnsmasq is a lightweight, easy to configure DNS forwarder and DHCP +dnsmasq: server. It is designed to provide DNS (and optionally DHCP) to a +dnsmasq: small network, and can serve the names of local machines which are not +dnsmasq: in the global DNS. +dnsmasq: +dnsmasq: Dnsmasq was written by Simon Kelley. +dnsmasq: +dnsmasq: Homepage: http://www.thekelleys.org.uk/dnsmasq/ +dnsmasq: diff --git a/patches/source/emacs/doinst.sh b/patches/source/emacs/doinst.sh new file mode 100644 index 000000000..64a3adff1 --- /dev/null +++ b/patches/source/emacs/doinst.sh @@ -0,0 +1,10 @@ +# Vim ships a better (IMHO) version of ctags, and we don't want +# to overwrite it with this one. If you really want emacs' ctags +# either copy or link it into place yourself, or remove the vim +# packages and reinstall emacs. Besides, does anyone know/use +# *both* emacs and vi? I'd think that would bring the universe +# to an end. ;-) +if [ ! -e usr/bin/ctags ]; then + cp -a usr/bin/ctags-emacs usr/bin/ctags + cp -a usr/man/man1/ctags-emacs.1.gz usr/man/man1/ctags.1.gz +fi diff --git a/patches/source/emacs/emacs.SlackBuild b/patches/source/emacs/emacs.SlackBuild new file mode 100755 index 000000000..0a019c6a9 --- /dev/null +++ b/patches/source/emacs/emacs.SlackBuild @@ -0,0 +1,190 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Slackware build script for emacs-22 + +# Written by Dušan Stefanović (stefanovic.dusan@gmail.com) +# Modified by Robby Workman +# Modified by Patrick Volkerding + +PKGNAM=emacs +BUILD=${BUILD:-1_slack14.2} +# Determine version number the tarball is labeled with: +TARBALLVER=${TARBALLVER:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +# OK, now what's being used as the source directory version number... account +# for subversions a, b, c, and d in the $TARBALLVER: +SRCDIRVER=$(echo $TARBALLVER | tr -d a | tr -d b | tr -d c | tr -d d) +# I guess this is the main "version"... we don't use this variable anywhere below, but +# defining it is traditional: +VERSION=$SRCDIRVER + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" +else + SLKCFLAGS="-O2" +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$TARBALLVER +tar xvf $CWD/$PKGNAM-$TARBALLVER.tar.xz || exit 1 +cd $PKGNAM-$SRCDIRVER || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --program-prefix="" \ + --program-suffix="" \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --without-gconf \ + --without-gsettings \ + --with-x \ + --with-x-toolkit=gtk3 \ + --build=${ARCH}-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +( cd $PKG/usr/bin + rm emacs + mv emacs-${SRCDIRVER} emacs-${TARBALLVER}-with-x11 + ln -sf emacs-${TARBALLVER}-with-x11 emacs +) + +# Also add a version of the binary that is not linked to X11: +cd $TMP +rm -rf $PKGNAM-$TARBALLVER +tar xvf $CWD/$PKGNAM-$TARBALLVER.tar.xz || exit 1 +cd $PKGNAM-$SRCDIRVER || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --program-prefix="" \ + --program-suffix="" \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --without-gconf \ + --without-gsettings \ + --with-x=no \ + --build=${ARCH}-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 + +# Install the non-x version: +cat src/emacs > $PKG/usr/bin/emacs-${TARBALLVER}-no-x11 +chown root:root $PKG/usr/bin/emacs-${TARBALLVER}-no-x11 +chmod 1755 $PKG/usr/bin/emacs-${TARBALLVER}-no-x11 + +# I don't care for broken permissions. +chmod 755 $PKG/var/games/emacs +chown -R root:games $PKG/var/games/emacs +chmod 664 $PKG/var/games/emacs/* + +# This avoids a collision with Exuberant Ctags... +mv $PKG/usr/bin/ctags $PKG/usr/bin/ctags-emacs +if [ -r $PKG/usr/man/man1/ctags.1 ]; then + mv $PKG/usr/man/man1/ctags.1 $PKG/usr/man/man1/ctags-emacs.1 +elif [ -r $PKG/usr/man/man1/ctags.1.gz ]; then + mv $PKG/usr/man/man1/ctags.1.gz $PKG/usr/man/man1/ctags-emacs.1.gz +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +( cd $PKG/usr/man + find . -type f -exec gzip -9 {} \; + for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done +) + +( cd $PKG/usr/info + rm -f dir + gzip -9 * +) + +mkdir -p $PKG/usr/doc/$PKGNAM-$TARBALLVER +cp -a \ + AUTHORS COPYING* INSTALL README* \ + $PKG/usr/doc/$PKGNAM-$TARBALLVER + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$TARBALLVER) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$TARBALLVER-$ARCH-$BUILD.txz + diff --git a/patches/source/emacs/slack-desc b/patches/source/emacs/slack-desc new file mode 100644 index 000000000..94ba8e13e --- /dev/null +++ b/patches/source/emacs/slack-desc @@ -0,0 +1,12 @@ + |-----handy-ruler------------------------------------------------------| +emacs: emacs (GNU Emacs) +emacs: +emacs: Emacs is the extensible, customizable, self-documenting real-time +emacs: display editor. If this seems to be a bit of a mouthful, an +emacs: easier explanation is that Emacs is a text editor and more. At +emacs: its core is an interpreter for Emacs Lisp, a dialect of the Lisp +emacs: programming language with extensions to support text editing. +emacs: This version supports X. +emacs: +emacs: http://www.gnu.org/software/emacs/ +emacs: diff --git a/patches/source/expat/expat.SlackBuild b/patches/source/expat/expat.SlackBuild new file mode 100755 index 000000000..c75088b49 --- /dev/null +++ b/patches/source/expat/expat.SlackBuild @@ -0,0 +1,93 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2013, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=expat +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-expat + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf expat-$VERSION +tar xvf $CWD/expat-$VERSION.tar.?z* || exit 1 +cd expat-$VERSION + +chown -R root:root . +find . -perm 777 -exec chmod 755 {} \; +find . -perm 664 -exec chmod 644 {} \; +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || exit 1 +make install DESTDIR=$PKG || exit 1 + +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +mkdir -p $PKG/usr/doc/expat-$VERSION +cp -a \ + COPYING* Changes README* doc/reference.html \ + $PKG/usr/doc/expat-$VERSION +gzip -9 $PKG/usr/man/man?/*.? +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +makepkg -l y -c n $TMP/expat-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/expat/slack-desc b/patches/source/expat/slack-desc new file mode 100644 index 000000000..348df3c3b --- /dev/null +++ b/patches/source/expat/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +expat: expat (C library for parsing XML) +expat: +expat: This is Expat, a C library for parsing XML, written by James Clark. +expat: Expat is a stream-oriented XML parser used by Python, GNOME, Xft2, +expat: and other things. +expat: +expat: +expat: +expat: +expat: +expat: diff --git a/patches/source/freetype/freetype.CVE-2017-8287.diff b/patches/source/freetype/freetype.CVE-2017-8287.diff new file mode 100644 index 000000000..4f4b67b1d --- /dev/null +++ b/patches/source/freetype/freetype.CVE-2017-8287.diff @@ -0,0 +1,31 @@ +From 3774fc08b502c3e685afca098b6e8a195aded6a0 Mon Sep 17 00:00:00 2001 +From: Werner Lemberg +Date: Sun, 26 Mar 2017 08:32:09 +0200 +Subject: * src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard. + +Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941 + +diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c +index d18e821..0baf836 100644 +--- a/src/psaux/psobjs.c ++++ b/src/psaux/psobjs.c +@@ -1718,6 +1718,14 @@ + first = outline->n_contours <= 1 + ? 0 : outline->contours[outline->n_contours - 2] + 1; + ++ /* in malformed fonts it can happen that a contour was started */ ++ /* but no points were added */ ++ if ( outline->n_contours && first == outline->n_points ) ++ { ++ outline->n_contours--; ++ return; ++ } ++ + /* We must not include the last point in the path if it */ + /* is located on the first point. */ + if ( outline->n_points > 1 ) +-- +cgit v1.0-41-gc330 + diff --git a/patches/source/freetype/freetype.SlackBuild b/patches/source/freetype/freetype.SlackBuild new file mode 100755 index 000000000..bb514e223 --- /dev/null +++ b/patches/source/freetype/freetype.SlackBuild @@ -0,0 +1,123 @@ +#!/bin/sh + +# Copyright 2005-2012 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=freetype +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | cut -d - -f 2 | rev | cut -f 3- -d . | rev)} +BUILD=${BUILD:-2_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-freetype + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf freetype-$VERSION +tar xvf $CWD/freetype-$VERSION.tar.xz || exit 1 +cd freetype-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# This breaks far too many things. Freetype2 developers will have to get their +# punishment on someone else's distribution. +zcat $CWD/freetype.illadvisederror.diff.gz | patch -p1 --verbose || exit 1 + +# The line below enables code patented by Microsoft, so don't uncomment it +# unless you have a license to use the code and take all legal responsibility +# for doing so. +# Please see this web site for more details: +# http://www.freetype.org/patents.html +#zcat $CWD/freetype.subpixel.rendering.diff.gz | patch -p1 --verbose || exit 1 + +# Security fix: +zcat $CWD/freetype.CVE-2017-8287.diff.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +CFLAGS="$SLKCFLAGS" make setup CFG="--prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} --build=$ARCH-slackware-linux" +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +# This shouldn't be needed (apps should pick up -I/usr/include/freetype2 from +# `freetype-config --cflags` while compiling), but it's so often reported as +# a bug that I'll give in to the point. Now that Freetype1 is pretty much gone +# having this link shouldn't hurt anything. Try not to rely on it, though. +mkdir -p $PKG/usr/include +( cd $PKG/usr/include + rm -rf freetype + ln -sf freetype2 freetype +) + +# Can't imagine a lot of use for this: +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.a + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mv $PKG/usr/share/man $PKG/usr/man +find $PKG/usr/man -type f -exec gzip -9 {} \; + +mkdir -p $PKG/usr/doc/freetype-$VERSION +cp -a \ + docs \ + README \ + $PKG/usr/doc/freetype-$VERSION +# too much +rm -rf $PKG/usr/doc/freetype-$VERSION/docs/reference + +mkdir $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/freetype-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/freetype/freetype.illadvisederror.diff b/patches/source/freetype/freetype.illadvisederror.diff new file mode 100644 index 000000000..fee71076d --- /dev/null +++ b/patches/source/freetype/freetype.illadvisederror.diff @@ -0,0 +1,31 @@ +diff -Nur freetype-2.6.1.orig/include/freetype/freetype.h freetype-2.6.1/include/freetype/freetype.h +--- freetype-2.6.1.orig/include/freetype/freetype.h 2015-10-03 23:54:01.000000000 -0500 ++++ freetype-2.6.1/include/freetype/freetype.h 2015-10-04 22:13:40.233912984 -0500 +@@ -20,13 +20,20 @@ + #define __FREETYPE_H__ + + +-#ifndef FT_FREETYPE_H +-#error "`ft2build.h' hasn't been included yet!" +-#error "Please always use macros to include FreeType header files." +-#error "Example:" +-#error " #include " +-#error " #include FT_FREETYPE_H" +-#endif ++/***************************************************************************/ ++/* */ ++/* If you think breaking almost 100% of all source that links with */ ++/* freetype (anything using a configure file for sure) is a good idea, */ ++/* then feel free to uncomment this block. */ ++/* */ ++/* #ifndef FT_FREETYPE_H */ ++/* #error "`ft2build.h' hasn't been included yet!" */ ++/* #error "Please always use macros to include FreeType header files." */ ++/* #error "Example:" */ ++/* #error " #include " */ ++/* #error " #include FT_FREETYPE_H" */ ++/* #endif */ ++/***************************************************************************/ + + + #include diff --git a/patches/source/freetype/freetype.subpixel.rendering.diff b/patches/source/freetype/freetype.subpixel.rendering.diff new file mode 100644 index 000000000..5ab3b379a --- /dev/null +++ b/patches/source/freetype/freetype.subpixel.rendering.diff @@ -0,0 +1,12 @@ +diff -Naur freetype-2.6.1.orig/include/freetype/config/ftoption.h freetype-2.6.1/include/freetype/config/ftoption.h +--- freetype-2.6.1.orig/include/freetype/config/ftoption.h 2015-09-25 07:58:57.000000000 +0200 ++++ freetype-2.6.1/include/freetype/config/ftoption.h 2015-10-31 16:11:42.016958163 +0100 +@@ -92,7 +92,7 @@ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ ++#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING + + + /*************************************************************************/ diff --git a/patches/source/freetype/slack-desc b/patches/source/freetype/slack-desc new file mode 100644 index 000000000..d70b3e756 --- /dev/null +++ b/patches/source/freetype/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +freetype: freetype (A free, high-quality, and portable font engine) +freetype: +freetype: FreeType is a free and portable font rendering engine. It has been +freetype: developed to provide support for a number of font formats, including +freetype: TrueType, Type 1, and OpenType, and is designed to be small, +freetype: efficient, highly customizable, and portable while capable of +freetype: producing high-quality output. +freetype: +freetype: Homepage: http://www.freetype.org +freetype: +freetype: diff --git a/patches/source/gcc/0001-i386-Move-struct-ix86_frame-to-machine_function.diff b/patches/source/gcc/0001-i386-Move-struct-ix86_frame-to-machine_function.diff new file mode 100644 index 000000000..413d75697 --- /dev/null +++ b/patches/source/gcc/0001-i386-Move-struct-ix86_frame-to-machine_function.diff @@ -0,0 +1,239 @@ +From 11a3b9034935080b9996caf07fca6353309006f1 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Mon, 15 Jan 2018 11:27:24 +0000 +Subject: [PATCH 1/9] i386: Move struct ix86_frame to machine_function + +Make ix86_frame available to i386 code generation. This is needed to +backport the patch set of -mindirect-branch= to mitigate variant #2 of +the speculative execution vulnerabilities on x86 processors identified +by CVE-2017-5715, aka Spectre. + + Backport from mainline + * config/i386/i386.c (ix86_frame): Moved to ... + * config/i386/i386.h (ix86_frame): Here. + (machine_function): Add frame. + * config/i386/i386.c (ix86_compute_frame_layout): Repace the + frame argument with &cfun->machine->frame. + (ix86_can_use_return_insn_p): Don't pass &frame to + ix86_compute_frame_layout. Copy frame from cfun->machine->frame. + (ix86_can_eliminate): Likewise. + (ix86_expand_prologue): Likewise. + (ix86_expand_epilogue): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256691 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + src/gcc/config/i386/i386.c | 68 ++++++++------------------------------------- + src/gcc/config/i386/i386.h | 53 ++++++++++++++++++++++++++++++++++- + 2 files changed, 65 insertions(+), 56 deletions(-) + +Index: b/src/gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -2306,53 +2306,6 @@ struct GTY(()) stack_local_entry { + struct stack_local_entry *next; + }; + +-/* Structure describing stack frame layout. +- Stack grows downward: +- +- [arguments] +- <- ARG_POINTER +- saved pc +- +- saved static chain if ix86_static_chain_on_stack +- +- saved frame pointer if frame_pointer_needed +- <- HARD_FRAME_POINTER +- [saved regs] +- <- regs_save_offset +- [padding0] +- +- [saved SSE regs] +- <- sse_regs_save_offset +- [padding1] | +- | <- FRAME_POINTER +- [va_arg registers] | +- | +- [frame] | +- | +- [padding2] | = to_allocate +- <- STACK_POINTER +- */ +-struct ix86_frame +-{ +- int nsseregs; +- int nregs; +- int va_arg_size; +- int red_zone_size; +- int outgoing_arguments_size; +- +- /* The offsets relative to ARG_POINTER. */ +- HOST_WIDE_INT frame_pointer_offset; +- HOST_WIDE_INT hard_frame_pointer_offset; +- HOST_WIDE_INT stack_pointer_offset; +- HOST_WIDE_INT hfp_save_offset; +- HOST_WIDE_INT reg_save_offset; +- HOST_WIDE_INT sse_reg_save_offset; +- +- /* When save_regs_using_mov is set, emit prologue using +- move instead of push instructions. */ +- bool save_regs_using_mov; +-}; +- + /* Which cpu are we scheduling for. */ + enum attr_cpu ix86_schedule; + +@@ -2443,7 +2396,7 @@ static unsigned int ix86_function_arg_bo + const_tree); + static rtx ix86_static_chain (const_tree, bool); + static int ix86_function_regparm (const_tree, const_tree); +-static void ix86_compute_frame_layout (struct ix86_frame *); ++static void ix86_compute_frame_layout (void); + static bool ix86_expand_vector_init_one_nonzero (bool, machine_mode, + rtx, rtx, int); + static void ix86_add_new_builtins (HOST_WIDE_INT); +@@ -9664,7 +9617,8 @@ ix86_can_use_return_insn_p (void) + if (crtl->args.pops_args && crtl->args.size >= 32768) + return 0; + +- ix86_compute_frame_layout (&frame); ++ ix86_compute_frame_layout (); ++ frame = cfun->machine->frame; + return (frame.stack_pointer_offset == UNITS_PER_WORD + && (frame.nregs + frame.nsseregs) == 0); + } +@@ -10073,8 +10027,8 @@ ix86_can_eliminate (const int from, cons + HOST_WIDE_INT + ix86_initial_elimination_offset (int from, int to) + { +- struct ix86_frame frame; +- ix86_compute_frame_layout (&frame); ++ ix86_compute_frame_layout (); ++ struct ix86_frame frame = cfun->machine->frame; + + if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) + return frame.hard_frame_pointer_offset; +@@ -10113,8 +10067,9 @@ ix86_builtin_setjmp_frame_value (void) + /* Fill structure ix86_frame about frame of currently computed function. */ + + static void +-ix86_compute_frame_layout (struct ix86_frame *frame) ++ix86_compute_frame_layout (void) + { ++ struct ix86_frame *frame = &cfun->machine->frame; + unsigned HOST_WIDE_INT stack_alignment_needed; + HOST_WIDE_INT offset; + unsigned HOST_WIDE_INT preferred_alignment; +@@ -11417,7 +11372,8 @@ ix86_expand_prologue (void) + m->fs.sp_offset = INCOMING_FRAME_SP_OFFSET; + m->fs.sp_valid = true; + +- ix86_compute_frame_layout (&frame); ++ ix86_compute_frame_layout (); ++ frame = m->frame; + + if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl)) + { +@@ -12083,7 +12039,8 @@ ix86_expand_epilogue (int style) + bool using_drap; + + ix86_finalize_stack_realign_flags (); +- ix86_compute_frame_layout (&frame); ++ ix86_compute_frame_layout (); ++ frame = m->frame; + + m->fs.sp_valid = (!frame_pointer_needed + || (crtl->sp_is_unchanging +@@ -12546,7 +12503,8 @@ ix86_expand_split_stack_prologue (void) + gcc_assert (flag_split_stack && reload_completed); + + ix86_finalize_stack_realign_flags (); +- ix86_compute_frame_layout (&frame); ++ ix86_compute_frame_layout (); ++ frame = cfun->machine->frame; + allocate = frame.stack_pointer_offset - INCOMING_FRAME_SP_OFFSET; + + /* This is the label we will branch to if we have enough stack +Index: b/src/gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -2409,9 +2409,56 @@ enum avx_u128_state + + #define FASTCALL_PREFIX '@' + ++#ifndef USED_FOR_TARGET ++/* Structure describing stack frame layout. ++ Stack grows downward: ++ ++ [arguments] ++ <- ARG_POINTER ++ saved pc ++ ++ saved static chain if ix86_static_chain_on_stack ++ ++ saved frame pointer if frame_pointer_needed ++ <- HARD_FRAME_POINTER ++ [saved regs] ++ <- regs_save_offset ++ [padding0] ++ ++ [saved SSE regs] ++ <- sse_regs_save_offset ++ [padding1] | ++ | <- FRAME_POINTER ++ [va_arg registers] | ++ | ++ [frame] | ++ | ++ [padding2] | = to_allocate ++ <- STACK_POINTER ++ */ ++struct GTY(()) ix86_frame ++{ ++ int nsseregs; ++ int nregs; ++ int va_arg_size; ++ int red_zone_size; ++ int outgoing_arguments_size; ++ ++ /* The offsets relative to ARG_POINTER. */ ++ HOST_WIDE_INT frame_pointer_offset; ++ HOST_WIDE_INT hard_frame_pointer_offset; ++ HOST_WIDE_INT stack_pointer_offset; ++ HOST_WIDE_INT hfp_save_offset; ++ HOST_WIDE_INT reg_save_offset; ++ HOST_WIDE_INT sse_reg_save_offset; ++ ++ /* When save_regs_using_mov is set, emit prologue using ++ move instead of push instructions. */ ++ bool save_regs_using_mov; ++}; ++ + /* Machine specific frame tracking during prologue/epilogue generation. */ + +-#ifndef USED_FOR_TARGET + struct GTY(()) machine_frame_state + { + /* This pair tracks the currently active CFA as reg+offset. When reg +@@ -2457,6 +2504,9 @@ struct GTY(()) machine_function { + int varargs_fpr_size; + int optimize_mode_switching[MAX_386_ENTITIES]; + ++ /* Cached initial frame layout for the current function. */ ++ struct ix86_frame frame; ++ + /* Number of saved registers USE_FAST_PROLOGUE_EPILOGUE + has been computed for. */ + int use_fast_prologue_epilogue_nregs; +@@ -2524,6 +2574,7 @@ struct GTY(()) machine_function { + #define ix86_current_function_calls_tls_descriptor \ + (ix86_tls_descriptor_calls_expanded_in_cfun && df_regs_ever_live_p (SP_REG)) + #define ix86_static_chain_on_stack (cfun->machine->static_chain_on_stack) ++#define ix86_red_zone_size (cfun->machine->frame.red_zone_size) + + /* Control behavior of x86_file_start. */ + #define X86_FILE_START_VERSION_DIRECTIVE false diff --git a/patches/source/gcc/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff b/patches/source/gcc/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff new file mode 100644 index 000000000..7b928df76 --- /dev/null +++ b/patches/source/gcc/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff @@ -0,0 +1,72 @@ +From 18202ba32cb8de22fc43a5839235a751d0f5c4d9 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Mon, 15 Jan 2018 11:28:44 +0000 +Subject: [PATCH 2/9] i386: Use reference of struct ix86_frame to avoid copy + +When there is no need to make a copy of ix86_frame, we can use reference +of struct ix86_frame to avoid copy. + + Backport from mainline + * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference + of struct ix86_frame. + (ix86_initial_elimination_offset): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256692 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/config/i386/i386.c | 9 +++------ + gcc/testsuite/ChangeLog | 8 ++++++++ + 2 files changed, 11 insertions(+), 6 deletions(-) + +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index 8133372..397ef7c 100644 +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -11843,8 +11843,6 @@ symbolic_reference_mentioned_p (rtx op) + bool + ix86_can_use_return_insn_p (void) + { +- struct ix86_frame frame; +- + if (! reload_completed || frame_pointer_needed) + return 0; + +@@ -11857,7 +11855,7 @@ ix86_can_use_return_insn_p (void) + return 0; + + ix86_compute_frame_layout (); +- frame = cfun->machine->frame; ++ struct ix86_frame &frame = cfun->machine->frame; + return (frame.stack_pointer_offset == UNITS_PER_WORD + && (frame.nregs + frame.nsseregs) == 0); + } +@@ -12344,7 +12342,7 @@ HOST_WIDE_INT + ix86_initial_elimination_offset (int from, int to) + { + ix86_compute_frame_layout (); +- struct ix86_frame frame = cfun->machine->frame; ++ struct ix86_frame &frame = cfun->machine->frame; + + if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) + return frame.hard_frame_pointer_offset; +@@ -14860,7 +14858,6 @@ static GTY(()) rtx split_stack_fn_large; + void + ix86_expand_split_stack_prologue (void) + { +- struct ix86_frame frame; + HOST_WIDE_INT allocate; + unsigned HOST_WIDE_INT args_size; + rtx_code_label *label; +@@ -14873,7 +14870,7 @@ ix86_expand_split_stack_prologue (void) + + ix86_finalize_stack_realign_flags (); + ix86_compute_frame_layout (); +- frame = cfun->machine->frame; ++ struct ix86_frame &frame = cfun->machine->frame; + allocate = frame.stack_pointer_offset - INCOMING_FRAME_SP_OFFSET; + + /* This is the label we will branch to if we have enough stack +-- +2.7.4 + diff --git a/patches/source/gcc/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff b/patches/source/gcc/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff new file mode 100644 index 000000000..f6f30d1d2 --- /dev/null +++ b/patches/source/gcc/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff @@ -0,0 +1,59 @@ +From 839ca2d69157ef03c8df0ab912dacdb991738694 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Mon, 15 Jan 2018 11:33:42 +0000 +Subject: [PATCH 3/9] i386: More use reference of struct ix86_frame to avoid copy + +When there is no need to make a copy of ix86_frame, we can use reference +of struct ix86_frame to avoid copy. + + Backport from mainline + * config/i386/i386.c (ix86_expand_prologue): Use reference of + struct ix86_frame. + (ix86_expand_epilogue): Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256695 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 7 +++++++ + gcc/config/i386/i386.c | 6 ++---- + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index 397ef7c..986e6d7 100644 +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -13667,7 +13667,6 @@ ix86_expand_prologue (void) + { + struct machine_function *m = cfun->machine; + rtx insn, t; +- struct ix86_frame frame; + HOST_WIDE_INT allocate; + bool int_registers_saved; + bool sse_registers_saved; +@@ -13691,7 +13690,7 @@ ix86_expand_prologue (void) + m->fs.sp_valid = true; + + ix86_compute_frame_layout (); +- frame = m->frame; ++ struct ix86_frame &frame = cfun->machine->frame; + + if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl)) + { +@@ -14354,13 +14353,12 @@ ix86_expand_epilogue (int style) + { + struct machine_function *m = cfun->machine; + struct machine_frame_state frame_state_save = m->fs; +- struct ix86_frame frame; + bool restore_regs_via_mov; + bool using_drap; + + ix86_finalize_stack_realign_flags (); + ix86_compute_frame_layout (); +- frame = m->frame; ++ struct ix86_frame &frame = cfun->machine->frame; + + m->fs.sp_valid = (!frame_pointer_needed + || (crtl->sp_is_unchanging +-- +2.7.4 + diff --git a/patches/source/gcc/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff b/patches/source/gcc/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff new file mode 100644 index 000000000..7678444cd --- /dev/null +++ b/patches/source/gcc/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff @@ -0,0 +1,63 @@ +From c25b81ba01fa9ac0c1baa3aabd64190c47928f03 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 12:49:29 +0000 +Subject: [PATCH 4/9] i386: Don't use reference of struct ix86_frame + +Use reference of struct ix86_frame in ix86_expand_prologue and +ix86_expand_epilogue caused: + +raised STORAGE_ERROR : stack overflow or erroneous memory access +make[5]: *** [/export/gnu/import/git/sources/gcc/gcc/ada/Make-generated.in:45: ada/sinfo.h] Error 1 + +on trunk when bootstrapping GCC with ada on x86-64. + + * config/i386/i386.c (ix86_expand_prologue): Don't use reference + of struct ix86_frame. + (ix86_expand_epilogue): Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256742 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 10 ++++++++++ + gcc/config/i386/i386.c | 6 ++++-- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index e758387..ba2abc5 100644 +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -14061,6 +14061,7 @@ ix86_expand_prologue (void) + { + struct machine_function *m = cfun->machine; + rtx insn, t; ++ struct ix86_frame frame; + HOST_WIDE_INT allocate; + bool int_registers_saved; + bool sse_registers_saved; +@@ -14084,7 +14085,7 @@ ix86_expand_prologue (void) + m->fs.sp_valid = true; + + ix86_compute_frame_layout (); +- struct ix86_frame &frame = cfun->machine->frame; ++ frame = m->frame; + + if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl)) + { +@@ -14747,12 +14748,13 @@ ix86_expand_epilogue (int style) + { + struct machine_function *m = cfun->machine; + struct machine_frame_state frame_state_save = m->fs; ++ struct ix86_frame frame; + bool restore_regs_via_mov; + bool using_drap; + + ix86_finalize_stack_realign_flags (); + ix86_compute_frame_layout (); +- struct ix86_frame &frame = cfun->machine->frame; ++ frame = m->frame; + + m->fs.sp_valid = (!frame_pointer_needed + || (crtl->sp_is_unchanging +-- +2.7.4 + diff --git a/patches/source/gcc/0005-x86-Add-mindirect-branch-doc.diff b/patches/source/gcc/0005-x86-Add-mindirect-branch-doc.diff new file mode 100644 index 000000000..bcaf572b1 --- /dev/null +++ b/patches/source/gcc/0005-x86-Add-mindirect-branch-doc.diff @@ -0,0 +1,279 @@ +From c6b72be421ded17e0c156070ba6e90aa6c335ed6 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 10:59:42 +0000 +Subject: [PATCH 5/9] x86: Add -mindirect-branch= (documentation) + +Add -mindirect-branch= option to convert indirect call and jump to call +and return thunks. The default is 'keep', which keeps indirect call and +jump unmodified. 'thunk' converts indirect call and jump to call and +return thunk. 'thunk-inline' converts indirect call and jump to inlined +call and return thunk. 'thunk-extern' converts indirect call and jump to +external call and return thunk provided in a separate object file. You +can control this behavior for a specific function by using the function +attribute indirect_branch. + +2 kinds of thunks are geneated. Memory thunk where the function address +is at the top of the stack: + +__x86_indirect_thunk: + call L2 +L1: + pause + lfence + jmp L1 +L2: + lea 8(%rsp), %rsp|lea 4(%esp), %esp + ret + +Indirect jmp via memory, "jmp mem", is converted to + + push memory + jmp __x86_indirect_thunk + +Indirect call via memory, "call mem", is converted to + + jmp L2 +L1: + push [mem] + jmp __x86_indirect_thunk +L2: + call L1 + +Register thunk where the function address is in a register, reg: + +__x86_indirect_thunk_reg: + call L2 +L1: + pause + lfence + jmp L1 +L2: + movq %reg, (%rsp)|movl %reg, (%esp) + ret + +where reg is one of (r|e)ax, (r|e)dx, (r|e)cx, (r|e)bx, (r|e)si, (r|e)di, +(r|e)bp, r8, r9, r10, r11, r12, r13, r14 and r15. + +Indirect jmp via register, "jmp reg", is converted to + + jmp __x86_indirect_thunk_reg + +Indirect call via register, "call reg", is converted to + + call __x86_indirect_thunk_reg + +gcc/ + + Backport from mainline + * config/i386/i386-opts.h (indirect_branch): New. + * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise. + * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone + with local indirect jump when converting indirect call and jump. + (ix86_set_indirect_branch_type): New. + (ix86_set_current_function): Call ix86_set_indirect_branch_type. + (indirectlabelno): New. + (indirect_thunk_needed): Likewise. + (indirect_thunk_bnd_needed): Likewise. + (indirect_thunks_used): Likewise. + (indirect_thunks_bnd_used): Likewise. + (INDIRECT_LABEL): Likewise. + (indirect_thunk_name): Likewise. + (output_indirect_thunk): Likewise. + (output_indirect_thunk_function): Likewise. + (ix86_output_indirect_branch_via_reg): Likewise. + (ix86_output_indirect_branch_via_push): Likewise. + (ix86_output_indirect_branch): Likewise. + (ix86_output_indirect_jmp): Likewise. + (ix86_code_end): Call output_indirect_thunk_function if needed. + (ix86_output_call_insn): Call ix86_output_indirect_branch if + needed. + (ix86_handle_fndecl_attribute): Handle indirect_branch. + (ix86_attribute_table): Add indirect_branch. + * config/i386/i386.h (machine_function): Add indirect_branch_type + and has_local_indirect_jump. + * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump + to true. + (tablejump): Likewise. + (*indirect_jump): Use ix86_output_indirect_jmp. + (*tablejump_1): Likewise. + (simple_return_indirect_internal): Likewise. + * config/i386/i386.opt (mindirect-branch=): New option. + (indirect_branch): New. + (keep): Likewise. + (thunk): Likewise. + (thunk-inline): Likewise. + (thunk-extern): Likewise. + * doc/extend.texi: Document indirect_branch function attribute. + * doc/invoke.texi: Document -mindirect-branch= option. + +gcc/testsuite/ + + Backport from mainline + * gcc.target/i386/indirect-thunk-1.c: New test. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-5.c: Likewise. + * gcc.target/i386/indirect-thunk-6.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-8.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256732 138bc75d-0d04-0410-961f-82ee72b054a4 + +[UBUNTU NOTES: Updated for gcc-5.4 to include defines for + FIRST_INT_REG, LAST_INT_REG, and LEGACY_INT_REGNO_P as defined in + https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=222269. + Dropped indirect-thunk-5.c, indirect-thunk-6.c, + indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c, + indirect-thunk-extern-5.c, indirect-thunk-extern-6.c, + indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due + to gcc 5.4 and earlier not supporting the -fno-plt option. + --sbeattie, tyhicks] +--- + src/gcc/config/i386/i386-opts.h | 13 + src/gcc/config/i386/i386-protos.h | 1 + src/gcc/config/i386/i386.c | 621 +++++++++++- + src/gcc/config/i386/i386.h | 12 + src/gcc/config/i386/i386.md | 26 + src/gcc/config/i386/i386.opt | 20 + src/gcc/doc/extend.texi | 10 + src/gcc/doc/invoke.texi | 14 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 44 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 23 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 23 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 22 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 22 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 44 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c | 42 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 19 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 19 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 43 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 44 + 33 files changed, 1334 insertions(+), 15 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c + +Index: b/src/gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -4119,6 +4119,16 @@ Specify which floating-point unit to use + @code{target("fpmath=sse,387")} option must be specified as + @code{target("fpmath=sse+387")} because the comma would separate + different options. ++ ++@item indirect_branch("@var{choice}") ++@cindex @code{indirect_branch} function attribute, x86 ++On x86 targets, the @code{indirect_branch} attribute causes the compiler ++to convert indirect call and jump with @var{choice}. @samp{keep} ++keeps indirect call and jump unmodified. @samp{thunk} converts indirect ++call and jump to call and return thunk. @samp{thunk-inline} converts ++indirect call and jump to inlined call and return thunk. ++@samp{thunk-extern} converts indirect call and jump to external call ++and return thunk provided in a separate object file. + @end table + + On the PowerPC, the following options are allowed: +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -1090,7 +1090,8 @@ See RS/6000 and PowerPC Options. + -m32 -m64 -mx32 -m16 -mlarge-data-threshold=@var{num} @gol + -msse2avx -mfentry -mrecord-mcount -mnop-mcount -m8bit-idiv @gol + -mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol +--malign-data=@var{type} -mstack-protector-guard=@var{guard}} ++-malign-data=@var{type} -mstack-protector-guard=@var{guard} @gol ++-mindirect-branch=@var{choice}} + + @emph{x86 Windows Options} + @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol +@@ -24017,6 +24018,17 @@ The default value of this option is enab + of the option is @option{-fno-sync-libcalls}. This option is used in + the implementation of the @file{libatomic} runtime library. + ++@item -mindirect-branch=@var{choice} ++@opindex -mindirect-branch ++Convert indirect call and jump with @var{choice}. The default is ++@samp{keep}, which keeps indirect call and jump unmodified. ++@samp{thunk} converts indirect call and jump to call and return thunk. ++@samp{thunk-inline} converts indirect call and jump to inlined call ++and return thunk. @samp{thunk-extern} converts indirect call and jump ++to external call and return thunk provided in a separate object file. ++You can control this behavior for a specific function by using the ++function attribute @code{indirect_branch}. @xref{Function Attributes}. ++ + @end table + + @c man end diff --git a/patches/source/gcc/0005-x86-Add-mindirect-branch.diff b/patches/source/gcc/0005-x86-Add-mindirect-branch.diff new file mode 100644 index 000000000..db9690ccc --- /dev/null +++ b/patches/source/gcc/0005-x86-Add-mindirect-branch.diff @@ -0,0 +1,1870 @@ +From c6b72be421ded17e0c156070ba6e90aa6c335ed6 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 10:59:42 +0000 +Subject: [PATCH 5/9] x86: Add -mindirect-branch= + +Add -mindirect-branch= option to convert indirect call and jump to call +and return thunks. The default is 'keep', which keeps indirect call and +jump unmodified. 'thunk' converts indirect call and jump to call and +return thunk. 'thunk-inline' converts indirect call and jump to inlined +call and return thunk. 'thunk-extern' converts indirect call and jump to +external call and return thunk provided in a separate object file. You +can control this behavior for a specific function by using the function +attribute indirect_branch. + +2 kinds of thunks are geneated. Memory thunk where the function address +is at the top of the stack: + +__x86_indirect_thunk: + call L2 +L1: + pause + lfence + jmp L1 +L2: + lea 8(%rsp), %rsp|lea 4(%esp), %esp + ret + +Indirect jmp via memory, "jmp mem", is converted to + + push memory + jmp __x86_indirect_thunk + +Indirect call via memory, "call mem", is converted to + + jmp L2 +L1: + push [mem] + jmp __x86_indirect_thunk +L2: + call L1 + +Register thunk where the function address is in a register, reg: + +__x86_indirect_thunk_reg: + call L2 +L1: + pause + lfence + jmp L1 +L2: + movq %reg, (%rsp)|movl %reg, (%esp) + ret + +where reg is one of (r|e)ax, (r|e)dx, (r|e)cx, (r|e)bx, (r|e)si, (r|e)di, +(r|e)bp, r8, r9, r10, r11, r12, r13, r14 and r15. + +Indirect jmp via register, "jmp reg", is converted to + + jmp __x86_indirect_thunk_reg + +Indirect call via register, "call reg", is converted to + + call __x86_indirect_thunk_reg + +gcc/ + + Backport from mainline + * config/i386/i386-opts.h (indirect_branch): New. + * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise. + * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone + with local indirect jump when converting indirect call and jump. + (ix86_set_indirect_branch_type): New. + (ix86_set_current_function): Call ix86_set_indirect_branch_type. + (indirectlabelno): New. + (indirect_thunk_needed): Likewise. + (indirect_thunk_bnd_needed): Likewise. + (indirect_thunks_used): Likewise. + (indirect_thunks_bnd_used): Likewise. + (INDIRECT_LABEL): Likewise. + (indirect_thunk_name): Likewise. + (output_indirect_thunk): Likewise. + (output_indirect_thunk_function): Likewise. + (ix86_output_indirect_branch_via_reg): Likewise. + (ix86_output_indirect_branch_via_push): Likewise. + (ix86_output_indirect_branch): Likewise. + (ix86_output_indirect_jmp): Likewise. + (ix86_code_end): Call output_indirect_thunk_function if needed. + (ix86_output_call_insn): Call ix86_output_indirect_branch if + needed. + (ix86_handle_fndecl_attribute): Handle indirect_branch. + (ix86_attribute_table): Add indirect_branch. + * config/i386/i386.h (machine_function): Add indirect_branch_type + and has_local_indirect_jump. + * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump + to true. + (tablejump): Likewise. + (*indirect_jump): Use ix86_output_indirect_jmp. + (*tablejump_1): Likewise. + (simple_return_indirect_internal): Likewise. + * config/i386/i386.opt (mindirect-branch=): New option. + (indirect_branch): New. + (keep): Likewise. + (thunk): Likewise. + (thunk-inline): Likewise. + (thunk-extern): Likewise. + * doc/extend.texi: Document indirect_branch function attribute. + * doc/invoke.texi: Document -mindirect-branch= option. + +gcc/testsuite/ + + Backport from mainline + * gcc.target/i386/indirect-thunk-1.c: New test. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-5.c: Likewise. + * gcc.target/i386/indirect-thunk-6.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-8.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256732 138bc75d-0d04-0410-961f-82ee72b054a4 + +[UBUNTU NOTES: Updated for gcc-5.4 to include defines for + FIRST_INT_REG, LAST_INT_REG, and LEGACY_INT_REGNO_P as defined in + https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=222269. + Dropped indirect-thunk-5.c, indirect-thunk-6.c, + indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c, + indirect-thunk-extern-5.c, indirect-thunk-extern-6.c, + indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due + to gcc 5.4 and earlier not supporting the -fno-plt option. + --sbeattie, tyhicks] +--- + src/gcc/config/i386/i386-opts.h | 13 + src/gcc/config/i386/i386-protos.h | 1 + src/gcc/config/i386/i386.c | 621 +++++++++++- + src/gcc/config/i386/i386.h | 12 + src/gcc/config/i386/i386.md | 26 + src/gcc/config/i386/i386.opt | 20 + src/gcc/doc/extend.texi | 10 + src/gcc/doc/invoke.texi | 14 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 44 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 23 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 23 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 22 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 22 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 44 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c | 42 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 19 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 19 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 43 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 20 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 21 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 44 + 33 files changed, 1334 insertions(+), 15 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c + +Index: b/src/gcc/config/i386/i386-opts.h +=================================================================== +--- a/src/gcc/config/i386/i386-opts.h ++++ b/src/gcc/config/i386/i386-opts.h +@@ -99,4 +99,17 @@ enum stack_protector_guard { + SSP_GLOBAL /* global canary */ + }; + ++/* This is used to mitigate variant #2 of the speculative execution ++ vulnerabilities on x86 processors identified by CVE-2017-5715, aka ++ Spectre. They convert indirect branches and function returns to ++ call and return thunks to avoid speculative execution via indirect ++ call, jmp and ret. */ ++enum indirect_branch { ++ indirect_branch_unset = 0, ++ indirect_branch_keep, ++ indirect_branch_thunk, ++ indirect_branch_thunk_inline, ++ indirect_branch_thunk_extern ++}; ++ + #endif +Index: b/src/gcc/config/i386/i386-protos.h +=================================================================== +--- a/src/gcc/config/i386/i386-protos.h ++++ b/src/gcc/config/i386/i386-protos.h +@@ -306,6 +306,7 @@ extern enum attr_cpu ix86_schedule; + #endif + + extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op); ++extern const char * ix86_output_indirect_jmp (rtx call_op, bool ret_p); + + #ifdef RTX_CODE + /* Target data for multipass lookahead scheduling. +Index: b/src/gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -2554,12 +2554,23 @@ make_pass_insert_vzeroupper (gcc::contex + return new pass_insert_vzeroupper (ctxt); + } + +-/* Return true if a red-zone is in use. */ ++/* Return true if a red-zone is in use. We can't use red-zone when ++ there are local indirect jumps, like "indirect_jump" or "tablejump", ++ which jumps to another place in the function, since "call" in the ++ indirect thunk pushes the return address onto stack, destroying ++ red-zone. ++ ++ TODO: If we can reserve the first 2 WORDs, for PUSH and, another ++ for CALL, in red-zone, we can allow local indirect jumps with ++ indirect thunk. */ + + static inline bool + ix86_using_red_zone (void) + { +- return TARGET_RED_ZONE && !TARGET_64BIT_MS_ABI; ++ return (TARGET_RED_ZONE ++ && !TARGET_64BIT_MS_ABI ++ && (!cfun->machine->has_local_indirect_jump ++ || cfun->machine->indirect_branch_type == indirect_branch_keep)); + } + + /* Return a string that documents the current -m options. The caller is +@@ -5126,6 +5137,37 @@ ix86_reset_previous_fndecl (void) + ix86_previous_fndecl = NULL_TREE; + } + ++/* Set the indirect_branch_type field from the function FNDECL. */ ++ ++static void ++ix86_set_indirect_branch_type (tree fndecl) ++{ ++ if (cfun->machine->indirect_branch_type == indirect_branch_unset) ++ { ++ tree attr = lookup_attribute ("indirect_branch", ++ DECL_ATTRIBUTES (fndecl)); ++ if (attr != NULL) ++ { ++ tree args = TREE_VALUE (attr); ++ if (args == NULL) ++ gcc_unreachable (); ++ tree cst = TREE_VALUE (args); ++ if (strcmp (TREE_STRING_POINTER (cst), "keep") == 0) ++ cfun->machine->indirect_branch_type = indirect_branch_keep; ++ else if (strcmp (TREE_STRING_POINTER (cst), "thunk") == 0) ++ cfun->machine->indirect_branch_type = indirect_branch_thunk; ++ else if (strcmp (TREE_STRING_POINTER (cst), "thunk-inline") == 0) ++ cfun->machine->indirect_branch_type = indirect_branch_thunk_inline; ++ else if (strcmp (TREE_STRING_POINTER (cst), "thunk-extern") == 0) ++ cfun->machine->indirect_branch_type = indirect_branch_thunk_extern; ++ else ++ gcc_unreachable (); ++ } ++ else ++ cfun->machine->indirect_branch_type = ix86_indirect_branch; ++ } ++} ++ + /* Establish appropriate back-end context for processing the function + FNDECL. The argument might be NULL to indicate processing at top + level, outside of any function scope. */ +@@ -5136,7 +5178,11 @@ ix86_set_current_function (tree fndecl) + several times in the course of compiling a function, and we don't want to + slow things down too much or call target_reinit when it isn't safe. */ + if (fndecl == ix86_previous_fndecl) +- return; ++ { ++ if (fndecl != NULL_TREE) ++ ix86_set_indirect_branch_type (fndecl); ++ return; ++ } + + tree old_tree; + if (ix86_previous_fndecl == NULL_TREE) +@@ -5153,6 +5199,8 @@ ix86_set_current_function (tree fndecl) + return; + } + ++ ix86_set_indirect_branch_type (fndecl); ++ + tree new_tree = DECL_FUNCTION_SPECIFIC_TARGET (fndecl); + if (new_tree == NULL_TREE) + new_tree = target_option_default_node; +@@ -9681,6 +9729,220 @@ ix86_setup_frame_addresses (void) + # endif + #endif + ++/* Label count for call and return thunks. It is used to make unique ++ labels in call and return thunks. */ ++static int indirectlabelno; ++ ++/* True if call and return thunk functions are needed. */ ++static bool indirect_thunk_needed = false; ++/* True if call and return thunk functions with the BND prefix are ++ needed. */ ++static bool indirect_thunk_bnd_needed = false; ++ ++/* Bit masks of integer registers, which contain branch target, used ++ by call and return thunks functions. */ ++static int indirect_thunks_used; ++/* Bit masks of integer registers, which contain branch target, used ++ by call and return thunks functions with the BND prefix. */ ++static int indirect_thunks_bnd_used; ++ ++#ifndef INDIRECT_LABEL ++# define INDIRECT_LABEL "LIND" ++#endif ++ ++/* Fills in the label name that should be used for the indirect thunk. */ ++ ++static void ++indirect_thunk_name (char name[32], int regno, bool need_bnd_p) ++{ ++ if (USE_HIDDEN_LINKONCE) ++ { ++ const char *bnd = need_bnd_p ? "_bnd" : ""; ++ if (regno >= 0) ++ { ++ const char *reg_prefix; ++ if (LEGACY_INT_REGNO_P (regno)) ++ reg_prefix = TARGET_64BIT ? "r" : "e"; ++ else ++ reg_prefix = ""; ++ sprintf (name, "__x86_indirect_thunk%s_%s%s", ++ bnd, reg_prefix, reg_names[regno]); ++ } ++ else ++ sprintf (name, "__x86_indirect_thunk%s", bnd); ++ } ++ else ++ { ++ if (regno >= 0) ++ { ++ if (need_bnd_p) ++ ASM_GENERATE_INTERNAL_LABEL (name, "LITBR", regno); ++ else ++ ASM_GENERATE_INTERNAL_LABEL (name, "LITR", regno); ++ } ++ else ++ { ++ if (need_bnd_p) ++ ASM_GENERATE_INTERNAL_LABEL (name, "LITB", 0); ++ else ++ ASM_GENERATE_INTERNAL_LABEL (name, "LIT", 0); ++ } ++ } ++} ++ ++/* Output a call and return thunk for indirect branch. If BND_P is ++ true, the BND prefix is needed. If REGNO != -1, the function ++ address is in REGNO and the call and return thunk looks like: ++ ++ call L2 ++ L1: ++ pause ++ jmp L1 ++ L2: ++ mov %REG, (%sp) ++ ret ++ ++ Otherwise, the function address is on the top of stack and the ++ call and return thunk looks like: ++ ++ call L2 ++ L1: ++ pause ++ jmp L1 ++ L2: ++ lea WORD_SIZE(%sp), %sp ++ ret ++ */ ++ ++static void ++output_indirect_thunk (bool need_bnd_p, int regno) ++{ ++ char indirectlabel1[32]; ++ char indirectlabel2[32]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (indirectlabel1, INDIRECT_LABEL, ++ indirectlabelno++); ++ ASM_GENERATE_INTERNAL_LABEL (indirectlabel2, INDIRECT_LABEL, ++ indirectlabelno++); ++ ++ /* Call */ ++ if (need_bnd_p) ++ fputs ("\tbnd call\t", asm_out_file); ++ else ++ fputs ("\tcall\t", asm_out_file); ++ assemble_name_raw (asm_out_file, indirectlabel2); ++ fputc ('\n', asm_out_file); ++ ++ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1); ++ ++ /* Pause + lfence. */ ++ fprintf (asm_out_file, "\tpause\n\tlfence\n"); ++ ++ /* Jump. */ ++ fputs ("\tjmp\t", asm_out_file); ++ assemble_name_raw (asm_out_file, indirectlabel1); ++ fputc ('\n', asm_out_file); ++ ++ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); ++ ++ if (regno >= 0) ++ { ++ /* MOV. */ ++ rtx xops[2]; ++ xops[0] = gen_rtx_MEM (word_mode, stack_pointer_rtx); ++ xops[1] = gen_rtx_REG (word_mode, regno); ++ output_asm_insn ("mov\t{%1, %0|%0, %1}", xops); ++ } ++ else ++ { ++ /* LEA. */ ++ rtx xops[2]; ++ xops[0] = stack_pointer_rtx; ++ xops[1] = plus_constant (Pmode, stack_pointer_rtx, UNITS_PER_WORD); ++ output_asm_insn ("lea\t{%E1, %0|%0, %E1}", xops); ++ } ++ ++ if (need_bnd_p) ++ fputs ("\tbnd ret\n", asm_out_file); ++ else ++ fputs ("\tret\n", asm_out_file); ++} ++ ++/* Output a funtion with a call and return thunk for indirect branch. ++ If BND_P is true, the BND prefix is needed. If REGNO != -1, the ++ function address is in REGNO. Otherwise, the function address is ++ on the top of stack. */ ++ ++static void ++output_indirect_thunk_function (bool need_bnd_p, int regno) ++{ ++ char name[32]; ++ tree decl; ++ ++ /* Create __x86_indirect_thunk/__x86_indirect_thunk_bnd. */ ++ indirect_thunk_name (name, regno, need_bnd_p); ++ decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, ++ get_identifier (name), ++ build_function_type_list (void_type_node, NULL_TREE)); ++ DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL, ++ NULL_TREE, void_type_node); ++ TREE_PUBLIC (decl) = 1; ++ TREE_STATIC (decl) = 1; ++ DECL_IGNORED_P (decl) = 1; ++ ++#if TARGET_MACHO ++ if (TARGET_MACHO) ++ { ++ switch_to_section (darwin_sections[picbase_thunk_section]); ++ fputs ("\t.weak_definition\t", asm_out_file); ++ assemble_name (asm_out_file, name); ++ fputs ("\n\t.private_extern\t", asm_out_file); ++ assemble_name (asm_out_file, name); ++ putc ('\n', asm_out_file); ++ ASM_OUTPUT_LABEL (asm_out_file, name); ++ DECL_WEAK (decl) = 1; ++ } ++ else ++#endif ++ if (USE_HIDDEN_LINKONCE) ++ { ++ cgraph_node::create (decl)->set_comdat_group (DECL_ASSEMBLER_NAME (decl)); ++ ++ targetm.asm_out.unique_section (decl, 0); ++ switch_to_section (get_named_section (decl, NULL, 0)); ++ ++ targetm.asm_out.globalize_label (asm_out_file, name); ++ fputs ("\t.hidden\t", asm_out_file); ++ assemble_name (asm_out_file, name); ++ putc ('\n', asm_out_file); ++ ASM_DECLARE_FUNCTION_NAME (asm_out_file, name, decl); ++ } ++ else ++ { ++ switch_to_section (text_section); ++ ASM_OUTPUT_LABEL (asm_out_file, name); ++ } ++ ++ DECL_INITIAL (decl) = make_node (BLOCK); ++ current_function_decl = decl; ++ allocate_struct_function (decl, false); ++ init_function_start (decl); ++ /* We're about to hide the function body from callees of final_* by ++ emitting it directly; tell them we're a thunk, if they care. */ ++ cfun->is_thunk = true; ++ first_function_block_is_cold = false; ++ /* Make sure unwind info is emitted for the thunk if needed. */ ++ final_start_function (emit_barrier (), asm_out_file, 1); ++ ++ output_indirect_thunk (need_bnd_p, regno); ++ ++ final_end_function (); ++ init_insn_lengths (); ++ free_after_compilation (cfun); ++ set_cfun (NULL); ++ current_function_decl = NULL; ++} ++ + static int pic_labels_used; + + /* Fills in the label name that should be used for a pc thunk for +@@ -9707,11 +9969,32 @@ ix86_code_end (void) + rtx xops[2]; + int regno; + ++ if (indirect_thunk_needed) ++ output_indirect_thunk_function (false, -1); ++ if (indirect_thunk_bnd_needed) ++ output_indirect_thunk_function (true, -1); ++ ++ for (regno = FIRST_REX_INT_REG; regno <= LAST_REX_INT_REG; regno++) ++ { ++ int i = regno - FIRST_REX_INT_REG + LAST_INT_REG + 1; ++ if ((indirect_thunks_used & (1 << i))) ++ output_indirect_thunk_function (false, regno); ++ ++ if ((indirect_thunks_bnd_used & (1 << i))) ++ output_indirect_thunk_function (true, regno); ++ } ++ + for (regno = AX_REG; regno <= SP_REG; regno++) + { + char name[32]; + tree decl; + ++ if ((indirect_thunks_used & (1 << regno))) ++ output_indirect_thunk_function (false, regno); ++ ++ if ((indirect_thunks_bnd_used & (1 << regno))) ++ output_indirect_thunk_function (true, regno); ++ + if (!(pic_labels_used & (1 << regno))) + continue; + +@@ -25805,12 +26088,292 @@ ix86_expand_call (rtx retval, rtx fnaddr + return call; + } + ++/* Output indirect branch via a call and return thunk. CALL_OP is a ++ register which contains the branch target. XASM is the assembly ++ template for CALL_OP. Branch is a tail call if SIBCALL_P is true. ++ A normal call is converted to: ++ ++ call __x86_indirect_thunk_reg ++ ++ and a tail call is converted to: ++ ++ jmp __x86_indirect_thunk_reg ++ */ ++ ++static void ++ix86_output_indirect_branch_via_reg (rtx call_op, bool sibcall_p) ++{ ++ char thunk_name_buf[32]; ++ char *thunk_name; ++ bool need_bnd_p = ix86_bnd_prefixed_insn_p (current_output_insn); ++ int regno = REGNO (call_op); ++ ++ if (cfun->machine->indirect_branch_type ++ != indirect_branch_thunk_inline) ++ { ++ if (cfun->machine->indirect_branch_type == indirect_branch_thunk) ++ { ++ int i = regno; ++ if (i >= FIRST_REX_INT_REG) ++ i -= (FIRST_REX_INT_REG - LAST_INT_REG - 1); ++ if (need_bnd_p) ++ indirect_thunks_bnd_used |= 1 << i; ++ else ++ indirect_thunks_used |= 1 << i; ++ } ++ indirect_thunk_name (thunk_name_buf, regno, need_bnd_p); ++ thunk_name = thunk_name_buf; ++ } ++ else ++ thunk_name = NULL; ++ ++ if (sibcall_p) ++ { ++ if (thunk_name != NULL) ++ { ++ if (need_bnd_p) ++ fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ else ++ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ } ++ else ++ output_indirect_thunk (need_bnd_p, regno); ++ } ++ else ++ { ++ if (thunk_name != NULL) ++ { ++ if (need_bnd_p) ++ fprintf (asm_out_file, "\tbnd call\t%s\n", thunk_name); ++ else ++ fprintf (asm_out_file, "\tcall\t%s\n", thunk_name); ++ return; ++ } ++ ++ char indirectlabel1[32]; ++ char indirectlabel2[32]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (indirectlabel1, ++ INDIRECT_LABEL, ++ indirectlabelno++); ++ ASM_GENERATE_INTERNAL_LABEL (indirectlabel2, ++ INDIRECT_LABEL, ++ indirectlabelno++); ++ ++ /* Jump. */ ++ if (need_bnd_p) ++ fputs ("\tbnd jmp\t", asm_out_file); ++ else ++ fputs ("\tjmp\t", asm_out_file); ++ assemble_name_raw (asm_out_file, indirectlabel2); ++ fputc ('\n', asm_out_file); ++ ++ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1); ++ ++ if (thunk_name != NULL) ++ { ++ if (need_bnd_p) ++ fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ else ++ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ } ++ else ++ output_indirect_thunk (need_bnd_p, regno); ++ ++ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); ++ ++ /* Call. */ ++ if (need_bnd_p) ++ fputs ("\tbnd call\t", asm_out_file); ++ else ++ fputs ("\tcall\t", asm_out_file); ++ assemble_name_raw (asm_out_file, indirectlabel1); ++ fputc ('\n', asm_out_file); ++ } ++} ++ ++/* Output indirect branch via a call and return thunk. CALL_OP is ++ the branch target. XASM is the assembly template for CALL_OP. ++ Branch is a tail call if SIBCALL_P is true. A normal call is ++ converted to: ++ ++ jmp L2 ++ L1: ++ push CALL_OP ++ jmp __x86_indirect_thunk ++ L2: ++ call L1 ++ ++ and a tail call is converted to: ++ ++ push CALL_OP ++ jmp __x86_indirect_thunk ++ */ ++ ++static void ++ix86_output_indirect_branch_via_push (rtx call_op, const char *xasm, ++ bool sibcall_p) ++{ ++ char thunk_name_buf[32]; ++ char *thunk_name; ++ char push_buf[64]; ++ bool need_bnd_p = ix86_bnd_prefixed_insn_p (current_output_insn); ++ int regno = -1; ++ ++ if (cfun->machine->indirect_branch_type ++ != indirect_branch_thunk_inline) ++ { ++ if (cfun->machine->indirect_branch_type == indirect_branch_thunk) ++ { ++ if (need_bnd_p) ++ indirect_thunk_bnd_needed = true; ++ else ++ indirect_thunk_needed = true; ++ } ++ indirect_thunk_name (thunk_name_buf, regno, need_bnd_p); ++ thunk_name = thunk_name_buf; ++ } ++ else ++ thunk_name = NULL; ++ ++ snprintf (push_buf, sizeof (push_buf), "push{%c}\t%s", ++ TARGET_64BIT ? 'q' : 'l', xasm); ++ ++ if (sibcall_p) ++ { ++ output_asm_insn (push_buf, &call_op); ++ if (thunk_name != NULL) ++ { ++ if (need_bnd_p) ++ fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ else ++ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ } ++ else ++ output_indirect_thunk (need_bnd_p, regno); ++ } ++ else ++ { ++ char indirectlabel1[32]; ++ char indirectlabel2[32]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (indirectlabel1, ++ INDIRECT_LABEL, ++ indirectlabelno++); ++ ASM_GENERATE_INTERNAL_LABEL (indirectlabel2, ++ INDIRECT_LABEL, ++ indirectlabelno++); ++ ++ /* Jump. */ ++ if (need_bnd_p) ++ fputs ("\tbnd jmp\t", asm_out_file); ++ else ++ fputs ("\tjmp\t", asm_out_file); ++ assemble_name_raw (asm_out_file, indirectlabel2); ++ fputc ('\n', asm_out_file); ++ ++ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1); ++ ++ /* An external function may be called via GOT, instead of PLT. */ ++ if (MEM_P (call_op)) ++ { ++ struct ix86_address parts; ++ rtx addr = XEXP (call_op, 0); ++ if (ix86_decompose_address (addr, &parts) ++ && parts.base == stack_pointer_rtx) ++ { ++ /* Since call will adjust stack by -UNITS_PER_WORD, ++ we must convert "disp(stack, index, scale)" to ++ "disp+UNITS_PER_WORD(stack, index, scale)". */ ++ if (parts.index) ++ { ++ addr = gen_rtx_MULT (Pmode, parts.index, ++ GEN_INT (parts.scale)); ++ addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, ++ addr); ++ } ++ else ++ addr = stack_pointer_rtx; ++ ++ rtx disp; ++ if (parts.disp != NULL_RTX) ++ disp = plus_constant (Pmode, parts.disp, ++ UNITS_PER_WORD); ++ else ++ disp = GEN_INT (UNITS_PER_WORD); ++ ++ addr = gen_rtx_PLUS (Pmode, addr, disp); ++ call_op = gen_rtx_MEM (GET_MODE (call_op), addr); ++ } ++ } ++ ++ output_asm_insn (push_buf, &call_op); ++ ++ if (thunk_name != NULL) ++ { ++ if (need_bnd_p) ++ fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ else ++ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ } ++ else ++ output_indirect_thunk (need_bnd_p, regno); ++ ++ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); ++ ++ /* Call. */ ++ if (need_bnd_p) ++ fputs ("\tbnd call\t", asm_out_file); ++ else ++ fputs ("\tcall\t", asm_out_file); ++ assemble_name_raw (asm_out_file, indirectlabel1); ++ fputc ('\n', asm_out_file); ++ } ++} ++ ++/* Output indirect branch via a call and return thunk. CALL_OP is ++ the branch target. XASM is the assembly template for CALL_OP. ++ Branch is a tail call if SIBCALL_P is true. */ ++ ++static void ++ix86_output_indirect_branch (rtx call_op, const char *xasm, ++ bool sibcall_p) ++{ ++ if (REG_P (call_op)) ++ ix86_output_indirect_branch_via_reg (call_op, sibcall_p); ++ else ++ ix86_output_indirect_branch_via_push (call_op, xasm, sibcall_p); ++} ++/* Output indirect jump. CALL_OP is the jump target. Jump is a ++ function return if RET_P is true. */ ++ ++const char * ++ix86_output_indirect_jmp (rtx call_op, bool ret_p) ++{ ++ if (cfun->machine->indirect_branch_type != indirect_branch_keep) ++ { ++ /* We can't have red-zone if this isn't a function return since ++ "call" in the indirect thunk pushes the return address onto ++ stack, destroying red-zone. */ ++ if (!ret_p && ix86_red_zone_size != 0) ++ gcc_unreachable (); ++ ++ ix86_output_indirect_branch (call_op, "%0", true); ++ return ""; ++ } ++ else ++ return "%!jmp\t%A0"; ++} ++ + /* Output the assembly for a call instruction. */ + + const char * + ix86_output_call_insn (rtx_insn *insn, rtx call_op) + { + bool direct_p = constant_call_address_operand (call_op, VOIDmode); ++ bool output_indirect_p ++ = (!TARGET_SEH ++ && cfun->machine->indirect_branch_type != indirect_branch_keep); + bool seh_nop_p = false; + const char *xasm; + +@@ -25823,9 +26386,17 @@ ix86_output_call_insn (rtx_insn *insn, r + else if (TARGET_SEH) + xasm = "%!rex.W jmp %A0"; + else +- xasm = "%!jmp\t%A0"; ++ { ++ if (output_indirect_p) ++ xasm = "%0"; ++ else ++ xasm = "%!jmp\t%A0"; ++ } + +- output_asm_insn (xasm, &call_op); ++ if (output_indirect_p && !direct_p) ++ ix86_output_indirect_branch (call_op, xasm, true); ++ else ++ output_asm_insn (xasm, &call_op); + return ""; + } + +@@ -25862,9 +26433,17 @@ ix86_output_call_insn (rtx_insn *insn, r + if (direct_p) + xasm = "%!call\t%P0"; + else +- xasm = "%!call\t%A0"; ++ { ++ if (output_indirect_p) ++ xasm = "%0"; ++ else ++ xasm = "%!call\t%A0"; ++ } + +- output_asm_insn (xasm, &call_op); ++ if (output_indirect_p && !direct_p) ++ ix86_output_indirect_branch (call_op, xasm, false); ++ else ++ output_asm_insn (xasm, &call_op); + + if (seh_nop_p) + return "nop"; +@@ -43014,7 +43593,7 @@ ix86_handle_struct_attribute (tree *node + } + + static tree +-ix86_handle_fndecl_attribute (tree *node, tree name, tree, int, ++ix86_handle_fndecl_attribute (tree *node, tree name, tree args, int, + bool *no_add_attrs) + { + if (TREE_CODE (*node) != FUNCTION_DECL) +@@ -43023,6 +43602,29 @@ ix86_handle_fndecl_attribute (tree *node + name); + *no_add_attrs = true; + } ++ ++ if (is_attribute_p ("indirect_branch", name)) ++ { ++ tree cst = TREE_VALUE (args); ++ if (TREE_CODE (cst) != STRING_CST) ++ { ++ warning (OPT_Wattributes, ++ "%qE attribute requires a string constant argument", ++ name); ++ *no_add_attrs = true; ++ } ++ else if (strcmp (TREE_STRING_POINTER (cst), "keep") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-inline") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-extern") != 0) ++ { ++ warning (OPT_Wattributes, ++ "argument to %qE attribute is not " ++ "(keep|thunk|thunk-inline|thunk-extern)", name); ++ *no_add_attrs = true; ++ } ++ } ++ + return NULL_TREE; + } + +@@ -46915,6 +47517,9 @@ static const struct attribute_spec ix86_ + false }, + { "callee_pop_aggregate_return", 1, 1, false, true, true, + ix86_handle_callee_pop_aggregate_return, true }, ++ { "indirect_branch", 1, 1, true, false, false, ++ ix86_handle_fndecl_attribute, false }, ++ + /* End element. */ + { NULL, 0, 0, false, false, false, NULL, false } + }; +Index: b/src/gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -1229,6 +1229,9 @@ extern const char *host_detect_local_cpu + /* Base register for access to local variables of the function. */ + #define FRAME_POINTER_REGNUM 20 + ++#define FIRST_INT_REG AX_REG ++#define LAST_INT_REG SP_REG ++ + /* First floating point reg */ + #define FIRST_FLOAT_REG 8 + +@@ -1465,6 +1468,8 @@ enum reg_class + registers. */ + #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true + ++#define LEGACY_INT_REGNO_P(N) (IN_RANGE ((N), FIRST_INT_REG, LAST_INT_REG)) ++ + #define QI_REG_P(X) (REG_P (X) && QI_REGNO_P (REGNO (X))) + #define QI_REGNO_P(N) IN_RANGE ((N), AX_REG, BX_REG) + +@@ -2550,6 +2555,13 @@ struct GTY(()) machine_function { + /* If true, it is safe to not save/restore DRAP register. */ + BOOL_BITFIELD no_drap_save_restore : 1; + ++ /* How to generate indirec branch. */ ++ ENUM_BITFIELD(indirect_branch) indirect_branch_type : 3; ++ ++ /* If true, the current function has local indirect jumps, like ++ "indirect_jump" or "tablejump". */ ++ BOOL_BITFIELD has_local_indirect_jump : 1; ++ + /* During prologue/epilogue generation, the current frame state. + Otherwise, the frame state at the end of the prologue. */ + struct machine_frame_state fs; +Index: b/src/gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md ++++ b/src/gcc/config/i386/i386.md +@@ -11556,13 +11556,18 @@ + { + if (TARGET_X32) + operands[0] = convert_memory_address (word_mode, operands[0]); ++ cfun->machine->has_local_indirect_jump = true; + }) + + (define_insn "*indirect_jump" + [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw"))] + "" +- "%!jmp\t%A0" +- [(set_attr "type" "ibr") ++ "* return ix86_output_indirect_jmp (operands[0], false);" ++ [(set (attr "type") ++ (if_then_else (match_test "(cfun->machine->indirect_branch_type ++ != indirect_branch_keep)") ++ (const_string "multi") ++ (const_string "ibr"))) + (set_attr "length_immediate" "0")]) + + (define_expand "tablejump" +@@ -11604,14 +11609,19 @@ + + if (TARGET_X32) + operands[0] = convert_memory_address (word_mode, operands[0]); ++ cfun->machine->has_local_indirect_jump = true; + }) + + (define_insn "*tablejump_1" + [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw")) + (use (label_ref (match_operand 1)))] + "" +- "%!jmp\t%A0" +- [(set_attr "type" "ibr") ++ "* return ix86_output_indirect_jmp (operands[0], false);" ++ [(set (attr "type") ++ (if_then_else (match_test "(cfun->machine->indirect_branch_type ++ != indirect_branch_keep)") ++ (const_string "multi") ++ (const_string "ibr"))) + (set_attr "length_immediate" "0")]) + + ;; Convert setcc + movzbl to xor + setcc if operands don't overlap. +@@ -12198,8 +12208,12 @@ + [(simple_return) + (use (match_operand:SI 0 "register_operand" "r"))] + "reload_completed" +- "%!jmp\t%A0" +- [(set_attr "type" "ibr") ++ "* return ix86_output_indirect_jmp (operands[0], true);" ++ [(set (attr "type") ++ (if_then_else (match_test "(cfun->machine->indirect_branch_type ++ != indirect_branch_keep)") ++ (const_string "multi") ++ (const_string "ibr"))) + (set_attr "length_immediate" "0")]) + + (define_insn "nop" +Index: b/src/gcc/config/i386/i386.opt +=================================================================== +--- a/src/gcc/config/i386/i386.opt ++++ b/src/gcc/config/i386/i386.opt +@@ -876,3 +876,23 @@ Enum(stack_protector_guard) String(tls) + + EnumValue + Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL) ++ ++mindirect-branch= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep) ++Convert indirect call and jump to call and return thunks. ++ ++Enum ++Name(indirect_branch) Type(enum indirect_branch) ++Known indirect branch choices (for use with the -mindirect-branch= option): ++ ++EnumValue ++Enum(indirect_branch) String(keep) Value(indirect_branch_keep) ++ ++EnumValue ++Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk) ++ ++EnumValue ++Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline) ++ ++EnumValue ++Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern) +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +@@ -0,0 +1,44 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++ ++void func0 (void); ++void func1 (void); ++void func2 (void); ++void func3 (void); ++void func4 (void); ++void func4 (void); ++void func5 (void); ++ ++void ++bar (int i) ++{ ++ switch (i) ++ { ++ default: ++ func0 (); ++ break; ++ case 1: ++ func1 (); ++ break; ++ case 2: ++ func2 (); ++ break; ++ case 3: ++ func3 (); ++ break; ++ case 4: ++ func4 (); ++ break; ++ case 5: ++ func5 (); ++ break; ++ } ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++extern void male_indirect_jump (long) ++ __attribute__ ((indirect_branch("thunk"))); ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++__attribute__ ((indirect_branch("thunk"))) ++void ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++extern int male_indirect_jump (long) ++ __attribute__ ((indirect_branch("thunk-inline"))); ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++__attribute__ ((indirect_branch("thunk-inline"))) ++int ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++extern int male_indirect_jump (long) ++ __attribute__ ((indirect_branch("thunk-extern"))); ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++__attribute__ ((indirect_branch("thunk-extern"))) ++int ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +@@ -0,0 +1,44 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-pic" } */ ++ ++void func0 (void); ++void func1 (void); ++void func2 (void); ++void func3 (void); ++void func4 (void); ++void func4 (void); ++void func5 (void); ++ ++__attribute__ ((indirect_branch("thunk-extern"))) ++void ++bar (int i) ++{ ++ switch (i) ++ { ++ default: ++ func0 (); ++ break; ++ case 1: ++ func1 (); ++ break; ++ case 2: ++ func2 (); ++ break; ++ case 3: ++ func3 (); ++ break; ++ case 4: ++ func4 (); ++ break; ++ case 5: ++ func5 (); ++ break; ++ } ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c +@@ -0,0 +1,42 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++ ++void func0 (void); ++void func1 (void); ++void func2 (void); ++void func3 (void); ++void func4 (void); ++void func4 (void); ++void func5 (void); ++ ++__attribute__ ((indirect_branch("keep"))) ++void ++bar (int i) ++{ ++ switch (i) ++ { ++ default: ++ func0 (); ++ break; ++ case 1: ++ func1 (); ++ break; ++ case 2: ++ func2 (); ++ break; ++ case 3: ++ func3 (); ++ break; ++ case 4: ++ func4 (); ++ break; ++ case 5: ++ func5 (); ++ break; ++ } ++} ++ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile { target { ! x32 } } } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++ ++void (*dispatch) (char *); ++char buf[10]; ++ ++void ++foo (void) ++{ ++ dispatch (buf); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "bnd ret" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile { target { ! x32 } } } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++ ++void (*dispatch) (char *); ++char buf[10]; ++ ++int ++foo (void) ++{ ++ dispatch (buf); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ ++/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "bnd ret" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +@@ -0,0 +1,43 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++void func0 (void); ++void func1 (void); ++void func2 (void); ++void func3 (void); ++void func4 (void); ++void func4 (void); ++void func5 (void); ++ ++void ++bar (int i) ++{ ++ switch (i) ++ { ++ default: ++ func0 (); ++ break; ++ case 1: ++ func1 (); ++ break; ++ case 2: ++ func2 (); ++ break; ++ case 3: ++ func3 (); ++ break; ++ case 4: ++ func4 (); ++ break; ++ case 5: ++ func5 (); ++ break; ++ } ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler-times {\tpause} 1 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch[256]; ++ ++int ++male_indirect_jump (long offset) ++{ ++ dispatch[offset](offset); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler-times {\tpause} 1 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +@@ -0,0 +1,44 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++ ++void func0 (void); ++void func1 (void); ++void func2 (void); ++void func3 (void); ++void func4 (void); ++void func4 (void); ++void func5 (void); ++ ++void ++bar (int i) ++{ ++ switch (i) ++ { ++ default: ++ func0 (); ++ break; ++ case 1: ++ func1 (); ++ break; ++ case 2: ++ func2 (); ++ break; ++ case 3: ++ func3 (); ++ break; ++ case 4: ++ func4 (); ++ break; ++ case 5: ++ func5 (); ++ break; ++ } ++} ++ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ diff --git a/patches/source/gcc/0006-x86-Add-mfunction-return-doc.diff b/patches/source/gcc/0006-x86-Add-mfunction-return-doc.diff new file mode 100644 index 000000000..b40d52489 --- /dev/null +++ b/patches/source/gcc/0006-x86-Add-mfunction-return-doc.diff @@ -0,0 +1,300 @@ +From 357311dd400f7f72d2132f2f94161ece39bf08c6 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:10:44 +0000 +Subject: [PATCH 6/9] x86: Add -mfunction-return= + +Add -mfunction-return= option to convert function return to call and +return thunks. The default is 'keep', which keeps function return +unmodified. 'thunk' converts function return to call and return thunk. +'thunk-inline' converts function return to inlined call and return thunk. +'thunk-extern' converts function return to external call and return +thunk provided in a separate object file. You can control this behavior +for a specific function by using the function attribute function_return. + +Function return thunk is the same as memory thunk for -mindirect-branch= +where the return address is at the top of the stack: + +__x86_return_thunk: + call L2 +L1: + pause + lfence + jmp L1 +L2: + lea 8(%rsp), %rsp|lea 4(%esp), %esp + ret + +and function return becomes + + jmp __x86_return_thunk + +-mindirect-branch= tests are updated with -mfunction-return=keep to +avoid false test failures when -mfunction-return=thunk is added to +RUNTESTFLAGS for "make check". + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/i386-protos.h (ix86_output_function_return): New. + * config/i386/i386.c (ix86_set_indirect_branch_type): Also + set function_return_type. + (indirect_thunk_name): Add ret_p to indicate thunk for function + return. + (output_indirect_thunk_function): Pass false to + indirect_thunk_name. + (ix86_output_indirect_branch_via_reg): Likewise. + (ix86_output_indirect_branch_via_push): Likewise. + (output_indirect_thunk_function): Create alias for function + return thunk if regno < 0. + (ix86_output_function_return): New function. + (ix86_handle_fndecl_attribute): Handle function_return. + (ix86_attribute_table): Add function_return. + * config/i386/i386.h (machine_function): Add + function_return_type. + * config/i386/i386.md (simple_return_internal): Use + ix86_output_function_return. + (simple_return_internal_long): Likewise. + * config/i386/i386.opt (mfunction-return=): New option. + (indirect_branch): Mention -mfunction-return=. + * doc/extend.texi: Document function_return function attribute. + * doc/invoke.texi: Document -mfunction-return= option. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-1.c (dg-options): Add + -mfunction-return=keep. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-5.c: Likewise. + * gcc.target/i386/indirect-thunk-6.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-8.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + * gcc.target/i386/ret-thunk-1.c: New test. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-16.c: Likewise. + * gcc.target/i386/ret-thunk-2.c: Likewise. + * gcc.target/i386/ret-thunk-3.c: Likewise. + * gcc.target/i386/ret-thunk-4.c: Likewise. + * gcc.target/i386/ret-thunk-5.c: Likewise. + * gcc.target/i386/ret-thunk-6.c: Likewise. + * gcc.target/i386/ret-thunk-7.c: Likewise. + * gcc.target/i386/ret-thunk-8.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Likewise. + +i386: Don't use ASM_OUTPUT_DEF for TARGET_MACHO + +ASM_OUTPUT_DEF isn't defined for TARGET_MACHO. Use ASM_OUTPUT_LABEL to +generate the __x86_return_thunk label, instead of the set directive. +Update testcase to remove the __x86_return_thunk label check. Since +-fno-pic is ignored on Darwin, update testcases to sscan or "push" +only on Linux. + +gcc/ + + Backport from mainline + 2018-01-15 H.J. Lu + + PR target/83839 + * config/i386/i386.c (output_indirect_thunk_function): Use + ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO + for __x86.return_thunk. + +gcc/testsuite/ + + Backport from mainline + 2018-01-15 H.J. Lu + + PR target/83839 + * gcc.target/i386/indirect-thunk-1.c: Scan for "push" only on + Linux. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-register-1.c: Likewise. + * gcc.target/i386/indirect-thunk-register-3.c: Likewise. + * gcc.target/i386/indirect-thunk-register-4.c: Likewise. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Don't check the + __x86_return_thunk label. + Scan for "push" only for Linux. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256734 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Ubuntu note: Dropped indirect-thunk-5.c, indirect-thunk-6.c, + indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c, + indirect-thunk-extern-5.c, indirect-thunk-extern-6.c, + indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due + to gcc 5.4 and earlier not supporting the -fno-plt option. + --sbeattie,] + +--- + src/gcc/config/i386/i386-protos.h | 1 + src/gcc/config/i386/i386.c | 152 +++++++++++- + src/gcc/config/i386/i386.h | 3 + src/gcc/config/i386/i386.md | 9 + src/gcc/config/i386/i386.opt | 6 + src/gcc/doc/extend.texi | 9 + src/gcc/doc/invoke.texi | 13 - + src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 4 + src/gcc/testsuite/gcc.target/i386/ret-thunk-1.c | 13 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 23 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 23 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-16.c | 18 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-2.c | 13 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-3.c | 12 + src/gcc/testsuite/gcc.target/i386/ret-thunk-4.c | 12 + src/gcc/testsuite/gcc.target/i386/ret-thunk-5.c | 15 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-6.c | 14 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-7.c | 13 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-8.c | 14 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 24 + + 48 files changed, 507 insertions(+), 66 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-10.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-11.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-12.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-13.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-14.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-15.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-16.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-8.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-9.c + +Index: b/src/gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -4129,6 +4129,15 @@ call and jump to call and return thunk. + indirect call and jump to inlined call and return thunk. + @samp{thunk-extern} converts indirect call and jump to external call + and return thunk provided in a separate object file. ++ ++@item function_return("@var{choice}") ++@cindex @code{function_return} function attribute, x86 ++On x86 targets, the @code{function_return} attribute causes the compiler ++to convert function return with @var{choice}. @samp{keep} keeps function ++return unmodified. @samp{thunk} converts function return to call and ++return thunk. @samp{thunk-inline} converts function return to inlined ++call and return thunk. @samp{thunk-extern} converts function return to ++external call and return thunk provided in a separate object file. + @end table + + On the PowerPC, the following options are allowed: +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -1091,7 +1091,7 @@ See RS/6000 and PowerPC Options. + -msse2avx -mfentry -mrecord-mcount -mnop-mcount -m8bit-idiv @gol + -mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol + -malign-data=@var{type} -mstack-protector-guard=@var{guard} @gol +--mindirect-branch=@var{choice}} ++-mindirect-branch=@var{choice} -mfunction-return=@var{choice}} + + @emph{x86 Windows Options} + @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol +@@ -24029,6 +24029,17 @@ to external call and return thunk provid + You can control this behavior for a specific function by using the + function attribute @code{indirect_branch}. @xref{Function Attributes}. + ++@item -mfunction-return=@var{choice} ++@opindex -mfunction-return ++Convert function return with @var{choice}. The default is @samp{keep}, ++which keeps function return unmodified. @samp{thunk} converts function ++return to call and return thunk. @samp{thunk-inline} converts function ++return to inlined call and return thunk. @samp{thunk-extern} converts ++function return to external call and return thunk provided in a separate ++object file. You can control this behavior for a specific function by ++using the function attribute @code{function_return}. ++@xref{Function Attributes}. ++ + @end table + + @c man end diff --git a/patches/source/gcc/0006-x86-Add-mfunction-return.diff b/patches/source/gcc/0006-x86-Add-mfunction-return.diff new file mode 100644 index 000000000..1883cc6a5 --- /dev/null +++ b/patches/source/gcc/0006-x86-Add-mfunction-return.diff @@ -0,0 +1,1409 @@ +From 357311dd400f7f72d2132f2f94161ece39bf08c6 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:10:44 +0000 +Subject: [PATCH 6/9] x86: Add -mfunction-return= + +Add -mfunction-return= option to convert function return to call and +return thunks. The default is 'keep', which keeps function return +unmodified. 'thunk' converts function return to call and return thunk. +'thunk-inline' converts function return to inlined call and return thunk. +'thunk-extern' converts function return to external call and return +thunk provided in a separate object file. You can control this behavior +for a specific function by using the function attribute function_return. + +Function return thunk is the same as memory thunk for -mindirect-branch= +where the return address is at the top of the stack: + +__x86_return_thunk: + call L2 +L1: + pause + lfence + jmp L1 +L2: + lea 8(%rsp), %rsp|lea 4(%esp), %esp + ret + +and function return becomes + + jmp __x86_return_thunk + +-mindirect-branch= tests are updated with -mfunction-return=keep to +avoid false test failures when -mfunction-return=thunk is added to +RUNTESTFLAGS for "make check". + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/i386-protos.h (ix86_output_function_return): New. + * config/i386/i386.c (ix86_set_indirect_branch_type): Also + set function_return_type. + (indirect_thunk_name): Add ret_p to indicate thunk for function + return. + (output_indirect_thunk_function): Pass false to + indirect_thunk_name. + (ix86_output_indirect_branch_via_reg): Likewise. + (ix86_output_indirect_branch_via_push): Likewise. + (output_indirect_thunk_function): Create alias for function + return thunk if regno < 0. + (ix86_output_function_return): New function. + (ix86_handle_fndecl_attribute): Handle function_return. + (ix86_attribute_table): Add function_return. + * config/i386/i386.h (machine_function): Add + function_return_type. + * config/i386/i386.md (simple_return_internal): Use + ix86_output_function_return. + (simple_return_internal_long): Likewise. + * config/i386/i386.opt (mfunction-return=): New option. + (indirect_branch): Mention -mfunction-return=. + * doc/extend.texi: Document function_return function attribute. + * doc/invoke.texi: Document -mfunction-return= option. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-1.c (dg-options): Add + -mfunction-return=keep. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-5.c: Likewise. + * gcc.target/i386/indirect-thunk-6.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-8.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + * gcc.target/i386/ret-thunk-1.c: New test. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-16.c: Likewise. + * gcc.target/i386/ret-thunk-2.c: Likewise. + * gcc.target/i386/ret-thunk-3.c: Likewise. + * gcc.target/i386/ret-thunk-4.c: Likewise. + * gcc.target/i386/ret-thunk-5.c: Likewise. + * gcc.target/i386/ret-thunk-6.c: Likewise. + * gcc.target/i386/ret-thunk-7.c: Likewise. + * gcc.target/i386/ret-thunk-8.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Likewise. + +i386: Don't use ASM_OUTPUT_DEF for TARGET_MACHO + +ASM_OUTPUT_DEF isn't defined for TARGET_MACHO. Use ASM_OUTPUT_LABEL to +generate the __x86_return_thunk label, instead of the set directive. +Update testcase to remove the __x86_return_thunk label check. Since +-fno-pic is ignored on Darwin, update testcases to sscan or "push" +only on Linux. + +gcc/ + + Backport from mainline + 2018-01-15 H.J. Lu + + PR target/83839 + * config/i386/i386.c (output_indirect_thunk_function): Use + ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO + for __x86.return_thunk. + +gcc/testsuite/ + + Backport from mainline + 2018-01-15 H.J. Lu + + PR target/83839 + * gcc.target/i386/indirect-thunk-1.c: Scan for "push" only on + Linux. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-register-1.c: Likewise. + * gcc.target/i386/indirect-thunk-register-3.c: Likewise. + * gcc.target/i386/indirect-thunk-register-4.c: Likewise. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Don't check the + __x86_return_thunk label. + Scan for "push" only for Linux. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256734 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Ubuntu note: Dropped indirect-thunk-5.c, indirect-thunk-6.c, + indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c, + indirect-thunk-extern-5.c, indirect-thunk-extern-6.c, + indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due + to gcc 5.4 and earlier not supporting the -fno-plt option. + --sbeattie,] + +--- + src/gcc/config/i386/i386-protos.h | 1 + src/gcc/config/i386/i386.c | 152 +++++++++++- + src/gcc/config/i386/i386.h | 3 + src/gcc/config/i386/i386.md | 9 + src/gcc/config/i386/i386.opt | 6 + src/gcc/doc/extend.texi | 9 + src/gcc/doc/invoke.texi | 13 - + src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 4 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 4 + src/gcc/testsuite/gcc.target/i386/ret-thunk-1.c | 13 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 23 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 23 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 22 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-16.c | 18 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-2.c | 13 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-3.c | 12 + src/gcc/testsuite/gcc.target/i386/ret-thunk-4.c | 12 + src/gcc/testsuite/gcc.target/i386/ret-thunk-5.c | 15 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-6.c | 14 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-7.c | 13 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-8.c | 14 + + src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 24 + + 48 files changed, 507 insertions(+), 66 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-10.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-11.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-12.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-13.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-14.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-15.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-16.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-3.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-4.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-5.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-6.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-7.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-8.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-9.c + +Index: b/src/gcc/config/i386/i386-protos.h +=================================================================== +--- a/src/gcc/config/i386/i386-protos.h ++++ b/src/gcc/config/i386/i386-protos.h +@@ -307,6 +307,7 @@ extern enum attr_cpu ix86_schedule; + + extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op); + extern const char * ix86_output_indirect_jmp (rtx call_op, bool ret_p); ++extern const char * ix86_output_function_return (bool long_p); + + #ifdef RTX_CODE + /* Target data for multipass lookahead scheduling. +Index: b/src/gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -5166,6 +5166,31 @@ ix86_set_indirect_branch_type (tree fnde + else + cfun->machine->indirect_branch_type = ix86_indirect_branch; + } ++ ++ if (cfun->machine->function_return_type == indirect_branch_unset) ++ { ++ tree attr = lookup_attribute ("function_return", ++ DECL_ATTRIBUTES (fndecl)); ++ if (attr != NULL) ++ { ++ tree args = TREE_VALUE (attr); ++ if (args == NULL) ++ gcc_unreachable (); ++ tree cst = TREE_VALUE (args); ++ if (strcmp (TREE_STRING_POINTER (cst), "keep") == 0) ++ cfun->machine->function_return_type = indirect_branch_keep; ++ else if (strcmp (TREE_STRING_POINTER (cst), "thunk") == 0) ++ cfun->machine->function_return_type = indirect_branch_thunk; ++ else if (strcmp (TREE_STRING_POINTER (cst), "thunk-inline") == 0) ++ cfun->machine->function_return_type = indirect_branch_thunk_inline; ++ else if (strcmp (TREE_STRING_POINTER (cst), "thunk-extern") == 0) ++ cfun->machine->function_return_type = indirect_branch_thunk_extern; ++ else ++ gcc_unreachable (); ++ } ++ else ++ cfun->machine->function_return_type = ix86_function_return; ++ } + } + + /* Establish appropriate back-end context for processing the function +@@ -9753,8 +9778,12 @@ static int indirect_thunks_bnd_used; + /* Fills in the label name that should be used for the indirect thunk. */ + + static void +-indirect_thunk_name (char name[32], int regno, bool need_bnd_p) ++indirect_thunk_name (char name[32], int regno, bool need_bnd_p, ++ bool ret_p) + { ++ if (regno >= 0 && ret_p) ++ gcc_unreachable (); ++ + if (USE_HIDDEN_LINKONCE) + { + const char *bnd = need_bnd_p ? "_bnd" : ""; +@@ -9769,7 +9798,10 @@ indirect_thunk_name (char name[32], int + bnd, reg_prefix, reg_names[regno]); + } + else +- sprintf (name, "__x86_indirect_thunk%s", bnd); ++ { ++ const char *ret = ret_p ? "return" : "indirect"; ++ sprintf (name, "__x86_%s_thunk%s", ret, bnd); ++ } + } + else + { +@@ -9782,10 +9814,20 @@ indirect_thunk_name (char name[32], int + } + else + { +- if (need_bnd_p) +- ASM_GENERATE_INTERNAL_LABEL (name, "LITB", 0); ++ if (ret_p) ++ { ++ if (need_bnd_p) ++ ASM_GENERATE_INTERNAL_LABEL (name, "LRTB", 0); ++ else ++ ASM_GENERATE_INTERNAL_LABEL (name, "LRT", 0); ++ } + else +- ASM_GENERATE_INTERNAL_LABEL (name, "LIT", 0); ++ { ++ if (need_bnd_p) ++ ASM_GENERATE_INTERNAL_LABEL (name, "LITB", 0); ++ else ++ ASM_GENERATE_INTERNAL_LABEL (name, "LIT", 0); ++ } + } + } + } +@@ -9880,7 +9922,7 @@ output_indirect_thunk_function (bool nee + tree decl; + + /* Create __x86_indirect_thunk/__x86_indirect_thunk_bnd. */ +- indirect_thunk_name (name, regno, need_bnd_p); ++ indirect_thunk_name (name, regno, need_bnd_p, false); + decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, + get_identifier (name), + build_function_type_list (void_type_node, NULL_TREE)); +@@ -9923,6 +9965,36 @@ output_indirect_thunk_function (bool nee + ASM_OUTPUT_LABEL (asm_out_file, name); + } + ++ if (regno < 0) ++ { ++ /* Create alias for __x86.return_thunk/__x86.return_thunk_bnd. */ ++ char alias[32]; ++ ++ indirect_thunk_name (alias, regno, need_bnd_p, true); ++#if TARGET_MACHO ++ if (TARGET_MACHO) ++ { ++ fputs ("\t.weak_definition\t", asm_out_file); ++ assemble_name (asm_out_file, alias); ++ fputs ("\n\t.private_extern\t", asm_out_file); ++ assemble_name (asm_out_file, alias); ++ putc ('\n', asm_out_file); ++ ASM_OUTPUT_LABEL (asm_out_file, alias); ++ } ++#else ++ ASM_OUTPUT_DEF (asm_out_file, alias, name); ++ if (USE_HIDDEN_LINKONCE) ++ { ++ fputs ("\t.globl\t", asm_out_file); ++ assemble_name (asm_out_file, alias); ++ putc ('\n', asm_out_file); ++ fputs ("\t.hidden\t", asm_out_file); ++ assemble_name (asm_out_file, alias); ++ putc ('\n', asm_out_file); ++ } ++#endif ++ } ++ + DECL_INITIAL (decl) = make_node (BLOCK); + current_function_decl = decl; + allocate_struct_function (decl, false); +@@ -26121,7 +26193,7 @@ ix86_output_indirect_branch_via_reg (rtx + else + indirect_thunks_used |= 1 << i; + } +- indirect_thunk_name (thunk_name_buf, regno, need_bnd_p); ++ indirect_thunk_name (thunk_name_buf, regno, need_bnd_p, false); + thunk_name = thunk_name_buf; + } + else +@@ -26230,7 +26302,7 @@ ix86_output_indirect_branch_via_push (rt + else + indirect_thunk_needed = true; + } +- indirect_thunk_name (thunk_name_buf, regno, need_bnd_p); ++ indirect_thunk_name (thunk_name_buf, regno, need_bnd_p, false); + thunk_name = thunk_name_buf; + } + else +@@ -26365,6 +26437,46 @@ ix86_output_indirect_jmp (rtx call_op, b + return "%!jmp\t%A0"; + } + ++/* Output function return. CALL_OP is the jump target. Add a REP ++ prefix to RET if LONG_P is true and function return is kept. */ ++ ++const char * ++ix86_output_function_return (bool long_p) ++{ ++ if (cfun->machine->function_return_type != indirect_branch_keep) ++ { ++ char thunk_name[32]; ++ bool need_bnd_p = ix86_bnd_prefixed_insn_p (current_output_insn); ++ ++ if (cfun->machine->function_return_type ++ != indirect_branch_thunk_inline) ++ { ++ bool need_thunk = (cfun->machine->function_return_type ++ == indirect_branch_thunk); ++ indirect_thunk_name (thunk_name, -1, need_bnd_p, true); ++ if (need_bnd_p) ++ { ++ indirect_thunk_bnd_needed |= need_thunk; ++ fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ } ++ else ++ { ++ indirect_thunk_needed |= need_thunk; ++ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ } ++ } ++ else ++ output_indirect_thunk (need_bnd_p, -1); ++ ++ return ""; ++ } ++ ++ if (!long_p || ix86_bnd_prefixed_insn_p (current_output_insn)) ++ return "%!ret"; ++ ++ return "rep%; ret"; ++} ++ + /* Output the assembly for a call instruction. */ + + const char * +@@ -43625,6 +43737,28 @@ ix86_handle_fndecl_attribute (tree *node + } + } + ++ if (is_attribute_p ("function_return", name)) ++ { ++ tree cst = TREE_VALUE (args); ++ if (TREE_CODE (cst) != STRING_CST) ++ { ++ warning (OPT_Wattributes, ++ "%qE attribute requires a string constant argument", ++ name); ++ *no_add_attrs = true; ++ } ++ else if (strcmp (TREE_STRING_POINTER (cst), "keep") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-inline") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-extern") != 0) ++ { ++ warning (OPT_Wattributes, ++ "argument to %qE attribute is not " ++ "(keep|thunk|thunk-inline|thunk-extern)", name); ++ *no_add_attrs = true; ++ } ++ } ++ + return NULL_TREE; + } + +@@ -47519,6 +47653,8 @@ static const struct attribute_spec ix86_ + ix86_handle_callee_pop_aggregate_return, true }, + { "indirect_branch", 1, 1, true, false, false, + ix86_handle_fndecl_attribute, false }, ++ { "function_return", 1, 1, true, false, false, ++ ix86_handle_fndecl_attribute, false }, + + /* End element. */ + { NULL, 0, 0, false, false, false, NULL, false } +Index: b/src/gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -2562,6 +2562,9 @@ struct GTY(()) machine_function { + "indirect_jump" or "tablejump". */ + BOOL_BITFIELD has_local_indirect_jump : 1; + ++ /* How to generate function return. */ ++ ENUM_BITFIELD(indirect_branch) function_return_type : 3; ++ + /* During prologue/epilogue generation, the current frame state. + Otherwise, the frame state at the end of the prologue. */ + struct machine_frame_state fs; +Index: b/src/gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md ++++ b/src/gcc/config/i386/i386.md +@@ -12169,7 +12169,7 @@ + (define_insn "simple_return_internal" + [(simple_return)] + "reload_completed" +- "%!ret" ++ "* return ix86_output_function_return (false);" + [(set_attr "length_nobnd" "1") + (set_attr "atom_unit" "jeu") + (set_attr "length_immediate" "0") +@@ -12182,12 +12182,7 @@ + [(simple_return) + (unspec [(const_int 0)] UNSPEC_REP)] + "reload_completed" +-{ +- if (ix86_bnd_prefixed_insn_p (insn)) +- return "%!ret"; +- +- return "rep%; ret"; +-} ++ "* return ix86_output_function_return (true);" + [(set_attr "length" "2") + (set_attr "atom_unit" "jeu") + (set_attr "length_immediate" "0") +Index: b/src/gcc/config/i386/i386.opt +=================================================================== +--- a/src/gcc/config/i386/i386.opt ++++ b/src/gcc/config/i386/i386.opt +@@ -881,9 +881,13 @@ mindirect-branch= + Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep) + Convert indirect call and jump to call and return thunks. + ++mfunction-return= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep) ++Convert function return to call and return thunk. ++ + Enum + Name(indirect_branch) Type(enum indirect_branch) +-Known indirect branch choices (for use with the -mindirect-branch= option): ++Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options): + + EnumValue + Enum(indirect_branch) String(keep) Value(indirect_branch_keep) +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,7 +11,7 @@ male_indirect_jump (long offset) + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,7 +11,7 @@ male_indirect_jump (long offset) + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + void func0 (void); + void func1 (void); +@@ -35,7 +35,7 @@ bar (int i) + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -14,7 +14,7 @@ male_indirect_jump (long offset) + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -14,7 +14,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -13,7 +13,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -14,7 +14,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -13,7 +13,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ + + void func0 (void); + void func1 (void); +@@ -36,7 +36,7 @@ bar (int i) + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + void func0 (void); + void func1 (void); +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile { target { ! x32 } } } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ + + void (*dispatch) (char *); + char buf[10]; +@@ -10,7 +10,7 @@ foo (void) + dispatch (buf); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ + /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile { target { ! x32 } } } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ + + void (*dispatch) (char *); + char buf[10]; +@@ -11,7 +11,7 @@ foo (void) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ + /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ + /* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,7 +11,7 @@ male_indirect_jump (long offset) + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,7 +11,7 @@ male_indirect_jump (long offset) + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + void func0 (void); + void func1 (void); +@@ -35,7 +35,7 @@ bar (int i) + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,7 +11,7 @@ male_indirect_jump (long offset) + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,7 +11,7 @@ male_indirect_jump (long offset) + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +12,7 @@ male_indirect_jump (long offset) + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + void func0 (void); + void func1 (void); +@@ -35,7 +35,7 @@ bar (int i) + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-1.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk" } */ ++ ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-times {\tpause} 2 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-times {\tpause} 1 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-times {\tpause} 1 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++ ++extern void (*bar) (void); ++extern int foo (void) __attribute__ ((function_return("thunk"))); ++ ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-times {\tpause} 2 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++__attribute__ ((function_return("thunk-inline"))) ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\tpause} 1 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++__attribute__ ((function_return("thunk-extern"), indirect_branch("thunk"))) ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-times {\tpause} 1 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-16.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-16.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++__attribute__ ((function_return("keep"), indirect_branch("keep"))) ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-2.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk-inline" } */ ++ ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-3.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-3.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk-extern" } */ ++ ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-4.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-4.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep" } */ ++ ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-5.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-5.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep" } */ ++ ++extern void foo (void) __attribute__ ((function_return("thunk"))); ++ ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-6.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-6.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep" } */ ++ ++__attribute__ ((function_return("thunk-inline"))) ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-7.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-7.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=keep" } */ ++ ++__attribute__ ((function_return("thunk-extern"))) ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-8.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-8.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk-inline" } */ ++ ++extern void foo (void) __attribute__ ((function_return("keep"))); ++ ++void ++foo (void) ++{ ++} ++ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c +@@ -0,0 +1,24 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */ ++ ++extern void (*bar) (void); ++ ++int ++foo (void) ++{ ++ bar (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk:" } } */ ++/* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times {\tpause} 2 { target { x32 } } } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 2 { target { x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ diff --git a/patches/source/gcc/0007-x86-Add-mindirect-branch-register-doc.diff b/patches/source/gcc/0007-x86-Add-mindirect-branch-register-doc.diff new file mode 100644 index 000000000..9780bfc91 --- /dev/null +++ b/patches/source/gcc/0007-x86-Add-mindirect-branch-register-doc.diff @@ -0,0 +1,231 @@ +From 86118fbdbafe6af54b2da467e1073c49e1742116 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:17:49 +0000 +Subject: [PATCH 7/9] x86: Add -mindirect-branch-register (documentation) + +Add -mindirect-branch-register to force indirect branch via register. +This is implemented by disabling patterns of indirect branch via memory, +similar to TARGET_X32. + +-mindirect-branch= and -mfunction-return= tests are updated with +-mno-indirect-branch-register to avoid false test failures when +-mindirect-branch-register is added to RUNTESTFLAGS for "make check". + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/constraints.md (Bs): Disallow memory operand for + -mindirect-branch-register. + (Bw): Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + * config/i386/i386.md (indirect_jump): Call convert_memory_address + for -mindirect-branch-register. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Disallow peepholes of indirect call and jump via memory for + -mindirect-branch-register. + (*call_pop): Replace m with Bw. + (*call_value_pop): Likewise. + (*sibcall_pop_memory): Replace m with Bs. + * config/i386/i386.opt (mindirect-branch-register): New option. + * doc/invoke.texi: Document -mindirect-branch-register option. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-1.c (dg-options): Add + -mno-indirect-branch-register. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-5.c: Likewise. + * gcc.target/i386/indirect-thunk-6.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Likewise. + * gcc.target/i386/indirect-thunk-register-1.c: New test. + * gcc.target/i386/indirect-thunk-register-2.c: Likewise. + * gcc.target/i386/indirect-thunk-register-3.c: Likewise. + +i386: Rename to ix86_indirect_branch_register + +Rename the variable for -mindirect-branch-register to +ix86_indirect_branch_register to match the command-line option name. + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/constraints.md (Bs): Replace + ix86_indirect_branch_thunk_register with + ix86_indirect_branch_register. + (Bw): Likewise. + * config/i386/i386.md (indirect_jump): Likewise. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Peepholes of indirect call and jump via memory: Likewise. + * config/i386/i386.opt: Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + +x86: Rewrite ix86_indirect_branch_register logic + +Rewrite ix86_indirect_branch_register logic with + +(and (not (match_test "ix86_indirect_branch_register")) + (original condition before r256662)) + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/predicates.md (constant_call_address_operand): + Rewrite ix86_indirect_branch_register logic. + (sibcall_insn_operand): Likewise. + +Don't check ix86_indirect_branch_register for GOT operand + +Since GOT_memory_operand and GOT32_symbol_operand are simple pattern +matches, don't check ix86_indirect_branch_register here. If needed, +-mindirect-branch= will convert indirect branch via GOT slot to a call +and return thunk. + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/constraints.md (Bs): Update + ix86_indirect_branch_register check. Don't check + ix86_indirect_branch_register with GOT_memory_operand. + (Bw): Likewise. + * config/i386/predicates.md (GOT_memory_operand): Don't check + ix86_indirect_branch_register here. + (GOT32_symbol_operand): Likewise. + +i386: Rewrite indirect_branch_operand logic + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/predicates.md (indirect_branch_operand): Rewrite + ix86_indirect_branch_register logic. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256735 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Ubuntu note: Dropped indirect-thunk-5.c, indirect-thunk-6.c, + indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c, + indirect-thunk-extern-5.c, indirect-thunk-extern-6.c, + indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due + to gcc 5.4 and earlier not supporting the -fno-plt option. + --sbeattie,] +--- + src/gcc/config/i386/constraints.md | 6 + + src/gcc/config/i386/i386.md | 34 ++++++---- + src/gcc/config/i386/i386.opt | 4 + + src/gcc/config/i386/predicates.md | 9 +- + src/gcc/doc/invoke.texi | 7 +- + src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c | 22 ++++++ + src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c | 20 +++++ + src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c | 19 +++++ + src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 2 + 39 files changed, 134 insertions(+), 49 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -1091,7 +1091,8 @@ See RS/6000 and PowerPC Options. + -msse2avx -mfentry -mrecord-mcount -mnop-mcount -m8bit-idiv @gol + -mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol + -malign-data=@var{type} -mstack-protector-guard=@var{guard} @gol +--mindirect-branch=@var{choice} -mfunction-return=@var{choice}} ++-mindirect-branch=@var{choice} -mfunction-return=@var{choice} @gol ++-mindirect-branch-register} + + @emph{x86 Windows Options} + @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol +@@ -24040,6 +24041,10 @@ object file. You can control this behav + using the function attribute @code{function_return}. + @xref{Function Attributes}. + ++@item -mindirect-branch-register ++@opindex -mindirect-branch-register ++Force indirect call and jump via register. ++ + @end table + + @c man end diff --git a/patches/source/gcc/0007-x86-Add-mindirect-branch-register.diff b/patches/source/gcc/0007-x86-Add-mindirect-branch-register.diff new file mode 100644 index 000000000..211368991 --- /dev/null +++ b/patches/source/gcc/0007-x86-Add-mindirect-branch-register.diff @@ -0,0 +1,812 @@ +From 86118fbdbafe6af54b2da467e1073c49e1742116 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:17:49 +0000 +Subject: [PATCH 7/9] x86: Add -mindirect-branch-register + +Add -mindirect-branch-register to force indirect branch via register. +This is implemented by disabling patterns of indirect branch via memory, +similar to TARGET_X32. + +-mindirect-branch= and -mfunction-return= tests are updated with +-mno-indirect-branch-register to avoid false test failures when +-mindirect-branch-register is added to RUNTESTFLAGS for "make check". + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/constraints.md (Bs): Disallow memory operand for + -mindirect-branch-register. + (Bw): Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + * config/i386/i386.md (indirect_jump): Call convert_memory_address + for -mindirect-branch-register. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Disallow peepholes of indirect call and jump via memory for + -mindirect-branch-register. + (*call_pop): Replace m with Bw. + (*call_value_pop): Likewise. + (*sibcall_pop_memory): Replace m with Bs. + * config/i386/i386.opt (mindirect-branch-register): New option. + * doc/invoke.texi: Document -mindirect-branch-register option. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-1.c (dg-options): Add + -mno-indirect-branch-register. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-5.c: Likewise. + * gcc.target/i386/indirect-thunk-6.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. + * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Likewise. + * gcc.target/i386/indirect-thunk-register-1.c: New test. + * gcc.target/i386/indirect-thunk-register-2.c: Likewise. + * gcc.target/i386/indirect-thunk-register-3.c: Likewise. + +i386: Rename to ix86_indirect_branch_register + +Rename the variable for -mindirect-branch-register to +ix86_indirect_branch_register to match the command-line option name. + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/constraints.md (Bs): Replace + ix86_indirect_branch_thunk_register with + ix86_indirect_branch_register. + (Bw): Likewise. + * config/i386/i386.md (indirect_jump): Likewise. + (tablejump): Likewise. + (*sibcall_memory): Likewise. + (*sibcall_value_memory): Likewise. + Peepholes of indirect call and jump via memory: Likewise. + * config/i386/i386.opt: Likewise. + * config/i386/predicates.md (indirect_branch_operand): Likewise. + (GOT_memory_operand): Likewise. + (call_insn_operand): Likewise. + (sibcall_insn_operand): Likewise. + (GOT32_symbol_operand): Likewise. + +x86: Rewrite ix86_indirect_branch_register logic + +Rewrite ix86_indirect_branch_register logic with + +(and (not (match_test "ix86_indirect_branch_register")) + (original condition before r256662)) + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/predicates.md (constant_call_address_operand): + Rewrite ix86_indirect_branch_register logic. + (sibcall_insn_operand): Likewise. + +Don't check ix86_indirect_branch_register for GOT operand + +Since GOT_memory_operand and GOT32_symbol_operand are simple pattern +matches, don't check ix86_indirect_branch_register here. If needed, +-mindirect-branch= will convert indirect branch via GOT slot to a call +and return thunk. + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/constraints.md (Bs): Update + ix86_indirect_branch_register check. Don't check + ix86_indirect_branch_register with GOT_memory_operand. + (Bw): Likewise. + * config/i386/predicates.md (GOT_memory_operand): Don't check + ix86_indirect_branch_register here. + (GOT32_symbol_operand): Likewise. + +i386: Rewrite indirect_branch_operand logic + + Backport from mainline + 2018-01-15 H.J. Lu + + * config/i386/predicates.md (indirect_branch_operand): Rewrite + ix86_indirect_branch_register logic. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256735 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Ubuntu note: Dropped indirect-thunk-5.c, indirect-thunk-6.c, + indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c, + indirect-thunk-extern-5.c, indirect-thunk-extern-6.c, + indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due + to gcc 5.4 and earlier not supporting the -fno-plt option. + --sbeattie,] +--- + src/gcc/config/i386/constraints.md | 6 + + src/gcc/config/i386/i386.md | 34 ++++++---- + src/gcc/config/i386/i386.opt | 4 + + src/gcc/config/i386/predicates.md | 9 +- + src/gcc/doc/invoke.texi | 7 +- + src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 2 + src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c | 22 ++++++ + src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c | 20 +++++ + src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c | 19 +++++ + src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 2 + src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 2 + 39 files changed, 134 insertions(+), 49 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c + +Index: b/src/gcc/config/i386/constraints.md +=================================================================== +--- a/src/gcc/config/i386/constraints.md ++++ b/src/gcc/config/i386/constraints.md +@@ -157,12 +157,14 @@ + + (define_constraint "Bs" + "@internal Sibcall memory operand." +- (and (not (match_test "TARGET_X32")) ++ (and (not (match_test "ix86_indirect_branch_register")) ++ (not (match_test "TARGET_X32")) + (match_operand 0 "sibcall_memory_operand"))) + + (define_constraint "Bw" + "@internal Call memory operand." +- (and (not (match_test "TARGET_X32")) ++ (and (not (match_test "ix86_indirect_branch_register")) ++ (not (match_test "TARGET_X32")) + (match_operand 0 "memory_operand"))) + + (define_constraint "Bz" +Index: b/src/gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md ++++ b/src/gcc/config/i386/i386.md +@@ -11554,7 +11554,7 @@ + [(set (pc) (match_operand 0 "indirect_branch_operand"))] + "" + { +- if (TARGET_X32) ++ if (TARGET_X32 || ix86_indirect_branch_register) + operands[0] = convert_memory_address (word_mode, operands[0]); + cfun->machine->has_local_indirect_jump = true; + }) +@@ -11607,7 +11607,7 @@ + OPTAB_DIRECT); + } + +- if (TARGET_X32) ++ if (TARGET_X32 || ix86_indirect_branch_register) + operands[0] = convert_memory_address (word_mode, operands[0]); + cfun->machine->has_local_indirect_jump = true; + }) +@@ -11764,7 +11764,7 @@ + [(call (mem:QI (match_operand:W 0 "memory_operand" "m")) + (match_operand 1)) + (unspec [(const_int 0)] UNSPEC_PEEPSIB)] +- "!TARGET_X32" ++ "!TARGET_X32 && !ix86_indirect_branch_register" + "* return ix86_output_call_insn (insn, operands[0]);" + [(set_attr "type" "call")]) + +@@ -11773,7 +11773,9 @@ + (match_operand:W 1 "memory_operand")) + (call (mem:QI (match_dup 0)) + (match_operand 3))] +- "!TARGET_X32 && SIBLING_CALL_P (peep2_next_insn (1)) ++ "!TARGET_X32 ++ && !ix86_indirect_branch_register ++ && SIBLING_CALL_P (peep2_next_insn (1)) + && peep2_reg_dead_p (2, operands[0])" + [(parallel [(call (mem:QI (match_dup 1)) + (match_dup 3)) +@@ -11785,7 +11787,9 @@ + (unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE) + (call (mem:QI (match_dup 0)) + (match_operand 3))] +- "!TARGET_X32 && SIBLING_CALL_P (peep2_next_insn (2)) ++ "!TARGET_X32 ++ && !ix86_indirect_branch_register ++ && SIBLING_CALL_P (peep2_next_insn (2)) + && peep2_reg_dead_p (3, operands[0])" + [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE) + (parallel [(call (mem:QI (match_dup 1)) +@@ -11806,7 +11810,7 @@ + }) + + (define_insn "*call_pop" +- [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lmBz")) ++ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lBwBz")) + (match_operand 1)) + (set (reg:SI SP_REG) + (plus:SI (reg:SI SP_REG) +@@ -11826,7 +11830,7 @@ + [(set_attr "type" "call")]) + + (define_insn "*sibcall_pop_memory" +- [(call (mem:QI (match_operand:SI 0 "memory_operand" "m")) ++ [(call (mem:QI (match_operand:SI 0 "memory_operand" "Bs")) + (match_operand 1)) + (set (reg:SI SP_REG) + (plus:SI (reg:SI SP_REG) +@@ -11878,7 +11882,9 @@ + [(set (match_operand:W 0 "register_operand") + (match_operand:W 1 "memory_operand")) + (set (pc) (match_dup 0))] +- "!TARGET_X32 && peep2_reg_dead_p (2, operands[0])" ++ "!TARGET_X32 ++ && !ix86_indirect_branch_register ++ && peep2_reg_dead_p (2, operands[0])" + [(set (pc) (match_dup 1))]) + + ;; Call subroutine, returning value in operand 0 +@@ -11928,7 +11934,7 @@ + (call (mem:QI (match_operand:W 1 "memory_operand" "m")) + (match_operand 2))) + (unspec [(const_int 0)] UNSPEC_PEEPSIB)] +- "!TARGET_X32" ++ "!TARGET_X32 && !ix86_indirect_branch_register" + "* return ix86_output_call_insn (insn, operands[1]);" + [(set_attr "type" "callv")]) + +@@ -11938,7 +11944,9 @@ + (set (match_operand 2) + (call (mem:QI (match_dup 0)) + (match_operand 3)))] +- "!TARGET_X32 && SIBLING_CALL_P (peep2_next_insn (1)) ++ "!TARGET_X32 ++ && !ix86_indirect_branch_register ++ && SIBLING_CALL_P (peep2_next_insn (1)) + && peep2_reg_dead_p (2, operands[0])" + [(parallel [(set (match_dup 2) + (call (mem:QI (match_dup 1)) +@@ -11952,7 +11960,9 @@ + (set (match_operand 2) + (call (mem:QI (match_dup 0)) + (match_operand 3)))] +- "!TARGET_X32 && SIBLING_CALL_P (peep2_next_insn (2)) ++ "!TARGET_X32 ++ && !ix86_indirect_branch_register ++ && SIBLING_CALL_P (peep2_next_insn (2)) + && peep2_reg_dead_p (3, operands[0])" + [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE) + (parallel [(set (match_dup 2) +@@ -11976,7 +11986,7 @@ + + (define_insn "*call_value_pop" + [(set (match_operand 0) +- (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lmBz")) ++ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lBwBz")) + (match_operand 2))) + (set (reg:SI SP_REG) + (plus:SI (reg:SI SP_REG) +Index: b/src/gcc/config/i386/i386.opt +=================================================================== +--- a/src/gcc/config/i386/i386.opt ++++ b/src/gcc/config/i386/i386.opt +@@ -900,3 +900,7 @@ Enum(indirect_branch) String(thunk-inlin + + EnumValue + Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern) ++ ++mindirect-branch-register ++Target Report Var(ix86_indirect_branch_register) Init(0) ++Force indirect call and jump via register. +Index: b/src/gcc/config/i386/predicates.md +=================================================================== +--- a/src/gcc/config/i386/predicates.md ++++ b/src/gcc/config/i386/predicates.md +@@ -607,7 +607,8 @@ + ;; Test for a valid operand for indirect branch. + (define_predicate "indirect_branch_operand" + (ior (match_operand 0 "register_operand") +- (and (not (match_test "TARGET_X32")) ++ (and (not (match_test "ix86_indirect_branch_register")) ++ (not (match_test "TARGET_X32")) + (match_operand 0 "memory_operand")))) + + ;; Test for a valid operand for a call instruction. +@@ -616,7 +617,8 @@ + (ior (match_test "constant_call_address_operand + (op, mode == VOIDmode ? mode : Pmode)") + (match_operand 0 "call_register_no_elim_operand") +- (and (not (match_test "TARGET_X32")) ++ (and (not (match_test "ix86_indirect_branch_register")) ++ (not (match_test "TARGET_X32")) + (match_operand 0 "memory_operand")))) + + ;; Similarly, but for tail calls, in which we cannot allow memory references. +@@ -624,7 +626,8 @@ + (ior (match_test "constant_call_address_operand + (op, mode == VOIDmode ? mode : Pmode)") + (match_operand 0 "register_no_elim_operand") +- (and (not (match_test "TARGET_X32")) ++ (and (not (match_test "ix86_indirect_branch_register")) ++ (not (match_test "TARGET_X32")) + (match_operand 0 "sibcall_memory_operand")))) + + ;; Match exactly zero. +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + void func0 (void); + void func1 (void); +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ + + void func0 (void); + void func1 (void); +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile { target { ! x32 } } } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ + + void (*dispatch) (char *); + char buf[10]; +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile { target { ! x32 } } } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ + + void (*dispatch) (char *); + char buf[10]; +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + void func0 (void); + void func1 (void); +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + typedef void (*dispatch_t)(long offset); + +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + void func0 (void); + void func1 (void); +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk\n" } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk_bnd\n" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ++/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register -fno-pic" } */ ++ ++typedef void (*dispatch_t)(long offset); ++ ++dispatch_t dispatch; ++ ++void ++male_indirect_jump (long offset) ++{ ++ dispatch(offset); ++} ++ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ++/* { dg-final { scan-assembler-not {\t(pause|pause|nop)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */ + + extern void (*bar) (void); + +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */ + + extern void (*bar) (void); + +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ + + extern void (*bar) (void); + +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ + + extern void (*bar) (void); + extern int foo (void) __attribute__ ((function_return("thunk"))); +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ + + extern void (*bar) (void); + +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */ + + extern void (*bar) (void); + +Index: b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */ + + extern void (*bar) (void); + diff --git a/patches/source/gcc/0008-x86-Add-V-register-operand-modifier-doc.diff b/patches/source/gcc/0008-x86-Add-V-register-operand-modifier-doc.diff new file mode 100644 index 000000000..b3bd93a21 --- /dev/null +++ b/patches/source/gcc/0008-x86-Add-V-register-operand-modifier-doc.diff @@ -0,0 +1,65 @@ +From 8a47615dd04a02fdae9691f5ad73fd5a5530c156 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:19:51 +0000 +Subject: [PATCH 8/9] x86: Add 'V' register operand modifier (documentation) + +Add 'V', a special modifier which prints the name of the full integer +register without '%'. For + +extern void (*func_p) (void); + +void +foo (void) +{ + asm ("call __x86_indirect_thunk_%V0" : : "a" (func_p)); +} + +it generates: + +foo: + movq func_p(%rip), %rax + call __x86_indirect_thunk_rax + ret + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/i386.c (print_reg): Print the name of the full + integer register without '%'. + (ix86_print_operand): Handle 'V'. + * doc/extend.texi: Document 'V' modifier. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-register-4.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256736 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 10 ++++++++++ + gcc/config/i386/i386.c | 13 ++++++++++++- + gcc/doc/extend.texi | 3 +++ + gcc/testsuite/ChangeLog | 7 +++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c | 13 +++++++++++++ + 5 files changed, 45 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c + +diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi +index 46e0a36..9db9e0e 100644 +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -8778,6 +8778,9 @@ The table below shows the list of supported modifiers and their effects. + @tab @code{2} + @end multitable + ++@code{V} is a special modifier which prints the name of the full integer ++register without @code{%}. ++ + @anchor{x86floatingpointasmoperands} + @subsubsection x86 Floating-Point @code{asm} Operands + diff --git a/patches/source/gcc/0008-x86-Add-V-register-operand-modifier.diff b/patches/source/gcc/0008-x86-Add-V-register-operand-modifier.diff new file mode 100644 index 000000000..fb1ccd988 --- /dev/null +++ b/patches/source/gcc/0008-x86-Add-V-register-operand-modifier.diff @@ -0,0 +1,125 @@ +From 8a47615dd04a02fdae9691f5ad73fd5a5530c156 Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:19:51 +0000 +Subject: [PATCH 8/9] x86: Add 'V' register operand modifier + +Add 'V', a special modifier which prints the name of the full integer +register without '%'. For + +extern void (*func_p) (void); + +void +foo (void) +{ + asm ("call __x86_indirect_thunk_%V0" : : "a" (func_p)); +} + +it generates: + +foo: + movq func_p(%rip), %rax + call __x86_indirect_thunk_rax + ret + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/i386.c (print_reg): Print the name of the full + integer register without '%'. + (ix86_print_operand): Handle 'V'. + * doc/extend.texi: Document 'V' modifier. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-register-4.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256736 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 10 ++++++++++ + gcc/config/i386/i386.c | 13 ++++++++++++- + gcc/doc/extend.texi | 3 +++ + gcc/testsuite/ChangeLog | 7 +++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c | 13 +++++++++++++ + 5 files changed, 45 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c + +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index 8fb8902..1bbdd0c 100644 +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -17941,6 +17941,7 @@ put_condition_code (enum rtx_code code, machine_mode mode, bool reverse, + If CODE is 'h', pretend the reg is the 'high' byte register. + If CODE is 'y', print "st(0)" instead of "st", if the reg is stack op. + If CODE is 'd', duplicate the operand for AVX instruction. ++ If CODE is 'V', print naked full integer register name without %. + */ + + void +@@ -17951,7 +17952,7 @@ print_reg (rtx x, int code, FILE *file) + unsigned int regno; + bool duplicated = code == 'd' && TARGET_AVX; + +- if (ASSEMBLER_DIALECT == ASM_ATT) ++ if (ASSEMBLER_DIALECT == ASM_ATT && code != 'V') + putc ('%', file); + + if (x == pc_rtx) +@@ -17999,6 +18000,14 @@ print_reg (rtx x, int code, FILE *file) + else + code = GET_MODE_SIZE (GET_MODE (x)); + ++ if (code == 'V') ++ { ++ if (GENERAL_REGNO_P (regno)) ++ code = GET_MODE_SIZE (word_mode); ++ else ++ error ("'V' modifier on non-integer register"); ++ } ++ + /* Irritatingly, AMD extended registers use different naming convention + from the normal registers: "r%d[bwd]" */ + if (REX_INT_REGNO_P (regno)) +@@ -18118,6 +18127,7 @@ print_reg (rtx x, int code, FILE *file) + & -- print some in-use local-dynamic symbol name. + H -- print a memory address offset by 8; used for sse high-parts + Y -- print condition for XOP pcom* instruction. ++ V -- print naked full integer register name without %. + + -- print a branch hint as 'cs' or 'ds' prefix + ; -- print a semicolon (after prefixes due to bug in older gas). + ~ -- print "i" if TARGET_AVX2, "f" otherwise. +@@ -18342,6 +18352,7 @@ ix86_print_operand (FILE *file, rtx x, int code) + case 'X': + case 'P': + case 'p': ++ case 'V': + break; + + case 's': +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c +new file mode 100644 +index 0000000..f0cd9b7 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mindirect-branch=keep -fno-pic" } */ ++ ++extern void (*func_p) (void); ++ ++void ++foo (void) ++{ ++ asm("call __x86_indirect_thunk_%V0" : : "a" (func_p)); ++} ++ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_eax" { target ia32 } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_rax" { target { ! ia32 } } } } */ +-- +2.7.4 + diff --git a/patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff b/patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff new file mode 100644 index 000000000..fdaab625a --- /dev/null +++ b/patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff @@ -0,0 +1,275 @@ +From 5d1c53c6fd593de2360c1a2ae44ebf5fa3c5263b Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:22:01 +0000 +Subject: [PATCH 9/9] x86: Disallow -mindirect-branch=/-mfunction-return= with + -mcmodel=large + +Since the thunk function may not be reachable in large code model, +-mcmodel=large is incompatible with -mindirect-branch=thunk, +-mindirect-branch=thunk-extern, -mfunction-return=thunk and +-mfunction-return=thunk-extern. Issue an error when they are used with +-mcmodel=large. + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow + -mcmodel=large with -mindirect-branch=thunk, + -mindirect-branch=thunk-extern, -mfunction-return=thunk and + -mfunction-return=thunk-extern. + * doc/invoke.texi: Document -mcmodel=large is incompatible with + -mindirect-branch=thunk, -mindirect-branch=thunk-extern, + -mfunction-return=thunk and -mfunction-return=thunk-extern. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-10.c: New test. + * gcc.target/i386/indirect-thunk-8.c: Likewise. + * gcc.target/i386/indirect-thunk-9.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-10.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-11.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-9.c: Likewise. + * gcc.target/i386/ret-thunk-17.c: Likewise. + * gcc.target/i386/ret-thunk-18.c: Likewise. + * gcc.target/i386/ret-thunk-19.c: Likewise. + * gcc.target/i386/ret-thunk-20.c: Likewise. + * gcc.target/i386/ret-thunk-21.c: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256737 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 13 +++++++++++ + gcc/config/i386/i386.c | 26 ++++++++++++++++++++++ + gcc/doc/invoke.texi | 11 +++++++++ + gcc/testsuite/ChangeLog | 17 ++++++++++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-10.c | 7 ++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-8.c | 7 ++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-9.c | 7 ++++++ + .../gcc.target/i386/indirect-thunk-attr-10.c | 9 ++++++++ + .../gcc.target/i386/indirect-thunk-attr-11.c | 9 ++++++++ + .../gcc.target/i386/indirect-thunk-attr-9.c | 9 ++++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-17.c | 7 ++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-18.c | 8 +++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-19.c | 8 +++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-20.c | 9 ++++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-21.c | 9 ++++++++ + 15 files changed, 156 insertions(+) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-10.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-8.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-9.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-17.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-18.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-19.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-20.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-21.c + +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index 1bbdd0c..e758387 100644 +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -7187,6 +7187,19 @@ ix86_set_indirect_branch_type (tree fndecl) + } + else + cfun->machine->indirect_branch_type = ix86_indirect_branch; ++ ++ /* -mcmodel=large is not compatible with -mindirect-branch=thunk ++ nor -mindirect-branch=thunk-extern. */ ++ if ((ix86_cmodel == CM_LARGE || ix86_cmodel == CM_LARGE_PIC) ++ && ((cfun->machine->indirect_branch_type ++ == indirect_branch_thunk_extern) ++ || (cfun->machine->indirect_branch_type ++ == indirect_branch_thunk))) ++ error ("%<-mindirect-branch=%s%> and %<-mcmodel=large%> are not " ++ "compatible", ++ ((cfun->machine->indirect_branch_type ++ == indirect_branch_thunk_extern) ++ ? "thunk-extern" : "thunk")); + } + + if (cfun->machine->function_return_type == indirect_branch_unset) +@@ -7212,6 +7225,19 @@ ix86_set_indirect_branch_type (tree fndecl) + } + else + cfun->machine->function_return_type = ix86_function_return; ++ ++ /* -mcmodel=large is not compatible with -mfunction-return=thunk ++ nor -mfunction-return=thunk-extern. */ ++ if ((ix86_cmodel == CM_LARGE || ix86_cmodel == CM_LARGE_PIC) ++ && ((cfun->machine->function_return_type ++ == indirect_branch_thunk_extern) ++ || (cfun->machine->function_return_type ++ == indirect_branch_thunk))) ++ error ("%<-mfunction-return=%s%> and %<-mcmodel=large%> are not " ++ "compatible", ++ ((cfun->machine->function_return_type ++ == indirect_branch_thunk_extern) ++ ? "thunk-extern" : "thunk")); + } + } + +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-10.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-10.c +new file mode 100644 +index 0000000..a0674bd +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-10.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -mfunction-return=keep -mcmodel=large" } */ ++ ++void ++bar (void) ++{ ++} +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-8.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-8.c +new file mode 100644 +index 0000000..7a80a89 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-8.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -mfunction-return=keep -mcmodel=large" } */ ++ ++void ++bar (void) ++{ /* { dg-error "'-mindirect-branch=thunk' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-9.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-9.c +new file mode 100644 +index 0000000..d4d45c5 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-9.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -mfunction-return=keep -mcmodel=large" } */ ++ ++void ++bar (void) ++{ /* { dg-error "'-mindirect-branch=thunk-extern' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c +new file mode 100644 +index 0000000..3a2aead +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mindirect-branch=keep -mfunction-return=keep -mcmodel=large" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++__attribute__ ((indirect_branch("thunk-extern"))) ++void ++bar (void) ++{ /* { dg-error "'-mindirect-branch=thunk-extern' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c +new file mode 100644 +index 0000000..8e52f03 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mindirect-branch=keep -mfunction-return=keep -mcmodel=large" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++__attribute__ ((indirect_branch("thunk-inline"))) ++void ++bar (void) ++{ ++} +diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c +new file mode 100644 +index 0000000..bdaa4f6 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mindirect-branch=keep -mfunction-return=keep -mcmodel=large" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++__attribute__ ((indirect_branch("thunk"))) ++void ++bar (void) ++{ /* { dg-error "'-mindirect-branch=thunk' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-17.c b/gcc/testsuite/gcc.target/i386/ret-thunk-17.c +new file mode 100644 +index 0000000..0605e2c +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-17.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mfunction-return=thunk -mindirect-branch=keep -mcmodel=large" } */ ++ ++void ++bar (void) ++{ /* { dg-error "'-mfunction-return=thunk' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-18.c b/gcc/testsuite/gcc.target/i386/ret-thunk-18.c +new file mode 100644 +index 0000000..307019d +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-18.c +@@ -0,0 +1,8 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mfunction-return=thunk-extern -mindirect-branch=keep -mcmodel=large" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++void ++bar (void) ++{ /* { dg-error "'-mfunction-return=thunk-extern' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-19.c b/gcc/testsuite/gcc.target/i386/ret-thunk-19.c +new file mode 100644 +index 0000000..772617f +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-19.c +@@ -0,0 +1,8 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=keep -mcmodel=large" } */ ++ ++__attribute__ ((function_return("thunk"))) ++void ++bar (void) ++{ /* { dg-error "'-mfunction-return=thunk' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-20.c b/gcc/testsuite/gcc.target/i386/ret-thunk-20.c +new file mode 100644 +index 0000000..1e9f9bd +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-20.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=keep -mcmodel=large" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++__attribute__ ((function_return("thunk-extern"))) ++void ++bar (void) ++{ /* { dg-error "'-mfunction-return=thunk-extern' and '-mcmodel=large' are not compatible" } */ ++} +diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-21.c b/gcc/testsuite/gcc.target/i386/ret-thunk-21.c +new file mode 100644 +index 0000000..eea07f7 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-21.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile { target { lp64 } } } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=keep -mcmodel=large" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++__attribute__ ((function_return("thunk-inline"))) ++void ++bar (void) ++{ ++} +-- +2.7.4 + diff --git a/patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff b/patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff new file mode 100644 index 000000000..c10790055 --- /dev/null +++ b/patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff @@ -0,0 +1,102 @@ +From 5d1c53c6fd593de2360c1a2ae44ebf5fa3c5263b Mon Sep 17 00:00:00 2001 +From: hjl +Date: Tue, 16 Jan 2018 11:22:01 +0000 +Subject: [PATCH 9/9] x86: Disallow -mindirect-branch=/-mfunction-return= with + -mcmodel=large + +Since the thunk function may not be reachable in large code model, +-mcmodel=large is incompatible with -mindirect-branch=thunk, +-mindirect-branch=thunk-extern, -mfunction-return=thunk and +-mfunction-return=thunk-extern. Issue an error when they are used with +-mcmodel=large. + +gcc/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow + -mcmodel=large with -mindirect-branch=thunk, + -mindirect-branch=thunk-extern, -mfunction-return=thunk and + -mfunction-return=thunk-extern. + * doc/invoke.texi: Document -mcmodel=large is incompatible with + -mindirect-branch=thunk, -mindirect-branch=thunk-extern, + -mfunction-return=thunk and -mfunction-return=thunk-extern. + +gcc/testsuite/ + + Backport from mainline + 2018-01-14 H.J. Lu + + * gcc.target/i386/indirect-thunk-10.c: New test. + * gcc.target/i386/indirect-thunk-8.c: Likewise. + * gcc.target/i386/indirect-thunk-9.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-10.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-11.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-9.c: Likewise. + * gcc.target/i386/ret-thunk-17.c: Likewise. + * gcc.target/i386/ret-thunk-18.c: Likewise. + * gcc.target/i386/ret-thunk-19.c: Likewise. + * gcc.target/i386/ret-thunk-20.c: Likewise. + * gcc.target/i386/ret-thunk-21.c: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256737 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 13 +++++++++++ + gcc/config/i386/i386.c | 26 ++++++++++++++++++++++ + gcc/doc/invoke.texi | 11 +++++++++ + gcc/testsuite/ChangeLog | 17 ++++++++++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-10.c | 7 ++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-8.c | 7 ++++++ + gcc/testsuite/gcc.target/i386/indirect-thunk-9.c | 7 ++++++ + .../gcc.target/i386/indirect-thunk-attr-10.c | 9 ++++++++ + .../gcc.target/i386/indirect-thunk-attr-11.c | 9 ++++++++ + .../gcc.target/i386/indirect-thunk-attr-9.c | 9 ++++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-17.c | 7 ++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-18.c | 8 +++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-19.c | 8 +++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-20.c | 9 ++++++++ + gcc/testsuite/gcc.target/i386/ret-thunk-21.c | 9 ++++++++ + 15 files changed, 156 insertions(+) + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-10.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-8.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-9.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c + create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-17.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-18.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-19.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-20.c + create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-21.c + +diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi +index 1e572b1..6f3c344 100644 +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -25699,6 +25699,11 @@ to external call and return thunk provided in a separate object file. + You can control this behavior for a specific function by using the + function attribute @code{indirect_branch}. @xref{Function Attributes}. + ++Note that @option{-mcmodel=large} is incompatible with ++@option{-mindirect-branch=thunk} nor ++@option{-mindirect-branch=thunk-extern} since the thunk function may ++not be reachable in large code model. ++ + @item -mfunction-return=@var{choice} + @opindex -mfunction-return + Convert function return with @var{choice}. The default is @samp{keep}, +@@ -25710,6 +25715,12 @@ object file. You can control this behavior for a specific function by + using the function attribute @code{function_return}. + @xref{Function Attributes}. + ++Note that @option{-mcmodel=large} is incompatible with ++@option{-mfunction-return=thunk} nor ++@option{-mfunction-return=thunk-extern} since the thunk function may ++not be reachable in large code model. ++ ++ + @item -mindirect-branch-register + @opindex -mindirect-branch-register + Force indirect call and jump via register. diff --git a/patches/source/gcc/antlr-runtime-3.4.jar b/patches/source/gcc/antlr-runtime-3.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..865a537b0c5e4d617b8c45adc43fa210df1a8129 GIT binary patch literal 164368 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¬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 W1RUh8TOPna>cGPNg(Be2Zv7uSdw6yL literal 0 HcmV?d00001 diff --git a/patches/source/gcc/c89.sh b/patches/source/gcc/c89.sh new file mode 100644 index 000000000..35486ea83 --- /dev/null +++ b/patches/source/gcc/c89.sh @@ -0,0 +1,10 @@ +#!/bin/sh +fl="-std=c89" +for opt; do + case "$opt" in + -ansi|-std=c89|-std=iso9899:1990) fl="";; + -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 + exit 1;; + esac +done +exec gcc $fl ${1+"$@"} diff --git a/patches/source/gcc/c99.sh b/patches/source/gcc/c99.sh new file mode 100644 index 000000000..88dd80640 --- /dev/null +++ b/patches/source/gcc/c99.sh @@ -0,0 +1,10 @@ +#!/bin/sh +fl="-std=c99" +for opt; do + case "$opt" in + -std=c99|-std=iso9899:1999) fl="";; + -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 + exit 1;; + esac +done +exec gcc $fl ${1+"$@"} diff --git a/patches/source/gcc/create_gcj_jvm.sh b/patches/source/gcc/create_gcj_jvm.sh new file mode 100644 index 000000000..d1011860f --- /dev/null +++ b/patches/source/gcc/create_gcj_jvm.sh @@ -0,0 +1,93 @@ +# --------------------------------------------------------------------------- +# This script creates a directory structure below /usr/lib/jvm and populates +# it with symlinks to GCC binaries. +# This will work as a compatibility layer to emulate an Oracle JDK/JRE. +# This emulation is required in order to compile OpenJDK using GNU java. +# +# The same can automatically be achieved in Slackware's gcc packages if +# the 'configure' command is called with the following additional parameters: +# --enable-java-home \ +# --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \ +# --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \ +# --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \ +# --with-arch-directory=$LIB_ARCH \ +# +# Author: Eric Hameleers December 2011 +# --------------------------------------------------------------------------- + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" + LIB_ARCH=i386 +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" + LIB_ARCH=i386 +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + LIB_ARCH=amd64 +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + LIB_ARCH=$ARCH +fi + +# Where does the OpenJDK SlackBuild expect the GNU java compatibility symlinks: +JVM=${1:-/usr/lib${LIBDIRSUFFIX}/jvm} +BINDIR=/usr/bin + +# What version of GCC do we have installed: +GCJVER=$(gcj -dumpversion) + +# First, remove the old set of symlinks if they should exist: +rm -fr $JVM + +# Create a JDK compatible directory structure for GNU java: +mkdir -p $JVM +mkdir -p $JVM/bin +mkdir -p $JVM/jre/bin +mkdir -p $JVM/jre/lib/${LIB_ARCH}/client +mkdir -p $JVM/jre/lib/${LIB_ARCH}/server +mkdir -p $JVM/lib + +ln -sf $BINDIR/gjar $JVM/bin/jar +ln -sf $BINDIR/grmic $JVM/bin/rmic +ln -sf $BINDIR/gjavah $JVM/bin/javah +ln -sf $BINDIR/jcf-dump $JVM/bin/javap +ln -sf $BINDIR/gappletviewer $JVM/bin/appletviewer +ln -sf $BINDIR/grmiregistry $JVM/bin/rmiregistry +ln -sf $BINDIR/grmiregistry $JVM/jre/bin/rmiregistry +ln -sf $BINDIR/gkeytool $JVM/bin/keytool +ln -sf $BINDIR/gkeytool $JVM/jre/bin/keytool +ln -sf $BINDIR/gij $JVM/bin/java +ln -sf $BINDIR/ecj $JVM/bin/javac +ln -sf /usr/lib/gcj-${GCJVER}-11/libjvm.so $JVM/jre/lib/${LIB_ARCH}/client/libjvm.so +ln -sf /usr/lib/gcj-${GCJVER}-11/libjvm.so $JVM/jre/lib/${LIB_ARCH}/server/libjvm.so +ln -sf /usr/lib/gcj-${GCJVER}-11/libjawt.so $JVM/jre/lib/${LIB_ARCH}/libjawt.so +ln -sf /usr/share/java/libgcj-${GCJVER}.jar $JVM/jre/lib/rt.jar +ln -sf /usr/share/java/libgcj-tools-${GCJVER}.jar $JVM/lib/tools.jar +ln -sf /usr/include/c++/${GCJVER}/gnu/java $JVM/include + +# Add a Eclipse Java Compiler wrapper which is required +# for bootstrapping OpenJDK using GNU java: +cat < /usr/bin/ecj +#!/bin/sh + +CLASSPATH=/usr/share/java/ecj.jar\${CLASSPATH:+:}\$CLASSPATH \ + java org.eclipse.jdt.internal.compiler.batch.Main "\$@" + +EOT +chmod 755 /usr/bin/ecj + + diff --git a/patches/source/gcc/ecj-4.9.jar b/patches/source/gcc/ecj-4.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..29dc442ffe750ea5c68533ede31ebf8b7a7edaa0 GIT binary patch literal 1619429 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%0DM{IhwYQoN z1*$wkJZXq=*xp|qwx<+LEJ)Z9Y-f#e{xHz>cX$Ji0o`?Z?9;~`d~a{O_^@)t%{7HP zhMTWGNZe)#n-VmmjFI)cz{?jjbBvYs{J`5!Z@m9&Z{7mEUyolH8YAg(gjbC&;PGKE zZi_ZJB`C%UEh%A!N|eVP#tBkq3AVsaYJ`CROG@NY91gqhLuuf$^0aq^_|OispSR4l z@(X8-3BCm@s4-#hL!;lvTKElw6LBF2NP7$x9}8g-Gm&F_(;UC;N7m+YKxkb){lY{> zCoVZv*_3v|BxPb^d`iWByOB`Sp}}#hBi3sZ^oE~n+XGIvF=mI=?`wPGoqjep5YX*; zErB$FpSGlYwwJ*NSPj_%y_u2@+sZ*9^SDfiS<&pU_F7KXV;FTKW_6DsTm(Hk1 zh_a)qiR$LU2;ql;twm<6Mk`szUtTM(F-w9uN28yHAWRBqm*|Cw-v*g!jM@*?OM@;X zlq0C5(~IH`NbioyeUHC?Pv5+L**eOCj=E8-pLqr4HNXO!x}I{tutDLqV6yL^N!z?Z zGlJZVX;*Yba#?#dywu#)I_v_svaZwHV#PcB)a+^>c!juW_5sC8uf1dSvWxPewrRl& z+_FZx@8bFUx)ybx^BKK$L1)~a=ejx7Fx8v+dP%&BFg~QR(Bz;~LZy>??cx+Md68r- zb^k_5p}?BiO@^3RBPF!wBs1|@s{g^uQQnhX2QNF5qw5u((kA80NrfO8ZfWaX_;a<~ zG#N{|YfN7JL%7wwp0;ddu}r<`#D`=I)Xk!!sYoPXq+aP3_O*<-W-*~8f=^jPEI*1j zsqaz>xhuDD-ERn`A)YD3+4)93q?U`mBBuX^(Fk2UwakSFe?la*R7A++i1yw+eIE6u zR-B(8apKU4WaOqw%4c=_FcdLeE0%c~t#(+$(yD&AX?avCM)qgSH&Z3#Mt+9_qN@y# z#_`nw8_LiHq718cz+}P^XFUDxSIQy#%bsbVn>FciPTE`%!E+9 z=gvvf##%Vl`2ZDl!Q_y;XL?8M^b^ePl`y9puiZ(z3+`JXY=P1v%y_u&axS)6VraUA-y!fv?1CmhdslmH( zRG&&Bd&uaax%6(j@nxN0KVEglBsvQkG3sg#<8>*s1H;ScZ z^F5RcrKM5@1S?IE)Q$V;ez3@*xWy&$_jBO!2n93#D{oIA-XD+zN2x;NnOtSMcTw8} z3O>?WozjJ$Aq_XPEurB_FJVcs;Yqx3mN_c;adu87f6)541&t02tpxm_b=GT(;kGzp>~iR8x*v&3<~>Wk#)iT4 z?`K>})IA@YTP_UCK`L%Tl@YssBLgm;8yR#7E*x?qs^Ihw!W97WmWwgBhy_}RDmy03wP20j(siPUJ@7ClR+3sJ zHnN~nxMQmP3$!Czh^m5jojXuaCH9WQd=a_*>yMNfc3ikKF}vi4@q7ltQtjhJnWfUr z9idY4A=25IV&Na%;>tQ&g@;f#LYmv{Q2DH!;$mdgDp#2vDcym@2b4=5hgPBzHOA+O z^s~PuQrU%C61G|)b@$RzDHHU<&4}cxdMKGoZw|;PV=%8r7EJdaUTrB;SI+3ZRYaTr5D3Dxt?>%lXqA z^0;`tE#75`tum|~5Uo4Wb=rh4a?|1x&g(j(YU$e*Jp;pJPZhia&ZjB7h+})tRu%6F zvYxrSeb{4t*lzTn@@%jvli?Yg@F88zA=c>?H|mvqO^HI-&u>H=II|o;2To)HPHCc2 zvYobQvM65Wy?2Jx9dIR%ez)7Ori=!zZ}tb_lh-PV1z+cv%!(&xHOz@q1X(G3_5AZ% z<~jSGfdc;5uX3V)*D(CA?OT#_ur)MxbX3xJw3ODj(Kr3S?QN=5tmTwWkbQJq^zFOy z2@nu_;{K?kB!z`%{1FMP_>lm9Q?NtmqEc1Ux~_J;iC8a`HZbVs&0xZPCajtZV#+np zuM>x|{&7Rgo_-Yle$wS!kRtVcFIh;Js_>rff)pbnv|ifFc{%7j;XdJ-VZZtNd@q^{ zpcd}Pb4a!sU)x?DWyX~vg|5t!{2tBcQpgbpJ%YedKS&pqjU{R(bvv!}srY+AE?rPgni7d*w4 zr#YP@Vk+|Fq}qbbfyJCqUr6V=zZK3Co|>V-WUc*hii&*rFt+pC9pWN1OukATYCp~glig53+^lP=K+mBVW{V>j$e z1{*T|0u!t-v>%r@k!KiUd^V0En$DQ?b))-&|I*!fYf^ z1ADTdu|4$t&<~-`s_^N_FEdU67-_J5C4ZZ2k^|E}^4Z z(Ksu#cG6MS^jSEC9E#Qvj40?efPh6m*tUg9+6iO0i`7oM_xH+Szg8ZtM@aE&*Bp?V zywB6#O99uaHS8K*eVY?lwS0`a*TYlGX4 z6rfnc1x^1Lx1=4C7*(;ZMF!XX+dMslO$ygTU2vr(x!LfpoMT%ip@@knPKhig26KmV zyN>kv+-mPtPnt~5buCt66=R-FXq{o2y0b#(CYb;%>89-I01rko7)L(_(9uAfpO{t|Cfc9OgM==7us8?-$<4 z{p>J=V1>-oHW4vb8Tbi_;e&@aoem^4_92Pk6P7yE%!LpAK}@_SUQg!QUB1Wss&3-a zzkJZ&ko4<`@b~!$gsXJI1h-<)X~}CkY|X-y`2OszW8ZXYQc)|pTX)_bk_@Nin#P&~ z;JdC`m}+Sn^wjYEi)8{b_*%I;f|8f%1)A)ro3Re$X>A}ZXmJ)Y09iL z?6GHxggjm9U2r2fgMh=pc=eY#Rt_Z zy^Sp-iVEyO41VR_Hij*TYxty|_ffFVp|TDd`fm2pYPiYvT$GCF@vP{s4Qa;EZGKQZ z&EBPoh@1#-ssVh8y$hzwpRAI=#hPB0{*B%@8mbYJ9I9gM_h?V~3!#pUu}p!oKiSdO zgd(IG(O+q(j}lPy~RT__<<8^Q5df7NA8ICJ!>#KXi}2pz2om|O61I8CHzoQ{C5M7NyibgaworkeU3e*b zLok6)UePttZJ?q~X)}u9?Yr)?^a-nADnbdc6ItCxWCf z`RUe*3}p8LS&Goua^>g3t-JYVgHPM7!CP=VFln4C%!_iCKGRc_HS0rKY}IQ}UGN>H zs84___Sx|Yk*Pm*mi1A(^&$-8$3`6-{BcVRl(}Avs~-0Qs=;x;kp%a;Sx5HHhaK;? z>%#~i7PcFlJeR*rvp!(STH>|{YKXZb5O=E|V5=B)U-4jBG;RIrp`CYbU^Hs(Lc%n% zuw|rn^AT2w?4Stsx#|!$g?-M(wz?-pUJRJ1FJH*vpnH-+TlZR==6~>*88!R0wi-&g1 z8n(pEaFdMbJs}X@v3I2G+`cg%q@}S{V}z&eO00CYRJi;Bw+`HjbFBC92ma3X=!7q(o-tA_skO1l2|Rs#g?a-)3j%ZeMtBF_P06-y_@C2ot>_-Md&*Bl-3eRm z&x!ba*L1ST9I?3qB^+i&WQ2GDWg>=&LfBDcJaH>n1p3GlYmcPkGoI(HflCh2S_o0| zqu&I!3z?y#iJ@h0V6HLtPx3K10}E`^qEGhSY$LZYs@o%pM%RjLGubnDP(GqQUpWW7 z4xgl4vbj3Fsb2Fv{gJPnI{mzCe_3^kOKNr@bd+&Ai|_3Prgq(EbdL;p{zBfh4-Ed9 zsH8&tk~oN-U+OVByxHd#aT!AIy0N*cV9Z3oS4*1SBuD z!#Gqo2Lj|u8@Z>jhsaxu*K<&bY3f9tc6` zhg<^G^zvwX#-$_|Cf2igj_~=Fcb~r7V!utkNaVarq98f|=1dNh@NCutEW&Q-gag$5 z-%=PJ&6!T)J_tB7fKW79Qs0$0n5#>s*s>^TYj@gjuy^jEy=w=W*%hW`Ws>)&)h1@w zvP#V|>!)@qyqgJA7veE2S6@*dD(bAI?9Cjkxoy1)?Q9}}oc*^x!e#0rOaUgG^7?gB ze^|@8Y!ls3YWtZ}!`M=7SN5wBkE>`7($rm~vCg%KT&Axj5pMT@_D_Bd*f9YIlM}h6 zU%Q0?Nh=tle`3;DaqUxNVDw=gu-44EauBSf!71imFrAt%EC2deZsMWd_-SdMh;%Bp*mTho2Fc3u!!Rp^wI-1pO|1v-9J$Gz zf}Tm?HDB;^`?BYBJ)<^C8`n>1-MsnCWhK&X3Dx$mFkscAb&I*PMZP;E-M7eUh{XaP zsdGIk&9+zIAGeGqto8p_7{I{p(UY*%uefm#sA0h?lsr{}_M%FXd6Ts<)le67u)fCFxiopI8uI ze`r1lrT`HE1iqM7fO>mS8g!pDpW9_O5hhE=*+vWBV7V}o=LH0t&bEVL%qvi4L6&f+ifRVp3^sfuP02uy}zma zf?u0J*#VNp8yd#L1`WH&3(7eyl!p*f^hqAwl!?|BFe5QdlpFFyS5CpZ7U;O`Af&FB zTh5g2x#!fITqIlI>$vP7k)kXz7s7+OiEY4I=fl&I5!B{!KL4_b7-%Z@)|j*-OOh0g*V##n+!`5Q*!8Q!+X?wtN5=XJkFDNoFLJr8$ww5qU3J zFQEIsMW2(3U#R6b6iLFQ-7Y@wp88l>OAnjl%^8spicmC(u(n_n^TkA@MqrBEghBc; zWY+@S6MD2aOqB1y(|a(YM?Gb3(jewtgy*HSAE!wFb3PABt2W7O2N^ho04Hh-2pdS#og{NKCS4*~tX;QSv zuY}N?<(zwPc*bGjUZwp>liyU^I>EYU8V?+zD2gz zHTes;Iv--ytwVMI=x|(KOc19NM=Ci{1sa27eC`W_WDUd`IMJiY;f~qB>wtrLA015Y=GQ zEn;>t8pr)P+t~Vfq6%aGUaZZnUwWQ&XKL(RgUiP0{H{Gr=pD@2ZI*LbVy}hXyoz8! zsG(9!jIqIifxw*6<@*TK5WIkXt6_*v^O7?kPi(`j!e;o8tH4P^n||JI>6>3)eFf2dv4{pF zr?@r#w6PuNzS2tIIZZX@BFSE>H?v4oZ@3BFUq_lSIc8yIako{GWTj!xeY1ww5g(k2 zvO@=fCbdQ4TI@&x=hF$QY&p|pK1t3;LlEBPcGq;$8|yo&a%O;nt3)3*CzY+x5%tn{ zM zWUv6|Q$cTe6(ZfFeT5-kUCwSi7SO+=`g?(|kskJpI4%q$C_gN5X?0I4l=&qdozpq=6DL zi6?n_YP#h)HIX@adTu-s5wUv*g?i~DdwoaJ0zI^Y?m}{P+PA6El&M0B(Uj!gp&N?H z1AA!1n;j$WuH_E-7iG1^-`X!axE?eL|{$}%{@@2bU@=*1H8c|5? zBVnc5IgJbK9?r?}QBgJFEk_Ehp3d3fXF(b>d+x#61*qKUj?rJHzn!1#E2-U4KQ5mN zC+@mq=#>~kg24l>2+%PJ3u;#nF!^Jw?7CfMDuF5dl@IJ7bviu#_jA{j+=0=7t4i&w z%zh3u+e(M;zc2^70ltt3@HOSHumnU+*n+ONs`m(1`u2EHIC;_iLT4OF)gHptB26C2 z)*=cMtY7mIVDX9$Q3{hUdtDy)ZCeL5wEKCJCi!u5XAE(2S?jAASI68NyMwXYleuXR zO0gn$2N;z8#O$zF$c5vf%i1? z1Sw>@5Y#~IG6}fHk85qV0aT8^?FB%h=oL-&N|pB6C#Yn4?LOTR`DRbu{~$(Vu9Oa6 zmFc0S`yEZEK&xap8t_&(JuI#Uju*Ed5I zCQ+>5-io)AR2QpBSPx8r?CO z42P}(wr*SD`@g;L1K69o?GD`6_9IKnKM#Wjg*qG?3bUvt$&H<6hx>(Fi}IjL?Vg7A zcE*d#ZC-TUm+(@Vn#4t=m-x+9DVg%Qm8vUG;L1EuRX8`KdV zHVa@G3`LHLhAI(Wt1?KTiMfYe5*=v<^_?W;CMNUDY^wT_DvmlUj5{lY+!ZD0?rCZj zFBuCQ)?3p8<-|Wr%4E6Pz5>P$wLJzwqQoiibZ69a4wr1+;hyCIe?fwF~ z*=IcO*2|(T>k|6=1yOQG+ZpP6fK>JbX!4pj+K0Y3tR5fgNRWGA{;DQ*axVXhV!C_L zf5UM5RBK^Nse-eMtv~RB0DI0EMSChA6SH7b{pnV>H_?GFdgop(d&`rA$40LZD<0?j zl8A2?zk{AzzM5g39Zs#M+4J!){ZFDXG3xyv?&I6Pttz?xOAu20|5;DE|3?X79nA^T zPX{M7@*6=6kebyGBr*gOjvtwbgX2Igp3qR#GH`H-jO|ybz-rl=Nn!TPhnKGHFU=%i zhLG%n6iRca8|0ge-X`dXN;<7}&6;QepG`z|4zLY0>y1Q44IaoSbd+p2Fq8(oc?W|srV^5< zu}xhOA0%}qg#qX>SMiVNG=ApWZeB8RI4F z`r+Xcr~XbkA3iT}d?P^`8yL7j;DC82^^MLtJ!^lL-lfTIC=2?3>w9;+RC*$0F_>GL z@{u)PiK*Oz+?1E<#mn806ZTA%2%gCd$w~H0%#c`-ucm#7)}qlQk!C&pogmZ*GNb51 zHNXDecMv!loYp4bq~I*RD}PUo5-D|wj<2o)_Iv}=4EpkIORs%v`H_nr%mo?&ksx!7 zX{FqyR!!(m&+utciOab&sW zF*QEVylk`k*PEKhTY6RJpR%m@M|ki5y!rzFA6NfB7J11VR1aAhXIRZQSI zI1UIw0t_53gJ0rQnOr`D49tI%505A*iu6q8b~g!edmnvweeiJ*0#h-2{&494`DOCw zT^0kR72CnI-zP8VOnUpJzX?U9vDg}C@I)>JM4Ug8ky4XSkW*vFC^N7b=%fskYIMi4 zvyQ@&fwz`|oGrK9lfou#~ct6>unMXeTKh7`%rXA|u{WQe43b zum{Xa=+@Kavu8W+=R5QA_REeI4g;x0ipLF%w4C5QYB(8fw|o2LkECfJ z{E-ADiw}{b$0(_j%t;lKWGM%4Jz=;Jx1CIpCMRZ63x5eipdOCx*ZUU{Gol}rfn<)!;z2*7=ncFxatz9~wWOqnLd^Dt>y4j!K6ksob^X5m?iUC^^Y z8xIy;FQ%ucX6YWDTR4foHOiGG-b$+DW|f#l8)+-Eu+>b8KXk&}mlS-S5&8Zp7pa>Z zv=x2Y5dR{`l}&LbooG)q-Wn^v{xO@bFXvQWN`9MT6f9B{6ofQI5lAjLtYB|dE|mH; zTq(k^C|-B=sybRqK1jeiKe;$hP5v0{lOe;1#vDXf%AOuFh+ddXylbLOYp8T)Rd@h7(NC~eQdwzdVGoAyCx$zZaVOBSgP&x<72n^QfwJy|7MY9Wf}1Ic5Ol5&M$fp-%@dz)XG zr7F}XO9$3x9dAfg3WPIin*z=fZVYmSPRQ`o^{p)9I>b-LKEFi~xw${RA)r#3%Vto>z_c*QivoA##fO z5qPmK+FrV7N~*gzhl=bn|K`k7Z4#1q2=Yv!fy`@+f-Idl~T0z8czB zvg*9EG&M*-ZALCSbEOHqvz`VV@X88FH^YSTLwRj9Id=P|6`-v1#-t5-hSP%~G4bi7TSnCP?vdD)x!hMqV&~m` zmrh3L21qX(3R|yipDGBKKI?*ia^frR!$PtXay@c<)}JQ*x(vk_GBi1^A~1P@JEb9V z_Rvr4O>SN#I0|TFS#Zd$IJ5VJ?&dQ}5pCHHOkQunoq!5_SE~Z0%@juontda|M8J=2 z+3#XpzKDP@b9R$$K{RLH!0Nr3lGE;lNNjX0h^-oZu#d7hie{=BK3R+Y-;ual?7T^= z#_M#GU+`K2V={)%=*s6VdxluB4w36^jIy|hb^#u5z zYHci6>rD@JC~&>t@w8`#=3z^udaY--d1zAM7_d&Ye}rgu^)_FJ-0)%Q^$MX11%v1H zXLxiFFjhtt$4QMvP|MGbM(;Zn9+9hxGh+5^d_EKWl^zn-jtC(i1OXu+ZhgS`l8P-m zxDks56OdE*MN=m_ogff_vsDFe(ETz%Mvza{w4yF5AV}n}ggw8Qexbo2K zB9FXf7)4P#(rP-|;yRWjLe ztD?!sZG_r{nbR1Oz&L#MC&v1&#(~s1DSTSYNhIHK7-qZ~wFX~PDUq&Tcq7A{QLkG6 z|6=T$Vl-jGrN`K@ZEMH2ZTlU2X2-T|+qP}nwryko{Z9Vtlaq8Ro%Bs#bka}P(^Ult zYDiaXl2>*qcR_9Nn!Thukd>W8Vo;mCRGFb#PJP%3#*A7A!8su z){owAnvB-p2JjNCQxr9s!>|td)t^_h4F;Yfc9}0Zm*8x?c!SkH(ob%FQwdu@iU~^& zu59eyM2oNjGoq3wjw&)qv=?56i}IwN$5fG*L+$E0IWAC7Fl$MUGo(@=TU=FyO|g%r zfP@g1BAanOKPfIY39pD-_~<`z&kp}VV`7^{E800S6P9oX7PT_1=zbB-cyp*^JaO73 zlz^*2KmKa{*^r$CH}JwOFi&XO`z_WSpKWT~n&AFv5in6GZ!&S#=Bnf3p^ahH?LWiT zz+6EkiVnfVg^dlN#jkZ*5HCjPjR2>S(GP;fsJ2}13Ua<~;lHw8U2zWY*JRlt`q~9D z96R66U7mZR;cV!JAc^ow_89aV!#~VRg0z{vQQL^HK`O7AIc_CBIiZti% zivvze70*+XTFE+3mCy!s-M{HdjnKPKM_MsN=vZKl-`I1}g5DrSjS?eOYk791O{Ln0 zFPi52!t7k6D4`wAM|g3oq^h~WR5r-5d zj#a)>TQy=>Bu(~hC^*I7BZ3#14G14xPafipBbUx0teYQkTbJQmpynN7u@m}qJ}^tF z*dlR99QvY2MP9iRR;U)#X>J|-VwV3?=N(Zh+Qe) zQ`h;(FJO=G+k(I^B(9-cpf8%e#xc(vy_4EGnlIiygmZ?!QF_Pv^HyKt9@}9BtFZjt zmSE>$@dAHYG8R0=AOL1umRYiYnLHL!M{WM2#rr3H+`H*G{M7Sc+w>9zX@gF14{g~r&#;p|x zXc;4y(NgO@46!QdZH*ZVGKM2Q{rLU9s%hnThOxthY4y6MK@Nn`QFrS?$m{dQHM1=0 z#7t3A040qhrtE#VDdzBok|z==)^Y&ZDWN{Bs`7TIcQo2zof)NRXTMgE9r!l<>&i3> zThsHC@2ckZK$A3i(4L^D%&NpF)itvvK`|oRDiE1bYGj;{vJhqAM<6)yazRkQpg5uY zoVg>`F$gn}B>S9uSQqV~@JrgrnJQb_4CDz);2K!8;6zPHd|!cJvki9Ok;(!kz~>P2 zNXCFRu_yTJvpi=lNRTpW$H3bhwhogK_o0Hp!~b|e17Kf(lUc(!r8Y7T-gh7hsaC?+ z5wb0F=m*|k-)k9FvF>%2nu`t1-zjSJM8zHX8)QX8#u$`EtaI+s4IoJj&Xv!=S(yjj zml4KV6*F??qb7v`DvboU_AA<;V+;P{vedM|?|BK6ccf&F6hJ3J(;{Ki)u|}zo+pZZ zYq1q0z>=XQ$PclA3OM&de$Mj(RJ#Kck0RE={-9n7_E3Khj9b}|?!&RH;IWkmq+rVn z5ulmcg1)Lyy>TtWnYhFJ`IXOR7){aZk9g6vHBn?YF6Io)pQZ z0}0%u{heCh61<)Sq+Pw=F~=L&wL{{lS@V3D(*lGvd{~7MftvChl?#k>x~B70q9rwl zrm`|CUQy`!CYF{wy_;Z>jx3|42C=3XDu@n?FlK4t4m$1)FunjMQ7DEhNzQup1ZF;8I-I`Jt zrY!?5^coLX5?4-p-TjFWNA`1_(gPp)3%N5+&*<MT7NCkgDZ7{@g*KMx0(XrXNGUMdTg zcq>iHgqi(xgmM(-N&_L9?D->VZ|cg3^@DqSU7-K0|6-n z5F1Sdy1^=o~y9UIqu)i#ei? zYA6vC45&IQ3mFYAKBqweZrX&)1q9MmKb8?N-QnC*nvIKV4|- zLe*>lQ;ug?854HWSx?3SHb1H10v-$mvzB}(B5eWxa7sMU3u3Q{wg*wf-eA&%aYt|7 z8mlV|x!(MQwTE%V^^rqoHdJGV-U*C>6>M)onFc1Ot3x9Si{VkYP-X4 zj)c}-^Q7{Qjn?CN5pRx{f~GWzzw5kU_9k5)tJm{C;;iexO<&pjaC-*WnSQ=`_q7t= z8oZ$HPQE;ju1kLbagXf+Lf_c0Oa@JBF{6P|)(r}o_cX8K;-~dkL+Vze5COmo%IlXS z$9~f5f``9eLhNZg7uTTMBD+m^hIiOSKpguZ)KN(ub>FN!v4jN>!QZN8(-K*!y|Y=s|j+oVTvI9%#RG zuZMqc;!gW8j5g3u^UO>mvQHuZo>H<+hiR7|zG@xl9fa{@{4_j1#cF1pRlnyfbus;Y zl7i0T&OTJaM2(R*z!p7kI8<_4nbu9uEpD_FI<27C9_t&Xp<}?3c3fG;li@qPVjjg; z;!REcinDp{94#24RbJMGPq{8{l*T(!R>m`uHnd?5%RCE)mOP4Ogk(b#WlHRkpya2y96ke2{*fkW1xGv1ktza1 z9y=9f(GzrhuA`C#w+5kFflmdTU(O|liJqymfQf7TT*8{M#oRT5FVWBgBmB$WHcgN0 zvB_O##(~S9RSKS)CtM3{gIIElLbj1fKc&Tl@4YN-r;#}4M08}>l5fA1QZE(RjaTZZ zK56{090fsvps$BV0s|=K5YB?fP5=dn9)fl++JaoZ2ze*y>s;R{t;#{mf>w{IN3nD0Q;*CW7jBB{hu?|G#2crH$6X{lKJ+ zH#Z0iJPC*eWy&1XvSa#)@zAs7s57h8~!=KD8g|bGpL1L%5|lW$EI97?Y$?pUgv1Z##Hmqvn!Z5eTX5V|bL12$qrXryr36)TWQrtLjllnsUc?oPfrW$=AVzUtDI29=raY#pA~Y$~&3 z*{3QUbtsXgyOT5V3Mx(2==%y0nLXw~lxG^Uc{luZFQ&94`FdQg{!%6CT(N6+B23n7 zk2|cTTns@_Qz1~PzAR0^3>iycsv;+Ssr0*bN6xH26?JK{*YE26$1}OU&Udek0gOH# zT`7deU?-qEtRjT_VW%{GF}r)I55zlZpI}2{c?PhnKbTn3w-xh@mI&+}GVK>8EV8oW za2|eIT!}ZUBqh763Xo>E_j2aZTk+SYjO-*NmIHF*Gcg$$SYimFcbv;h5{2Ozcj1Z{ zrzgKnXc@~d)<%&kv9T8T?=J!9m_d0=~CP%BG(zHG5a*oC`V<}iKud3Hcqvh9kAd+tAiAcOF%>KZus--G&9qA}@q2JamxQFT#9mn+Idbem)LHtvp zs9l$24jTPqfR1j3CV!yQ-T4oS1iD_c+&Y3+D0gdB< zl3bE0+;%8Xk8+hre%yy17rIW1Ieo}d*xYB_6SVdzHV$hZ-kGUwF39GR58B7_g~yY_q)p6KXx1e z1m!q?!#y5zEolFOmXax=@-k(d4=?lTV2m$l zQp_!g!koG>WDJZbL>J>}W(HYWhf<1}j|%~f>BGJ7>WlX)1RBK&XBn0#h?_@UlFM&T zvzcbkSY#E0*??*rH~fg8rTE(?zbzi26K5rgD{VZf=Q0MPgK z_zXcn0EA9d%KJ}D>%J#T8_a0kpHJEpOV3HovV1|Pe)?B@3oZlaT@Wfb zGn8?Gsqlt!0l9!pL0o~X!PRjC5c+;b7`Rq3kY&Up>|WarQ3N6w>RFl{x}aa4G>PYJKEY1(`sDN}ieGHJe@QXFB4R6ov(d z8v(jzQUfjvYc~!~+pBk_ zMRtAT2C-`{`4ybFSR$jY^UeYp8o2?cuKjISA?e$ohYyIb6Zn`(p@Pf2EKq+K05$iR zl%1&~Sh0gue83Yo!sd6VAobr+1Mq!{*P(?TzhW*dHh|iY{-6NTCbW5|?e3>8pW%}q z&varZJb9=oxaF+g%V8`N$Ie<-(|afA6qAbx8$I5uL zeH8j2>k!P|U&A|#Q0%wlNWDN7ms}p1yrS$4>FTV51VyWd32}mt!>am;yGT-IFO#rx zLw+VRpEL?dYevZm=?OTJDz&4o$4j;3Y{<eEaUR(jobkn3cC<`QIq zN~*PDtf45V6dJG;il8OTnjA|Jz8_}+5*!3BF)}5_9nbtfeh8NYnM$8@9yeYlHJrRj zhNW0r;2qYIV*MfKf3LaYaxu-q)H*rI{eAe)R z2s}*KPF3*PAd`sxir$lvS>%tkA7&o}Fh8Vw;Sdy?-cf^vU+@7>3*w)6j$As(F1;vY zE8x{|#VfVGXG4}v@{u}kLt0NkojyI3!!_{(p_jn6uy5LtM=nDUJJJU?X~uL{)Wzfl zyaWS~+aqcohUz;>o-;}>Y~He!9oVTG{dvshVCIC*TJlV>S@WowfhwsR>2+&1-V(+O zdG>O=3d)wKn|aLR1*T?o)zE5DhAM^&e?+01rWF$yBzvl;n7YTL{Bn75B>ze0KFp7K z&GSf;@}+S237!<-LT8ENX6G0BLx!JJ-9-O01-%C%{6bl=?8Jk0`ri(II zda* z#-+_CX=kU|D5#>iKL~+ong$Wmu8+hloJkj|uvVSAjdHnn%qrRFqs!rEZA`12NEV$I zu6=p~4k-KD>iU8|5~zdtNqzW9{rFQQFNW~Wh>qo@Y2yE04n(||Z-{*chJ3oDzl(+H z<4z((n*?Y}XhguPkyGbw3KCW#C(rfl!LJe37xe7$cz@gG^+w>FgVzVZMeLKLE@|27t@m`}SLL@x#Uefp5by!aLuzaY zfA|(){Pcfm5Vh3f3IQeE5-qY9V!M~`pDV!He+HrbV%#X(CZP1R)OGlD%cvv)&iqm_~ zO{t&Np?FpcXx-dgt9eLnqBs+B$cc?D7nH3v&>AzCTDbd|4P6i)Xgv~OmsDEW64?8X? z@yMSakWC;%QfcEB*dCa$c!M7}rip>bA=b{5-jh$G+9{^HW&TFH?Mwa&tO4%9b@xTS z6^`P|>jb_LU{p2} z-A*ycpcFQ|(Bd|THqVG(t{-imE*`Bl8Tf%-=GWA0~{qPB4brs3MBV-h_8@oUHWC|9AbER(c7|erx_5@ zY=vhai}LQKx*4V`g@%oM)2v43@mSL8pfxNwbF!v!Z0T_4dW}dn>?mjUjf~fzJp}Ib zX|iX|ja1(#cizmwJxt2!7HmfLrXhw!TWz3`T}C@_xMD5EGU73Rp(R%|n7k{CbO1e_ z(~P{sIp>;t8TcTa&FA@+me)s&9*+pfQ8!e{I}kM#n4Et%0}Moeg?L{C7_^XVP8Dc0 zqOda01^|qO8D>HNPQieu0Kn5f3f!vEoj0K(7Eukq_YY(oyHhYhfY13T1$ zf&d|L6{oeF+vqt2l5dq}88)OtC`@=>xBeqHN# z!U+xW%QL)pkw-xsHvDULac~h-`kMSRYvyuB@fvzR2ihg~wirZRe3Vo*5}3HdHExiO zaSh~ZMPIXQlI4zQ_LSuW<86uH39nO*JAE`$>zvyoA2nm^0<9xA9RooT4R9@+tDh0K zMPPd*J_A7n2XND}W1seRT)Y}5kr8^cQ$aY5pmKEd=#pKyqrf3vY)9xk#!^hr+|u_^ z(b6=K!EzU^s_fe{QEi*=Rle(}m|WhCD#Y$V?c^BrtNT@)@!dOhe1`PR*MD5?y4_^uUbtrZsJ8#euJ7o!|A?UP zh@k%{*W7Q|ybc^$J77eMu+Bu$-$Xh7xUk(XS&fCR`C@^(62H3sLOB^tSi4$d1K#Vu z?SPy2q7?r%BuTw*pT73X%BfH}2hkQqfIXz0zcie0zrEa?tutVdG8=|aPA$XHzfdBNaCQ-5&?NDfTGyU)Qd^i;cZ?>l z@R=`&kz-fjg#>+w(6lzGtMPPYrq*CLhqxqRXI&#))8T{FAWXxxKJ)%0Lq7*&{e2`= zC0A!5%AlyLUP-eHJ}4N|u~o7|w_IL1VWV2h_o0vuEl0AHd`#{kKSy@Ptm+&&0o@-` z(fN@endaD37*7*jn@F;xASg3&b#7wJsz?^EWU?hDuB{8?@JU#i_ocIdh_g_l z1nZ1PC4mUD><<+M)yWn?a)`(d(yVx>LT{ zvX)tgM#u-QTuEnM^7&fplt4&}ZFRBpq_MxuH)qz$Ivpt1gM$TBUhxl8%x3ja=p_Z5 z1AS9VOkEpR&9Lh32G+T^@o5`9CkL6b!}pZVfg z^?q__uj^xe;|#@T#4q3FlgOiHR04A}b1Htz#fA3-S?Tw39BJ=W^6rdLPE+3PV9gEc zHn)b(Wik{OQ%t)HOz&`U&U_t@6rWFB=Pxga|EsiWEiV1M&@L>GRFE2N@&I=-5yrk7VU|o?bM;;n)#BDopF$OLEM7# z+NG*o{;t=n3V$y@F){3kyb%^)OEIj1Mm3Wy5}^^9t`@Sio6f_n3<}X|JR`nD?pVu^ zR<3qeF`q77UjflF)|FD%fU#(A4zq1QU!+q5uWtTb2&YE2ZKW&ssx56^+nkisT$AUk zsm|1p!epvDd{9-X$=r9cf}CPYXLML)wZ_vYU2U}4Ij@N3hwTT~y^uUO`oZx3l}us_y}UD|$!BQ&HuI#zAIGhD*+EojZs*Hyd;S%K~v z+Z@Gey*_xanEo_12m4xVn~`d~;^0;3im_X@&d+Wb!8W^Ko@&QpCsvI{30=;P&|cDy z=vd_{TJT!v*j=;#`y&yhU0oVI?e|L3J?b&yw)ByCk8vq#l zun|%rQyf(l0(-pUFy$t7d@xIT% zBk5@}nqG0qT3?P~>|BSNa=dnXB<{O+@pdFWc;jCebi~-R?aX(dvo-DkeM8{x|C+G1 zhUT7+XicnQb7@%KwKarm%+xx(LbZy>wnST>u97;UtIyPCUxQwWc7d^K-d@-Mlxk{U ztF7o2fBvu$>Rp13-*y-Tx= zc5Pmp2%0?CW7oT{eb>FcrmuQ>^j!G$`8#`Wc|85>3V7$(QO=pTM_b46Zz`L_-)fp2 zy;nC+KUdbM+fE7QIGLtg0zCmALQe|2P|k1}i=sU{7lEP>x>u9-e1=Vt-;#DikMU*2 z4EMC3l149qO|$DIz7e|B?5FRf8D)(3e4gq?FOg2Ajn2MtbaOZ_UevmIjQ22}Vn#38 zO(W|wzS+s=vR*!*&8ulx!!MRo>bWIcnct^OHNQ1hkB^;dMy5=vN=L5b&$y!N%}*Dc zy?t1n=hN0>>6X)G^O&ORjaT$^hhmN&&ErO<7_X3{*Tv5*qw7JYl#h?EAWq0vbc|?2 zhs!3HfPWat1%5Hpn+UU-jvCPZD%4+xa_;XS`WyUId>LYj;ZitqB@-oTP{k~*kXnQC zcACaPHAQPu$Z877h#p+e_|)AImTg{Rn$02>o6qmA$dleH-N-_&XQFRDRU=%>ZYFOzCH1>0bQ-RM&gja?Y4+0$XXvxQhh zpTo|cSI%H;bdK6s-@&xAK*@kpL33y!Muav#MnG zyq^tg6x=wPX5l5Y{al(Gb(;lk2JwDINnYb2|0knyGtKyEY)$kpS8K)v1<1Q?f}ANX z$BVP!+mi;0JKStfSQ{@s6SsfCb!7izI4aoA+DzmcwG2qCkIFUnqP%5k(){dBa8Jw3 zeJ@(Cd%wyy`m$chN$`CA-}?dcn25ndOI=La2Z!k#H^ubSEYd*BK(fiSkIAshT#N(J zG5CE}m^_!oyNqDO^7ACi**rEEBtF0Vf z3Q&CdUevixSbiW7l4I!}&T`t&7h#Uaef6roKHkGmJVqBYHx^%K{=mbvCO5L5;^>u! zcybCTDWPyeKZ498Bvi(D7jIDLsgbbd`Mb$B&-HP-Ov2y zN!-0~onhPwZW1+iT12hGVL0)zjPR~04SauqG66NcDxoN1xG^*ZJ=qkMmkd`4H_ujJ znZKmyOzQ=%tZnQph{dSy5u{8epNe=&&w-f}i3SgI!nRk>@~7(LkKDQ{n=SRFfyR(BcBVSiTpO zjBhKx*Yk&BaG40<-Mv}KuKo|`b2Vd|ifmy9r~{J~{J=Oa{(Ki)19sgB#euxG>e9l# z--*-i;*nG3?zH%=vTJjCpd4gQ5a)PrKTfMx+Gl%bDChu*<>s#V(r$_VTQ#pY->+Sv z7p}9%YL(HR?1O7=%6UD6M-5TkYdD5*ocz|zvZWpr@;|(EO}8azFT75v-t^Zk?2Cq16z)_1ZRd|zNri2NTPQRsmC$Q_-9Dvhe3rRY_>BWrmweB>Z zqJHY|iEFPbatI*^&Ue;s&(gf~LmDTvCog(Y44%Dfmd&oWUc6|#TDAtKqnsL=`TFZL z^nWl5zU-V9zRu!W3oE?qw|G@|+A4>hR`Hg8SAO&aZkVX*yGca1Y2~&zuPA=muNO#} zdiHQ@%3!D3Kny`#P{RrPw9JmhIJCkQa6v3_DH2i>7M;SU0q5#yL>l^2Hrx0`j9-?8 zbBSS9T7DQ$$M3X{7gElwWd4g5?9ixiD5%+D7zZ-nW(zVKOZA^6LyQ}VZ+mgzs5 z^*Z;Q?Gt0e_^;IK#^{+K!Tceg*r(sE_znzIJ;DbV-b?yZ%4|U_Q1652ylam+xtFs> z)9mblm$N2HUx`HP%P?gNeO&7ep?StNU(g0ujD+d)5}dDGHlpI0cNq9gNtd8>`Nn&| zAzf31iR8TTz`8(-IZCr&9Q`a@$L3?2EysRg?E2Carz$1C!2Yju$=jPx5Q>iHS*|Rh z$sm-Lt1~=voHJbWN({d7mPqGcxA5bw6#7id&#d84vX}0H!o07jnP0mE9Ns=hSut5P z?3zLsPR7iyPDQRWqz9fTVR6KA5;vtDH|^rD0)j&ZBV&(X9|A^4`M}PB3#n2qwVWea zVzS=VWzGMRqu-dy66q5mJ~kGh^tok(Hy6P4(a}D*Dqb(D#IL$nolgH47PxZMCpyAF zDr?-%5t*5dQ#4wy1Uub5QBvBoiGCCO=T|c4^*c6~1qf)(`G1o`as1!qQ2*)Qgzf%0 zSh)TFe41@9=zrM?&wn{zWtq~)Cv$)y!Wy8+(}%_khX~D~phXfTWd@MV;e;OuNycTe z(h2jFDpWSLE_;GLDv2$tHqdE@(0*yI6SH64SdebwF}F_uWMIWq(J^my2Jk8tUIoNxXfmKO6Xy%4 zYkIbIQmmPXOsqHs(^FUW=T-ZE_(4ea6tTep+=VMk>N*-eMt7&lc zRyUPb8tO;;JmxhBQ6rh$zxLB~_%JWvs&1I7veQggqjP%NWzzl4S+?+Dhoazp+XeyD z(uUarENW`&Tf`KA@TDAqAt?W#DF7vABwLVW0Oodcyv2yQc?DcGv{Ccb%bzk5OqdYH ziWv<%Cq{d^L}ql2PQo(GITYwx1Q$%aWgL$_*+O9^sB1^H8W}@w9Ayl!dPQ@(7hHmi z>x+sDmW@>`JXXQN%EECCqdl2xhwb!nS{hE|TvGKY@XqLzKe~Uq6;Wc|LQ_)BhM>{a zR#n)W-&2>Co9U{mb&l-JZOf|-Coqv87X;L6^95hiEUb-`ot?dnChzteaJ14@FYRh{ zHMUP`^;FiCHuqAe6*|HrRSUC}mKAn2)>SsQ_UyFP){knR=?BuR4Ku!ON1B$^*>WTO zZvlI06;i(1fxR`$xL2c;nsM6kMH@SlNr`3Jpy>-2G}?!bEK%jwwl%s(c2*W~fgxNi z48^M-n<;M?EVS(7Mb=gN-CZrk)#V-S29nCEtk{cn<(-!H&dcq>A`67dzfCt{464Ty zz6^N7^@zsBYb9m9n|r~dGnS!7T2wwND{w65&IAhemiO$+^>z$zxH!^+Tbh{j(dRzi zWwZ?DmB_`>q6VUK+_|Pp8v%G`THjW`VuyvqEuuxGb=NwTC@6{rIWGc;26s2RH^Q1E z>VQ%&2Cn^Uiv1-NR#XddC~8uM)W*sqohFKCH7k~>LLE%bb+R8Q^;0gKAJV$vxQdlC zXtPTbBexoss)TD*ZjrN{CV84Z8cUsDT2~7mHB7 zT2>(w7-D|~&(e%v=+TPOYIf%A9!Gff9EcZvfVm$XrlwfGpF);8#a;7p<>ow^t)3bz zONwa?A&FW!B(2$}ufOu*+C<4LG{{h5$8fgcNI!G+JKGi-T!5PRmXU%eDl%$z&>CEn zXxj}L?W`xP63tNt-O||w6OO~VFbHRnGILQS4}ziZ7As}=Y?vZ znxityk)Yp$1ZQjq9RD06WgZjB^Z%)_ZmnTO>cGS_SlZ6nJ}MG_AbW=Gvqeic&*9rZ z`Yu?l{pZ>)U?9OI-0_n}N;SAUr`Fw7(V-Y3F>Sjcz3Z~TSE8JtH!Jk=?F6J3 zb0somr77~(>&hF;P+7JjE5D#D_W`e*^B_z#U(+CU-mn5*i1;eV1!l*9y=6@4sdkvV za*p+Ze^F-!miGrO_Q@do>AUDjhDunMW6QDaSKGO!hh8bc971|YI(%;cV`Znoblk$a z?e}D2O!!asLv%o*_*n|eHpUr++=snV{Ez`4e^LJ23}|5|j?PRGM@ciHF|on3c?
L2k!ziqSwdFOXj$)IL(x03}pHU~Zgr(Y; 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
    pQXdnffM`AU#7)oefKId|7zTo_oPgWJs zGxv#Jo9`k&m<)-^1RwG5dzm;(0Zb%8j0JZvch&U|2k)GZ{Go&qC9LufCah_qX>;zF zH;H|SgK6-0be0eQhJtIg16wR#v5(wq#+$Kk)fOGW9UnHl8^5g*KhwX!5Kup*viAPf ze*g9j{C^nc|MM7O{offQN{0G2HpUMBH7F)Jp|wCFkKepZj#jT6cl~uxzcV=wYR91{ z2nmZID%%Oj@V8Kf@mpCGnV1{D>Zli$h`@r{lgwYct~^aVADV2_Y;Q7|rXA_f8`-u$ zA3uG&tG%)uO|m(TCsG|vj(E9!FLK|%&FFd+f}74%cR1*5^DCH3h^XXTaSSecOO2I* zgN%a;y(7lZRTC2-sa{o4R8!>JdE9wN>V=jo0TRK`9NnjcT z6;3i_@jq`I#cDU^6cANNyK2sSONvw9v z79IvIrmjdE6UH~I03QOOPc>SfOB2Y8j}8xxjV8p0?TbOlyEEfu#b`-OKYqZ-Lg9$U z&2ML%-Goz}p(6EThYNAeu58%Z>~`oS9*T}uH4aWGx9^joF(Z$1HFp$Mus7FOd`}uQ zFd&QKq(b2$lvhzeorvx5cD=H=k6;i4jAW1&I|TvV}5 zla}QASs?36=oU2ZIHyQngdHnuZ{z2LQV`CsZpv6kCfh4HteBWio?np%d2Wt8!AJ@q zrtwtvDCxRRJUVhFeH`!*Gc_qT=+w{;NUU4u7WbvMG9G{*T5#%+F8iPg-h+AnNb%&gQ zwbUnhD0h%xqBF>pR>uoTNK4HIWv25nW@5~LN`p`3!qG?`n1a-fW8e~rJYTXUkg`)# zc_GJVaek^A^ax5)(!fvjgV7udI@Mc6NoHpxB=KOTsta5bwo)M|tL9dTLAuyXB?^%^ zo=-tHoF;f{0LP^Exbl8O`;UhXaHtOqIy7?6q-Q`JCi(XwFj@rc>^ztlGqTF zyy;Y;R1_$klgxMT;BFRkzIN+~-^avbDMf3+1`jhiGa({QS=$t)sfL0LzmQ%FZ%nd0 z1J$HwVnT^EwvN%UW=8%ZQd5hTJ~R9XDjdxSlw3&XGB#V2k&25VrzLD=Y^@`kPX)fn z0y17TE|eNlhJ+~;F-(F$D@;~Vqs9Ck{0puhx&NPlz8lgR7;~*;IC#RWTN%7E5&Few zLrL^NqoF`f8YKKkX@;XE3;^7Q<*N_&&&eKVo3SoT+;?~Iedz5XZ^{i?XYQcftmm}jnMOliwX@vetapUz5g ze?OeZ2h*!XnUv(KY;Q9B>uzK$?c~oj6|#pL1?=!$xIVn*T&y+ZhXQyOgog(BMudk7 z_z0W}cWgASl?Ya9`?E$0cGe2Jnn&xFo?hMt z{lWlmtNtK_hcI|_j+J883Wu6$YxPS#-8H+~0B`GlQUsTgU@6=SUDgWwnk(y;iC&+E zT?eSw)nEY5g&KC1Q_Z$@3(Oj}9mcWBc2{P7UA;&CzsIH>xu<3XG0i8e=#uq+=s5iw zi--Dc{HI%nCTSALQ^Dy*lacFoOv1#!M!F`-G}y`IDM8??hKC|Sg-WmhDT)hG3(ELM zDhc{Kh?*Lhc@wI7`IGkP6b3^a3#d0XAxY8uH>9+=V%~i1N9bawf{Kb(R#;L#By4}4 zg>wpQ&4=GhV?(v#6Se`%y=!Z~cl8)p8|-V;vDY}&JK!&IE|{_Ra4(#&IoVe*S)Jk? zhTB$VR(so4X9jycR%TH1pwG>P*r3j>gxi^e5ArO6;*K6&FTe%&s#Ob>r|C>{BDwFcy8VB-OPq0@)$$AJvC}4!QhfzbV)hu zDSjnbNX`%fs)aYroW&SMMp90XGUPby&Dk={keWhslH*USl!11m7MpYC&_!Y`J`~UG z5u?euFsL{`X;0wbA)5XKwuc9D75nv=Am0o?@_ICX@?2WL{B2`_xKmBVlrhl=Tyxfzu)(;SFQioxU7E)eaCWf*r@ zV4wr=_;87HLY0X{RucYSxW;MP!!|Rk_v9K_KqNmD6;_wpSV-G?>|7o!NR8Dwhvu62 zbZZyba-sNSWr^YLG5fdDLCoEcCLHmZ7?%`P6%CZXE0Rh1cgi_Apv2|ab4{6z{-0mD zGE`DVkzrRkJ@gexYWgA_Sh{e4P#Bxy0=kM49YGdD+^>bc)teq2jdrTKkmtJ<0Y9$( zfdsXa*R5V-8}<-)3cmNGyWbhJ={!j!&zvPun@uC(RBFk(b*QtEVKKbIZ<)QebrVnV zt6>lnJZCdiYuLfUTs9-GQGMrUqWw4H4b%GfuL^;&*MdpRyV8*G*i+!-mnTkS0LA`1 ztLITRV_t1x?yZ6naMRy`5$dLEb)Y{i-Os^SD`}^w5Bgfbx85@bxtY{%)wnuV#|^c0 znWyBBfgI4eCa-C-l*UQ{g-AM8tEEK5m3whFcZvKUR?%9OW#69su6s~6BWN^r$^=d( z1&%041q*mx+j|735}o;n14S%i-6pLfVF2Dbd#T{HL|#>|_Kua}g9)3cS1jYT&qTKm zuYqs_=Wi8+alt{g^#eTV`rjo@Sr#g=Oz-iXNE3r`i8O7cOdeN~$@Q{W9VZN2D>tCT zy;mw>6bi#-POeFbs6sFEoT<4vv$~w4(I;B&cL%kqiZT;@evbzg1n(k6Hs8ioxeK<^ zg+iWuRW!6@>Y~JcR<6DeVbENj86Q$eB-}*CE`~VxEWd%&DnmRfbLRV|Tq0>%vx=TQ zL{$Jr;(a7-X+_zPDtq&)fT~!Efg{Lr@-C588`O>}@Gb&@p`jGS68L%@M>Pj`i`HVnXF&A%-~-Y`$G&pPUwkhGSPgr<)nk9XtI! zf=3S2+;1E-yi+h3Bzk78pb*WhX1*z+b5bR&=Vi|E(pmg2l&;w}Y+@ugIy#LZ;@R>40A4_$zjDVY zD>Zk@tcT4LsGTk?+sUqUx6xaUp9b3tS6dpawMe$-tO~*9%iXt*m|qwcMp9_y zbLUo(KWNp2?NUcbJ0oN6lpuY)!F4%UtxG96{i(Z2Ha}C&!Qj{@1ghtk7mqA2UP8%3 zY@STXQ57{+^IPoiQ)&td9IGL0xXnlKv#>Wb>Y%z%x}%I!>PVvf_k@kIc{l4l{Z0 z{*&01WVIY(k<`>=o99qdUgz+_-3z3YDK;+KOHfyFv~oAdC6njbd1EQGfhjYt}N|6gJS2}d>)BU+rJSX zX?#|Z*-%+7?eY0eIzx-u`IY=C(wA~|nkzk%H1tr>2FRcc*HDIQ$umilhJl$0AD!;{DK5+HX`C8O{%`)!HyV2#93k$2m)K;kvTdTv5Nua1ar_0PxUjmADtyr9 z9axRC!u4}jxP4?Rpw2Oi%d00=2IiKKe=(O1U>rLVMJ%h_F%w1x=Hgr(RbDNpBW=mf zqak=*Gt1#Mdb#{bn?KH|hkE$y{7s#| zaZ1kb$!f6qTXIv3jAiuP=royl_m0h<=FiY*-?RDqWC^q>4OjJHN2ErPTTVKE$Bp=8 zYWY+sEoWU?sN%uh|A+jdu^gnaJWq$V<&Hq;{BvA$j<-8U)|8Z@p=j_gQI68HM_ZP~ zKV!#ewf%;4(K8t2-`f0N{5zawg%uUjeeHcR1NMX{x9*`-#Sb?Bl)Yr|pBVV&1m@#J z>R3HL&{4K%@LzD^W@YDglnYy+_;kzCIojK8POMQ{2>e%E-}$fnF!k#QgAR@cJxK>B z`%r@)#gV5t)1jl(7<8gP-0IV(k45$TMfIRO^g6|1$y$-f0&Mm%d(RMbHN+bBpZ~L* zll_kK1C@b}y?YNgguL`+2vLS*F8!Ci_ zCB?<1A%zeTl#J9ON5%TPpM-`(4H1DerCCdMr-A!y_5vI;1Ui4Lhap;{oE6Tgl53hF z+MxcNQ(j&gC@eEXJ5th>fx-obXpg;`v!ps;h&b{o3#$<8fXPLL)kX6S(UBr?B``!M ziYzUxsxm}pcdC_?)nM+fSaWe;ZXt@fA-dy=TwHF51SCjtc?~YvhUkTL1WKvmKA06( zSrk{Sr5`Q%g))8sp>&(Z5NM_75-nX~h$M<9HEoE&=yafFHbgSEP%_sLDP-9#tSAl0 zdnbk%jxA!iyb?2$MO-3p02BqvG4Dt$jI-1bqe!dMbe)Ulydg#tOUldU8DcCgSA}#z z!Vu#yH!f_3$i(Ebno{gl7WN7~fCXst8e$>^Dobh$iE5L{HmxkLMk_Z^Y=~T}rvisv zQe=p!a`%Idt_(4qEX4V;b2I2VOf|NJS!PjmO$E+%F`J?nl}M@=&_c1KtZ05^Io+fw zHkii{MPvkF40eq6`X!3vmiu6pg=JMG0UDv)CaomCETE0EN~GdKjH)d!!QSEGY}A&M zVj{krixr~pLntXvcdhGg2sAC#Oe71U=;dkhrUK$96L?4OVR6BUA)s<<-3ldrSWSGva)w$sSZG%s^ZMuJbmD2SG@l?z+D(C@-FZvM6|Z0EulXfI)`3*+4U@ostt31i?ijAzi1 zPHSb4JHZ(;y|W9uxUj1%uh5~940nef5+=B?rwe;QZwdRj`TDx?{ao1JZGV6Z2fFnq zy7>pW{Yru}L;V_z;pDLJPz(0Ysm3(7A}d;GpvmeaS)RBl?PimLU3?gPw!v8xFbv(YGA56w!AabRnYeIcOQ8 zA2?_^q8~YE1)>KW^jt&_I%p-LpE+n1qF*>@HKJcRXbqy@IA|@R-#X|bM89*;#fbjk zpi2<_$wALU^cSD@u(}<7i~eI59N7*{+n{OxcE+|6VHsU;xlj_h8Z?|TQ8-=VaH@2} zX)*w($S_PDi&G;9r^RfX5+yhts&Oi;z-e$9PJtWoy#Yo4UKIOXDDsb?xW9;^{tk-w zrzqCnp;#Y=>#?01SOnb2P@Gw3sAJvX7SqW0VRG=SW1L&2QpzLHx z6gM~_3jU;0$y6YPqJ}5(IrYFSjWHVxnr{TdEV}Fvz?@6*_%%|bT7;}G;*YEXv z*26#oo1txtDg2&&Y*t<}A$!=_4bU#e5Pq+WBLw68-Xz;^KWrsOh@{8{@Ww>=BmI%t zt0EafyT0jXDq$AFm$&n(-*8r_zBK^J?6Z8A}49HpKV}2jy|5rjxB$AbC zatiKY^AchVBDWujn-mfZmVoOcpcpE+#+$ghN8noC3dOk{3_)um87+pPDBz=T&An#9OzG9*TJlPNK>oGcu{R(1~R zau1H5U`CT9CT&>|ClvPIk*x8+T$JY#*W%V&mf5C~cG&Ek^enyIEzk>PSH40XTM2Hyr6N z82x?($HH(#Sd)ePu#p;3%quB0S=zwSK?-4;E`<N{&a zJ1COO2KE}}8{jtwB*a=dey`F)t2?lBxQqvB+%7uLhUbB;}Xn>_e z3Cg{H1C$dK)I>jZK4zS;lY$sRrH0_DmPuEICG}~U)F&)yMRU?Mn6x4+De-A&>o*D6 zzY)9yk<<++kI4r0gfhnHIaIwwjhrAK)rYM-;n%YB6qgd&lyns(ZDZHwB;*mV3vf}Q zWTlw63%*q*lZ_47Uw^D8(hC{CN@IQvscQQ*VpIJw5J{R}NzxnOPio7rqr6a85ZPal zWcYQZfEw8dt(;_~05d4X4WPv-#Yv{$^cx!i=UkG>QCbXI%{uk=+sI{)&sq-_E>_+R z*c>YHBnuU~T*>@qebYyNi*LYX#-t*#!6FGQ^EP2#V^h=TGOvz#u?fG0c@!F8`YNlb zx8Fh;xTy|g%I2mY+)*fgE8CB8#Y%x(o77})Z@&@a6(n(zw|+gwo3l!1ew_wb--P6? zgSkWtIaQ1XnCxU5uzxL#qLJhLfJ7N*4%lCZvL=(=h@4=<5}E^)KG`$`Vu9bNZ+bzt zMA&`JtJlT2vH%)NDy{=Ii$@*T0Xndb&>7c+p6m=5hz3*=>jFbqH#iFosnM(lWaFBb zi<)*8>jUSYo~>p5UfhRHkWtNKT#7H>G(%=|NN9{Qp zHQgBIXJc7B%V1sDIF`u9vuu{h&S4YSYL>+|ut{tyo6PpI9QH8c``Hxs9GlACWYgFW zY&tv2^0>-o@CY`ON3rg_1Dnk|vorWW)`=&v0zQNl^0QbG&t=6tp9Oe1o69Q^uV(Z4 zQdYuOum$`=wvex3W&Ac)&Ns3Oeg}phU{z=~Rr7~g4S$x^@|W2n{u+iqVCV6JY$^YO zE#v=U7w{k0O8zsunE%FB3yobWqS$4kJ-b|VWLJou>`IZy3dLFMYLU*a5tG@q;%s)E zn9Hsg=dv5b3U;Homfa+7z_{Bn{VsMJsam9TJSowj-bc*wwg|fwF%GKO%x*&uO+aU{ znyte)v^vCcb~~|0#n+T#k4#y(*6m}(;L_A&CuEc9L{ zvrTfH+X$W5W~{}=6|X(J12Hce-@_UCWf4ft3Pzrp#)mN>+t7I~+6d&O8N3=EWp`7} z{6g5q$WycUHPDXTi?w+86S(#`*u~JpSxfnY*qX#ddu**yVjXcsz7Koq6&aB4v>~z~ zkKIpgh$0v&OVB-}2jH0NnRUfc(}G1>XiJ?`>02IFGZAc4dXm!Hf-|k>7Fy%**-@Ml zODbmrkg8j@CH5X7^C;9f90Y3IDQjd0?=1RMV zp>yTL;cAa_=XrPa@9(buq%~@l;^SBSN5fWqJ+$h-5F|P5b4fnTA$hE%wL|y3%pl1d z;Itr3LbT5tCUe9|j)WQ=PKE>8i8^}@ZMNru4j@{y7m+$IA$6Wb>bwM}vDeT>dmXy5 zH&C+QgfrP&Fc|I1q3oS7N(^&5+ZyX}D3OGD6RLx zpLwC->}D@-aU)uegAzjB??c-aXxi%RV{G;S+DV@v(GTJfKE?^~8Fv43=*Yf6b^0Y5 zlAndqwttAWuZ3v)Aa;mqO?Ns(G~A{Vt`>)=s}@W8o)PSqTpXRAseeP`0oWw4@350U zAbo#A9sdJ%>L;Y>Z%EVMv15PWOg{`G*b&t6zoMo%8b;T2x1(*)es-uiJVe*zFuJ}T zqHBpu*E5}AvoNi6HgnyOP-j9wSUuY z6skdVHFzuNz*~p4+tF>;4z=sUcHefV@jIbu+!rBHf{41~xJk_0g^@}Pk?LLco?G}@ zY>K;+IQePtAV@*;M&*q(pOg111)F7HU3iqEHgg*(7^@WbX>PPDxj?)#MDi{W#k(RU zyWyz1Lnqz?I`ahR%X>m1?n-kt z8kZo23N7v08DwhLCZciwsc+T>Xcv^WL|@GYuyAGiyaDZHxw9lEp^i~sA^K_KG*16y zt7$Nb9g=VidU9dPf=|KuHWj+_Y0!&LNB-p@|7O5YJ`+ap*)WRdLpm>jF}x7Q@;PC` zHZCM={|fc~3%B=++PZT_1C^(Yl4DC+Zb$ZcgV_S^Y>x{Myj_RbPu<_|I3vG(v z5J%G45ub||$vp7#5;&cogTq_^{dp-2<_jT(mqRK)7pC(nn1$9&0k45Md@;=9OQ4LO z2bFwT*pL^6hJ29KxpqmptH|q`M`X#q2^vG~u)pPFzZN6wL?fdy#IA?dw1rknWwt2A zJJ}Y|s5H7smP`^Sj9zJ+=0rKkEdtoVwlD)t_Cqim7D%`dmPttQS0J${o*>0v5h7k0 zP9NZxA@MFp?R5o2^Q)mPzZQvi9m>Y_kj8I-@%%=Z$Zvuf{AMIz9n9vp!Cbx$7Vz6) zA_vgzhdg-{1^O{a=8wa0G{8smCn1AB1-blbn8u$$zB~*0{5dG$&qFDH z5z6_?u!z3`=kZsO53j+c{B^jTzX8|qH<1tTKplS<*75gX1OEW(`G;^P{|N5lAH&`J z0Nl?%kvy79n_RFZ#G@@}WccI+*}{HAjN=$?m)sJN0RjyOQr6Q#SZN45FN9qh!mdN} z*}7byG+Chtw@q``ZcC-s>*zQxako zHEuWiLwXDVnc(;gR98EEdLv_}wq{3fxD9&kWlQs-D|fTM9%+vBHb+XVoUrCjcA%{~ z{u6ZMzd%p^D-7a?;Vgax#_^-bv%kXTz?4wOr??$Q40}PFg3W(8{{#WXgY#9M}m6PK|t+i9cpL?p@EwjjAlBv*!0Vv>T&z^_DatB1)5c5H(2 z7(Kl;Z-u%l(vj~t$%TYn+8ETc#_G6!jk_ked%l(;AjD4cT`Ate3DJo|Ete_(sC-;13CpFhxR# z&AaI8jVMPtRv??tg-B5atwjwgs#-`8i(rsgj7n(_aeAJT#U2j61Y*Ufwkf?ST8PzdT}M(FRp^E;%azATmw&vYvDO@9lRiJfVag> z@V>Yi4v1Ueb5yb4h_&#oxDCD&x5Lk3J^Udyz!7=JY%^2D9ZVAqOc!@CTinf}#68VQ zlC^ThM`aPby%e9;(8Ob<__To^d7L~Fnhy8N4L1d~$h~Y0#;I@#bmQ?DhclS2w!30> zjVoq!no^sW@{eK`oXh_^f_2*e&jhQbl+kY>E8s9Hk4kix30@C-CEN!eNO%C(R)XKc z?-F8urlPcAehD$ZgqUAK%r7D4m(Y>Q{q&gyu?HpcL6pe7D3SY6BKJc-@dzrPM`5IR z442C%PzgPWy8S7X$fsehcm@`TXHoe)2bJPQl+2eZ@>oeCTtRK zp+vq7yTm)NSG)`R#QX59_z+$cAHi$lW0cGT@PYUQJ`$gzbbgM~`2|Ynmnfazpky9` z-^I6ZSbT@l`8^yHKQJMFWUBZHCG=_%%#Ag9nxxvqRE(EF_(uy3#o=B%KpN z(zzr|I!{Nx@wg>iket#H>hD6{XOM<{iWn}E=mcp?5^aIhCMhJYwL3#Qb*Kr`{!FRTi&m&w5|$lN;_F6VdLtd%v_^^UMEfbV zex;af{)`Y#&D={$|4f>@_?Xhq25B)5kdCASy)NuXP#M;Mb8#59uPVdi);6_8;U3|1 zsFUo5zqudO0W-m`B5kNk6pVBzg<{?SMv!WsCh2}X3NF|PZMX3*e!Y+HtmSo>yo+~l z^p!RGb(*7A^HQb=Ift!_faGMeX^-6oVM~Q{|lsMR> zbcBB?UEzDB8~mj7fM1ke@Q2bHjwpTMFQp%2N`Gc316eC2k+o9>v3MnkouLe7-IO7$ zmy*o-D?`~JC4~)EhOuGFSu9OSW#g5RY?_kBW+~|`Um435Dj96CGLBuSOkiu2EOxUp zk<}}c+5Jimdql})&nr{do60oyu`+{wqs(I8D`&G`l-Y8wts*I5zq@mdvtM~{IoImJ z=6$3e@I43@`-KIu2=+DaE9YN4dyn^%o>W_QfcKXsbQJr7(}h!wrNMSNJ9TzH)-sT; z4zO>~r*yD2&_&Ku`q5tEiSx7_$9WnF5RvHII@-Yo(uv-4LFOusc5A<3rb%e*!u*phIPOjK+o|>;)j_F4|r!59q`M7#+3Ys;8eO-ACYM z2!}czHKZWih;SIj`+*LK040q)eBcWZo`ui1_{_xTPkheC=Pzl*1D}O(DL%jAb3TSC z?=pP;0NNt~R_z3|SZSM*y` zR*k-qVZo`5dRS;?qd_5GN^?aKvZCnbJhK{oQH?&Gx}8p8k1R2~xkRKa(et?2vyZQ5 zcB9X3^jVEg1#VxyQG5QknzG%rX5ALX2UHbqA0oocfO4IC7Tf+8LkH z%^*iLdpAHMnH$&3NpA|e_p_|IoSon|Wj~jlYG1G)4)HWWhRj-s2`&M?W@n_{AU5{(xQuPU2-*-MpI3)bP$nm zEp{{^c!s)*j}B|(Z)7lBO8#R%{)TN3MZ9i#ZiA#bhQfWp@ggc&m~6xtyLd+Qs9ij> z4)RW}G@8ZHJc&3`T&EM2hI3zvc(6Ujc*K`TO10fubZ>oqeK^!q$x_Z-<0Ro!r(AHq z>o_9J+7RS36_&%es9E;nL#>3e>}7}YcJqmk1XHlcf1_2DB=aA8alGZybZ&5-(D}AJ zaY9DWv__vs zmS$m{bUG+YD_#^NAgLDVoOdVZ+-P>r1C36EzML#nK^7``>xSd48~@Q;KkYiYLhX3# z*2%ne!*7wdZj!fdINrK(%HFy`-nvONbNZR!9E5~-^OT%1BnEm26VPg3!49d5)H~I? z*&!{}$S^WpSjd(dhpaW$mF$r9g?-pQ!VaPAY>2QCZiWXW+y);>_&K|pAiJL5LXdCg zk4X3^e^#Xw<;@OgK`0ERxX4Gl#5`SvKsa&7sJcSCGf7Y20l_QgM-Qy@VRmoe4|_q z-z(R^AIi1xr*a(=%Js~z+`!_L8(Bx?RyJL!XET(I>}+K-%U2p$k#ZLcDEF`u zX=K&P{cMHu09&POVQZAF>}q8@yI$GBZc%o!b;>SQuk2=T^%#P3mF;rA)8@h!?5e7o`%e@JHca;zL2g*nM zpz<;QOgYHEQ9kA0Dqry<%Gdng$~S^3hlHYhD>UUt(OUUQv{il6pyH##N%og z@q*e_ysUN;uceTKnJny>szEl_^I^uubA%GH4CQRk}B z>U_1WTB43n&r#FV1?p(ERGpwMR41twYOZ=NrdDB0wOX#$;JX$z!(#PXb&0wj;hpMv z>OJaGb%%Psx?f$cKB2BqpHVMRpI29^uc;TRZ>blnAFG$B2h}y|SL$WzZ|ddhVf6~l zRIk)*^(rl1y;@69uhDv|YqT@f>$Oz%W^J^3iNXwJ z?Yg4w&~JKk>zmaV^ak}seXIJCzC(Rk->tr?Kcv2E}zpTEgzpK8b|4V&W z|51HU|3iIWKdOFgfO^1auYO{5NBz-D{nY5Ier60%KQ{)cUl=Lsm&RG@CL=@r)|jCF z%b2EqXB4X68%635Muqy5QLFxJtWtk5E>V9qZc%?TZdHFb8r46H2i3#I!S}Sv+ z*4mt*wK3;t?aXtu_U1w@*1SZEGjG)5%{r}vd7E~+d56}?+^(Hr?!$7gXg$n#wFL7s zt*7~u*2_Gq^|qMS$BNeaTAj3hR#&aR)k90P`e}o#G%d-RqMd2Y(gs`ev?104ZKzeL zrC5u!Vb)S@xV2mxVO^-DS!=XW)|J|5>nd%Gb&EFETCZhT+q7}kgW7oONiEZQR?D(p z(Xy>Kv`N-STCVkpHr4tsTDhlKtMJUz&h;$NYCL6Ht*2UB) z?72-l&$B^W>e-~7@3~W3=DAzDz_U$T>3LMU(DS^u+Vh5XvFB}Vjpse>GS7$F<({v! zD?C4GSJ^_l+P1W7>`3ieyOnmG-A23KZm->J57z4Jq1sw|xOSU8PFrVZY4!FbZL>X1 zyTd+LyVG8w-DO{--ECj2-D9uO?zOMb?zeB$9_4?fy^8jjH$r>b+g5wV+g^Lt8?Qa@?X11v?WVot9iYA99jv|T zJxhDdo2k9-ous|tou$3$ouj?&4QTIstF#Zi%e4=^mud&RS8Jbm*J+=68??{8JG3vn zyR|R9PibFyU)8?$zONnfey)Az{XzS|`>Xb&_lWjWgwTGDFtuMJZ0&G_S345XK|31J zUHf-LZ|$#${yNB?Q&iKQWkjO8Q=SlExjW_G2Y1TZjNnc=%eU`ycgmBzZ@W9?>E37D zo$?Xhm)xE5A>KEfopSy(bdd-5I{zJfe7^jVLR1Kw0r4(&1thuHhY;mrhl7~X1I~4^ z;V_w(&<`AxJ6+6BKZhI#(=s^lb7&7<+Y6U)x)*F}`(c$#wTvQ|%S-t}FpMg|H%j+}mM;k93YKAe8^ z7~vfZZ_1Ma!@I*h88E#+;3ysJYWHM-KA!p|>^c5qfDc95(N8z$i4-x6cKQ{cmZY|@ z!GmXZ4bb<*_aY zrT8K@K~e0jkbkn&VU(I4cdNT~cwFjmO6?YZt9xJnxKyM9CL4aGrO_Vi^UaSdz*juI z{7S)f&avf|wa`lX{eHDLv^PVpW6;HMHulgNZN6G2uLkNK@ai_S)xFS3kANs?ul-i@81_h3Wxp6o2WH=C&UW4U^NHdh}YkF16}tPdSo1$eEThzcv> zi{$aJ#tQjjdBe+Ov-uJ^>AY+PKTl3N#+UN*-OI#_-5Yu6o$zHTv31Zsb{}6sm+jMp zbJHHZalWkA7S?<#Twbr!6G7DnfvG1!gnlN(=!2nyJ_I`IL&NUpbP8UufcVg*|7i9s ztdsY1R)#M9hhM&5*4&W1=d2Gu$>n>6J|yZE?&TKd%5m5B_0+JEJb0~`zVhmnw5MS{ z6Z7?z=WB|4c$V-F$7C@roMVqXvU2uk&_Rzm!E+C}>3i5s!{XL9Z49~WT5I>Ls+0Vq zF7gZrQk}CLKGHpV8R(w53|YlkLsP*j))c$8DQ~N@A3i+34i+T*-|vWzo7MoM{|603 zI}Lc829#;emiM%VW4HYGl`-yAcGRitSM1V{&FW148d`3ubqL={I~Jz<8jf`e@S?Ci`PeTb%f!_n<0-6{Q>ZPB$ySA~h{ z(M9pMAFUGd{+CG7{|7swy4(@f6HdA#swnbOz~5{!>c{Vh%AYp=hvTrn>wxAIJ>?xy zMV^^Ff8wk@gKQphkAXkxQn@p$?Ci8ba{gKWHc5O!8cZ6s-J>IXd^{Xs%_SGNVr@3PQo8`4?#Ub z??ezSkgaGT9fED_34-iNzKtN?uGSI6`c@ItR_i@vKFZ%4%Ta!WGCx9@AEC^TQ0DI) zyi6#rg3r)ANJmR&H0XK;*!l!$t!F_WJsVQ=iIA#KLW^%QjMsDEY&{nW^{G&zPltv2 zOxUcS4GsEixJNI5`}9I=e-3QZ=b_~{A1%Lg;7Pp{p3@h?PkI?zf8}skuYe}~Tqg8t zrs*}Ty}pQb&=<2#I#O9*#uD`9Y?Qu&P1Y}9Q}vZBPrr~A=ohhK{bDv>zl@dZm$OR! z8n#HkmR+k~$JXoDvrYO9>`whgcAtI|+p5>Go%(HTkG>9Ra65Za-@snd>)99jM)tM7 znf;{S!G6^n*kAhHT+#34rryZ=>-X_N`u%*c{s14LZ{cbBc0O9)!Dr|=i}c-mj{Y#8 zr|;t{_5J*6{Skh>{wTjme~howALsS@Q~VD7Hh#bU9MbxEzFmKnKdQgZpVi;wpXzV% zAN9BSuljrZFa3St(LWG={Ugy%|5(K82Siu>6VXRMC-C#8~|+F<$>#1oUr2 zm3~On>feg<^zX$*`VZn-{YP;tmb*{?UF_2T5Rd7H#Vh&|@t*#tIG`UDKkENhK>te- z`Y}Z}m=a-d#cv3uo1rLu3{@FoXv#3dP(~T1l3`fN1jD0DG;Af;@F~-cXl0JkN+~f~ zD;4NhEH&CFD~xu^#YT*BjS;6@Z*)*@HcnI48mBAkj5CxCMi=D{qpR|W(M@^D=&rnG z^ibY35|nq0p33`1FXf=oTlvE1uY7L|P<}E7D!&?oRLw|Iy~depv@uw1V+>JajAS+5 z7_N3SMyOqlv(&SUR5i;OsZKW1)G5X&b-IzR&NRlV#YTo&X^d0PHzug7jV$$2W0HEg zFK-Fceb|_xK4Q#NpD^;(PmDtKGh>eWrBST@Yy{Nb zjS}^UQK~i>3$+-dOzUQpYdwt$t&ef8*59bq5{(*dm{F^ZHx_AAjLBM&ah_IVEY&VB z&ev8M%e2+T#oA@YCEB&drP^)A8m->AOxtW+uHA23q3tlP)OH)!Yfl(AXfGQ#YVR7i zXa|fs?K|UE?MGvs_HW~M-D9lRBaDrDJ7cpRZ``4GGVav77>#;YeXQQYz?o|7(EAv> zr8&Qmer>4tbFVY1n{?j|?J~GkI_*OHx9hYk=-WBh`4sH{y6^Gw z%MnrZXEaXu=}?;crGO~sI$!WdFzlvgzeWB++jtaI<1sLe$HV-WD0jd<`h!L8??!IG z%4x0p(OrUeB&Nu3FnokhAwJZ64L(a;A7UjwbT4fU(9d(}XUiZzQ&@)&eRi-O=mUZP zcjI#(KIHc91aQAo0Pq+-PXT?k4d5kwUc=`teBRpzk8RloPvG+uKF{Fu96m4L^AbL< z;PVzkWxNcR8n40?#_Mp6@h040ybZS)@4{`y`>?_I5H=eh!(GNF z&}e)LTa3?Phw&xsF}{X}jYIIL@h^DN_#U1$euNi|pW#*GS9sI-9o{t#!-vM7@QLwn z_}n-KUz-s2%bp)Yzia=JUnGB_=cB(A<#OmI6b8D1xQ#eO7blv4rH{7Q!?ir`h z7nGC&Uxx~5h@^@Eesw@H-Ps&NMn;Di&94tgHsWIpk+=aO{Ys3XAc8Y=i~RHqeKYQ3 zE-jHUWH`A6%=j2HSip1&m|NU$)ogD1*ts60)ywNNJ>yg)X|gF)^z>u21iyi%&zKl< zW==DWCj4E;H4T+`~hMEzOX+}aehV#s5m}RztIc94Jn0_cV z+rTojEnI-%%gpw0vl$1Q%?^@&=gB*n+d^9e_sLJO(5Gte;?749B4HC>Mbi!AZ{fA_ zmU~CIj<1&67(L+<`UDF4@cm(>^MMl>3a$Ai^7AZnV50M>6DW1#Ojr-C_@xr_(I4q@ zc|>2}ppRs}5Y8j|rk2voDwSBJN>&knQk4OIZ9p-m#PZ(+TLZVE{g7$>q0$@x zHReD#-%Ny?%t26x;Z5dX*kUHbJ~O5H>NLC%V&Kyu20rF8unp{V85ji*xePoV?%|81 zmh1+bB`Y-;0Ckd;It+&EB`XaWiQ3d*Tc!Ke8WYZU<1E=8Qg*huhO$m8)bo^T$^pOBlW z$m5a7<1}bzj)FesXc%ISff43dC7t5ch^nqPc3Un9(_ev=+U zI1esBjud!M3Z4u~0q>6W)1`j?pQXSKNdXE(0TP;UT}lLrL8>-D&S^v^5Icv&AbXnG znGj^>=|Oh33$ioPug7@wAYWZ>Ha)@RwVMfakH)Rbj*qc}b=kqX>|kAXurAxF%XaGW zdp0*c5&UMTyphv0&LA1Fg+Vf6Cip!lBNJlma2b&cr5QjOnTs+q4`pONB%9|zy14+x zo28ItE`%v&8JumF!(6ihW#e2}Y*xZbvkF#W`c-BvTx%{u1-=;8noFSGJP+4cZAzAq=BrAtQvhqbpR(=Y}%KIT% zIpoSpBD~C((9bC#8J?9=V?a9WlTu^Cc-Sqa#)2u(*Oic)VS$ty4;nX4oDDy?Qe&gk zJQI?dDcBOqG>iXxsWA{3|0p~pF{!%z;vz9Tn;1Sa2Km;^@PR>wCj=ROdXVAmf((!J z8!@&Krjx^qLR4|Za3GVAl(iP=6blt+yGn6dU(*>2#=ea z;01FtylLJ6ADMT;m#C1x!92g1_b@OUS)_S?vn#;jL%-r|7Zfbk$`!26a3m;L%ytE< zFMJ;qET+1GH55K|1?x08#@Eof96A&qN)a<56JC=dW}z+gg8L!USuofYrv|8%B4(q# z?8JGQi8cp`m=`$xwKP}6_F!G4m?n!9DPQ$uqdv#6A47 zwN1aq#clv)D@#`7R+So;q=k0%Xj3!vt*~Sz__44A`I{dlNsA*ZlB982va$`DVifw) zq`HS+P8Z|&dUy$w(w>1w6MWV_zQXy4F<;gI5BQC3j1?rAzRocUE=pMBYP$4>MOHFY zfb{*vy?jL;+9Y}bDkOZ_2{Na(n_st^-;|6J-+tQhS-4E0b0%tc{|5Ozt~C0xCST^W z3a|?(Wf;bwGm5l?Jj7{BjxUSx2h;*gi7xr8odYV^zLoYyPHo&b@a)&7@v%c_L&4cdwE^nZoc^uzv8pzCn-}+5Q_kG{2)NJB;i<0@KZ- zFw^`u%r=ifq1gn*7K3>fhjT0i7FsG)SUOZ&1}w5HSZaA-x#fimtq53c`CyF|1y@+D z;0DVNw_0uBE~_otRX@TWD<EGT6)SkZO#u1@0F+_Dbdm{C^L>Q=aE)=sJ~2 z7DvJc-XPUjG_2!3$>J#bYn3j;zH!cY*%`r;lk4Q!M=>d(lv^Q+v=5=7uL>vcA4c2Q zDM|s($dtHxd8(N#65^uZ&w_`^0!^0R#0wUT&2Dl2(kU2EG1*}o;c?i@y(jzm_z`Qzms}r4%ICSni zf@z%&KC2USvCe>=R%b}Iy1+!ME6lKZzh1DBYS$*IVt1mLVKU`xCfE%qu zxW!6>dh1Mh$QlCAS;_FCH5A^kQs8TA7<_LHhrg^5td(^Zi?>FyPFA`UibOgYW@iL< zePA_r{)9tMILG}&;2SW`jr$(@20t4}e}&UM7r(&WZb}NW{qz=G^0@4Xak&r`aa2V+HOA zu6(t_fz4vRa;HJeeJYANgSL$JmUx{M9 z3gqrdCxK>1@VYjW_ zv6GH%+qP{xPi)(^?WAMliEY~*ci6GbuiyI4K2@hq)vns-_nP;gHLLDgbF4APg+AlK zF<%Wcd&_&sPV{EOk9(+T#Z9xL`?~EMUoI47S`ONgIC$-JZM!v<-X4qKFK!il&-y1c zR0~g@UVzsf2sV6Bo;S4m>4cl-^EmZ%ZQAjWRokvXXF-~2xyliUA{ihj^hFN-wgfeH z|L%)-$6{$mFDXzTxU&i|{x^+ju@ib!tJ<->dZ^Az4jRD*)WKDdgH4!*F5X?~P5O$l zR>*li4=5Wv=KihdwFY7!etT)*;cmZ9?SmSfDMFMwUJ9d95^5jC>08U0crK}b}#*Z@zsPB+Px26(tjNJANL?#{7L9!&)A7{o<#XjoCKC*ktX!Jsx)A zTQb)Jniua{+l&bw=00h{uoSQmPwC@!y1-(fQ!>X&)ahWkD`k$?@yWHT(E21Cg~o!q z=T5Sy?WWY<{)Z5GKroo2OFaCSPmn&We9fbh%QOq*wsWcjkK2NU&=Lo#+k&CU_G5-J z;U{`($sEXLehlR4{k)@}K=-+UdB{;=7T(i=5Qiz1p`Yx~YzSw6RuAg{M;*`ww`f$@$f43vJYH z5BM_te&xx9*D5-vU1_s#2BkT@iqeZnRF!YSW}*I4*wus@qvw*Tm2W=r0qSPicClF} zoz{8ADRGDuxYMtJO_ss0{=;_%LjAvroZE|l0ZWk7>`DH>I z3v$ue|5|R2^ONb28*WFzO{b&t9O6OV9cLpQ#T0gY_;l4K0-|Asv(U|3I@bISaG$U0 zILaH3(suQdH74`FW@WAn6hnft|K)3~gmL03Orh?S{gKqQw$bSpq%NL{LJ)2**~}r0-lEr-w}n_c?tF}jkz++GbY9(8qg|T{HQx_2kVV( zq;~fMyRcDt71}}&$d~JLftmDyuZ=uoK^r?%27Hz(%wWM)he z4P<;bD`KLonRRd-3I`zw}i^QRL{W7pq}*!8}jY{-v(P5LYZ zt@hiUd77HPQkoN}XUx`i9oK@2dw!F#cauT#N{c;gs1&7=ixs61E6gHMU5F)$KLPJX zmhx2S8b0nSb4VMyIKU9HEKV&;c$e?>twyH4PWzq?ciaX5Bch5@# z^Q#AhMZ%eAg^kiP5g3w*MI1s29*pEh#zbc7xWut|C(AMrg*>>WB1*vx48+p;i+ZMD zN?+_uIu-LhOC;4Mi>+|XV3_l|ot0J7Fiud)-drHQ08VjElPn|sM z`#}f|Jl}tEh`Lp{=xd4q0Z|WZpy7Q@Z)Jqir48&FAJKp#_Dt4pg4NC11dN6*i^@px zlVLW5`VSl_MGq3%W{|Fa>Ccso;U)cLU2PT4E#X<^BrEYMpTKGn!8)H$9FSMeKmB$AUkjmMnYH@$kO2Es>oA~-+01vgj!ziwAfLE z?=%2yKhG?jT4RWOC5AXuqBvPMDrXxK0cIEwIm>*7^771~;O&j@CROw3ZGRsDCc72= zS5fd+d3Y8Pk{13zW!Xr8xZq={>3Z`biJ(z3mz=$a+1`f8Z7hTK_5JJReJZ>GhvH+* z+a3Hc9=%CAQnK#J=x7ZS`h6c#6;COGW5$^nfw~Z9%Y9!+8hDOi z{U_p;*>2a~4e~eZxRXlI*e8S&j%{WAs+94H#3-~2 zisgx2`I8e%#(%B59)<>B3D>U^`H@d8pF^6Sx`fG*lOA@F_6S83`3d1qj*V|56Tdgz zneJ(?@`wFq3$%BC03pVm4tC>bAQ~^!+;2z>W5K;~7A6UKS^3_OG5_efvjM-u!3RP) z7BI+0e5_M&(S<4bTRuK`B;!$})L^EPHSb}^&#UISdh^P;y57k-4&xN9L(?p@_qD}m zzwVUwT(%0WvUc!wV*}IsFWd67gaTFyU$0KF)Dl4yc8ObrY)+7>m;=@ps!|0jxhThe z))uT&@h1sNL;}PTFXI^cRjg0mGO&PaTqGr-sv@n;WoB!PO!-4om8139fN(aQZRoZy3j}_zV(j2P&>$bz+?RIPrbPUSD@-{R6m`&OP7bvNE0crUp=4S1ykmKBx^ zTMSR}NlvcGV!wo8mwd>=iT5pFD`(Xf0|ASf$cwQZ(z?gQ+gTZ8ta#yly zTTA~o(Ppqa_snFsBLd6nP;0Wz`E0H_XHoRpwBgqDR~IkMYq$1lTDqWZ z&KX8Gx?~#>uVgM@Jm^;!wnN>V+f4Gd`L!@TV9(D8MmswS%(u5uwH5!lBQxG1RyRLs z&JPSG-#XWTVjdi_&ewp?ElF+QJG`uuq50>w=K7CkOxwhFNZhmDk?@Y|hCPD8MScN} zLDk5(J2W#B{*~WL`RTUZn>wBGJAsid+g2KT|=;6U?HK&f^` zeyQ%lCwthxFl0T!75+U+0U)@feSz5-_$heoCA$U`wB&eCxdJ?&D94{**UeAq zm2z^I^*P2><}%Id*I;=xNnM$ZaGQ~L4Cvf5r4J8j!!k}o-W1t_2SoPt$24Z~1@}xB z|Mn)B;kdgFiuKfkl^^b>#(so9f%?drx3D4@JK z=q48&)4jFnX8(?F+v~e;9UR$=V%jkfyG0}k_dsjxj-eXzi5z=PDPq1R-?-Z;;=LwK z_AJOIP64ae_&veZ>3 zHY(XG?49XSonW4f=)a3)*oN1#Ct^$Rq%?PZZ`Co0bi7Y6b1i${l8#hr_;eCTImF`} zKKgvZvuRW1JnC!Cn@1KPUka^FwB04Ci+Zac%o$dC)R9|d!o7%dY{Pi3`u2(Yu6q9p zOg*Z``dy|efXe;`g~F!zqY@PeZ_eRY(k5JxUw!3@7zD$R>%0H__{`2Kj)ToYY>1v{ z1FWC;3|78-e*pJo; zx&KPGoGTckb2m}( zkMQ+)q^b;C5We{0nmTJJg!%%{me&_~e3LOx@&&6iV^Qqpi^wzlw@CFv-8Fqq^zW;$ zYgk`+-F?^zhGD4xQOp9NZ`9pS!>ZK1EE(=zxyt?w+Jswl8TnovtMN6e+SeQz%&+vt zhU+;tVCr9*saJP1{s7%|$Q4V%07>p~4_e9>f+N1& zYQ2N^G~JIv=LkX-c7HLq`{!jxf3>)M!V0rjrxsYjU#ouzt1e%qTR6X^)y{zo+`f!d{WM!oMS@ZVQ|szG&+v0*2yV@VByeM=oCq+M)U)RKW*D z!=lGv5d?QHo+QC?~DaM@TmgigGn1)#kIKqIKYID^{h|7CNKH zny-qo)5)rACW^v2l=$l6&{~=oids1gmKTm=IyYpH>uZr8o7=?v>|!hnk0L2H>=)E{ zNwTd7Bab&QNrc~}o9F#e>07#r&#1}_?u&BV3rHl~W1xt}KM(>&SN>SFwzyq~n$vTYDxTz#k zJVvnYda+~$P!7h&j7d7kD3a=jSr2t@Yo!5FQX?6InY3R#336NR!)JJ0K zc=pLPMVY5oWV-jy=#D$RqhIU3_SrS7Jh#(`G1?_!M$A2~rC+7T*~#a(UF4NLh+((+ zR~~CRH}$wsLJBl%rB7i!V>^J-qJC+jX9OKqXcoWN&Z&36JZ8#uJj7L>v;FG_m;JmV zia3BCw$V}ne_mGX&b~nXZHB7~Kf_2I?9v)EzrrgcmWRA#2iWdYG-mE1lJ<6sre`%M z{?$glO%18P>fbsCX{PV$ogIxiXJzVzX`zozzKbsJ!(yS88*GQ__3hCL32{gi> zBj+eHH=>Kj(4o-+l_8Qssv`B&L~Y@CmfFn;QrOkc$xPxK-s;v>8N!V(XeT`X{9I!1 zZ;jPP$6{0=mgVo%|5OsT`$TtHX1!wyyA#@bT5m;1A};7NZdKVdbjr}1LmO@~oIQ@z z@4vSv8zxYbx)2v15kR9xEJWESqM=9p<-E^y^Iq3ff}%ci&{E~SV_>1H{;BpUM{ph# z={<0d!n#=g`oSK zdH@G!N9Z17M)Ba0*$=CDZSFHhea&K=Be+Tr=jAT_OQMN^W1Q=RN#*Mm)`RhF7VU)z z7L8XCt;XWmMY;$bo!u8IH*#27hrUl>(M6yZB>Yy`{BhRGQ}&MOj0^)*3g|o5h;+kD zf>JJ5SXJ~=MJ-ndPfWss<1Gvh?d&h=eZFjZ0rC3ixp@*N5IYP^<+}Dz#F)7SCnt12 zin?F4`#f(7zES?@oT)|o=JP6>Qo7nE3(gmV_DYN9YG^)kQ#0ZM7wpyF78L}mwf9F% zBhxCSK5^=`6O~df^rYPJHRRDox+P)k_fi{Lh6NKW=Wx{0&AlSYv#S?K*s;^v1}uwj z-c{SJy=pdsS;t|KTQ<@`h;8PSQdlfVtOL#_t$~hr^N6BX!NSfROeD@JoT0>bHXdAj z-w2k(FZAa^fWo^%q(tgd`)pbgY9T^U8qQEmunn{+247hTV`*~El*Ek58p$t%-%{P|VBZ_+#p(E=QpwLm-9arHl z(fv;}c^(I9sJ;MT@2U+@?`W@W%hdp+Vp@?vh?28VGx)CxL0XVVw)1%qg(gr9B-^^x zUMfXaiV&=GXPIlUB;H!cm-=t^@xSeD4G6j;CAf-ZRl7pxVjuiMXH`G_!i*%ZOxRxY zRw$_yZ>t|_vkbvCa%ias{CY{A_P%h#ws4bR$0l{zvzQA-%9e`9(5 zt`U!v66gX=dvyh)IfCF2It*gv51iDl&leJQcRr=BjGxAqCb3ZP0Sf~b3nUh}g3n`~ zP>$yck1g)JfutQNLegA1y6^vaK!9cZ;pfJTd;@R9@`t-$t>3jDzF)4NuAerL zJ5Uqk9;6;@=La1q9f&DtI+zBi2FU7e(i z1Pc@mBn^E2aSav^qVPijQ~_l6$LvNaugC79U-mPiiiWfgdYdDv6Yevn;Gdvwp5-~LAUT=oloJobIjeIy~4M+kYlp&V2qrDH#A_dmS_XG zu@N^I2Y_4?vHi9<%kHVjf%n+tmqcaQK8w_Wu~;tOMXHE7tfO1*Vv=4XwNcGjnwQR7 ztX_cH*e(wH?Xv{^N0TztF7y6vfrOttJB~F&abp>-JUf7GZ7>c)N4Yo+1JJw>jeFUw zRUD$RdQw7;rQaMR!D&~vAi8P9SDDA;ZL^CTwJ|3lcp0Bm^l8N>u11>H9xE)y35g1T zC*K=&R9VInCW%cdX=lzJ#xarBKCs&7q)3z*B~w}POkZXyOWYW}FUe<)V`DKOnu*1f zmOUU}T=mT2158us$99xNFef~47?4Vjf-dfANkQVoO#C#VmgY=PQXYk6nSH^`vaI-7c0kWEq@`$%jXQy7!kXn^OYVTRZW@&&n~u9VL1O}?ZPP8vfz>quV^Y5aLRt=r z&*Thi$izDro&EE7axlxK9~yn>rtiALhBKB^KuN;Wwlom^6lgM4=SdHASY~l~>4n&w zE5z*~Z}74V-uBuok~YkOh%e+oBr(Pl5sw?9n&b+W!M-jUiz}`OyY-(xj!O5+8%}Rc zn5I&LF>HRrn$+~#^upNK;%JFaNXjwdSZVpUYEVEh>};CqRzk&uCk}b|*CXb_&frup zals@KdrY~+2{esOK+G&IrJ~gdmYrDvig{z%JoT5(lUFLaveml_7gIFjdMpE!gjtP* zaO`M=akGJ%D?#ysSFFTltc3Vi*i=H$R8#*EW&aWPpF2LsS8QubJ!qV0wnYzqIwJ4yT45UQP5w6RS4XS^k;Z!y))7>Se7Pblj`;D zdqmQ#R#VO~8G4Q^mNhG@l^wa@s(N_~0QnCG zr|j1XVu|^WA8aH49V37mn) zk(U_H)zR-38c;`n!X;3WLf{_PZ2$ZwkvZF)Z6QzpCjP;(GFK7SMrfy|{B zXc0;PH@%|koHhe#G+{iHjplYLC)Zcg$lTIxu=KSzkHma{;0jmv6LYX+o0j3Ph`_O& zWP_h6g zfXnKm&P-Rz$3?K4_TU&S(qNH(rR$CIs<_PbGh54~H9Q4kD>hvLm)RyP7Gnw7rJ$eg zJSh`a^a-ID!n+}DuMxO5(U8Dk5U+!9Pj8pQvn{59X{i-?Ev;a(t;WS8ep@m*%c^w^ zf5x#ABF;4vHv)U$bK4QVbnDmoqB4~Fh|?1lT;dah$yhhppH<-@s+oCn85^?aXkybe z(#2u~5gHCTUsea->Dsn|4cBB~>KnL>0J1_w8%mif8`M~qqX@}-T7HF?tf`KpX% zECdPJ7y@k*RmMcVdoXFV^7(Jk(W*LynnWx0?$E3y%R>UOF!eYjW3>-xTR%oA?ro24 zgNGie2mak5SLa64=BDizW;jFZkL1oEc)j4L;3xPAWx<8SumP4%J<(QuxBBHon1qtq zYW5GbwfWvot22bDPK)oX9f8)&l@$#}POjhLd&}=B_UXn_YqHiQ)i@kquzPBk3VrOn zDV_!J{>7<(0T`wCVhMQe$RUmU(jh(2Xuit6D-Qgk7HsVw!eG@ph}XA%Zp` zf^k#&;4BmNC|4mO@p*C=7;y-eiy>V%OWfxcuG-SvB5@EEqJ8Dd~J$O(%CPPvL~ z-H{ogH>?N+va|BQYPU;L`T@$KB~6hxc7(lcq{)kxNJ8}Es77`vFC^|nr7doun+yB7 z-JS^EM%4uk)}M6s?9-K%p=}dKOY-x3Gw3f5sY3>)S!BCw@%F2>MS_0<;a=kk1Bbpk9WjPpOJvXr5;MLc}1gK`kbfO z(DG2Kp~JV4*(;R!yr-9A(a;#`JYrUa;RzgoSjyMr3-r3(l_FG^&@3)Ho*$DK)33C0 zNLdiZYteysiL$dV^6kNF^ z567c4J7MYb#|50yjmt!{^ixh%JsvLL-!U#_i`JFYP;Q!?XW7j(No9o)f6N?RsNFf= zX6?~ZAQ?2>qG zi@b+%>U%ti0a16!HND0dtt_C4R*c$pq_yRD$P^u%q13Npvj+3jcB}7l&~-fOG2`Z* zmV`NSSaK*ax*ov!rhDyb$Sbqyv`pbCyTSa=Xb}zQ#iDR=pSCY~-!N5DK^tPjj@yaE zlT|R(=cUoNkWfB7@4s~;?=8B_L>Fhr&TB>nlhWBfwuzy2L9+vqD^W_}Dv(Pm{{yYY zlpB9^#wKSr#D&VL6eE)xL?gS9)SBod?zU_cUs@60kgJ zo!5nI!o}l;DKSYJ-r1R*S2u%Yn9gw}kc%AB2o|@doY7t-uvqK(YQkiqwO#qbZReCL zG4;-+Ale0RRRGSSo_Ywem-1vm)(8`n3g#v!6i=%%CpcKY1|Tbp8ME!PW#Z+RRW3l~yHjz^;Q2l0b_6jf=y0&_6X&dcS*8=TZZ}jc9cBBjV z>#(sczA9TQ@rJfyW&GBCh)qZ+wz_6xmtD-moPPj(KS$gRblzSpG>VF zd9hcDSxWW&Ca+U$=|46)mkhby*z-{W_Qszw!khxEqTipbL|cQ_Uxvn`S2n+@ce2Ur&J zI|qyQdigMhcQs3NSBbW8=~(Tkr0VIV6pai9Vqrg$cm>DaKKYJbP^Zq}rt1R$LHlKzzPiTLl5xyGioMW2Yb)&%U=kC5T!KX<#lW|JbR{pU1=g~0PxkR zDz54J=ZMD;03Wa&uc^o|<@SY|g8xtNP|2c4+BvaPVbv4vl!s?aFbkALB_M6;)#TI|dJ@FMz@t?T*OB*}3 z#@FX74c`kgm&}znOQ2>Yz5P3yE1DJyKG>Mz;|1yTy%C8=W#DS`rM{r}jyD%h4WK)U zBip)|DN{|o8Ky#MquvgyXQq6_;Mh_f8#jIs8>gUV=8DLdY{>y=m|ttDo_=UiPO~Cc zWVa**njMxbR^X5oGr-bvZdv~TVz+qJD3dM=#cE_xsfRc=PY$xBg?P~*l~?}Ksza2X zeBEmw1T3!GqiTexb97iV6$4E?!6mBj*u|WCC&>wQ9}5pUiZ8m4Ex0sxq{fV$cf*8x z2a7U+-noZ$qt3=|RHb-PB5qi(1o?-<#run~MX9Z9#cDy9!`529e{n1<=qnTCE&wA1 zceh$f$-}xa_pAHeEebo%sZKP$7?mUFtK5MO!(Q>|HZ`3kuraNLWi|S74doHru@@{B zQZe=;{VZM+fM9diU~{&(9`qqR9K@!{=+M^rqra)u_QsS*UuI%XDkNmJ!S$mmwNB&8 z2h4i%LQy<8s4HS}$|+2u@&kD4LE_dl{O?#;);Q^vrU08MpQ zve{Or@&VlWuJ}tFGHG#DX0mG)+4gb01QRM|s-3{xdpSjWsWCWGGRN~55DZ%g%#+H? z2$ampFAt)oW9*p=tDqFtbQ7;8(3OALlafEWLp*p=rr|=5Y0WBs!S(PA&O=<`g$?zE zUIYpC#oOniaiz83b!hEU$#|^OZKxPA=~8F8@3_(%K;;lS%v8Z_eGx|OCMO}PBkV|` zkr=wpEW(}6WVN2AM&^$zMWuZMX|4FvqzD@2JY1$?$Q-hDOH@2$od>AlT*;HO2x9k( znPy?I#%kK*k(lXz-qLW-wdAS?u|~@AFwx@6MF#TBtKQO9tP=_vu4GNBp04p69Xfv1!2WA z0vb&83IqBSh1xI7%v}qeXS&UC=~tY5-oq=%kT zUnQgoV#?7Z+3 zT}6GKHaL1WCn&#w`8RNd1&hAH_@4~n24}xPbV_{#az}{@>EdZq#WRS=bX}PTQJ8&y znzEol74o*k^=8bV3ApNot@=d}H5Z<;q6F51|A7u^Lw@f;AQTKtV7vXxjPWPtaBP_3 znaMzE1n1=to#A4Cv2dXuZ7en{|9VdcAhbCW2U&)jY4^vTcPe#~8Yf3E%q}&H#9S#y*!h zpT8bg{Lfo1*VTXF#s~sX`lTveMNwmItSjf>Ryaa)bVa>r&o=G`ZPH0e-7KP>Mjj*p9)d zA!c9ApP$+UH&;tt&{|mH>tE{aSxaQZX(LmHIagUlovqDPZ>|7X`S2P^t0H{ZsI4e# zt^t+-iyA7lGzlPJ#BDJ!)6mi@71qnlJU4p=9n}wUR@1UTg{8pl+y$-d?{F8qmG+sLHT)2fkO<| zRd6E%Z{^&_6zB&i%jTUv=4AZC#D;{P~-_mP@%iv*F@v_J&WTgLx!22UV; z!6%+VhQ$Na(kG6hut_>{2ah3t#3vp>L&$K=2H4oe6*2$cr&AtjQ5$CLbXG=e}1nJg^~SJXwLUI)jTc`dn6Qd`xo z0U+E!UbE4vGN|X9GOhO@GA1g}Z1VHI(atNg`t}0&ZBRR29x#H9$Pvoeq}S0HH!(X> z%hRzPaV6zS`Y+TX*x;W>m-9#-sTD#NCr7hQy|pDYxO&S|FY#(Cx7B+cs3cp#a0Y_p z?xIzVJJh1b??uN-Z$}#5*1YO{OP23!g5=z7bxwnuu9%+=u(kaB`qDYZUvJt!2hiXIo3tSK6+kgMMrI zWXNWcsxnKzq|fMbvMSw(er8wc*umL1i6BifmhVN>wn3uG$m_-Bq#5; z_l|obdN~8#?fXUHab4=VU1*#z5b%@~pFXeWF((cIp(qs7)T+ja(1a@IbuHF z#FJ&>JVm@#T8oKt{no;zfzwB`{&Qctdc_2*1Su_GJ3xe=Wpp}ldmxjsKjiUZAYCco zTeHX~9JhlPg=1rtbV)x$2_kJl(!!4JCh#+3=A93uJw4()!zGWMO@G=o65pmYn}&Uo zuHYf;v`vs)+KBV3;>|fQKX%VN-MCMTE{^%W-yN*|M)|u;S>1XZ70*{J+d%xRr3tO8f!eSf||G=?#4}+m^WK z)CIJH!zr?RckQK-Rl8EghY2-RLVJE;!EMSVHE$)tU#f2|zA7~jy^iODM|-VGHceGp z-O6VvS!a-}opj5iA1ago+|8w_((%CVk@zI3Fva5vpB#;Ry_!$Pp*LD zAOtIGj}o-N99}k6*fZ!qW?i~!o014^l;)MNZHu+8R&(T+| zX54kuc>6WH)p$cL1(Yv)Z7n2Pntoqlu3XJM1){#y{)RIC$sXdxWZ4`~^#&3!aAm*J z*;ce+W+WxH{RUXt4Y5++C(}OTg zS%R%41&vifQG%-_H_qfJ@GBt*N5l|JSfngSM8KO%!a!D>To!Kz`nAsHy(*&V5g*ZPk_0g!b>xn_T41|7jPk?-JZNMo5C*#RX% z2%*Z5b;Pk8j`V=opmS&wge@T~i$4;Bo?y5z7P#$UOauM3p;3?=$ae@^3Yn&V5C=`c zJW$H8+GChj`uWi}9SvDlub%9Oj%$C{yz?J{XFxb%4D0@B?KcV9U464_*OyfOBq=3@!3gtm9$7N$1pLnQqVJx^8!&E2nh>wkL zHZ%(3P?u>scmyNYLAVuy8$-{203G8{$1xp3lzzO)2nZ2E{}KhEN}p*ufCl%b%`_ei zN2g^X8~_(SoaVr+`SrO~gaHWBPTJSjbk@?O(N?T8;$NTU0T#F&LiLU!iU?9m26Ui- z9TLE&ZcC-`V==rZGS(XO*afS;0Xe-^N4XOnwt>&3 z*_H7^RMldqRl={}3;EZIanJWse%bOG5as?;_)?W_CB7(qq)Wkrw1m<)D?i$sA8hJT zSnC(kkc=N2&O?+|DQ1y!K@>#~-pm`QUPVCyMh{}`n@sa5y;iMZbj(9byVh=??8CWJ zr9a%i?WdrrN1q$iPY}Id4g)xTly%F`Mzy_|nx~8hLRrTjPakbJGcYx1sh1 zYv-pvtQn61dt>ZnhjYl*aO>da?_SlNG^Br3%$pG{dUjl!uwzMcG-9kw8L!_*D|hP0{nyF+TD~?yR&UEX=@m z?;QFK)+7C5M_rtG^D}sFlWoVQfN=HWsGY|fwP`+(b9;8gTvsrR6ZlW#s~0f! zjd@kK`4`1oml7V%8Gw2IC6Zm^PXP^A1g6`cnQm<%J4lW0zJpaxnQqUjtJ_00T?I{7 z{saDg6O&G%J@3(O2R2U^x*BoUT8zCG+n+&h&pxZ$|2b|_kZ|BnpiY1>fU%&(e{fSY z+%(yty|R2AXpe`+h$zj8hfEkRTrC?HOO%V$LC1RvT&u}I63n@^(I1@U3$NZ^lS@o zJ)1l0NS=zRSD8_G%fjp$%gm6vDaM3H;W~WvX4<<8eF`|o5;y109J5B#^7lWVbuEbY zSRwv=iLHhO-Ryr1Or+iuCJ>UkLIJRk!#2{6k6$R=Ap6X4g z1JT@6A~>|eAAxwdrVw>0X)oMsLrr=x4&z}jG0pq5+B24hi`+;k*VAC7`Nz>}_w!Tv zmsxmuI0bDE5(RmS@1Y&+yZ49Ae@B%0(X&(;ZSvBt4NgU+C4=8?Uz<<0f2QSUHBvW+ zQ@fI@o>ZxpmOt=|dSi%{Tl8sNJs$REZ{aEw3s>GU=KwLYvM4(_UUzeXe1oYsSbr2=YvG8V^hU8E9vQ-CkHPhVxDHt`(#fvA*I_ zUy766VUxK!&oi6XSgjn47Iz|<=_Z$sFet8S<+kK2EUXO3`-GZ4P&lXR9qYGd)-rsu zx^s%n%^b**eJ)KOtB^>Ov=?T|V}+vOD-M{=y}YC0Yjl%ILeht4=fIR}!ntXg$k}OY zO3#`g+JcCW?=U7fUTtcT$j2KOIo9QLJ=9haw?l{ZllAjRhTO+*_?3xIto)M#5~H4e zsvH3*Rxsd`?35>RQKgTQI&B zwLeluw1WztFyYcA7&BdutGpvK{|A;GU&^GM`vdBQ(E`Mj_YLaS${*wL0$H1srBkh! zm>H4ag_psxxwJVGjprW{Y=V=lL{AiPfxIY`YY5o~h7<)Sft?4~VOb$ATqDr!QPI)W zsIt1d|K$R;7ED{?ieF<6W^6M#Lc$x{q)G=@bRgf!{5d)()lf}f{r#b6Q2tQg*0pi4 zaj?04neQIp+qJuWRi4=Yr}e$7<=yY{>+14r*gXJ+l>+5JrNX~2LD94SO-*3%@13SE zHB<+^+aFx+P=_NX|HQd=5I=H|-MO7D%S(t?N+1!7h z@Vu(&n^`Q&ld1lz7%8O~Hig^PFY8j!FHL9mDp^e26sVrfE;a%W^PNNUC`py%fW%c& z8q{!!ZUz1j&46ajl`!xC4Wp>j7NS)fnx3bUHG_wZ9D}73_JdS|@;m_Vqa=D+Q6|0O zR7noq!}42!GcUaWn41RLW31Mha0!9j*@ddgT&z;Y`f|{T^;xtrLzEeT@NtsVii9LH z6v=ec?EERR^0Hau@_`h8eqO%gq{19G*kdNu*`3yzbV-N#uVbH~nwdl(44Co> z;Ee55OS|cm4DKxTf6=#uSyv)4OxWQ{r6iX~p>vK@+OpgZsJRxA=-dWD%TLu5*+%Es zEBqzkNqhZWX77UZcWWzm^V;LeE_wA%J5VtB{wweLHGlVf3$xdA|7YO8;BNfr{w<~U z7PV){4}9bv*IGuMe>uI6j!JN;-lCWIUx5S+m-B{w~zA*X->SDqnoKY{W`G4csrSy=J{F-ghbcnPD zZ0v5AiJv_b&Jo(yE^Mxy06N@iSL;wq)Ip0k4|?3P1@#(xRpHcb%oXSrg8Q4#z7>No zqS7fMb3~zX&XL}V?;$YI)z#HYiT1F_W-Dpz$q+Fjd^=GwV%3>(yg=ci6%Mu=4H7spFhXD$1m=H=`g z#|hBWf*^q**d@x9;w}pN6`)x*gV`Q=1o|Zq&4n2^+H8c|jutfFceQmVXY(2JZ1lE2 zs%ZpZxa9t#p%?#=8DpDnFzM`HrwkPxS@)$}W&g4aMK>vnZeq$}pyu(+@1I8Hqx%0? zd&l5hqG(%mCws@qj&0j^c5K_WzTk_K9ozPfZQHhO+t$rFr{1ai?vGn_UcK(>>aNx6 zS69uRbB#5}7^%zpr};OK5hR~T=q4C*f~vRihJzC0<7NkV#M?22v=^L8s`0Qq)CQ@A zv1<{{l z+B)7DX3gXqqNafjlC&Ji_uFm4Oev=&uL2Y#K?1J+`DQo?ydJuD1d5XeN)3@tpR3a{ zoVi}*m-R@!pBbQ9Z5KEy(`l;$Bo^YrR#8olSYM z>#{yWo(kyjGvCPPgj z`FqZEC(B_rRJO+Ad7e;eYcT>Y%#{s$NeL$81S>Z-zP0nJ3qidXngqUMp%=}ODo;Sw z4P-@HiD%$?&aSLy@MW!6H9($^fm$UI%TUcx{gUl7y+_h1I?N-r3zpa0Nh$J5sRsKg zzJgp-`XfE-bkX0onY-YebEg${eWaZ4@7nCi6(K5oU1y{?QQ%wC4gSH8=mJjwtETJ5 zHtpjrng@XP%Vw_&6GzIB3eD(S0;y=1KrBz%&Mc*ll3B5aENjxXP;VgKRg!=oQ5Ayc zc$aOXt&(p4XgE!^pKQQwaE_|9T3P=TFhn*=?$>&$McJqCg-h;&!bkyi#UUD$Wx30w zY#y!Pp&SR&B%w4G`gq1S*l3u%4m;JPt7KQL`~!%kN0wc%Nc19* zM-!FR9A#cih*c;;;{O^C8b2eWd%!E18U&<2y@&90PoaHkqVf)QIfhiQiDW$Phj{M5 z#sB>~#zA}l|5^-`*x8lSgfXx$V8}q8VKY6rwY$h+tuI_Eizh1_dtehP2=g^Sk+ zsVN;s(WoC3Po(;I&)G>Z=){&b)n)XxP3!trToJ{xp0B-YBKcMx$eKUAL6opb^v0Y& zbT8B}O*Ltx0qcq}PPJ-0p_MZMUpT&y{3?<^Q(eszBX?g{Rnx>@$0H5$j3y1b$!f=d z=6PYn!bb1QA1XK(e8s0{L_r!1CAolIEeP31CC<)@N0t}l?e-L+ibT0PVlFk2yw^6$ z2rFk)3@@J%LQ&Nqz6^!x*@Bdgz?#_6aLd9=;EO(w!;{7>*)HRbIb1oS9Jvx&>EvjZ z=5%KAO%sI3BI`lH7~9joWq_$8P2ow9Vn7jOTw14-9x}S-{6LU#d)ecmv%)`2ENYoU zYU4NnF`ZQ~CC6na?-crtmNGQa!+8jBte)nvjapxjETdHyrhaZt084#ipRvwLJfjTF zNto0I{Q6Dz=oW2w%jmdA-~gc8XpU*9N*T(J7+xNH<-%1W1win0sH@VJ zs65Im2;9?k$*oXY(%gx(B)Xrv=znx~)78t@_@yr{%#F?!1AJ#FGA*!e#^{<2rBaRR zZKO1~9uBG7cJ^zrEh_Js%=qc7SEIvqCap3wfq&2wHSs+Uh+k(`_hlV9wNEY)y{?nB zq|}XJ$67Klg#P8DUmRG>V|>NDW3=g>GLuvo6>Ew!EK;`(NK)l#X9F=RxP=QSniQ;v zKiFjG>hAuIUDj37IX0hji^Q(E|2k?uUtEyOQIU;k#j#BvFyRlWN@SVADx(jQ(cUv* zEO%Mc1~xVH*j)6mnw)H?pVbz1&f9PsKgdwKv}W=yJNz;mzGY~<>=xJX0@w1e7h-oX zDT82l?(0!mEx}(4#pn9W=UX2|T5rSvHfL7eV_Z6LTO?<$fT;~u&s~()OkRo7g0!YL zSLHjP`!{=_?zMPmwp8H5_lxkV+q$f2%;V9S4`JW|)+}E06j$?Xxh1e&AV8(({dx$F zIaIkk;sc-cY1qh2!V>_=Ye@mas&kQX-sh238$(uZZ9_)O^hJ0vO7PS3NK>hvcOA!} zIZgZHc%I4L?DxA+ebDO3RPF$Z%P?U=N|s@VS$T;tdpgb$s@fBi{oK-#Ppe^pr1;*Y z9K53)&sV*0)a8i8=0HuCUC?#0#YTt;S2Xk;IPHi$^+@=U9ZyhtKL05CX`*MTa2Rg@ z)gm-Js3Db~A)27!H^Y@EKm?b_5H(kD2pmx`xfvxnbfQ^%Jw#?#R-5p$N3;e;Eo=yo z$PqHJYoSf6+t0d7s!gstsCq+Xi(sdp{tU?;It8dR?4gweZ=|+eFWuh*n($mIk{K2` zfNxk}UMeJQ>mKl&E7JAany_A~wYv&H-kN!TPK-s5k+F@`bhZ&?^yW#cB_MGQoLE_dmbfpBm;Y7s{ zmypXn@+AH?1kia4G&mVHV({mu#XsYQqF)mQmhnn*c?aOnt>!(aWUsM&5^fGjDX)g^ zvELvk30iAjGf5FpzHTgCx1PvI5$2caUr@_D%k^>MC-fH&{))%wajR=_&1&JWiuvq_g$xwMagAHQ zQIg25-Ob(1jmOSCoRiM7+Ng2qP!%tBU+4B~;{PY91cDLd}aKZus+%{_ByJDIyOge5

    e4ZkS)3E11?hiYJTm_6y=a z7Eo(6W_L5NKYlpj{_hJYU-hv6V4D2*!TSAV=U_%}Vq|S$?`T4AY3xLAVe4e#U~6Da zZ)9g$n<`eoM;`>5*I%?ix zrInkxU0;8B;&aE_^@e}K2Ymg0qHq2ReQSb?Gz0(A5EAS22HAA^rzsHE)@=k0wt59p zDgWgw2Lh#Dcy;pXTj}#H&{DZ|^6Fnn?(`wOBd=t1-U2T zo&_YyOLOMqXBPkT8j>8dP;xf9XjqFTHjZscPqYaS=`yRq@l#++Rp=J%HR;FVVW>sM z-U(LiI8;dMqwC?*Q|CD~B(yNYuskg4cD)Xz3FTGaSmGuB-c?qpLdj*V9(WrU1 zY8t|Pul{8ECaSeNGb3oa1%XJn8C@Q&;a5mLghzAb@Z70~P^YI5=l$@b$g3 z`|j5hY^I(1W$o5^-Px$-|pNtR|4nXXke%eXR2(I&FDiJSHS zvcy+w*Q(+Qzev@>r_zUVkECi9IJtS%UA7Cv_x?ObiEC7I-Cmf6{8gCBZV~?I2(KxE z6OeqG9^VTWeVPrMExW-^!7s#S#sa$i$|IkRPTai%BcqR)uh5!Ol0NK+Csu1~v8$+6 zfBY?lU>0Z>aap}7DSg#rcsKM@FsIo#+U-0QBhJR}nW$@Tr0srQ2BnRFFXQ|MJVvH( z&dAHkbx6Zk*fPVw8aM}o3c8)8d)E&;e24hWCPuXLgCrl1#tRm}zz~f-b`*pXR^DuX zYC#e0*y*7K>|yb@e~^6D2p@XrCwfd13-fT3Ev!*dX!znM6N#2SylyXZ%V7BoN@H;# zA-~8FiH!y~9{tQK9*5nZKU4j*e(A)m92Vuco*5}YIzC&r2l2L51>?lE!T}X&!^f{t zvBZ+gf?`@rPtY&jQNC6#h=O+xyf+lv`s*CHNSy@-xh?)qd$G|Q4>)@1jP-ydgI6ZFjtSkK{cqke%H*{d7mID`*Z2S3e&5wmb;fnq_@}2kcObyzV~xysy6mj zN}Q*)27caUW{)#D-3yvUQ?SwUnt>vT^9@^Uz-neKvdVdt&M2x$*H=4B8`R z?!w&o9bnq3HB@?~zKn(z1b2{EYl8K!Er>|Rh?m%zXPj2^;SBThciM4AX@f|rBMhW* zA_hM63lE^TdDoFS!=0&%ELp5Re2E!)jYC8`Uf+XTW1T(!7RI}b>(LqZV9`!HE*$&X zZc97&m0`>xxzR`8k>Rlg6Dnod5K(A;+g8_-=EAZzZC_M?iX>K_!`Ag6eMYo%p_9;l zoan5i{ojT@Dk$cB2WXp^!D~WCDjZJ1!GA70+|>JzNa`6C@8Y_yh%MvAr(xxiceI)* zVY&lOJ7}i)j@!5YM5hN-e(K=p%+%U$;AwSSr&*DzcP~jD#X*(E2byirO{CyPPf*b4 zI|gr&YiUwxDQRr2ou1e3N2v3(4Y_NxNSLW}_r0&`<+@1Qo6UDJv5e+xd$UmFBv()y zVN`YCg76+KF4vsIQwNc&RMVy1t1$^(EI}MC@z6P(xGzqz$E|yqevM6?Wyn2LChEeR zZs0x&YOr@`O;>`3>(fp@fRB+j>{gf6)o7-54A|xaQ|Wc6xzmew_N7zAJd6mOp<4No z^Ycf0Ix%$-l{ZROM=o&T#x!l#)oB`3o_u#7Ucx-}OU|L6{upJp4{P@!(=(8HS4v%& z9%pt!9p9T!RHO>;Sxq}PidV??c6u2&qmIr^MpyN;_+2#n@%PA@&{{GE(N7>`lk$p@ zz=$m|8De*36QhXfKwaw8u~R=-(iY%VqVZ9*1@p-W1leSK$)#mpAU3uba2VG%n?Bys<+I+ zX)wLy3;H=X1g^J5s8cQ)9hFuxqsKV-nQd{C`b1qkoi;JMJFZ9nVE0QJ)5Q`iT%={r zK@TB&nP>H+^XeLnr$$r5jZ}V1sAzK`b-d=Cn<8~+^ZeZIYXzJ==GVnb6OV7#qP@w; z46#_VCFj!3c-I*Pmg#9Z z@*HLQQQHl%HF#L<$$YiQ^TX-r-7Cd;9?*+-T2_>tOKhNNm>d4{;#|G3J^E+2IHbzr zUh&{!uZnp2OT!0pigmZTDO_@rt~NsUjduK)6TmkVGVdoHw=YE5Us0@fyGZ>EJH}hp zp{@Y`*V%(aTZ{g>0z@okw!Td@T~58~%zSc&S)xyM^WDdPxQAI{Q2NOVpHGo_+Q*_4 z0lVbXynGQ)Aty*q=&`ENx%`9c{aig@bC%Dy9AcX1AHUaPRo6;MS|-$!id1=0s^Ld` z5Z50SFRXQ_UXD ziPQ8r;X#a1!Y-_dU>+7dv=*;}M?N9F!yAiN=cKN>%g5#O(3o)7SxTEXoVDPqwTIA5 zzs1nb_BthUB@Ep4-;T{v$$UTS5ID<5uiITHlJu-L?-S-$c7R2hA9^aw>rJtLB_3MV zG5skJ!dtM?1X@cZy_RYTyN|B7q`R%jIBlVEl;&xMhM-c0B%-3hq7>KIEHT=Y(oYl1 z51*vCUOzhNb}qd=WcznW^dvJW`wdnx=R{4(Yw}`)q;8gn4`<<9VpTc0NLGkdlf`iysL3>{(szGX6gyC^tNLlf z9I5EvF0a2^)$?$Dp5C%;#lAXEUK|gjyvof7>t9fP`CzOs)vE@pe=*R3iOy&7jp-3} z1bpHrZh%1&zFUqrWy8`oyxu6i2BkPk7rfhby=}h|ymt^{&R)z6ydFGebX2k&c|$Yl z^4ilFx*vEGTZ&%z{71!hjo)-7_uXAd@LiP2Oa1(X@&oew{QG}YZ2u$3Thah%U~Ffk zY+xp2XY1%>VC&@gUyygCI+UyO0_x{gd-6C*iv$^RFHuPDUjobeMNQNm08@;3N+@&u za0pVcu{gLOnKW5*Q*N%J6j-8VslrSl3aTZUpWokHLl{47O+>Zzus6-8f+IRNxAWTz;E%&}|O3UMPsZe&f;-p3UhvbF1j&DI4iza?QCLWvlXn zc0$fB+8HFd#HInoi(h8_XoFbsaIxy~^ed}bQ4NJ_nGBfgjw1@2NLDsf@RM2CcH+z^ zBJE0N)bFf>T~pXMY788vuNb!hntO0=Ma=s!-22htg)p8 zoSA;XAKu`})um;ibN4d6z^KKK zn8yB9@u9$qVn8d8hw$%LEW!s;W)Td0fZ|dNuGfuquvpmpW-{5KGaW(5o~SQkh!#*Fu|(h_req$*-%mos(Bs zYC32D6=*kX78c_qFYHn>3#dFB3t^Uu;PB*i#~6+E6YCsf1{z7CD-KuasSCN^*mx&a zUY;8K3T_3eHy6bMy}b0$txiI)>qGuonWam+Rb4akHm6BT0gu-o0yJB5oOw%dDq`QI4CY<84oP zJOXI8()6mnsR(|Z(oUmrVzs&NWlaVrX| zdHnC&ei17(tVy$;(h_WEUKV+cr%*n&&*~TV;^%e}$TjoHbALGT+XxD&C>6U^+`I|z z4P#>loq%)1*j1;T{N%iqt@{01xS*yo{x7nON}%pstzQN6Rt_;brt%WejUk2E1PJ!3 zOX_Z2?$hzezt~mWzOb+ocHSpmKd6Tf32t6eU7dwnQqtV|sTljGB+AV7tUb5a>o-7g zIb=3GnX|XJNB}xrZV}d=O^K@z4X)kz5b1Lyan$6KXZCh{@ zxVVTUHGE{ZM}ZQ>eJp}pF>#|zq!Vk6kj2dz7H~9`a3@%k33Wq{Ga&d*ZGwI#&Q7i* z*pc2xJMUr94_=x+z37ktdBMk(eUeU)AYB-kv2zXi;vJ`jbdQT@g?Q^8rAWvx4mgn_ z%9)SE@egPXjZ?A|p}|GYqQx=ky@O2Db}J;=rH$-;pcvBManHE5m8)kPw$9qdAnNy- zu7=qw0qS(%;s^z{$8!mc+bc0S=S*ksVgzX$@b&=^f?&=#qYy{kv-b2&KH`n?Yai`# za?3k#f~n3>qZCHnBlj3gI(h)jwVV4G73EEwgA`{vQ8lBhQ-FZl%_EGWa(K=`>NBG# z;=~8apDd8bhd!?jf9Of zpA0lvu6@tM&6tp9Y-PPAeQQXEQ?M2C9nvIydeazY$jj$~lusjwB#G@}oY2Q_rUHgv90Inz3%VSb<( zKE#TVKjU1SwZDku7pD7PxjCbLtiq+dL?I8y0Mm>`3XQ)0+JxiTlp;nwBVWOn%RU`w3BST2QK$Vdn)oRS-a$nSxI8-~bWE1U{I#9$3p z^fZU;o@=C-WyZf7ibydl9#JDs!oHf_Z?P4`ufRxrx%Xr?Z_pdPmFLiYADcaLME;e* zZx^DOK{-;skwJ1~{)xekez_(9{tYzt6LPlUo>HjVsw?UZv$ZGIjU{%rERX))pIufq zZ?c=1$ly>h>-Hqq%*bpJ&!9-L&}^GM=Fqv(c;_tEf3^=lPrWz)whn>Mdp-Vr!v<@y|dBow`u?|^3i&}tb=~=QAS>1&0%qq%x*>ma%5kF zzDjo_sun#Tdu=-IxNEP6i)2xg&^>C?0z!{8L#23^B(yJE{_H|e$slp_Hi@6#uG0a& z^HAtUmI{)Z$7O8u;2nD?Zeo+y1bPh@J^OKtDMqb)jnw@H5EH;eWx~TbH#H&s>(q*D@TIiiSJp zzYkEO4izy(FOg0U;IXrlj-}lnnb95=TT) zm=C%BJqkrCvYnF;Df#{8Pl9qYIzJctfiRqlqs_cik!2p|rK=6g5^qr>I)9r^Iwo

    1X+btiM2A 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%0D?!9#qD3<100t#BSn^==UXNHm?*jJx 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≷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%0DWTasB{@-wvt3N`7LR8(F-DK(FA%ngRGkm zd;bnfn_~=(RJ7cGXjl1u{CM!cQC{%t%0V54YyO+Uw)7ol59^voqh(&();OSl>Wa9t zq}s9TaJd6gz+R6#TRM`@IE79w*vu3(^0Qd*_gK~?fn;2ll+?rhM0!w40NW1(L(50V z>)+6=C)>9F6ALs3eUN2`ter)1Ot%zM!C)6oFW?SH)GGQ={%6}OmbYV^lZ4H-VZ)IpFYdpvY@&rUCrIz zw@9se$&Nbhwt{D0bJoBoHsPk8F?X@O>C>8yc2-Tjt+HcV(n1AvL<}lNOu!#2!te)* zAh&qsdO0U!m8U0hsY)1=7gb2liIWjt43CcSq$e$pQ~6-^P=^6@qi+-O;vFQmFwOA- zWIVk@DfaleQ36woZY$8DB`IWUQ?)PzVwNduQe2|>BrK=*H+bT``9Q+~XK*(AeEC0E z=*p->V$5wZFG4UX>bFdBv$cPg`|=Ip?2Acwxwpw=IgA>8ed_vBq@_0grlUVg#wOo( zaVc9`VinqE)v@86p}9&2$EVsa=>gp-oL}hcp`7cfmNJ`A;I5Iy$Vl~=0OmEi@s=vZ zSe`fQm64S>J7sCP&R*yF*1BJ%r&SxT!<0u{g^V`fUxS=5z>l>xsi};ns=qZJmpc9_ z?Q0)j7Nv5Njl44)&tP_~ms=ZCYQv8}=Sm6ThDJQ3FA>-+>}WaRZ{4KX2EXpU#Q=EP z3&%IE5nps3qOAPzQB~PfkaEZVNQOQ9(tW$ocWm(>pGEjhuGcJr;hrZ+Pe?&&0>aLx zO{1&;Kbwr5Ny(}_nY%$mX<9Kgf~^v!-c_4qBW8}k!9--h@ZcPhE0Vfo5<%BTz>PjD zjc<_T^O=10g8f4Gcw9oO ze<^6vIm1spJ1QOb7QTIAU`#TT7;|hHN92jP0-yBwA>XgzPqCX!)@-|K?Q&#&0&jpA zX`g#61UN&Lw`s)kQg%BisZ3Ns&UJ&&#Pb+E{w+VTZn}04Lz}|5^G)ien~^OfMfz2G zjZK0=yX&sf;uuNEEju5Zu!d7+=-q&%7HSO)ia zQfFx#ygb95F8RPJ^+}5Xb6>9=tEvQ_xE;)RJu*`-8lV^6a@ncG@kEoB#fWXjImWMI zlo!D<*6ot+POw3=d9=CWZ56UL`s@5Kik9Z(VRd-VznqTnc_2(q{HvPq8Juws?CdZ;8xo|2|owRMm27a2nAzB>)GiGP~TD~wTQ zXqp^T3fh#aBW8ZN$%Fe){KARyX*!koLP&v%mQ30MVW0c!cj~-*JkoHx2+f@M3Rv&A zem4GR`K2jm4qVB%ts~Q1Ieqvp>gV<>iHTK?fQPuoMRbodA6?}Nd&#Js z!^47)!^k6jpUKYA!-x(Ko5(Wnc=Q)+UYQ)zT=-PGE`{aIMt#M2D>_#)$1umg!YtLXH0Zo&XEaztl0~&_6&yx{85zRCaAf$P>T@0zSt)u)|J62 zja_0r!hzvN&A}OBks%8vOB=#FvEI8+0loW zc0eE26UaX%c-FkZQ0G00Kw`#SLsxX~M8YkncU;z$`=?}p+*0?z*5jhUy1g2WL0mGS zbE$yzS<>p!=+-ir#c%-<1_IgvXYo6${)JV(|B7ywoxt(fEZ6xy^qJHf_XmqJ!pJzT z-PvFz=Mg3cU6noHgi@#{Yk!;}kub@?$buT`h(0{E?W2!R@JK*i#r}b}|5%dYescR> zp{#3jl43uI@Y$G|WEkk5M^5<3_@99|ae-TS1;&pb@m&AYKwRj5GZ0rW|Hp&;FGl45 zmvgA4>#Dkn{1!Ikd zk%x|6Q(8SdtrZ0r&a;A$Re?Dn+m)1)D_`ydwT;w$e5V?q#CM^9>>nd{OGJec?fHWJtv?f6dxl>`!YIvvn>45W(fDIW6e!o_o zHZOW2ttYJ2Q$wQm4@`@T%#e1FH%Jeh{y~XM3IUFQ{h2J}@h~(l#ZkB^%zDb>P5fjE zaG9fP5IV6aNJN-wytW^bCGjd~FkYT5>}~9x9F7jw*EV)*t2=8;YddQiyMQ{^*_n}e z5UA8MDxp7k{KcZ9ZrnPB2gY>hw`&q!vO^Xak@gPdfp6JcN`D69tU*|HNz&KTFV8p* z@>p0iZ;M!lwU;hKl7>QUtmVvE1t07cHe(53+?cUIu0w~Uji!tD&@*jAMNH3SfA^Yv z-b;Ar%#8Ue?Vubj^F$}!2*>puQ_Io~;rIztJeY#$mR=I8y29JISC2vjflJIO;LPKj zMv536prK2%OT(9AiH5akB%L zuIY;$jT4}dDfm@aNZw>C`9jQUwaRg#Ws_bHWw(mlHzCq&5&>xsvYaxefX{m;PJ&DL z=gg;Nxt^5S7IQs4Lu%M-VM=N(h&P_&HWXP?bzn0{pTG^qF1wNrzw-`Enk;z@JK+h( zm|;S8mgQigY9!z69IL&!Dv|1Hem<=Gu)xf5tX{r_wY#GKlD!5gC8K)3G7-)&Gts-o zgqrCmNzde01^E)XhFO;6n?qGTPYy57=GxwJd|9vh2R*Gt8J0tioI9q%DOXfoQvS8gI>JSdwm1S`SR|yO zWeCq1lJsoPpMxr|_-*CXvs99`J}`Wu18nQf%%SC!TPY(A35gS_O|2oRMI+u}s2#gx zDNN5}X5rG4Y26WhQ{AXX4s9UgxfirxvVTdkF6&>h>1!(3Thn#9&(OFPvzaE(F}^sI zr-tH7{D(L~> zdpfM()eO#1@gDvVEk4Xi1vujd$2X*jI%?^(Pd_E=gH6;2=9t-4?^_e-38i@P+dE7{ z8HUO|&6{x;x=|RLG*XZ0R1(Pr3rtP#k}^6J_ zypB(N(Q<-5>9>bz9>=)j8fQeKuw0BzO?VUiWpgy{rmC~$j!I#>9x%m*PKgUoM9j`v z`0w$mtFj??hxYN7xhtBLfT-}WYZH61qx=;Fa-o!%jR4063?Ra;2q*m>;%04;IntHo z-kttv#;4}u-lYVyV1~2C43nA>hvp>IxXFOBf{-7WDfxamDVjVUzwnP|7y3vWyb&8b z(wFXEIJv_*UD57duq}WQ&P*^5T2MK!e;qXGt_2ul0&o71s*ELJzD2$MRv_31*8){1 z#0R&F>R%izIq0_F?#&?o))awJ^viy@OAC(6{-11<1?ZQLZ$y9ck4?Z>gdp@$s+w-C zKeGEq)XVS;#9yRsNiy4JKr`)EF_=kRnATLsjnj2KJA9< z>OCO>vo`0xTY2Ke69Oa=(@_7BNk+_e_F4KQcGKRPUJ!<41$a@RJ8ME z9QWX5_vXsFW-cJ8JP_Lm$W71B&gY7d6=|o)hZnt>Q&N7yX}s~gh`i7PDnDcD4&IvP zYU$k!C42S0kZPL-zwhrdaJ`5{k<4ineW{7#+b@@5l8W&q>r?S<(MgG}v}^31%C7DX za$eI(papy4Zm5!P4?6h{3UeiI`E_y%J4EB-eg;f_u{=$%63MB?%+iqi*n|{`?R~rk zxdK+W`DoMb308mHtNZkNNBsUvC)~6U9FU3eh<%mfhIw=*ev-M(Ae|rGBN3{xt9P@( z^vj2vPJdaVm7hN{!%*?da+Bq+bTgSUV`5;k7iRm5>co%IswfJ|FYm(U!+~4*3JTK$ z7!|(AjEKlHu}Rt7^tox7jW%?~MjC?w1_@Wf)j==vnEax6Mgxr{Yzsk0;rv8CVshEP z-ZJwKv}ZhA{f1@;;3_-J=xL6Rb^#MjXx|v66q+9o;j;fuv91|ON(U!HeLZ7ieV{^E z2G&{(S@~+C3R|K=)Gt*$)+{CJ!D8+cybYT@z0$cfH8AV=7r06_xY+|^amnUWHu`K% z7Hv;m?a@2+mb!4Ur${_>+nE*cGwc@(?v$#p4W|YVhu4&argC}0>Zu)_Z1N+XfcH&i zOTn3eKT%O&UBY+)!wX&+KYbH|KG~(OK<$R;7d9eJ2OOn937OU%Q;-5i3*Yz&Q3;t- z1N*#Z7!MM(#XQO5*3rwVk4`}tGx*p$#*$*JYL&Qb=td>;l8o>ej;PA_^1z=?a>1W) z;HB{cVg}4!TOaCQ?BVoAM%0X={et<2e`wGgu6)Ssj8ZdHbGB_qUXuE_GQ39F6f8 z%trd83^3-WG!k*LnlJBKl&Nux>(d?UFX^ooBvY*w;d$iR$4T`4OP_ytof25I?C5eyBcu49RLx7J zxupg*{{7tQc|&?WRCofuq8Om4TeK|1PJx_h`!a{R-FIp2_Fp>5`g}wp!@P5-zacc3TNp%zI zW5W&-VEPb}19k)a;{22utTfzSYaH(wla{+#xMr3{>KDnT*Yg>L6=q6R2M)lbpR@3s zza|NKkw~9EMkdNg;a)~ujV_jT%TdPz&OZ>7AdQ>5q^3x|=z?2FG2e|je{xf7}AwTXCryftegWu2=LGrmI zuq?s~KncXnaL#g$UreM^0lKRT5b9`E^on#woIRZSv2&eKxn2EwjR@w#CaHSk>l8Gx z-UH$4+n3*`gNoz(1SN|g^w}i*brvgKts-_NUM(D+Zw8NtBJzgZt;ifrQf@qftI9E^yRbxzaeXgDq3K-9jw zP2bX}`e$9KDn@eC!uwDhGTO)b{psn(v;7taRo>y(ZiP}_o#Oczx96ONK@8M#XaU$w z*HE`%y#wc-h+!~rP!a4N>!OIIrJK#n@UhHeWfFlpb(epyTZa|?IziR$aePQ;ecaUU zntKEGPG53eaVP%C5T9fDjt|;|!pv2L z!CQR=sgTE29H-xX1nChktzNYoJ3v0nq%EZm`(LI}I2(GIJbL^&YT=lUCdI*Nmu$az z9i!j5r-NnKk{_Pl0!j4QpnWz;UWzBp>QJ~|pFY#C_QpRDLJHyeEq+6jfFT!&%``<| z+UWg>OciL+`x`xRM28Hbk82Rwl{6B?#8e-CkGu{8@0L5f?Pu7WCrx3q#V_U6R!PqI zHns6-=D+yHZTHw^v572!_em(%)n8b0iOkBp+gqbTEO+?#HHIXFiu^-<*?{v`gexLu zmZu+>gufRSl-?;{3E;RMrl_=Y=hvcM^R|mau{Lwf$C1f0QH!}LhMgt%8)zw=rQ|6I zC)u5QuC1}gpTktP`nfgh$8@E&auyOL@><%&Dn`=*B9mBZ(TY_KREsjt==s1~w~FrL zw*!jN6Hb|5vatFJ!yNuoO<8|y_jo6Q{wE+PW&H)XfrEfVes7M-a^Mi?Akg3UPwg17 z?-=m^T~gm8Cs!*b3p0BgXEzHbTXT0N8%K8wS4R_jCNn1oXB&G9S0;NWCp!;krvC~E z|5@_?Riat+{||EU;fv>~XH=e&i3Ax6n;aRL#GFzbB_vECN(5X+c!1P6O@{TiFsBtI zv}5}Wtz%1zW~k;6t&1HTI+%xuK5WaSox!SZhHgts%jfFq=(X6u)zeqN z=K)*q+c$b~-EUf8{3+LOKL6{e@I%}^`Sq_tjE$z6yN619tKb|y99B(DES3cB-j20d zd2e}ZMInzWQ3B>77e|eq4Wlk{Oa$)0Gj<2Dew($Ko40341LIu#ssiPFYB6OKb2lwM z0@puJPbIT#_l1orJzLWo>23-_8(VYMz04o;3o(L7LTNMt=mr~e$c}L%nUrX6)Mmy3Vgn-7_Tb-R`3R)Y7x0YW?NXrJpIxQ2o<&(EV|=h9GfcAombu&9w3(cp>#gFCVLp3?SM)aKXeBPyIpqJ zeyU+o^#Xv`#?mzVL4l>4eoilslVJ`!dfNC^?31OsEwL*Ao{TV7KTZ!Un#rLO&Tq89 z1QVf9pOP$SJ=xt9*F*(MM-|s**7(+2h4;I4;12fPaKM0B6m!ec{Y1j%bd1g!W=$jX zI2wwdb*`=m3}~-?L+@sf7}il22Cb%3*J@+OwT*zicQgoCo5=GN$2PQ{^`;Fe84;_p zk{XP=*2l7^7aXlKk|<%(Uo6rfRaZ-7z*e4B$E!3#jgj2ns9@i-BR$sjy}#p0mWb$d zhUjyBKMj{_xk*>JZ+q0C3#>oG!wrneT$bd_tT)yqQPhgUvIh7O`iKQkRm_js`6FA;7@oIsLeb_nvd>Dqt)()7?zy^*VSF; z!UGv>r9_|i$5QLcwK-&=<=YkyXm|1OM|f=IT;S%@-^7lM#NA=t+u^-1&FI3fDxRFu zjU8x)h3ey6uqSKUTi7BK#m7t$(JW%ANtJMyE-F0hjKAOA9=5$=b474PLt;|dbV6OSr_Q~ZlmlkOR7TxN zbL3-ZMGqHE`6Yb4HPNE+5n01fd<*Jy*ck+*kooMNduV?B#oZWK?f&BY$8+WC965{E z!ik{Rzw4l}m&I=f9<39fGO>9@qrzGqJBQD>6+G6nBo#8?(9vy!B?t4EANrV=@q?&P zMwLh<^N{zs64NPIcTO>NFj5YoBo9ow_sK~zOTnxB6B4#Y4aXXt2!Bp=9qc+?i?vRg z|Cqz5g*}e!&MJ$u3$7&yj8EA`S0gRjktOw1(yY$3(2i7`X78R@EtO)Y2XeNgW>?ob zD9^UQ5XTw(+SWaaG(5NRB7)14MWgoi0W?$;7mF1QA<@6q)ayxvRZV$4zu)N&+zo(8 z*1jL?X{L6bm`%vwCA})|ofe&XqoZ53Rf7@r+@pLL68|P5c7I7=`z)3SN(Qu%HjJ6; zDhwV^V+Jr1xso>gsV?&0qWF5Lk|3J93cJR_`~ZA{7ACt#+rMAGV*sz8F$AV9D(_!1 z?q9g(U0#4jvk50cm>wX}DO{zq<`|S@biZ9i!ZFJ0LBBo6`axEH_ok9e{SYDNMPdlUk;9q7zOze;1ME!>yTmUOtSAwvy&{1Mv2bpcs}CH>2Jl? z^faPuJegPScMc#-0=7vwd`F|o5K|Ihw73g(eC5hmE$qlbksUYRFwv%X8c-+E=T-uD_ncfBcKa#|JeZ%&cE6lksGzC;|HMbpi`oTN4b2 za@k*Yi|ymYV<$U(u@wO)GpPODZZw|;*N;|>S?J*HJ-bEN$Oxzp_3^`Z0*I-!cOqIQ ze>`y_d1Re>4<9@3!`n>1X&w|RVm+99LD>U8;KvK*8d+SJImM7Who`zh>XYZ>0;y%{ z`l?@sE-1vf2*+SZ%wjE5hYB>9^2wDqBJ6*;QH_OCPEavwdK4yx9wP0y-xb!RV)A%dgKxB{jTePt3E0~ZKGy6yX_DqcqSrO!)%!0l-jr2GA; zs_aqSU7F)3)b63-WWj<<{Pw;^Dx{U3p+>KCdti%%ATGIG@4wx%XWyS=xX`NZW**$= zH3npob`m!E)7B%C3P*U)YmT3qPL%865kp+E#Cr;`?E9H7l(Bu|T*bI}>RH@!d5p%l z+EXcLIxtk_-+CIY2_UDub%|E!=|sAF3GCd4lQX}07;a7zxHMK3CZRjY1ZM?Ugk7`a zxU+)Y8&L<+oRhkIM^1ZJ3JIGs12E-T%p5ScLCrbPKH>wC722`9X%-%QHi~KY*b*He^?;2 zv^Lqf2bQFF7&qju1!$EGC36~YbGe&qjxuhp@MDM+-!$f1m$1vXQ*aAgX6blv*dHg} zgy+FaU$a#6ReT*z@szmnN|h8YaH=S{Tg~$VGPS&~JuL%yKs7zXXlH5tomQ>j4LPaE znaU@+;gAcwXjD+=o%ajOlf>UpuH4YE8yZP&gaOMvN@i{RR+a^2%$v{YulGyFyB*gT zEQp8;Yx1_L-(3ht0KH6V%B()X$TxcuRKY=jahoC7Pb3UEiS=JJfTk$36GY)0y6%vObTeuqTc^? zq^gzudDtV6l3PmM8ooXtJIwc#B5vG27PYRr!nOfyhn6(XdXgNS|t!4Bp zzoqBUuVu54Fa>1wODK#OS2i$UmCs@-XcZGf*~S5fW0Jf{S^S)FJaU1OV@I+W_3Fy; zrngef&=i!6Hj~QVxhR)k@%Gfqj3mIK1?LxVe03bCnd)((_&2_H8&1+t0J-GVZR zS6JgZxNbz%tj6RoZK$B?{f_@$n{8jARxYG2{kAc-VgWa8&}=V)GZ37s2$bz`=PJp8 zD)rA^rQ=%D_!n+9A55CIY=4w2?gLoJv#r1>$^##Qf-R|YgIJK6Dp!@8MAgqvu~!Dj zV~#!Xr1L8D>diWrD>e(=6t1h5iM738a7?RWz&65Bqh_y2dHv0OAeKKf3K-q4`=28sqDy)tkBQQ~!SRNNm%$=#v~yI)^am z5fVNNwWs{Uqfg>3Mf37L7pQ02TB%BcYlN9z6l#T{?W$iRT-1hDX{~RUoKV1K$z3LP zqK}63^9os+r-&D1qytPTqsY~yInP5B8Bq-vY^rvcIy9nI84$*Uoc8G^ws|$2sfT7G6xnK4>KEJ+TFn)8*|KCFKl= zTWvw?H6C^$E#SthFw+=v*{YhWb)Or=o?RNQ_fSg#0S6-u;; ztFdCaZ-@SUb?FTmc1jvJR?zKFa3Kx51#shD<(8S9WaolwRrdiKssgCrh;(`p>z4j> zwy`gT4;sfsIoO9ig;fdC2dDfDJhhcGplH~uH(w((CZEqWeCa-gs0rIr^axtgJH_>= z0U1|qAm3_SXanqZ%nwXLa~_OkN(KDzEMR=eqhjc@tH>b$X)FMi3aXx|)I?!qd+4;a zFRHfjfZm2!tLf9FN^LO0{2Hus^eO|k@|11E75$XGsh0{caYNlvU%kY~p0510 zx4hb}zGYYOc0bu7U9H}{T1<%icG)~55M*3I#7kERO9nribFPwv;3W@EwPBk93_M59 zCWBfiemoW;6jllP{xslL0KvPq0oY$m2)2q;T+;VlPn9~bNiXfia!xA8?^Kkn&}22m`|>B#Hm@NLXR>UU4vA zD

      wSqWr8oc57Tc;&Wst3A!_ktgBJmp%!D*)%;te$#OMuyc_1q3XlgrVV-mG^>O zG7gF>ug;lD6f7I>mdJxbrbJiMofeAX6<)~`6I#v1M2yr2Zda0O@F(<-v?aKNg=04; zmbNRsQ}D{65@Sb;p(DnumU{nx=dhrWD-7|9ZtcDfAoi*8X<7EZl(%_oJ>OMz$|g2_CVLr?Y@UoWb_DD|_D-!F59K3VDm2 zU!~?cc2k&PXauI(H?Ir{W-vMEjrc*1d#X7T1H4xVVJ{clGJk$ynjMOpjh6UVTjL)J zfx7W$Ma+uhilvl;Fi_5!X9ssoiTSXkDMytSLC)el+TR2uODb?=^Hs~8Wb3IWr{Q*z zce7R?lVOAw#VQuf7Vu`xDf29YYaRGy@=nPCIkaaKEs|Ljj&xym|4@G$KChl^w{oFn%Gc}2cZs42ePiov7 zdH(opDPVxx^ip!*Z%w&ZUI-G?!#kA$Wi+owH)KEXJ*UsdE@5=_$NKL(j34;z10ge& zqb0OdXeP^8b%m{FMPmvtO?73LW*gBpjq=SO9_~4KrQCLWc{4Oae1$q8@YKLHkqR+q zDk0TI=1?OSMR-$A*{gIMFLa}+T4i?cE(b7f$Qji+iW&Jo_*HUstsFgOt?}j! za{sXqd#?@g?5qUTGP>Xm<#CRQ$xVkPy9fF5ZOq8(eBOgMlWcpn&Bx~moZm?wdA(mM zn&^QM5Hr)FRi8@P74)Fcdo#orK=B6Sl5|WOANnA7Q@2t=S&qy$LK@|q_^%3U%}aI$ zGZy5Wh<1iD7QNl{=5X3P8WczvJGs(5QMS1)lW?{cz+DZW6 z_JVR+LuPFXlq=ho;(c^&5m*9uXL$DJThNflD?d5($SaEWExA7Th;JNbs*T(t94jmEbk0c z2a&gac%D*V*M$;%5PRjX$$1Np>lw~yJ`$z2zt@JQUU;?4Pifww59D2L;;c&uttcK& zZSR@e56xR`Iz{?ROl{dm&Eg)u$H2=TV5+MIf7GEOq4q7PiLnu=;eGw{J-bYcSnPysL?)(N-`pmiS41|SuT<&XN z<9_hs@jR&0tt_d{Mk9cthP^OtQ_}3+29crr*+Ca4TT?HDj1SJFBJV%yTU2qTbz4n+ z+{N*|2T#x4XtMM{o&2mHntUJC7;w#CpYlDOR;$)ELTXES2h(Am>EKQ;dclXyawVoAhSC0w%Y#Gti#2=g47iJD4Y@c*|G`)+<>I`U`cgj zGEjUYE)*)vIYv=lQBs-(^^G7bJ35i^1$T0q7x7I*oV_}>d4)C-EIs1MG2HLJM@0f^ zd9(M7nVonLD)nuroFFika{18qOwJ!`@dGw@=1;h~lQs`5?g{Hko_r7jezUwX)RiH< zpuQ3W0R(r?j?H?13GNWw{|HPKJOIC^3QQ2(!#Z&b4F4SM1B>69?R%NN2mZ@2f{WUo zMtcoOHWO9O29wb0yvOaSrPz0S4d)~YHG$gvt%c?NOTp<>HI>Oj)&v{hASa@B#4OG!vC6G+#HFN#~)!Sr-Nk#St7b@_Cnc35Z@tIcl{NRPz)O3pVcl_i% zU7SfU6_%Mmn+hejip1576G%zsW_VBi_5M`xL0ETYy|k&;ML4?22W~c(*eQH8Cil`xqB+(jgc#1*H*f!2R+L7 zoH$#W3xp=G%P1=1p<000CR|p{ZkW)B7_0*D6EMG3F(&dT0U$cf9~d*J?#|NDe8*mR z7wblpM_xjTcpzvWj_vIm`~`#Z1Ibz;D{S|_SJVzjkgZFMj+J^MBOv1OA6xFWfg*8? zY&J)G=}>Dv-VNhNzJuWu*n(J^vr|5w&5Cqi4##*6cz!vG#Vc~4Qw3_vMLfAOi@6e3 zZbFqipXi66%}~?SM>CRy(p$zv1|y-zmVc)-2}Qk{@;z@|nsXv&|K!RkT|4^*O9|)S z7O;_>Jn_eT#&jYQPTKHCu=&svjqF`({-$yz!MgL#8RJU7U(mErFNMRxf;`5V_=e|#Ij?g)A=QID>-l1jifiE zbdnh7<&vJ~h1HL*q|XOISrU8xdt+A8)kIz%Pw7&t?|&oi(wIB)?SL?1Ze53Uvkm~u zixP^a#E>%ntxjNh54Vh#3wooFY84H!3dSd}4Q-Fg6o>7}=L5bXQh~6%TnMmgyR(ra zxW6|1ojxthm%qtlMNn{UKT($ob!)S2hI4R(4||K_&g$6?@d%7Nngy#Za8ouM(pdNn zr|K-Rpi_*6%8lhW&8`s15khAv7I=oQ&(c1EOkT(Lmi~wxVr~o@=|#BNbH^j#kv?uC za22TW^tnUm6$C15mH07z9#jMIA?2t=+IE?UH=Hs^u~};D*2QwR zpWP1Jv?B8xGA2A~a7eRJCARz4Wj~?u!9YSgENzygIpzEg>_}#pOkS7D&i_X3Czw;7 zgSMH4kPbNo6Fo#8Q}E-uJ$K8sg8f|6L*4lE;Lyw@A=To>r;)2iA@41xQ7}U-&z-;F z-|L+9RiDgd=H}Et+$y@%rV6?xOLgO*KCu;Q&`Xfx_X9BM zHK)@ZuX$~7&FnSL+Z&1N!^hbc&$#z?Oxv5^JBswXi(mR_w<9!2+Ap~N@lMe<*=u(C zW#k^Woo?NzJcY%HXPv3wM{}aF{UiAW4m$H;^y(B|GhrnoMfkEsn3;qlWuKWu-eC90 z8E<-(mrRX%g|5#IQm4&9v4HKvkbpHuQG;i1NtdS3rrDPq$zdzJhj0k1@)M>LVX^Dm`HXwdgdlAoygl4r~yeN6n&L~VbrDpqrcd)f2fE)xPA+%eGu-1vf|uID~Y zweThvbkJdH!^j7yaSDW`E(H7VRQy1MA{)a_X;QzT5M8|fwQIbDbm!=W4>S6^`TaIR z@siWVe0iatf=XyFklBdB0laZnBpH6f>L5L4BKt7315ZWa|RDPd?$pxfP#AKZB zoFSW|z+#1j*ElypiCa;8TMFQ@C8P^CLz3r)Wd%$}A1Upu%}#+!^J5MmVk7Xm;foV8 z>(@4SdyR>jQ!=xE_L?yG9%FHxc%O}f{KhzgtTPN6(CjkZ9y8k^GT zoq!Q}zn?-_$sO&Lmud7Tic4;uJUI_NUf*bFiYJ8xMS->dV%+QntY6cYCV5?9 ziBKGGQf1r5H80bExU!?$0o%t@o%$jI+*jjWl!5W3zV6%PC6E8dZ44}wI&J|$vbwwUdV z=4?NaY9x3NA$yUn9ne-CRVWRr^xcbPi@Q>DF0}|(E9PwSZ|6YMM1G`6FjdL>A{=cwgiuxS3o69#`kZ>_)k)r|dVnpJ z`!g(EtRDTN=yxZ$S`x`lb#&RS=M986q1z^{TWEAl);9^l-(Hn)Wvtg2KcudfDcMvI zdCg9Lbyqg125!og&B-(T!D+^(G%{ZnJrt{ZK8Y1M*N_3{aqY4_^Bg{$qUE#n7XZG*q9i!+9BkNQ5mH_hDdyS{!hkWDnwz{ zPV&U2S{D9&+Qi8I^vPy}5{CL^1z6u$@YVf1JgfQ_Kz!)P)kodx@RJep@n-zH7BESW z6Q8iY#=EJAlBTj7kDjUv5GCXYf2~5jt*THjDV>GrR#IV8Ef`= zi{!>oFFJ-IdAsNq3>>jumBRN4+#$if+YqDh`)fv(buF|Lfzx3LyB?J6`@gCRUDT|~ znkmzhwebR=D%h;cY0FqDV`LZnvuiQu^feSTY*`qTv8G6|mRQcx43T=+XVJeoAq|0m zitK{f$#ac|+zQ-wqD{AJL3zN^$uDnlRW~W_>@^~8t$Sq=_=LzO)Bu7|kaEShy;Io1sROANSJNhlv~8@wO)@oBrwi!^fES?;U<$@dA%uOxng>L4O+%LJNC>YEmbh>2yT2 zoAy>;oGQwQ!6BlnVhgh}l7O7Qlnk;>>7l4NT$tfs%>&H2K~zp0R<+;3hc^fvc{eE@ z6}_7GjW&+_EM$M?<&kICG61Sg*hx|FmIF*9?f5H+>wgSWfs8js_N5*LJyM64u|86_ z@eBB=M=a#$7gx(YI-6Y+BM3JG&7$RQHYL%{7lMSBWLKim_p1`d-2r3x<&B&&{!p-7 z=nzlJSuA2n;&=w=VTEoKO&c1%8YSf3H=$CuxhJ_XHLb;c;O_m7zJ+P97q)2(iw^AT zJ_N>nk8&TC(q&7HiPewnA$+6|pM#j?YdNJ9Qn3{T82W+B$Ox z)t-d8){cEVhy4a|wa8a|!fhsi2|b<+4BLXYG~&FzGW}fiz3!lhXJu0`>`!+Hf^^KxsEjOtr_qz6!S5)65Y7H9 z<Og(oT}w-eTr@<93#p-HZYInmUN!tOcjbg-|1DbhEULSYF2 z6P+`wR;bCmtg@ByNyq3!nv#MCx(_)uG+V8-gmd!wnkm)W0z1`;SLkF0=m3^U%&;}0 z+$S~tO0x95LxY>on##fcE#sB^J;6>fp|Vmp{8uOWYup~qJT?MnJg`twaG5LH@yokvt6kFyVkR*S9 zU{g;P-Ae-FIU0URXcCdVV(?h{WX)woK+;ra={0_V3lw-1x{&@D?|jN%GyD41XBuQt zq`Y~(%o^AOd+iM41?Ri5czh19tpz|VME6wuMpe~XTwCwe%}hp+AH6`z7d%JN()f+7 zNe%Nmbz#zeY?yY6ysjbX6>pJ!SX+EAZb;pfKAbccQbJpDaoCl2L|f#6dL+JXHhj3l zy`mwR6OW|xU-^l9^Jo{V;p(~h#}Q@ICtR}5mmCcovcV~53KsF^)MTv!xtEFjhOQ%H zlM{AsX7{YASgb@&^E;TYOr=-8F4&CruMn}RR+p&5Rr$&46R2ek@*#at{XYusjYu!9 zAC?a$29WE*qlS#fp2VirA*R(42+=bx!@988XU0sY6${n{uEi*0GZ35{^R#>XyhK+y zaZW($ehWl9ux5ycNaG||TFHA7`^-ouPAHxqB1f*zNGc&|G9Fa$PaE| z$3uqWN)Gw^N0@(===OgUX1UPqA8}@zuOl9=gC4HK4BLmI^u%fwubZzcoW)-x6>>5k z8+OjMGf4!tk{?*5kO^7Hykuph=EJ4jHo@FBsg5I!Z#nYu>Rp-#{=hod^Z=n4P3@^n z$##qc8%Few05E@-15^(BWw`#il!y)JY$)`L31o+8L=j&Y$V=Jjn2U*6%=F@vk$FgO z;^zBc0raVXFd#g8_UH$QtyLZ(JwBla4MeiY%On&V&OZe6XJlV-i+*xIfF`0jrNPP> zSytGeEoZxO{q+o0N@C3$aQsMZj1yy@^Tzf3I6`O7D@=*EvZ=hmKYxR(zo?tZ8m?+y z@Q$D2Ff7B}!)hM(Mt%I4Ox>`Rj*vm96yY$WnhbS`R6*V>Vx!RG)pQmfGxdJx<)cxceJo`;Q<X4e*s(VeV;al#3m zDz?|YDIed~PMwQ^A9;7aksrPpcfMY9j|~PbD=klaEmX@bNUJSEuC`vQbzOj^N6oQ; zGo^d+?d{dYKc16;U6f0ubR0j%L=6b+i<|L1q!Ww56C`eb zny!n%&F3|lZiszL)&lou(Xv}(T5??ySykix- z;R+fQp5w`P7z|*XWRN#W!?xzawghvp>+l_Wi}MX?)$mJFh@Ct3IU?tU-5?IKeWLzK zss7@LvCJG%1M*}~aViy*^F-9Lj?7ISa(7PC7er2i2v|X#a5NOuykc#P6Nu z2RLy}Z-aY(PUMbHXWl(yG{tPO9^L&o1p5s2p$sx%R1dt9=a|zkk<5wJn5kAlo9t9< zky_Z}w$&)v#E_a41Hf^|++8d1+4jN+oOkL~%v8LYHC{4B^HS^601nF?vWi=IJS9o~ zbcpwwW%$~WIqb1ta}HIYc9xFx4=w?)5URAh+ldx~kXIU6bk*Co5hsP?@%{Ri-m z^;kk^M+XAZWd47{_j3Mk@V)9LR-!iUZvPK#-y!|O4qpO$#A?p~?bTOdiqoblLRLb> zSEGu$mm&kptyE@@!a+hM_k7BLb0tT>@=;YuqL@0S=sypJgoFyZ#7+GF3_tANWj-#? z*EgDSB9L#huDmSsd>(x)pVs@faxLNvCOk2F0FVXF}|5;OpyBjYegDhIgRazyqo^QeCw~DP7P6OD(rYZ@S~%I5ax0#R+&oV);u-+; zxVzZWa3w>(B%1M;LmPyiLR&V(?fy#^W?tSN3Vu^fWtQ2OtMH6E4cku`H)la&~tsh~|dN%nr7e8(qEk z>hIFsFHqE;l8&tvv$;*Xv%7myv4ktEiLr-gw~a*brmChiPOOEFV2R2qK1@pPVk`1Y z9MtMMq7M^}q+j-?j_8-{qulE(eWu3ZbMYumt;S>}t#cSAJ_JwtCYN{I4Cx$qeahVb z%ImdW?TJAf#lGXTI#E*?w2%`h&Qa2E5V0@O$kKWXvg}`o%r)pXthd%h`Wr2I zF!%JsROAfA8$laR1IX;4`bh=F_}zJZ5VE}7zp}pUYtS#m?`q~8#)2UTm8 zMDvfh*4u7_=>res`g4U6Nc0Z6gVaxi@`?Qpv!m3XkMfEC4!OhBZ-nxR`_8a)_1g+2 z2MGw^Xu$?OaN}-%0)vUK|uHr|8G%V{C^YW zWgMKHT;0W-94+l_%-sKr!qJlIpfs8lhIn5s!9r9}sX*-fNZ!OJc*bqM6W-ia~lBe&^dHNzTf2$WqP=l=WDxc*GsgxLaVe2Y8J;B6CZ$u)%Y9t0S#H>eCx_SVpr?FCWYxoq>1!&#%qI!QN;&KHE+fY z9dsPmnokUIeMOU=Zw?0qhmjln-q4+Nadto0i-)7NdPRj9E*tJ)LkaXa{KrtXg*t|t z#E4k+++x$8q&LPtqFm2B8p(D#B!nmJ@q7#M7X>r~pZeu5*(bb=u`yyj#VmzJIK`2c z=_TkgIOZn;(sUxLfv*XvhpKn;Cur8da3<_m@k+tC89#1MBCMfy zQ~)Dr8oMHAKtss@(9{N1O?qC?gA%4olyl6GE_u(jGGUW1*d^v=V~zz=$@vQ#DWTzC^u$;2MBA@Kv#JN9|714{^G6dA-*m>i z@45f~&tBsD-^_avS636C|DNtzaNg*P7@t%t7AY3QFvx`8FecMRIep~RGIZ#Izo^t< z#s#`mU1F^DD+papBGon83%dD>x)_xVE&SD{aL}MbuZ+$AbnPk}F4XMo&Z=4kUmIt> z*0bz6<=#7C()`CK)<<~0c#edQ^4{)eBMCv74e726h5zV8o2&he8?649ila-=BBr^{ znc_l*8AGnCTa%duKZF|1aq@4b+I&u1Xe~yn#ybUx5CQFOQ@5>m(cR1TxC$bC(mQ3N z+C-JxiRO-;4bx*teqI@qEnb5|KP4*1MNi$Dn=i;lCzE=Ds6}_edrWpv4Y&D4+-7*K z+MIMsMeoo3`$5E_nd6b8EK|I4t;68OP_%gUKWmb?kTeclD2^-_HX8|uan&js$K@09 zqnJ`PmGwp|YwGIi%BAfJ8F2+7s0VWWl}*}VWB3OXXo3Z@uZ8w{HQtEAz6imcj+Uc; z0IfLD+-fs!N#yPKRbB+OyQgV;G7HPMUTiX#7^GtMu+KL5Dj)~usW5O)J?>w@66LuL zff?@b5hyS=(!1Ej_bpq68<={P7XnPa}YZUH#;` zC@~_r9)rtno*~|{amqUGmn`@|bQDSzS8}?4SExf8QHRBdm54@9elw5QyFO*+$O(2L z8^^PKu}!Om+$w-+56$CQncT_hj5@+-lk)5sZX>b+*Y-A|o<5IVEm}JVXVRmINR8QG zgvU7dLz2Cd-=?`WTL$68koR!#o%Do#YCJnGR;4+3#gR*|f>2}le2!lMqTIAx$}~DP zs}T#=Gc3*1)k5Q{`i>3k=p-}oj^n;f^+9qX#G&c;36(sW za9!v}0ns=LQWND>1`wn>&8%EB&F>Qm?5-QDd6@C7DB%vCB#%SVNKtN0%&} z4M?)hj^8K6Wcp)yRkX+UOpnA85{(U^Iw)pup^(;$8&IvDscxBO(0?;rf}&$qS!Blo zlBQ4U@kmSXF=M3cZ#crSEUl&raFB6Xu$SlJxfm~y&Ddli+eFv3r3$AP)UPvfzPvua zr|le1JaaBa|H=_3>QD*G0m5}EQ}&kZY5Hdo0}D)o82V zW16NUFm3A!^@eo$x2Jqg8&vI8J>w=8agwETV$I56th{1z)LOoJ6z8YiaQYj>b?S-v zcqN?;b=L5FhbNUJRLM&Wa<<`xfxcpLi?N%2uQ$$9}U}KBipdE^+=z1vc}A5Az@pE!~9S zX9UtM&R&gOtML-{dvVC0P-IqO2;v{gPbLo=xoAt59Vp96wiBpV|Rg zt-6}Ah0u=pX{m;o+`FNLszQfUm2>NJR;D@$;)~5I++d#ZCdRXLUiRYckh_9mK2KM^W_ee25xcrHFOh0 zyke?Ej((m$;hnQTTS|&g76}~3)mW~OP{bMuE9^9YTAd@PTx4nBe6(rV;L)$ z4Den$a!7W{ULRaYd17Adyu~cdJ4an;5*LVc(V!V?cLeF9bjf(fb43Qndo1urQlw>= zf7~{Eb6Ev1U!SZ1gGeQf|3Z>bj*rTQjq?a!mm?t*wEFQ_%sW$$Me>F5h71ewWFl(( zESQT?z8NXgKf+>xCL5AyB3sZ&Fz;!cq>Hy6n}{?pF>WDO)(e|Wa#8-H4EeF5`ysLP zah@5>>^TT>xDd5T8F&qWfAL?cFUBllf_pCQ$&xmE zA%{V!;D}oL$-A4bAx0y>4*igUwbcpJX${}H7vfy6rWb^9UIBl=E-OeS_h%+t|Za)dc$(>za93f|CMZgn@ag%Y{Q~WZeXVOvqh#b zn^+sDy5#q+s9M=Mo{VC`{Nn#Z*;~fe5eCVkam>uj%*-4!Gh@u`V`j(9%*@QpG5eU= z$IQ%Z$B-DFclTbscb{}u+CQU_W`2w`t?ugns;gK{F1_M#aZS04Ae}JxW2NUBAZm{D zfN5mYb&nEt*f=?W;m(pPCO@zjRJptAXaWa8Xkw@!PygiP2DM@&%^IU-85Ht!5-7u_ zpbED`lP-zW8^~i&xPapftpT>P=KH$>P{P^dcPyg6Lc-EL{m&`*yExCsZUA%JLD~^g z!86i+8x-^cA#{V6a9hIQj@9UsyDvMo9===M!9U8!4L+)ezYKQl26pdGRE=A56yTWx zgsYxQu8pA>^I#Gkxx5uLrOVaHCR6g<&#@$Ev43f5JNwru_ zv@9cuGEsZj$^WVWWN^=3_CFeAgY9WB&j#Y?&`vP~f2bULtG+;`9pRrPWj8hb7L!1| zm}uYnJCFUl%W1I0fLF1jRF68vjK`yOvU7a1`yWfSn~d!2G`D6TM?Qyi+Qv~n>)y{m19-*_92W~9O zy~Dho_B+EWx5a3PkL^d5xab3ix@&rv$EebFdtN$?2&R7)HbD#g7|7t6WxaoNv>(C# z6BA0XXGj%+{A|h>$rX*E7qBItBG~Z_xnc0ioO4a88mS?Pz${2mmPl|!_YQ)2MCo4i z1EcML<$8eKGtPhZLCKeY=jQ`WrLNYmAr-Lt8g%^!~)?~nA4m^~)Pwc;k5 zBNZXt)TTCSlI*@EUk;iN?B!KVv=&dbwi62a!?^R>=eQrZY4&rU=5oKjV;#IgWf!zJ z-`f>c_hpzW<{^?a^WR@Cp$|WnU$gXx+25dneBS)>Gqx$q{10Q#TE8B6dt`hl*b}3G z{9k^hWC;DB97<*`<5t1|>1`P;z^T-DDc5;9B`rgj-}b1|PvC<#UTn)OowBar+?wo0 zD}Hc-J{=ZpiYXm$G`u1 z3fvHIm~@2(ZFbY3$A)X0ZQSJ(-Xig2B^zCe@S~U1kc%9GLuNhwXMbYCXOzv2@a@|k z(SO&UsQgd*69oqsS2ag-Q)>%rQwdK~bI1QsAo@S_R{m=+TdKaL_@9bH>VFTutJ3#< zuO)dG(_E}T-G_{&0JdR^cAPCW5l-y7Td;5aeSqnWr7DQT77B>p7sHvg(=&;IEuFTQ z$;)(^;kN8$xAgn?_yF(6$^)Vpd)B&wj_au3xY}p&0vXNvTU`YTl$!I`H=z zXk6{~pVaZ7URNVCJ%bmTr9ziiHPV}jjaeY5gp~(_e-KWxRJK^bIbYVX3)CY(w@$P4 zl9#|3vUSfQ!>bYt+#(9^Wyz&Ko5D*W%s1KGLX0?qf~^%v7&Zqv z#JZ;iuc2hw#m~)6JMBqh`4MEMgX7Y|iGL|hA>}2)o>H6MS};x-=iT~B@iP*I$O!x% zLH&f(Z*jzyQ*VI^<;;X$8Aub!+S%p;bI2b)|fbm+vI|=MNq>e^{NH&9six< zeL9^ep__2)CZ|ite8wsss3a*l=j1z>ST4`YwtkK^;tChLy|4%FEzhZYw*XK(kr1eAdSdcgH7RM|lod%C8 zGVvQ2+7B@p90b?|9Eu7ac_fyEDd2cWI0hsn@t>;ND9)GfKj*PpP0%W9=QrqdHzw>I zu4-#F>a}d^>(@{IDD?HrPMIYcIehQ?H~UU)dBbj5|7*E@rG2@5hMC##)r>oU);SFx zH>kO&u@%yyf^~D#1gpj&0y~7q5}lH^RJ9U}0VTcj;QmBzSu%)}yvFXZuK2F(U^l=645p#8G-O z#AA!VjTjD!FtJu>xby|(F*|Eivs4LkUmmo2c&@fAE~3IY%l8cTHE+eOlghXnYkMx! zUv?EccHe)_I{d=Ar$C&%%kx1RVCiwG;lzj^@%D4PhqkZ0fy1tyiVnqJ&RS+Z&&&Su znR)zuQ7#ZPwU~R(d7hTuZo?INQ0Ue=uoSyKEZ+;T=jh_WSt}v}$e0u;;Q01ZuH(UH za>9uRlG_EI=F@=|I2APjq$df4nnEH{s^z|4$cmPqK88Te7J+orL?-LN1m7l>hS z%Ni(Z#<%W_*k**BSk*8^IR_z^@>kwuEu_tx;*(&sBk|0@0OuwGcmr*gjJE&?eyy~r_>sDN-Q_>^$fkzHezrxHn*I4Ew*hTy2CU7&W(tPQ zT>%D}X__$@x04zMJsn9GxYAT8CgqP# zy(vkx#L3`j$42;S2v9t&9U=s#>E+kqHWv)8l`?lXEBiKHG>u))rb%pItM=%xAw~)$ zWMwJK9_Wkt(?O_#Oz>^NRwr~ac@>SN>a-Ll`lGuPX7U(zC{%?r8Py)2=0LfWubRPv zWyjW8H4Hg&+G5&RfzXEM*k37`jetYPXS!;#t7=DS;z2isR4E?QPz<$6PS<~M&a;5PnBlZ{6^*~QI2rY^Z zlkL~;#+i17$|R1=bMaOvG=y5bac3a(9f}xBngIIoMMo#E5X%*oU8JqW%nEB&GR4jb zzvpV`JNSf;6syrLs=&m7Zm~0IyzTOjpdV}VY|-`hsn`Gc{oQO#eq`shQ<2yegX;@YCBbeY*lCZYU7KaB{&O)L`ZgVCfk z12~We+aGgjhM>9?9nuZqezNXLl+h{mao$!fup5?In(Qh2DzKaGnDr%`vqOVm9=}q6 zErdGsZCK!^dc9OrDW@vk#%Fq9`)!+1jg8jez{qW>MW3eJ(dR)0otsU*2f`azJ*?#O zW%71QB_omGG2_S0${!^*gb8I1+ywMR&GlaV}nZOBf$$f^_9oQKqYm{ z-5UB@f%@)|=-Jy)_3dp*kL-%Bm9#|TiDej7e}uaZ zVymN~#@(1$A&URHmp|yP+%EMbMSc%mP!?;#lm&V79o$zvVAa!^rmN`bYW%J$sw!$L zYH2F!Rd*xm`Dd=1xEB_akciM=05 zQ^d$gOMX)SbN(l#iBjsUOGXRV)F|SEg6seRK_g#0r@B?dqNaZR+*9@Mon>Biw{um_ zagt1rFt?p`WVS+B4ioQpC1p&8^CQNfewBs_o{3tx+&W4l>AG{4w=+UXFNW0xJoZ}2 z;3(DmwUlvOaCKGLs zs1XZ*Qc9KNhO+#Ki<*40J|;p+ChTOdmWry*@t!)z5tDX2Vl!~rhNb{%e-eA(uGyLs zt0ZJ3F4VC@QrCsfPWSH-+<160Tg87_J>H$q{oECId-*%@y|{jn%J5xy)CaaGfL9g@yDC_T*8UX$qUD(JjB^t#G|h-Ew2zWN{ZP^ zhi@q@ua!AUvf23~uV>Z|1aVZ|G+RIfZ{`GeI?`!+*AaDn{Mnnw+#Vq zfFte<2M5_|(NfR4MVHGhrgr`Fqe%7c@5N0ooc8k)(MY-_os)b{68*E|OnQlWUM}`d zROyTV*pc`D!drL>v~MD*t(`KlNqW`MPT(Dl=QaGvDk8noKAn9u$HYSZgM8ILy(MJI z4ELvjXG4>thOqd3t=BlzhL-s`*f3_5SKfEXcchp6W;J^As$wIPvX@~e;a?oVBR{fn zVeOdmi+QVQ*UlL`T)tMc;)+9YSvL`o(f$^)qfuowbYp#YKCH5llUDM7&SWy!@lz0G|hwu??n0OzkRu%!OWo1 zk`;+QP5FEFzcwVF3BAbYObg`Ri@?ueC6mxg39$QTSniGBU{%L{I)^7TCkQHB=bOc#ZZ33cj9700qt>7??CzfP-i}-B+;5Aoeu38QRS)z-8AQJ zv@(65EBc`eeuGHXJdNHwg%&B%{`l8r5a-JXg8p~VBDn!z5c{$CUa?;Q}xM(DI2yhJ9Bf>HR=JzJhR9{jf~ zv@aMQo@xAq78RdSq#ty_Z-P)S;ROCu1s^dYZ#yB}n1sf__XY-3;mTNn|tZHN^;}6iz&{DBNY9EW;TLGYy?>Mu!CI=oaYfY8bc(pL z5nC+IhTI#A6F1Q)yc)gwc2f5Ki|nggDCf~bkG*F>OYXQE_%}W$_r5(qUulwOYSf;` z<{!6MmHwtoU<7%oj(B`m?crde=w#W>abIn_aZp=}Voi8O$s&_R{Eo)vIVM-v-8T&Cu#HPnoO!+Dr)B9&VeZr zVq5m**@x^6N$u!2@JTQ&@;P!JTK<)ot@RUC?hZBW;gSiM-w5V!tpB0$Pk7~??8rZ6 zR{LX=0}b~p`VIz0T7?La-E|$$JRPm%KXUqk@lS z_5^asm~wVjy)q*qH;qczLs+(K9+57FWLt6KF-W44S(lRZg0_jg$a+bHOGcL zd^Y6bQUrAE6>1sYvZl85hU+vL$k(O_>tp?UbJk%GOf>~gJTq8{XVsci*_w27j8)Ev zhjqGEjKz~ZxTt%Bnxhq!j2*h_3_qq3bc|Ca=MM&#Kk!XZeF?3e63crUum`5+;j=W` zeJPy#X%^#2a%LqhV^)#TKXuKM>{38x$%oSN&gRV+J#odO#BoS zTGHxuC81Zo`!`|sq%Q~K_Q)LRP?m9rMl< zYDBT5wUAT=eSSwv7tmBM}Ms9t?GMJ#8dbTUW2WR{d?Oai`i7QRfDLjuPRkf$?})RkSv1>R!3 zmPe~M6t6RO*c|!c9%e&Xu_auWhld<03h zM_#XdC+%ZO9AMXlFJ?xiFb#T9wcXP`u$kjNl)4si$qKpw8)qubGe<~&TXj#Ish`w> z=u|sa#q|qi_AKCy69>ft9TErSytJ}9o@GQ8ePsNi;Q$L;ML|+zuymfrme{|UR2VF8 zW7RdrO%Uv++^<82dUx7{-5@lv?~>f78;ImPsMw@FU5+;WzX&VPFcrISD932uzKMQO zbpP)J7Qz3?U`^TC;Y(iIUe(;##R2fYS-Q!y&L9?)5v`PEne`T0#!|-6wm0Uf-8~>L z3+zk6oJ__hrk4|j**N)R;Jp=r=QpA#<0DtTiT>%nt(#c{R-9UmEMBCT>)N;vt#tcxwqqH!|lP?&x)N`o%thBBoaQJL-IYrf^y!sGCw;yW*8qrU62!I_6ai z(91ZN)GHc@UUBMUqGj3}l@TEE**V$pN+rJ%`8AMert0~WRJUF3!0_B@3U_}17q(@9-T^fr=zT!Gs-N0yFWth2Qdrc-~w3cnz)8;J)z^BaiB2CkoP6LoxXTduY?X5w7&a~pe;F7oj)jp{bf&<9e z*myRH&>{%FaR$}0HeiM&JU7{}ZBFIm+vF1XcIe!<|ABjjZgW9sOfp>&*m}Y#n+Y7H z*N~fhWrD!mg%Vo?O-65`UtY6|A9qamc!kM&^LwyH(SK&klt~*O5e%uLh|5ZRzhQ*{ zWttEm+*C)1q5cNLQ~?67!7+`+fdFXq;mBPLfx7i5_*+Z7k`Hk7DOZ$WdAUW5H8NKjET?DyH! z)2lUyLAJQMpb~!dDa4im}c;Fy@O&l20gl* z_UET}k82V9Wb}(H@ftOO-a>#3{y$ALQV2gmCplL!QP!NqLr}5d^E6zzXth7!@{IH- zF7d-y6k_FB!yJA&uvQ;Kj^C*JQsqVPxYg^HPds^$i974KoCC)7kBj%|f5EXuE>cq@@FpseA1#eO@JC%q3sH33vf5F|G%ihh#YKioi^Y)$S5iekr zC7TB`?_!*YRZG#qC0T_ zq~3_$=9WB-l=fJ3R_uEqGgk@3wc1@u<6*E^4In15^b=>xgcn%+6IHQJ&Zo)KdDA0i zyWO*iwoPgkO)GDrSxmroWX&oH8pxwG-5?vQT)^cijVdIH6n_^pqQL%rDE`L)mh0sh zj4ayZ%YWu8Fx78M;t=1yb;JI5`O4ydlCQq#&0oA`Yga`#JG=kaxJC2JrozJd%gaRu zVD)wTWihDe0Qiqr0Ol?(G5`yQ|K(Mos-ToC@B>)EFJ5b@Flg@Kg z9(_9tMBjKOT(8_%v)HNqoJ@{{_74!A;Q1%J8x)4aof)6|%i=h5{Nv^Iia#KI)z)}? zmkrohI{45{#?P2+E`u@br5Cc6BPekp_R^BEv2AzVxyzyL`Kd@jko%N&b#e%I`bH?^q`UzTbjLfcCmMDX+n<0B7*lA@t)?{8~QJg+H} z+bVyDV`5qbQLic0rkGY;e(-M7!i9c)9FCm^M{nDPw@WLlIUZQb*2WkBwCyR5>%S;M z1`G126TsoPQ86*xNjQ^p?@wra>p{N3(~qeSr*f~b=7tE!o|Da&-5WQC=Y}IsP>dDW$(`Y_9 zZLO`E;Be2Ht_S=8M7!l1y;i@Va+?jezg+H(f8qb5Y!wqm0A0YoeLMduUH|v8^*`HX z`m!gGG5cRA>DQ{cFTp4-^e%4lT$*{CX;dzc-I{ZT?!dT^6vi0^HKm&yH(zbfde7z6 zcoMvI0U`#teFcV10geqCwL<1XN@ivz@3p^?$MzQAYtfG21Jdl}Wlf&%-(B>W#w%Y_ z!t9~7HWG&R$f6U?sv>&_S{s*l>5$%oR?OhasEf#kY51UDt+IN?ZDjYQHiX%uYx_Mj zEudpwzfOB2-+CI!98Sy;8$TKOj$Rt4k%t_{OSm_i!#qdCEk11i43R9vWbhEmtrej zGPX+_nO;XT7c1#vfG$X5R+F5S5|my-HyLVN(8PRXSF1pThE7x_Gi|O-FUdE{Hj}n4 z5IWAXdXpi-bYjX(jU?ipWXBnxhU`3WO_Djlx!u81hHsvQ1bKdq$q^|JG_jhL6+OcPR#9Os;^rthz+ zz&y`V?h?%c{xuYQwN{UH12?m(Cza;kTuyBhW$x6$1WWo)|ItoEnc11f%8!$`taZmxr?yCr zL$9JsPeS8PF3LBWR^L&Vw!E0d=isqK)_-!xe5AN3S(+-a67!KES=H$Ig<;nP6{B2=DUPO6TFW80pij!Ry`LE31=l)H12*8Kp9Ci5U3oD?I7 zwh{y+_$F9)yJ(k_rR#-$g+6aqFj!6*`XB<3%s+Ck&drn87MeS$2XM8%SW+m3)&xP! z$S>;wM(g^M6|z@#au}(bFXbat1V#$;cAM{t3YG3$8dOGHESJbP&>MP}5$iBH^es>Nbo8#-MjGb@vu8E3O9 zU9c=G)E*YyPgOOLLXL9$T-+fGS)faVFwM#UJ!qUevEHJVvX{t%zqqp0q|mCAaqYb0 z@z59e=@gyNIF%IkPPNKWu$m4}gI&wl&B7;JgDo~ni9E$UphVW#*Z6X)aDd5pFO*tH z%C*WuIxd|p-nJF}*Jk-MhrcqbJ}2f1baP9d>|T6lj{iWvE^J046Y_;5v+r=PX5UN{ z1Aly40jzk0=Y*G6Sbg)RqCIU_e(V_aa&v2TII^Te=sGsDoH+X!_Ep{h*RZJ9o*%_{ zUJulr6XJJ!Np^&;?vX8H&)dE4fMBm(1A-#&T#TDUqx&neoJ^VBDs{>4NwiPq&N?|} z{C~bpRF23$DBzX-LSG=Xnqv{{Adeg|h)7zHA+9^A(V<>b)XytfGZcteHz&U%sMxt9 zpvmA>?o&VpM4LK64|bR>e6*e>$u>^^#G_tYzL6TP0C8-S_-D0gGy%F4KR6h7Y{{I4 zpyew|wzB8ZGmWx))=O43k&6;)NQj#M62|Kc#OQo|-VWyIe%bRVWpbNC|2K^&`?n~b z@wN|^iAu7&E?eM5o%yoC(Bp0%1)hg77j5q29#u`FVpDDholJ9&Cx(O@5-8S!92Cz} z!M|W-=Iz`bJ8F>G$Vu_56ZP3Q*@EAtRH3EE3nEgN;*OQ#d?<`!J6tDG3gF|*BOKaW z0g-*;q{s65ot0?Cl(Q9FdI znLzmacYf5oV5Pjji66j+Lu%!6{Mg;=z#*;PET_@Rm3&EQrJnscND5RY$mbBnQZmt` zF1SjuBD}@HqEpyVl0qz(_#{y#uNcG&-@2-8UyyxjzRQd2zI@y%R$JDzC42$jE9c1h z9@M^MM`Q=Cp>#J4fYcD79gR6K9gR6S9lbt43#~p#3%x!tj>HhYp4<@Gfn*zoSf(3x zTizGLm*WoW1!v!M?;s*RT!};oRVdPvep9j=aa(Z{>4roIS19yF{e@#6w8tJX8!}5K zgfA5SqW{7RoDJoV;NN4~2k=O3g5OYVL!Lx>44t4p5B>ta-+sFz@fEs55s=ppkcyDn z69i)SW1|Tp`w88_?_#6%!4Q%Av0kFY4@vB!F+@=BvfWW!qTPf(qx#%pG$KO-F<;2` zQR>j79AiE4wv`0HXVHiQeu}=SzL*1rac1n^^$|WE5c-VevP= z7vp`YU8zXq!FW_*B!80To&2%Ocw~#2U}RK(oDY~gsl9kqe}WH)JL)|pRDV1_w&oq- zSKx)^?jzSQ6DM0_HB2EXLr_C zzw#dbKE95gy+hvcZ%d!s24zQL4@O7m?G6KLZ<8LqhR1(}9S9Bmf3Ii1pq^=a!*HHy z6>qpZgzs8`O#(eP3?}!&rxzMq_#gl2WcW*j6uS`S+qWI;{|*HGj|`h+0AHqU683I( z|LJBZZtiFfFf#|3di@vJ%~hF{6=Ova1Zh^c>ef0a&*f^|?hl621jWOJ7DdYrTrY4e zwpcrNA`j0xlLo;H_s64AYqf{&A5Uenu%ApFUi>>i??>f|9z$i)Uqnvf;ET~a#l=`_ZJLbTOTCoYwwSYNZnq}x!_?8Q(aVL$>V!^AYa@7D1vvysXV zFN8)pZsut3FYxf%y|$?hE;mP9XyRepZaA#+plViW;)O|869w{xoUz-xIVde8BziwnUTAN&1Cvvjw9q*Gio zblt66>bpnEGxBzZU61h@r>%iSP0?-mEC#{YAf7)L%+s_Y%8cWllK7nrRZ*hsjJR&4! z8eu2MaH%Qj8WN(xSZSKbbk!9|q4YsV!LoGNTB)hwgTWK@^w>-4h!a}rn^BbJdlON^ zg;6%tRxr6(Q0WlRsnGPt$XOg7#uXvXgfK(8TNj6pN1OL^`;~=8B~4`e5ZIy?)%Z$! zhL{tD7E1$B=P;t_Mlv!qXqk9X>fw{JRg)DEg{HlD#tLpauLVIyOVS}orG;JtS@-AN z!y2i^0B#daziMJ@E<8O=6DkHqYm3F zMldzABG-mc5#cJeQfXNEGsP`1GmD#wSrXEdVYlT%~ zan#RG*07SQe{DLJWGsTEYQ`g~@P%oa>apr2A;3q9gptaP^Vo=p9qVPe#Sfb&!aUYC7uj6v+MTG7Fi4Knf*5}@4Px+527qAvE#B068P=+OPnMqUR5sG1+@*)lgzZnDcspFl<4zv_13}Oa}xquS>24;i$SbqKaS-%1l(=9F`@o?$ zarvv1EF<3H)wXR%+yNaPYxfzToehJ}vZvi2I(a!3irWI6PZxvzt{U&gZJ#(&^U!WmJ$_x$2=pD$0pG8ds_t46Tg zLilnz#8aEH85R=6xMOwTH(`hzWf0xdXP49NM;cxN5^jzz;0G1L!J-ZnLb$Oa4>akG z2fFa}ivaljuDGIs(GR-E<3$N5*YF`8w?;6*{*w?nbU2u-h(c(lz{$)cEfRtqyh{Q) zZCvX?w^Fe2xj;27`~(Q7@;c4}e9v4*!8H)qzYU@eBrGQfZk#z(KHfblwkmtKjgI_Q zsK>xw#SYxP4z54@A$nFY_J6Jf8i=@9_PCQ&6`DidxxoJp?B#R~1(1JnW1$GF%dXi9 z`ZBvl1HdfKg}}r5m8k^+<~rvW*k5U|9{S%K0&NAY0`LWhJYm}S3z3YKgM>Q4{xpD- zR+6=FD6Ji!sd9>e;uKfgPX;d83aB5Q2d^!}sGx_zk+bc#ZTlM?3FgbZMR3hpK8?(%x(#pvmTSl}ZtbB9Zf_)|Um_Xl9_Q6l{iTWUNSZH0r6 z!ib%=0>b#S?wWgs*5IyGRU+x^3km6WW^kgZm|J|WiE`=n9IMB@PEats2`l9(^#U|tySs26Sre`S{JZy>r)!?f$E-> zKGVmFWY5t5TL?xxuoGD;{-?tvDnc(lt)ngKkeGc-NTdS5*}3myeX=ObzUv|<9Ytq5 zNJ(k|f$eMDpMHxe3Z3O<3R_t})l#fyTD@q5k6*RsH{JXWwRhdp_ITST0zKG=@Pb6d zjVYnnU?wuQ-~!ctEFF=GEcTO@Fl7Ep^%u+}+O5I9#k!E*E*12-C3tT*iC!qw!X<|E z5D%R2dhOiSuDEf*VMO`E;bl&86ZPTD3_XFcwY#yqNF8)p0iXapS6p&|X25wcGdVwd zsOvA9EB@&KMH3tFJJp9#snQ0g4mDM~jRgPso#ia0lCb29G+R{`O8%u!==UI^!>Zcm zhw$@Uqd6~tf{xeb-;K`Nz!3)qxK=T|oKs5A_N-&4U>dqgilv~fTb6swM(AO%&)l`Q zsO;I|GixL4ONmRHS~!4;k`djLlgSNLHi5(>?Oz=`qo0@IyP9%V;z36+A1%l9{$7k` zN0sJLc;;4o+#3y6TSj#S67X5j!_SG*=4#i<%K?I>*+fO!FemIOMs0?i4L?PP`jU_v>AUW-`!i-XEuJ#vt zGFaO!%#<-Mj!BIf*XCL8vJfarBv#!woy&yiXyMtqvC$|_iH=$SDN(9Zjt-F%ExoJC z$>f^opXUh^I7o7&(Ix~J2EBgl_MOLm%>J0GCBvX2{E0=!9BZbPk`;Yp#u+o$)Fj>7 z^OoBW)YY!O(loJ80P0djIXmTm(RLeY#2z4C#)E6OD{`!uFD?n zCnHRqn4GKC-n*ouPm1mtb(jq}*C|`=Qq(zS*zDMu%DS-)_gCtVR$rPwteN7{?qpT; zijKV#*2Fm@IE4k8zK-Wr8S$80XOYEx5_aW}dkfcVDBe3fa@dwNk;=r9$J~lO$VXG~ z9`-ibH-2Bf%rMAv{BCFkvd@F~vDrdeOk>q=#4{2}8F_ideKr#7lE|?ja4MRtudh?} z)IfF_z{JuJL#QlB?XPOgw4!Hb#GB-I8zQ#Exd*2v#HJ_wp?&9KN}0C@qzf5{gkf#x zWQhT$9}dbiQ(G!ghI{H>FOr2A!`8r##FvcpQ+6y~vOlNfY>tEOsW4UZi_uP-A@jYw zs+R?k=eNZ$grk4;HKPj2Ov;(bk-B@^m&p21ZO4_#zR{(MS;}atua9UlHM==Wd|$xg zuY@qGr4?oBkIwNV9c;9>cG!hWV^YzaAT%)9E%n4*dudFjIy$kyZoAI-q5eH6QTc7G zj^$SNS{YwYfH9rDj_uYabznm+$Eh}O#VO2?!|AI$<}^?AFXbHIaGxDEzE&;8LT#7O z#m?rZ)Y8>*Iuf3Yb&I<7ZTIV`_mv=1H9V~u?MiMVU-+6lJzlQ8u7#r0Nav>UlX}oy z{M$h2&c*(oqlq!W$c67o-F`Z^DjJ&=b^vFj1NAvE0Y!sRDr)fG zd}QeJG?pCmfN*1(7aS=+BdP@G-eQjOB_?oo-$gw9eD|$!B5FU9FXMCOx!>)jD3EzC zKhlw69Yzk#+iLT4gZqYh?Z$7oU+a$ZzKxvIMPpZnD-OGWwnW|Mcls{Ad|n?}PU`A5 z;OoS_56ch4v(0wv@WSO_o5Dq;VWq*~2eY5pd!=qd*t#2w$4=&yE>XiyQbImatGy%w zNaX8VPR3(^4XrNM;Cf(1*NeBU``DOY4xYTdf%*tuu}q#MTb`$;T$YGO5!b%fYgHr!`L{S-y7+P2Qom)AqhM;ceTxsi3Y5bCmHCN8 zg6xKpfb6UhHhHWDp$k~(w=YiKZ?IAUsOh`62cXl%(n}v#xape5>Bvh;S%uB5VR^|; zN~?*#I6_(SBkq~#Ep`fE<7{6?dWGoWgh^X8lDS}z1F(0gL!joz zQF0})g>b9pjO6-*uLk=4Wqxz;x>p{)8RsRfpll5rcLU1HN<@FSsA||_Ty#T7VtRaE z;;(1ZA2f>%j@W?uURs^uW8o(nc9CFoy@}8`wMU~nP3>kKXLvNuy%bvFJ_FEL^`i-! z$;pgZuu<{3DIFM+HfDsA%hrvSj~Qx0CG0f*q!ElI(1h4e zeD&j}YGCIP=@Y>s*u?lilOx%S13|q411buxVq)G{G~%>3EAR(vL;?z|#%Ml|(1X8Z z>X|^R>Da*6nhwmmDOX{QmP)C#i5%E;-X2C~Bm-o{!!HGnD<=~k+dR}u`jghlSi9o3 zyM8{_Bx{bS@Ht71mF<3$T$~|Ed)7VzG!3WaqMT^98f>PdUTo z!VK}Yyp|<(IZ!rVp+Q$wk59uS5JODe7Z8(v zJxm)$gT;>8C7~-I)A}eZA17u{{(HD`-?f~lRwH_cG1r(2XonN#Xr@Ckq6$e~xFGsR zQLMq&tArs*Z$L$nc8J$1qBAJxsW&mHfDQQzIO(^p;Un2^BEK^;FmR;1wD})MjG;UL zeKnK1NfoYtx&b#42$suY4GguU^YGzkLKL0bIxO|jT(T;f&onu`RE}!gb0B1`UKx%n zV<(!5G|HKg*Mg-Ourz8IXRU6;*Q>wQS0wR4(5`2=-|2ek8&RTLR)wTMlYaFL*Pfm1AWBg3=CFnow4ESom!?mjhNCZ-D&;pQIc! zN)mI2p}uhh{jjXb<{OIFPjFom{Rf8f4!lAVFsZ-oqx)DZQ5U)Ud?D!meTImQQCC5R zSfp(C=l~XAY)0+2%<n*%+twFI%ZgBjs*RY`OVmC#d174>|tn z48d)+8Fnyt?^IXm`;E#-?D+DF7v=-q*@*sg7D}DIY=s_y{)m*UhSy`^YaewTinr!_ z6wHk^d;EGw*z0dN7O}qovCZPPc`s5Peu2KQOk87v?NOd?;=RDnCxVS=Q4bb@zO#WY zRUeZ^-g&-`2B%WK4-Ko3u21IX7Ze9Ta@f}Pqq4c%s=y(sJB|r8@rk2^=uwFi-4Kxq zHIaqp4VA*^zi?2l3G!fv_~Juh*d7(}9&(r`2SCmJZ%MZk(Ork<0&SkO735!(SymwN zu+Rcmbnp^z9fo=EW3+H3#FX8OtJ{q(&t?|4pzV7Y%S|+sVOxMveC67byKy z!7icfVo{r!4sUy;CWAUD+wz2aT+z(@RXKySytnF=;O~-pY8yqqnrR$~U`j-vZ^h{6 zs5zG*q%f2FZN3)b9fBl|R6YJa;++1OY5ga@&Xef8TSUe7lxJxPiMfq(A zg*f_|MwFiY`E$|)Mt)m^M;(n$53OlC_Yy_IJmoPMy%aKtoM2zVDP(geltJ;%Jm~3M z`L}L&s@ELK&j-yiYHd{mQ>H#OF2DVis+~iF`ANtxv+&{m0X>O)uCb2Hw3B?Ivuggo=&d^S^2j?6%Skgo=&I@g-$vDNe zLJfz@_D$$~r?F!{KKv$l;-kgEfhdWb`RN2hH)n6AzBNxYjg!qGgtcJqO4rm$UO~jQ z=s!}b=6`~eJsB*e1XA)Rtgd2j?>=LfO5O{ z(oUgjPvtmW+35a=bKNH2#DgqS%nulaoZ z)0VCJX%}!>HolV85uu07b;!E8t~alWct41b-+n7tZpA!`ch7TO>M>le`KRB_IfJzB z(6ol|Wb~$1gVKGF&6vCTl@^6pHO_rP1qK}5r;2oR>>#pX&no`-T6OB;`at)n_j5#! zmMD`^1~JZl2`os=*J(82z>G=4-yHR5QvpennS?rtKmhM>N)zp^-H_3~cZzrG4X(ds zqUvofNx8FCJr6=@A~I|$nYt?3@oD0B^r&&~U<}(%!04`&BBt}X(^m$k#&?d&k(FKK zb2r_mOsqZHv2CoJmSPQ@c?L;6>C+$uTqDYaM*om}jt3 z)kW2i*5r-OA7YneW{qN$xRzruj7}t6i81AH($E`GysL5ymFRCVC*H%d>vp*!=IsP9 zj>ERe{n=B6qimQecsDn1(2x_MIgl?XIvPNBpK8G9c?}Kac*SwZetU8D_hk~8EGEm4 zK2tKpoej#DYv-f}AF52n;;qi>reI=3q*?4=9YwT<@+gt4in(oclYBTiJy_poJZqIm z_?79ORn#YzK=Yv^U5xUr((n4!sJk@@>bK@;K_{GTxkKlM+jA5*|B^m};^yZE??#X( zx0+u{uc1F0N-Rn7(;X+x9Cdd*BfjOci;Uar1!eFWrrY`q*Ix ztf%r;u@)8B9ro}rPVffxH8E}0g0Pv6deEt#P!8I_05Xz0RYg#NVP)Sn!@ zFPs981XX_nM^{k?61pQuk2!8(k92>6S6DosG0R;uUrp*{OLN@CWE}jaw$?GU5Y2ar22z-{r{nNVra?3~bjSeL zS|64J-2)iNEGhxX3>C+5RV4arX)HX4Own%G6vduhIX7~2s8u`&Vg|hVa%s+vAdZBW z*pCW=?L?bfd5{Ltz`m+k_PWj5+~G(=J%a)Kx(rd(^N%_iekj8?g4b?>?I6!)Hv%Zk zU$n>w->?oul3qv=xX$vx(04O<_h#D_OV(<%yz~bpcZ~ka`7`$ClJ(k}j!7H~D+P47 z8NHZaHBx++jDyYl0jQ%-GB$>WpCToc3ge!n8xbQs`Fpx?uqS$ zJ{GFlp9pfVr?Gj}g)&NCdTb(_0KYto&XImQN?zpPvU6J}Fm(MXvWfO+rDa^Y@Zm5z zjYs<6tC*NJUcajb!>f_GA1%Y@k9j%hwmb)lPM(_f;dTT|6(-{PjasU8^@>8y_&%^m{J61C z^@USAL)$FK{#|yn?_9datKZ`QP_hXj@ovLOzRh9$vOr<>8IT!wPtATAbzYel3!%${)MJ@q z3Aka8J)zIOVf8EJj+S?lzaRj1;Va<^T)tz@2BK3;_D2p~VIhdOw;#!vkLATIn#{&}i#V*dM+vH6l8?!(Xh#W_Q|6G(``mr*=-nsApp zB-jHtZ1R;D5)Da+*5BNgK5kEedAIvW?-DAf4-coXj2IE<8;-XWiWi($ZHfX)M2m7!f z=~)pKmgFKb%BI{?fm&vSY)BHVa?7jNM?odq6tSOlDHOn37057@2+SaFom(OyW=6o20{Q zBnx$)EnvjlDO|!HEI8?d8ctOa$t@Biw+fqpn&XRCL@?j@1&nFvKM3X|orv+)4TpJW zaleJQG94+(7Z6>E9}oQKKa9ySeO%D}MdM8NZ%cM(mtKD2ydVRI05c|QAEH+5@*Giv z-u?QV{eD>N(sAu2ht_GwifK3|N(k)`XH1lppa2BtJv(*GG8|x=^&g>3YtUNtkn48GP#6IJMY|v!VEvG>9$~F~Q$J@VEQnj^i&!SGuoC`pupkkYpnF?~GQkIUVgM%Qiju}dzsou`_g!9$%!8u}M^&ioV znQ!U6`6cbhYX-1y?uO!c1Bqff^z)}wNn*xPUP!j}*L zITJvgfN##gbk%ZVM~C$Nx&XpBAu>P5AmXgk;~t8i&0|ycOA29`_uscFpW4wOVPs~2 z0IFdL6b=@t1#rB2xx?ZzKUkDyU~YX?rIWE#vA2p(@zgQH%yq5JG*M?AMHavT8bSFk z0Pw(m{1Qc2#r(YO&xXIi6EH^yVHG$*c8S|_f=7C#i0`8W^?`6mDwV+fPXZwuH}1Ylw482Mmsqr_~nU&Tz|7Wm19j!G~S!ch)s5~ z+ZHB;xN;z_4)#ef;BH*k1rD&k6YOk9IYfl57iD>KsdDz99xJ-*)2J*MFqhyC8FSuD zUb2N$uv$g_TSP&axZ0{*15u)vxuCu zxn{F7q#1Ld`PaF8ahGH2n6!m`F8C;e+`xYFdWc@&VN|c2133?gLcjZMZ*| zX0HFdZHo4Ap0vbyFE8y4ty|pMzf~1(Ge2}>d$Z2izw@{#= z+bI8`L)%2ubqvvNB2tG1I39Rz{pF+;I@Su=p-{SkMl~9$y2n@9ABR4S9jS+_vhS!Rz|epqX@`;RXS!$4 z1v5R+U`L`8;M5BJ?Z>)f>Wb_gW_gR%iP1Bnc|*3r=l(Zg=EixqpA(Bj%Qe3h4c9ZW zHsZj*acG2sWJj6Pi7vh0h%?Eg#QtL8)Y+nKQ{~17O0R6b?uVs`T0>u{_{+q-`u9K) zP&Psa&G_U;R)A`<1qB2jN1n3L@)=Zk%V~nLygR>n^9s|vKfhqYoD}C{uNRzLCNEl) z#_`^w4xba?WX}Cn)H-uTHE=OeVea6(H^Bq(`0C!k;{|_qC0(S`^;R5=gAui%Turkj z*#4*^*8gs<0*KwNPjWnG8SRJA=UVDhQWzmK-_+t|51{>#`!6$weU`Qd;#HSk(qg6#O&)iXz84DMk1OAYhhp?u)z zw6T{bRh;eHjOp{WHJ0lwQ7Q{Eoxde#-slsf9=C@$s4XZ|=BNKUf;4@1o+ThbDwcG5 zdZCLWgb&DA@BCIbG2(z=4^Stk8pm~2kpH_i}vK~sU7?F>JVQl?w@M&d= zy!jxe*C9Mo=hYX!`?z~hOA*nUzLZAnExjNc)t07FB7BRbv|7b#Cy9fIQ7;D$Ms3Z# zMth1rHQn%UZ(h+T2`%b>at4mW>l1U%k1=sDIZp+Wj2rJz#qu?W{Ub)^H*sU8g+cb} zu&tk5)b_>7AboZS$zqmDUNbZDG|#GHFP_;I&xKjDgBeljTlg_&Pqo>AzGci_QfF?U zPX+M&Iq7YnE_8xotKWBDZ~!sK4Rc#tRpZ6LTL9~H`~614KoC=E*f1!kK-cNceV zE%XP8&#X$owcOk5rKSO+cnRrB?iSB5y2%q_%fWyKngWaH*%TYXWFp<13D#$Rp*+!L zJ?7^a=#)p1pfNr}=AgDBx5ooJUGy0bEo@XM`d$z{?mGPb>nEesjlp%crQRqYT65)O zWwEk1k4YaZ&W{IaFFW)re^-7+xzJA*8*T)W7Zwc&ooFsk4mL1h2%k+GHW*>C3`Ov_ zt_-uNjb&sl8+Hn169%fNTAs0*otVNDgB@{FJ(fm3N~z4aN3%jM{0)Ei9E%LY#|VtT061cY5Z5^&!pB1 zqf&yLrB*4dSSc*IFFnxyS+HEyu{FzF^hRrqtm%ya%P7+%X0Zgt%9Dy!#w?@dBqo(HD|)tq^J^zKn030rlxM z_9)uEUOYO0aS)Uo60j2NJ0J9Q}Yyg}d#2T4#_m3Ur z2CYm0+0bdN?qqPvAhxSEsCd4_PA<7H3PJpb+lu7m$d&=n6LQ22xx5U6MjnD=2E&ee zvyrKKJU5V*L^#;cp^avlr(`zCYH3U5!eKIs<$oRA}!S#cBa0*%+ThAr5f3-q@&A~}5FH9`Ou#Rh*{ z$6{^-=1pi3ecWGGO_laAg7J2Hi&C~^BF(Rvv?2`L!egYZ-LziAz1F5!Y*!`hl)W0X zf#xE!B16|pH=AOSm-Z+r*v&$CihqQ?#^sJ=)3|D)&xOCfydkqgAv*+v5^ZF84*7s;0%PZvtM zdoQSpJ#ut}xXq;9eMu))_Oxun@5PjLAa(2z3qvDzZSA07QBwNJ?J%%ut9|YEBow%* z^y^!(!v~cSP?q`2TC-8cD9O<(2nelxjrT-=kEI8kUeFzh=0Q_;@E$yZzpdsT|knULPC2{WVuWbAGUsg$Ab#ckE> zgv}P%iMc?Lv1#mSQl;`ZDk(R<_}Yt6&vVBl@>&JqMr~B;Ar6{TjyA?uQ7Dc7Oc8uT z0HboWmuXY_l5`Bc>^=ONbumbmxu`%UE8{(IN+`HA@G-%|zH}%(9QemGQoz<*Sx7i1c>z6zPpYFvW>N(X$y zZm?@cbpzsa=rfi87r&$Kw@CQkSR&j&E_n#DFdRDJ3*xCey2Q}U!A{XoHxC1?YZ4Z? znGUh7`1}aE*y-GS-oblzAY)Rml*}umTMeXRvVxVH7RES$v zp|{!io(n5ppTnWHp(|}^w1X@SfhFJ)OCS_}yD#iDESD?`m@yJp2%k7vjED@`mr*8C z)xP88J3A|cykO7%jq%c2_0+JC@>Jb%D0JW=qfb&EJ$q=imFbjh|K`3E+zR2@1Az?f zNf5n}MW^ZZE!&eMT;i`+&`lus1{{a^41n#4s?m7+J1Jc|&mshrO|by6YOb^XX&vfU z0w*XFgL~#O-zgvUyv*dbh=YXKSj02|Kp>ir7Q-nTdr4) zFZlYGh#_%%m?QBjxOS=21cywKy^X_*w@eIi0*1oaLaXA;dR(ctn|&fJFO%nNi}YIRL`DY=DrOyE_H1KK;q>KS7Iu;z%h`~q#`p!r+RqB<|*pyA$*^j-RD$t0vG%WGbmukusRs^Q-P&?Y76DJWM_{~a4~N4vTkS^INr)Qy|vJp2LE$K%b3vY%etAt zG?p}I zkDh5zX!4sC2ey0rkZL3iqpavqEo1b9)BAZU*}r5*tz2cI1D1{dbka;UtyC-``aN5H zb(`KlbAQzb?Oju$`grut8$qg7y2ly1W}>=t(E)}*kzB%MKiHW z(}w;`Os&g9R2u-V#>kcmv)uy@|xN958#;21Rk!@S>6T_-JpbTO}TZqNg&urV} zvcI@SphYTv>W6|Bw|)uEyiZZW4d+duVPPJ}bw@g{(?*Tgu?{9yERvh0>Kv~J1T&s% zX|iFPZss#V>gT3RUpf?P{<76v>uW08l`g{30Qc3n5Z`x4{iPN4%eLv4ulub=`*fRN zr?_lU$oq!yLm``RT_j&^CZ8>7;b=o{3|B_4E&R*jD`+r`USKD}@Mr|SrVi}u9a5^$ z>(HG&o3aj2!(kF=WD;noWv+-04BF_qUQ;J7%P7{4vm23B94jKiQZKh-k8*X8dz%dX zn^aM}%WC8n$rdR?fkan9au%HZOhM$989hf3tX~=VTP*WW*v+T@5*AJc#d}BsEzJ(VW2pQ zZ$J#X_q=kyRpv{p7|Z-3HEb}y+Hl&_RMby9`q#k97^W3jSlY&z*v1(A!u2r1-~#Rr zXM>c%3EZd<0(x@J^yG;?V-0p9?We}ai9YkM*w=Xkm_x&h)foA4?98iX<|0z?9!ZR3 zZW}Om2SoU)B5=3~e3##!5oLK?N>O^-q zUdahs;jNQm21s8)HwbcwAHEQqCwTh??kHBsa!3=NVLkD4LTV0RZo0S-3fjFJ)nAEv zax2wd3yj~$gL2B7ZjD~Z2;L+Oieg~*K_r}tde@=X;rpL5px0&CFfFKs07Wy-c_+d% z>E;;x0PaO5fAK*3c}UC~y1t>och$gWJY|>z+HTGAbL!>K zy}aVv`Z-!su68*M0~qg9pn2NGr_f-5#mAbrA~<^Q(@S}uV*Xb~1?)9iue5~)s)Lkn z3GY)&VpSiKo(JhW$!)^6H>_7i8^LH#v|+`spHeyc7m(CHyu|B|h-IZQc~ag2lxK>q zLf#@gQ)sn1-r~(?73e)oq}a7-E$VfVi?bRAtJCAOKWlbL)m3lv;>#3V{>U}4Nvej= zxyOSTD>=8(k$*H}RfHlp&Xao3d|6F%W1{^mRLNp7_FOAIxhI|>(|I2u>!VYlw|Gmh zTuyUztM&f#Sqh12fA$?!YpShLZ>3!nGff@VMm$6mmB&#mS|k#*8Y~!#GL7PiS1e0$ zqm$FdG-MC-aI%*S1Bo$oH<#?;}NNpwW<L#5;n&^5RJNs8{SskyQc2|sXBu&)xX_!VD0)Doy#aq-ZEnW#M%O>%IyZB2Ypi^k z;PhgH>7JlVwe6}*fw-87*9KI_nB(k6n$c^2Y;=U8y>a88BbR*~Ty^a5$vOwPOwQY*qYr%*tMA_fM$zJpSKC7$Ia z6SFTy2&pMj)Ck0)d4x%$7_;X>Jk@q4>YOxnCVttr92UX)V+{&~7jrSa$JN&$eJ{r5 z#hUbzo>ZXlGk8L`6$1i5Mxh@SX<~miX`X;I^OO`I@?V>K|F{MEiXQs53X}ikn}mvh zZ+3L7P1cM1RyD8a0ZAsvDsv8QTc%p<_qWu%2Lp$GbEDv=GR~T%>RJ^5N)k2v2F!y1 zSyoYA1%|SKVz0@aRN_GJ&>%-I1o!>=3yNJ}+{gBpII`q{_^(oAQkHp)Px0@IcQN(! zKJRp=HQ|1~6H&W(jwP~~WN%An!38UR8aQn=GLTzG4u0+tx^uN@e)b!=ONgN#0gAyp zL5Kw}Q}^c}>Ke#*iIU3uENaW91$&8($*_wY%D~CWq6klucuevD1te2Pd$!nsWjx3y z5VVi$vhMVX$YwR<%{UlIdGoK=Muv#^U3WKsJn<45bI)v!4fDzIV?GaR5Sn6n33efWk?dj>L$TZgSC4WRMV=ZEnVnmT1*cm1q<RIE0_%$&-f?U_Ee>aXkFp!bZ}m!89%rt1BOvxjZm?*-5MT5(YpPjxYWZcI-L z3UPK|{*d8eRYH%2wFQr&sF2a1{f}gVOtAAJ7an+F0*ujM*-@&mEu+>2Ky3MpcyvYf z_xV@kLNn4)Gr!-H-ee}(xv0?Ycwg{IC~se7$r z_={2FBV2)5RP^0>lt_44Z3yioRDHNPA*WJ79E$VNVq2^xqVl0(O$!?BbvT(zL z+>GXw#4$XvG%kq;H|$_b+1ST#BB`0|V2m{fI!zDUBXbByS=u3Ni?ZfZ<-b(v7SQ2S zG-npjQEnc6P!U7xOL@sezZpjBZz5Vyp}(X_F2qp_<2#NaFL36~^B0;#;^O;F7fEA|N3!v0b?jxgen#l8w!*~B;D>W*dMOhj|U2( zp_f7K{i20cHL{KOeNgS+A(VS+!baX{5uwrZ6mP-^gjl>w^9bVe_rX70k!fII@|-BN zt0Tn-P_Is0h^kGJnB;!UNP5&i2Hl~4JN#v1miqpT`0H_NMpzH`kt!drht;ttNk_Qn z^npqq99K_;rg~S9!NKCzpgUWEidK=##=?$7muzY8(UUt5mG=1jMx)cOCcyI6q`P== zkJQ7L3(YaLfdj%^nZgJ&%{c!O-wf@u%4(Q9MCc^Y07IX zgPRu6=^Ci)?YMzE?uRAsK<_o#gT@b7Q%g8oAOiECKRfo?{Sw+C=Z+ASOWL(6E(7k| zP%Nk58+k6i9goqrIa?UG3mtq}TX4>&I<7*zu(2`A?=qT5pP5mS zw;r*6P#GtS1sfC^mU15deqPM$;=h4jK+3f9{7iGUrNz+$!w+w%^ge^_Iq5X3~h=- zTC_KGWE-LtTla~T8-pI<$SSM3;dG|of=$a3V#d5#Hi{jSHl2wo&ez9?MNJ1Ca?erU zHoImyW|cEfcY@g6bd%@L)gU%s_5b83X6@Uj$K0}4HE>$+Hv5zic~x_~`o0YmyOeCW zQ#n4g<%6eK&iT5kypQs|Z_EzpTN^uT@%#<(B%cu6d2sWz<^hfu0x}>HbS+E+k8<)* zsizfxgySWkyq zg>%B5&l_wzyeWB#bE4lLR$uCQAhwqSUfOujd}btXOuLkPd1TSwU}qI|@uL?e64}0@ zRG9|p-XE@NOOuKdjf;lYVSWBSDJ>@4_E(|XPf(?EEm;?c5H*6`_Kc4$>~ zm`j%x)&H7mx_Rx%370>GQI~9U6$T#&f7-3rEY0j$*s|mwXmvPe>ekQ(F?~v*=jRBA za$w0UOb3|1z0zs+{2G7!T`Sa+ir{1(NvLg3HJ8-v(=_)~qq6q3D6!t7QRYdZT_h#U zff>IT?u%@)P7(Wlm_u!2!2CEw6OvH^?dlW^Qt2@!iQNU}+H{~(FCoiKiHc^jFlGvJ zgyp;DMI|IS{ucav==Fr{Q6E!K6L|HeY}@M1Y;>|53tAN@_1T`PXW7bKvU|sFjNRUk z2u0?5R##S5zVtq|))X-e$?udsQPhiqoBV57fpR=FU%+ zTdpkU^ToRvW@*~p2I27j4(uI=Q$IWWZg~vkUEJ>F{7`cJ5U4wfQ@>~%SSCxUxSN2K z@5%&X#i#Bad;HjR<$Z-l_s`Q0G&Kx1`ld~f(|QT7lTf3HqvZcq`|BaTVC+)y9lVw? zR$z7x>)@-f(Awgq{5A*=o`|mpp!N1S6I9Lp2w|`?Gf^x^`^x&t!p+AAh=Aj8J>(o0 zA@Z5+MXJTBO8sa$q9q&YOvZkPrl)l8OYbTmr#ld;A;4a6l02^CoL8(f3$hZ^-oE*S zwmNC*-pz9E?xo&}=^n!NGFI=JVIK!=e67aiJ=VOhvO@F{j|o$w-H!0+QTIWB?Ly@^ z2k?jMi27^F`fl;-ZHf1Hz|=p6==*nL$>g6ajnghY3y6J#WajZgAD_g;g*>ut!6Z>e7>7xOu!jJL4ZGdTgOk7$O;u{sTGj40r0*H=;CH5@lX zHq9<_k~T=q{H7HsuRSOAzv_FDlD1Aig0U@20PW*|>Fqzfa#Xg&qpNvoS5lh?y z6>v}+P~wi#$8di=_;>bCSo~Hmooa-kur+zO!Q~dlV!-ggP2~|701Y z=;)jz#yG*o0<5w-TpEc_&xgkr2o93G8j@rCsq!c?FnNx(PD^$S z0h!zmoJES0VD}D+2HW;3!;$D$w)n*CVm55VFXWrkc>}*fK!WF(=XV2V;Z-AtF%0MR zBR^6;WM~xNR3}FKVOyp(Foj>ac}2h8zk&V(*v&5XgB5>Nfyzbyn~#9${{pZp8rs+z z|9@zG!3)AuNqOmo{kfYpA+3`*fx%ByG%=nq9DxKMQ^40u3?GVISYHerU7Uy!sE%mG zL;bf^t^jo@q9B6&g`V!_qEnS6+IjhT`_dm% zE=+q1H{nOmYGEhRsdU1wZiA z83=+Z>X{u{n=;)Ko9ZW;%6nw;aZF23rv}d{An#_zrkQxY*y3@oxz2J`mejTAbuNoY8?SM*h+INwJRI=qy?}u5ICmx;2|x#NJ!x4CtaM4q%UFb{Iztk z#W{wiQcVHB_BiFQnO4M2EWZc@RlVL_TTp+-15GY^g#6bXdJft#{)ZTP&g`&zG2zN0 z88&Ersg!q03+tzNU*k@0V7ez+&q;HFIFbsG%h`GVBn!g~RrFuc>Z# z-Y(e8y_zTtUo4Y8E0CjJt$2E&KBp*t4T-sBG_p)?bv=Ig@`i{{glc<%Lw5G97RGc3HLUo*$jY{$u84_M z2oGRs {hEV=(wBpwb^r%noqUNZ3!3D8EEJ@tY1w?H9G^VnXIa=FhK0xR808i_8{ zMWTxc5CI$cuUZ2DKkaF zV}o+`ft{L|yG;~?d9I)|kmUFbcITw6Nc%DbQ)z#|_`jOZ@Ewlb9VP*lC z+~-KbwxawYiVWH#ah$zDgp%n*{&AUT^V=76(AoAK+9m<1HeAf3-CeMoGJLlsyA3-* za;wvA{Nn(rhJfg+TwShBWVB}5A^m4t_7x4M=2gwA2hz}aFg$~Vg;>eU5??PkE}b<* z%kbG;y}t4E){qCWfIBjn_J8LA>3ta~67cY$_2 zPXFJ3k<`2fn)I6^M`X*5Ost~#IgNzf-Y3$3Lq6YvsJKh6+ixePfWXT!!!xRAu{ND)7#6 zjA-%SjALd;mCLX%jHagv6O`fQ?8k5*TS`sil;b6~!|ULk1>s84Ri%Y(W^j!L2!mSn zIrC^#w~Ja!t%ShCios;PD$hyx++~v&JUJqm^-^26+~$%{@p_UtRXimm@@CfVy@c?@ zzomJ{BuWC)K^`B!)+9O_W#C?9MbvU2vD-^XR&@fcElb*NRGS-mL?A!Tj>@^0*f-8w zz(3%+3l^~HTl{Txfd{IfYn%=6!%8{6&F6$(W_{Op z$pWJ`alBY@@HQWv(fd;WA;<686-4jeH`7ukPp_++XVu5c=U)lYAWjQd)qq+M3!A$6 zJ8r5=J@u0Djg#e1@UfC27r=s+ye92OODI#9Kg8u@zFleyb=I2bh5MDIikQ{?K&X*T zH%RKr?@XWTE6z`91I%d>b8wS-CIa}yEp<%2kfR0yH-wE};MhdgvrZWlL{AJm+%NHF zkkTOUHye>^ce~=xjC#;dWHfY$E@R#Bwdi0Typbz)Gb#lKd+kAmtU(bX2xhMgN4p3h zfCK$@6zKjoK{)K;HgP{a6ha-$ZI&WiP97^9aGQLv9Kbs>C zs=sPmY6S@Lzad|d)iG~Dj1gp+YXeD zCpi4PL5>Nr7X^E;Tb%s;$m&g}HZK58Osux_Xn%TxWD30jr|rzRxHfPA>aNZojQ--3 z)aZy;G_<)zm^viaG1D7i z#oTPbKEL&;Cyy1PBRZY`uy63!P&uL`Vvmx>>VG{e zs;WvobhWKTbtIi;1xEcu9c#VYyUdVYMAVd(prB{Kc}dU>kbT?kNt3(1;cl*3ewKDP z9mZa8$e+sIJ_CbEh5V!j`zu%I`IzK0eFdQ?YNuVRy^pN~?M^FdE%n`XZRX;sviObP zOARtc_ciynhEGTWK;HuC^9t^bcGkb4G&;JBn^k$#^SC~Y?3|D?l*U(gboGlImB9%L zOn8;z>NYI80+Y=KO=ZH}1wpFDWb6oowC|AOQLBC-?QRJ{4l-VCnKoFZ*NjDF=r_Tv z+eRQ?pU11$$)1C60WO&~gLXgN2dluHZ&;k)417+|&*~?ae{2Iwj{L|xdOOZrwe}F2 zKi{u$VgvJzf!>fEB4Eg|sq(aWNlM9y3Q0;bwBIR8c2!y6JpDEEN>vKD%Y?d7yrb8+ zj5l^9J!oL*0R)E{N9^3@JLH}}OA}zeh|~(B`3srBf9Yz=Y7I&>D6BjI)9kmafxQ@~ z%e}|9VEGj$KDBk$ZCyRFp=DS&Vghe}Gs`3yU$_AWB!O?B?a_4#9bH&+gV@2}$kd=Y zeX4LD$oosRKnhqa?cY{A=P%%hLJ1_>l%LX3Q{#d&O|=Le8fsj@74rw%{Vtg=&M5|h z-g$^1-~PnvjES;^E6X!8=;>x)`}owS(0pms;pOEMSeD50I(sWS)WL@wI=Fb~F9dUQ zw+jkXgVLC&>yzO6O2CfBtXBG_D3*yfyCvY>!8t?^nhPtP{mWWd6SaiIn?pMVSJQ5I zq8HR;-m4@(&6p7;+H2E!ATMB*#k?;~K*zhRkb=)>sdYA}s;?P-+hw)Ue1g*2l2yE; zJFi>4K0AQH=@d}046|zW`g*n*t@(a2$SSGHkoF$8uXfxOFLgo+vqIUAiC#Q)eg|;> zgw=r&&RjL0PlkpoegGVdFjKiq~U4>Z$zDc_E#2aW&Ot+Mk5AkB$;faF8cCPUd_TegDfFs#j+XpF+*6s`dfpoPH(kC}S@LP*Lz2;j@q zx69O78!H=7XLWqC(HsFBL*sNxVr}MTjYU#3(X!!o;bi%HgYc7(Lx{zUMu^w~HaZ*n z#+2Fa+7ciQD98bg%jG8pux}mYN_!YJO+KTD#HgeLF-#~G`c&XyxEOMjI4W(7knzG! zg=NdtMg9CxcH7V0zVKN^>$D+z>o*?jP}Ci!y1aLLH}KLg!RjRREzD< z3KSc&IVn6`pA_fkv@%_rt7X89gb%>k1)@vl+sr!ZPAP2f4PvJ`XPE{3HOK_=@pIXn zA&xfElHR$TZi51~_za;FZckv#{6@hrAoP&fNH(m>%)LZS7&Iy&=O4Y?5S2D;;9c{+ zMbdQ;Mt(yZAuVSX_SYM|hSP@Y$O4uDanl7cWHq)B#S8nU8%a%)H?L!f7xjOFbEHHaV z&pg6DR4F7AIOud16mw30)0NB^u>;WC}SHwIgD7voE!jhtXe=Q5bI& zIA=>?eLJBB%HEu@6==3&rHeRK}1hKln#MprmS2EkF10FNDBw zbqe_&(njny+CH(kM*eyUY1vj&!bgNBjZ-EM-@O3obv4# zeV~VX@P{r&eip0N${6}$<59w&mADy(@4Oa4N;t<4tF4?Tyo3ur~$ z^;KgNS>fm6+r7g5_0Y1ds4TNn`bSj7_GKjt2Q9sf1-Urb>#s6_F5`$AZT*Ivc3s@_ zp%M1$$_k%~#whO;S~)=kBlGB`%#lciSjAp#btqcULX5RwqDz3`2E7D~ta}Nlz0k`&{^-}c5&r$sL3o=BtSV_ipHT!rM3#`>yM8=3TM$nK z&_gK!E^>@!hxt&l00#XYQoKnP_21yJ1n}zLvT=uTy^x&Df`mdBsMBmi^MNJVlvCiI z>`pL0Wf-7fXSZh4|X`qJq;f5T^cln-E?=-!W^wadb z!3(u4Hkr{)0^h0%dQR1aab=teCkf9>luJ@pXzgj!+MC;J>@4x$6JGgDZ?A@D%#Owofaf}aIVOb9(%*CPr zyX@jXfM%xmthu;R9O!23$jccTr!*m8x%QV-ff!<_ZC8Tsq_JQoS3CA`iSZI8*(TP2 zU1~I`SX{y43E1?MH8r?vIuhGN8r(6aCu-adR{9)EEh6qL20NA2iP)~!`cfXxSEXK6 z(Q^xX!v?3x;>K(u6@RVD7=rh4??GoV_f<;^uCXfX`Ebd}L=af^*nNryV7NZMsyiK2 zJEq9r925`{WLbBkIcVK^~OsfL6phK}tn_%pR!xkk0XQndyY zyD`@y^@;V3wOv{UG-52lG?VVnA+fm@bQkQE)|tZ635XUjwS&Zre!^E&Fs z_YBu}DU3Yxg{8{YX9_<#N37%mvQzfXMz(GpOSvl_tx>Fq3aF${mJjS$d&P-AB9Q%e~;eU>SY7>T3VU(U?JpdjHQA@n;izdpZ%T#x4 z`4nDgt)w@qI+#!CUR%p==Lo#mb$CXuANG5+uOmoVS^IcM4s!Ct{Kqxs>oZ!U&8_n+ zne1Q5Y7}7A=t4+&QIJyvCn**N6O_ajcyuLt?1CqDJYgJcWm4l&lZplUvSO`g7Z9V) z0>WU_>sEh=R&AhgRS<(7^F#a>c@+||VETu>D+y8~Pr*jc!?^_`p)}uDH!c}45V7Yw z6?273*03C4I?uz0I?WH8J;XU+P8_raa{~o%{%B4|X4P_Fz;lj~lIG zVYIDAC0{m#f@|1G)5`({5neinxK-dX2?B?Szkvx!#CIL=TVgfa%CP~GvxZ0WmD8m^IcVr1*;{{vn?p}$t`jD5FP ztf)|oPGFD|Pn zFCn8}K48f0%vQr^$`zc8>lzyr$Js&RRJ_i^f0&2AlOx}Ia{7u0wNY_A=5&v-#CqIn zvimZM=(~pgE#ly?KtpZ#>WD;a*G}%{?)#~GvTGrqmd`rnGl^{c#&>VX=j8MDJ-fVx zV;RtL?%ZNGj+HMOVypZ;0f~LQYQKUyeA$qH;Qb0G=?vj(5|(qoW7OXr)$O9eqmjJi zP!zq?Gs8a`#95r!rbpb>!BONUEsr$FnoXp$Wvto!Ci+%%UulMX+mP?bzmPPn4+JBj zX_KjRncX_yfxM4&XEXIZ1Bc;Roch3!AF{!k&O)q#xPA-o0v7w~>UhO{Y{=K-pULjT z!aN<}x(5maO*Uly|C%YSj6y1`<2d6hG`lEcFO!(nwPbEtQYpq=rv1 zSL6ugAV(&~*gEft;sSZPQ_D$+(OX)6*eRur(DFzeYx(T4 z?CFjjLw%&79iowT*gGa(HEyQ|VN#c@xBn$x(Is|khZ)*vZH%pO*yX}^)pf;FQQWy2 zE%d{+u}>{uWoU&OM`E-zS*Ip!D`ip0>4o_*({uHdit1<78P z{sxl8MpKOIiLa~l!is=hHA6j=s**NAC3N+CY}hp04lIqrT}-kb zdZ~x~iIcSD@sd5E&Ea2A4U9!G?l?9I-LLYi~X@YdRk+xa)$&-pVXEZTEM;-)8ZSYk?oykr$#*L zsIG~Gc;`k;Z!Ya5t=_=<@mLqZy3x>@)OFDHkwM@tt=Z6m8V9OHgpyHf2`vNOGVkmJac zC)rouLVvVt4DDL>sVDIl6-paIL}1BEpoDQ`sHcc1%Zz=DY^FFH!*|MM2f}{vslMQJ zcAwT-V#)|E4K!8QrVI7gWQWu68wI3rhqepPRu$Zqyt6zAsgZSOJ6F8+og1Z%Rn#dj z9hS??vo;#qCWc@MHNjVn6a$|gZ^f2qNKUGv6?Ln@W7OkhEd(@q4F~u7j{9%+mY-l^VN@i>o>ZM41#wsnQT1i7oJ=b{5 z&>rU+snHrG>Kj*A)|wDJiaw zzul!O#H*YuJa1?(bgEEQU0GT_C4QRKe9|C1hL;TOT9l>5&5=ozvtm5z{eVN634SVCr*40v*;wEMp z3l$A@EA0vMIKMHpx7l?O?1>A!+ZWiP_8o~!c$}yEy`lX>`+>tG)Sg0P0}-D+V|Mt@ zEhZtXd}-oQuJ{uN&)@A9FKRy<+Frig$!kmO2sc)uo3{>5x35lMD1~>k($ozIN;<0B zuNYkMeiJcM*A3mFJJlXzxJ`TE7I#^l{6%e+rM&Jkbhn;tvCjBg4JIc335U)`uUk7w zPccLvJyo4~?%ol8H#D(7Y?q#H=o#v`0z2-Nk*y9e%Q7f%%QD?XDN#fz9LkTq4c%m8 zASDo-61~9Fg=6);hTc!_Pi!(2>#-~L5kk85t%=BeVIiJu#iHW@fGU_>cb3uILC-(*Vymkxd_iD z$Ix^2JQ`0^3yo(uFVQaD{sX8VY{;kNE>0a{h|RQ6~rCfd)&MGsmE^LEe7-S-W+%o!yHnU zg;h;1nXDhJPju=E>>Ea#h5OJlFj$qY0Q15|Mi zD*_~viis+^dfmEmkyCj#Qq_6maV}!Ta}0g1J}>tBgI1eey>%zPMILsrsD{tj`XXob zi0$k14SfOgaL*E7ko5*yqt;bKZphUa8hQ<1FW-;FLFCFEJ7$HM+2rQNdcKZoh#My8 ziwu1+t15l*#y#`y2L{>C4uokQx1|Kz4-e~@qO zvH5w(*KBJM))`S|tYH(_69`W76Q=w`nzq?q*xe9t?ma!Gy|7N?CM_wl$&eXSpo&%QY@yVRsq-xroLS2~M|Ws`1?&ZgIYTt)XAX;fWcwjegrl zX5VkjAs_lWL%-f0TqL?T5{XPqk)~#nL=3Xh!{3vn4x;Q3;qvaTlzsG^7@1fW2zL9E z!Th)-Y+x*qJ-{)gZb_gR2RzL1Y2`dbzfCD)Mr z^K|ZoL}G1#H`MF^#PEgv?m!F?WJVuiZW%LTtMH|1``#6#E8MXBx!2I!?DKr#Z}Tw{ zw;1~UdONM;I{vC#>{kH)6S`N=;D{~skF;=|zd$(4{+&qxBXF_^`So|KVyijzhX@hT zxmjn7Xo7Bi2drj!LWM0ko2);oKkn2YBT|Tm1>gK~B)@%08%xB6TGrYhh{=KXU81y7t zDQ?6b>9J1uR7LLcW>Vva@aQ~#WtK%$Rw|$|KnWuI1EmUts<$Ko>#7{!Y)2_{YKRte zy>%l;nzD9d0cKsMX$^rSyu)QU+>T_DHE}WUowdsD-(^GkMzXzgYhBKf6uyCyh}My2 z;O`uso}7Q^?zl>wj*LV;VWRe84m{NDNO$njMTa-Bz4e}cZG+FLIC>e5-h3n_HGBoX z1qv4~bM!GBeL3JySKkifPnry6_zp1i6U4>rdX&r=7IG^G7>*&10}*=Lq0=$PBf<)F zA{S$I_w;j_`iZ+&vIhYVj-iHQnED1rEFIhH(mv8b@EBn@avZtVUf|?F9ToA{MlW?r z?B>%>=Wu#*h|+~$IPwk0!Mv>-<}til+?0Qa;W(5xU7bGbR%55*Foa{fKFXL=4Uw6~ z4c+Y+xU4XFSw^)b!iM!<+iW)nA0wTzt$1Nq%LgYS?$vu8i5Vx&wZ1#sIr&Kca z;RwU>CssFB`&lOFO_uB^OJrN&fBC!*pWyRF92GRg`u%~KCSV4aG`7^$mWFkN*mth5 z=|3ubt8e5457u`&kP?;|seC3hwh=dHL^PC|B_u-G_;LBeWvDUMW#a1b1yOZ%vCU*G z+Rtk6*xNWU^<;?S#WEX-TQoCi#a?on%Acu=yY)0uEbao*G%gpD!wYjJ3xZkQKlA@< z*V>m`%^6W@f0@tTV` z?ay|r*NkFyt(M&jZ=l#J7$b!%@q@X}zmvmsd|M zsV*&^U&Wyf#q%c@6<1eO&Spunh17SFpIht9cZsePv?Xz^+@DX#1-C~j> zWH?$JWRf~+>>jr3g>sX?{n&hCuV%RWtkBxUaPD@;M8|8MK>NtaOdnUq-zoP2a zbB#v!s0M;0LaRZDQJoP3}sEl?lTAZJ6ro?7FpjCNejlX%YZsx8eBy5o@uKI@$K~9 zPp;iiN-&P^^2J_F32YSai)pgD;%^J@G?qdC!&`eynK7RNj&9j|V{&8d&)EEknHp4n zHT%In44W1G-ec@%9hZ>g(`I(FF z!8OM%hT~SpZG=D)kmZdH@guatQuN_gz{(8ACd1Lng*l#$OETEvOS|zc#~p^_PRCsc z{Q~y4?jj{7H#UbqbKJ#mQ2j^dKDYQ7bzQwL_F|I5y3r6}xFHTemT#UHTPK*gtt|>Z zEXWVc+YV;VPAY3D?@;NZh>>Qhxo^z4dxcGGim%(FqyDKXEf z^qdy+?4jrMnCA?7&g|5FR;T*jPW7`p)$bKopGbzD`PNMn`p~ZrH0TTc=(#^V&89Lu zue6+PFd(PzRv4U3=s6ey&><7lGeX#hvUP|6u(RfA!wQBL(%-ExXM z5>$FPjIg_zL(hVKvvYDgAZIP;VsmbemC`oL&5_=+fp1KhOv9c+pqxs*m(ui)Q9Wi` zEx;lCRa2E3MJZBJ;V>9&_2cl<7-&4wpVJOwvS93)uB+F|+0@gxySR$1q(2OpN%XIn zV8U}dg*vBSF%v+eU%Vb5iGObb@bK?pG+BOsZO)@Gp-?lmb~w6FH}%|p`42#Gp~G~T z`bO~`=a-m{4k+b6Wv12v6$?6GdK*=nRp>OG9dLYMl9^QKGLv?J$4s*7KMM0G$Jq`i z7P?J$VX`bRO!sbZ%2sfg?wtiGtx#pUy~e1*R5O(uS?D!XziDQgnYs}UGLudBCde|~ z(wp)y0DwXxK&1K)fxl6hBsxy-pyu`>Dom3^k$GRA}Vyg1-4V+o4&&T58g0hm&*rA<7O|*=8CYaC%`%{%$aK zz*)2PZE$vZzG-ZSa|9e`rr3Z=RaxhAmQ~wKMUAVs;E@TJm~d!(>LtBHx@vc zNezr5Q1H;h5TapUUg$AB?Qmsbx|vShr|*K#%yfIkJeu^4@H!Xx9sjw8|Ex7LkbiIB zxvLgvq;V~z#I!(fZZ6C+vkJYkAlu9e&pK;oL9bRQH?zFiqY8VQz3uWQ{nwl4>@~A^ z&RNpiOU>CUz1cixuQ%H?)tspW&zUoNSFOoLZ??DBhQ0Ukka^DP^+4|acl_rX{zD_D z{LJvs+rrBhX8|o9s3cBT1=Wr(!*vjv+V$Plhvb6|BMw;cUDbR^yGZ1~aoY1kru5BG~dLc90`wu-Ny zL;L{S#9nwnI$*o(1v}&bct{S1hvi6Umt)~kIRze*HL#1>9$raolo%S^VzE6+)e;<0 zrLHG-CsgWIxQ!U{94fOBHW9P-K@POilTJ7oL|XQtRPqYAAMSuVi2+^*o8d0{n?w+~ z(@GIuX!MkF5rj5bDZfw|l7v1D>TZv{5RB z@HrXoqkdBftB1oDN~ICL=F%A2!60lML9HJODTJrq(81*hL-)Zp>NgGFC7R&&Jopt+ z5x194_$gNHWe}FE_A&_%>h&S2kx4kY z8Xl(6XAx#Dhn=-+$vua@4iKwCt=qv)E7V(S5^*EMa1lHrB zIgZhu+VwbM3+!&|>v67!Bdii|2$!JW;as9_Jq*fmj`sN1L+_lV(H`G=@Z@+L+y^+f zz_Z*oe8e?Zu7|g+PT^IqNi|;B0xzfnPjZ1J>)|0TKuxrBf#&tFc?-NmojcaUEq3SY zxJ1i(xROgOTn`s==QN13xpQjrlr8Ybw!TU0VHsDT7Xf>;KCVDb&*lm=h8bJnPpa>! zcFRX|!3Lft6{SLege}S*yUHBG0z%=-f zc-JRr!X6w9pW+Dk3=f6RaV&g+Merq-z}I*Te1nznEzW_z;X?QhPlCT=1N?v&!9Vdb z_=(oWzwrk68E=EVxETT45%B?1S|aKYKFA-;Vzz+W6uq)K^d7u#(I)Ps_0P2TV9su` zCfb-n*QvxbIYAa^tuQ~&tBqo1hDAM;%L4j4(W`k0ZIl|5=XH!?)kVD>X6mdSe6SY! z=jChyPoC`iFwC1hP4*?hLM5?kjl?w$^g8-(*t>I$hF*;l8~Rg^d2N0Bujh{Y_OGQn zg_G5QGomBl>j_53=B#PQ3JE$`hoox56isCkZDO-_l?p zNy0tE%XH$yQ{hv}bCBYkN7C&&;=h+u?&nmO|8J_D2VQH8E6WP!64&hhGAr$Xk*`CjKJR<6|BlSpe# zB3=BewJ<23v6(OXv7%5e`w=#&C}C40-ZhbQAP1LQ2Zys>`^{PyX(p-PVf_4ee)zjp zAWNlHuGKP)ZjBSY&VC#Ao~m$4i4(mV4LiTBpI1{9LBB*2xrIy*YQ%l>ndp*O0ZcJz z@YI5tRHf*uACrV0C5dwhWPo`@68S_D2NOw*B$7A;vS^|8A!T6@>F&dcxgLyT;0P>$ z33xb6#v@<`Ey7t?2sJn!mf(@F6eo}}aWp9iMX(Mh!d9|-7|c_YqzoAtoR_-^(sQL( zvsQP1Ufumo2PxsCH>Tv}ZiFOy)_Jw}_i7vVw&z7LGJ!?{IFB%L0x1_K5;o>THZFhx z=!2oe;)Y`_j6^?-#zim@m%uR?fJ$O}$5Gh@q{cBMr&^MDV%k4mCd48cr#?pZ~q>%rM zEf+1<)E>YjvYPV9!pdU%vmHGM`;=ldVWwqeZUUF7hQ%ie{Bsjbk*^l1ECs|*yX&S|dgW}Cy!Hiw&S z4l-KRDB0#90QX+U{Og5W25s{H0&s$9Uj(w&6et;XaCI2YnQ<>$qlGa7(?mOnps-WF z$!xjmVN6C|hLIPwqYfbA2RxOQ&uLJGXVS7b8|L9^l3i<{7SADObuP)S^GJ4`PnOOF za1Q-mK-$7(crjdsm%w#+DQqCk;aGw?n<4!2+p-j7R316hGv@pSCK zHMkAWBRpS-+i?RvO#eTDyYWeU0iVJ@;4XZXo?geN@dJDYzrbhlU-+T`{Jn7DOTxsL z#V|?_$5+L{_$P4~z9tIr&!P}t7nAS}F%91obMYNfi+>T#_`X<)ABa`>p|}D+RxIKt z(!psdhgk%rZc(nFd2ljG^*afgKGL7ru90Nt&9YMBFtR{ZigfQLW#MS}D#>Y;5(Q+N zs1(^eCCb*(#Y(bGREp$uk+O9hVikC-6tUuim9^z0DLqVCTS>&Y2P$jJMHv(JPd7rr5YWVGIPpuAHy+gAu0D!9MhKD4nxXvcklfw#y080 zUR*(qir(N7CZvi!WX1L+3$T?YJ zvRgQr;5MNhk8a1JXjjT(Or*`t8dfp8*)0B`pWVa^!VSw?S59tTzU;s$of|kpHIQQ! ziU8b&$B^=dDsO>8Kj)Q^A}3YzrB?Iu6l#UlmOc5~u^gdL&uz!*LI?ewO+wX?w+RlQ z^t^~ic^zc1!IWY;x8VFupy#&b?JOWQd1rx(=%Tj3?M?E!ZiY;+o2Z4;TJ0@LQ}4jV zg~_VcM!3{WZpT0tHe7u@oQ;KsRGwaMiq~}ukZACxjA|u;>)^_x3RCmwnW)c9r9U^r z2-DaNS>7ZTzeXNOU+GO^!D)C?m^iJ%BdgY=Ahnmoo?c@YI80+&ZXU@nY$^-uK-jVl zj?Zml{bL4?=j1Fr_39g-glKWuS{OiNv8)|WUk9Ui;HufV1ccS5?n&8(=W^W())G#0 zx8cR4`NzIb=J#H0E%e@km#-yQMH?m!Un3lPNi1G9yTA~)!SP;0Uk_s$;{1;^fKjBW z6sDLdiir&}Q;3Vvq^|AMiAN2h9k0*A8`#MYYUa6l9e7ilHKD#Xpfe-Y@;nCDidj=H z!eNvwf+R7K)>AQLiAm5$ln|4d3?s!9I9yDHvEmqFHpjw5Q3g}RG^h~eaDu3S`C>Zw zMJ22hRdAZ9hO@;?SSMz|9pX5+M;s4Z#cX&)%!S|6yVu2u@Q#=d?}-KQsqn#H#X|T& z)S!zboJaVvk64VkVhI+C03ItEaJp#3g`x@lB>h4nh^L4UUL;!ZDzO}I7Avq#oQe;N z({Z;r6Q2=lNP?b&AB%IXD=i+)6n~q_l6s+mvcO71xvIa2BytKdz?rK8cp@X>b~DqPhm0 z33C*qO@VbV23wVXuZg7d?d&BajpZP`gS~$wf$zk-?9H2(si#a@k6)53OUm7;1lJDS zJX_y}_mpeO$R&wG%HN^6w%4E?@3kyiU2Zm$hyvQT;x;pB3qH6NA2yRnQ+ZU`onFU= zy)TBV%X8za)6WyEEwf!L7s~>7PCE=HqV$-qoJVmN@tdbx!B7ulI`BnW!O6QJ(@dJ( zjxT57A69L}ms_!kwC&`r_zLTK)?O2!ThWXr zgDZC67qfGBZo{v5&5;3*e?87LSUn%l+I|OqON&r-lSGQRs{{YusiPHEF{+iyn3SvKEGT)7HV?e-YpChCP2(?uAG>;ptRvOTV=+l+pDl z|Jk;Qlm#*#IGL~DDKgixMRbt`RS&;;SnY{TR!MKVwJqk^WYdf4q*td-ruAdRk=o6O zYqVfZ`d)AP4SOF5x2k@nndD8^$oiW%htMRw=`4J#zD$oTc2YO|9Q10O%bh5x=_F-Q zlV=oY;WhcwO0O1COmPdlzQylI)wqTj@wKGbtcAg19SjrK!@=SP7$a_i3F2m$EH*$H zy_+R&g#{!+7Kx2eFE&9)v=TGEotW_*aHhBu&J%aR)nYT;Na>r!-Ef<@2ksO1Lc3^# z9byZ-CEDQ=u@$}(9qFcyiOI7vK?mEsAk6Hnp_@f4mZ zcHwHV8_yL_7VKCUa?n# zG^CJe(jf;)r#wt1$pXqbQl`kMGF4X6o7vJMYh}7zCNpG6X33MKSDr7k1XmV90G7XwJ( z^pbxP1C_w(1LJMa*8n&|i4+I5aF7^8N~e%iL~1J=UI@>S^2!@eD`2`9CWe#YwHhXg5oG41;wMnZ zTYX@VLHdBm6;4VWg4Zc8T#6V&VmFUcsbVc2B=V`{GtjO_xvPVLD7w1p)qt3+)|5f=sJY`(F9))aNVF3D9+ z;vLX5o0hI9%=0>}VU1@AnZH#W#oS>l-b-S#mAI1bb&q0(+AfY(ip4S*9+%4jRSmLQXI%iE;7H0x!YfU~tKikRlHS zuN(!YJPZcO(J(}gff2F*M#{rsk~{*Akz-+o91q74dQOxRpg|r5E9iNZEP{)u?C)eX z+#qMd-EvlpXTL21%eFA#LK}XF>}d4D^8)-q>IXk5xBrMF#F|{wL)5FJ8*Vc zyd9`QWaJzWlExtC5oOGUKJvsE8?ax*GV2qz0Yw#Qq5JPm%v8OJng2s?3#qpn>aCV~ ztD)W&{V%;82XpP-8tmSNh7DY=B72%#yEwjG%3e9T?*r|=QTW9oyYK7mzNhd^3#pgEcPcy|X6t3FkM*U0L+D>FL!ezOZnKBR zzhm3QNfDqt5i_`7~PKgY(MAX|r zY7mX~Ko{FyfPrBkrA7f1fzF zR!Ts&Xi{DQjlYv)?`G9n?s!Z!9ql4W*0WydY9-<@U3tncDps%(a;nnH_kMweZds5_ zRI5e`#cj&EOh&09Ksa>pW3iExI=(dE15)f9L{A69yW)1L zVZa!&sP9nL<OafK$x#z5EmiSBBu=k@@vQYHA{K%Uf;>Fq8!{Vjc zGPlaq^=;ziSXadyT81G1L_+X2(m!6OCI1F7;x}Qie2a+TZOE7J5dZlL93kH&VfY?Q zksm|3{Dg>M4-vzsaFYBCPL-d-8I(R>eoeyg8@NvX4epYESBRZw0Vg61?-s8RI#K1# zA(W672WyG3v-`XcTqT;stAyC$aE|zsLhKwu&xhh!0`fv?&k}}J$Ar|?rSQ`;- z>~5fT_b8wfm~7_#&-yoUOcTPneDl@yU2>dYq8x}&-ut|d70^A_>RM$7FbK3fNArX$zX2&12`h57kg#8;c( zz`QNu8>PYY;r{2TUG6j`uS^G({Jzc9l!tH^r019po6isv>Bq$*o+!3-52n}biZUIs zI6M)05f1+a4*4VS*EX`{zi9#Qh4HjPiZz6CO~7UZAkYUZ4(m zUtv@yD*J=@7cCwKEv?=*9+AIkVvCIvlrGNhTtb;wlO5vUoxHJ{#%|HIU@6AByr&nFZX{UfUlum*cMpU~?6rI5-YL?8uGySBT_5^}+s?8Ngfc+^e-^ zTVVTJ3hb@g0>--(>@6bWTx}r+I9#E$(8*emop7-A?o^(~fu=L!dCc4)_1Wq<&y%!G zI@|KLNVg)CA-uafCQGI$%%^j?Eiw)Bv~4o8jZ%btwU6jDomNvGt0}u3)7c@j>B*~g zNV700M=4|JIjoAv{%dW6xj+TO7JGGO6G?6Pq{@3;>{m@v{74QWrHbZ2in%jCr$Y|0 zim85Rw(au3Je@}qk)c{a3h%$7i+dl&`?tH`EHiBjKDZH1=D1qQ;f>*)1<9?j*i745 z;PEDVJqsvj1DG5}%TGyc{?9JtCsNrZ`x{1^Y0B9k3o=_F)65{TmN{w@1GU$hO!Q`Y zlQ-=BA}mics@9~VH{I*mu=hC{h&Xk2p%rGdg5*Cv@33K$lW&E*y7ITn93**_Z^P39 z+U!Dt%~4_4urDYn*M`C%mey`FsnBSJ{t6uIS0ivZ7#wCQi}IvGlH%)r{=szbf;X@* zO%`}s;c+XLIGqNP&I3u$i}aKi?kT42%R9GSnAQsCP*nnMhMBPo8qEv^+{I?b&H{ph zH!}{Fnft&pi(#4J%^IbGei@ct8d7!`mMT^^7M9+sHCgD*@@5h&t>|TXdnDu4VWzd& z&VQQmE{j4rj@+h+=+^Tl4nWk#fI}+)Lo0+y+IX0(9Svn#5majv;W(`rPShrWPn!&j zwJC6tRtojnvBaawV3jtF_)|IYrwX`3n-1HwO4y-Q!^7Hf@Pu|eJg?1$*R{Fujy4bW zXeT0Q^HJ9ppj-1{idKW!S}h)=`SDO~5suatV~KVWPSuv;v05FLYxOuoYrtx)36Im3 z;fY!^F4cnAq=hh~wctu^Ii9Aiz*XAGc(Jw;Z_!S{+qF~iUhOp8s-2FH)9>@z8Tcp4 ze^)yjKi5{{SK2xFckNvKmv)}W)Xo=!wF|^h?Lsj^yIACDmx#l)OT~EYGEuBuA*!{j z#BA+qae~$)7HaFnV(ofyl6He=(ry$hw41~k+In%3wn1F3-6F2iZWGsO8^sOUCULXY zD(=&67wy_zVu!X_Jgwa=UeN9lf7b35UukXPJMBL4qqaq&cE3!e-`-lgJV0xcdD;!K zK-(_IX%ET?+QYI~+bJh&kH}-SN9AnoapiHDNJc2J#fZmcZkV;oxnb5S=Z0A;C+6XH6hm^n#y1m$R%0ZDv%U5=sl zTsT!^k{SLHxbaxwA!D4BH7pk?@(3zt;0)oGW2syURtu*rq`Xu-5%$V)R3i;nk#;g( zh5BxUab&o2sPDZnjLi4zAOp9Mj&l^{Wr~yF6?rrn@@Zs0J!1t2ixsd{PNZ__Vh1c! z?PZ7;?DjInH+Fkj;zzqZulU(+FB_0AiM9ldKA&>Dv=E-!M>Uj_%9+U)YGGX^MnP1X z$_!RESV7zcW)4|U9Hi4fpPP}BmDAH>nKPs`5>reu9TA1k5wGw$l){%+=)}S#V)?|a zHN~x4NtaN3I>k)c4F#N@N;(EhqgfrWkW4qz$u9Q}S*pftramgm+GTl%oDr$V{5{3y z?@7$xQ&UDWj7f=rKq$H`HY@WnViYKKpPfGEojVkmgW}j(#*b5xy zNs5=dm?x2NTH|7SX-yh>)4Zvj`Fkygkunt3-)*xC35v(sP$U6G>^=&zk+C2Yv*$*NyOZ3$SKYp3%Sgy zH5us5;1ej%S#~D99nV;Fm?>>6sT`(TarNxD(Hfmh25cs!9<<$%qCE|1+Ov?QJqLZX z=Sd-Y0fuQW!ok|_;V|tbDAZmi7XJrg?SF)&+AGkYy-FAmAJ*OYnD#F2($nxc-GeXc>G+DC zfp6-W_<^2b-EU-dhOW6xn(oVe0+GAbo(y*9VGG`XF(nK3G)g2Z-7F z5V1f%P%P395<&VsT^}mWqx>uMbaB0&E7t3I;#U1&al1ZJ+@&8P+Vn%k6Z$B{o;~bU z5>JKMvv?|ON>QF|N{RbKgJnvIyJWQ(%YH?&cP$nCU~#Q7svNLJ6xnR|JTXDB*d(}6 zj8iPu1(%2;+s zds)P6XNS$dcmu*D147Q}WI*VL|Dpk5Su)8HOC~vD$t2sB4Dy%8t*(+UAs`K=M!mU( zY&(2b;M^fXvq?oep)g4?boObJndo(LRI^K&7kT+RJES^`xAP{}@Jx4yTu4Ku6nmw3 zkGarcJ97?qXS*$jj;*O1^sMYt`}xE}lEo*(h@GtAsq`|lI^-fUao42p z<=0r%3QJ{yS5;r{o*PFdz@9h@vB26^FLqC!x;Z0w!_IN!6$X3Xuq4Uf#d3QKG z_FW3n)PFEi{bL5ysVbWN=jW}Fd$2H_YGYw01EdcF#7joq@^#>*pA`{%Da-4*2`-@t zx02k8&NMs6%(iWIn)EL4(VW;fINj^f*2AG@uZTb3Aa54OhbsCcWjTpKbV?iHu9xjr z=+)-UpkBQm_86v{>D~+)x7ka%2s7EP=vA0$frQMPGpQ_2H#2v^P&2bbo@P0r2PoR+ z1I3mTnxFfcnQhTtkvc8(nqKDj-ZljSD@;3+b28gRK{kn;FdFlB7WB5kBn!+|*iADx z?U#MbJ{-~1*X+Bqpr0)0FAD~=LQ%eVz^KB3-T~_r9Xh=OwAz9}t%T~n-a(_xft$d! zra#j2nnCCtH_>m}3?x-7#gW5eFxd%X%t%Pc>G;yKy$ue1|#vdwHpMRuDSAoZ-qfvc^bYF!0F zW$~Uzl$7X|O-%7)Ce9(xy!uASQ~7cgH?AC2o*XqoGC|L#g%*Ag>)PTRVppoko)ej@ z3gAjHdvOGpJjYt)=dT5yH(Og!(7ToN)^u<0QM}q!{!x_ZwGsLdjO8lRq(7S=mq1Q$ zFCsWw^P{HKA2mbuTkYT}uIY`0P49-i_gE05)G2HyS9!g>KC)#&FUfrlPUb{qkT*Kq7&&1U#^!jxL@ zsrG_*(E25$g@ulI7PgSk84prF5?uNO$kdMlQ$HF8>J#BWy%=)zNpP560%P^baI`)J zj?t&WbiE8_>(d~hm%~cE0#4Vb!@2qlxInLj%k?U_ORt8l`b>CGp9PQT$HB|`@$jZT z8{XIFz-Rhg_=i3Z{-vLQpr43RUxXfgG4|7!;1E54dHP9sq`nj<>UCJD*W*mR5s%lK z@I-wX`l#$u{djEASKul7N<3RX1uxJ~#f$aR@LK(J(uvL>o#;%`iB7|IeGTr=XW*my z`M6uZ0H4(_#2567@Fo3X(uXd=@AS*?U;5?3p5q%=^d}_fPfDl$lr;2RGELttz53I#ul|h8 z*PoS#>(9wT{dsvLJx`~1bM%*_Pk&j~>VJ?+^*_qh`YZAx{Z)CZ{wH~-{+hg7e_h_E zzah8kkIP5&x8zIuyYi3vd-Biv`|=(A1NoW$q5P}vq!s{T*yEd5{FmHLm`P5MvT ztq!4Wc1UfjL(?91=-RUmhxQ7kUv;>(4;;zbrw&8=+L5CD;7HYlBTaWZJbI=hUGL+_ z&<}8A>LVOk`q2)rej?>BaU|=_j(++IM}Pec#{hkmW1xPXV~~EOW3YZRrSEVYpx^5l zqPIH^)E{&lr0;eN*I#vv(BE+6=TPNjv}Hc3aA88l%Obzu%dtpE6PR0Wl53@fLF``(>06n>cyOp@0{wM z*?|YW&-?w}f8IZ4s=KQuG*e;9@CO$U!XjJf#f3=CXRwUbzRK@>n6XR954Y z&u+ujEz4tfB6dwVvehKz7RvHsT!X1n)|A6DV2qSC^LC0Sc7$^6O%#s~}N{UmpOItOVfKS9vFebS`7cuh1&E+bk5QC*kIbAy7}&IY(^6 zv<-2La*&2w5~lkPT%&BHbZQia$iB~0t3elq^7`ua&_j6ydo4$u2VIp-#H&{qggu_8 zz78Ffe^AL9hp2>+i>Uc#<!u^ekrCQ zW%ziUI36SfWjHFt@nF^DT{UfQiLR6w>~h4tBQdKuWY}c;PLY)7Oa4e!zyUGWo&2iEcZfi+Sj>vq>rTEv zG66q=LRtq*$IOvfU1H5>ihK)MGxR1|GZwLCRDvDo-)H%@RJ{*b zGg6UJC)SJ>+(Weo1mI0#%@{0Z;MYHYuQHai26tBrw1 z+E{3&jl%&S5B;?XaG^F4hG~;vly(VB(Wbz3?NXSjO@)OR-mYB+cVqlI?Q(cfy8<58 zu7W4D8E`-)ghrN9|h1wb{(pu46gcOjcVP0DVA$zs(A?`Es)C zrwPd7DQSIN?&~D2kEf*dak;N6GA^7ftbwHORoqtt#xCwh%#~aR9cnR4u5knU!%K1x zkH9bp_EHnZLObOtDXpIbt(8FkY&z8Em*PZoU&Vdcz zg`5Ki_l#$hgCXajBIF!&r72ffp&Y`2f4&g^ULw)GywX66^3_#Pzp#jmmk1>8pDH_z zO(rCpEd6GAU0PDwBCxf^IBH8EPg{yh^)?)}WjJEDLuYMy8bhLMYUy=NiO9Puukmx_ z((9_cF7?H-pt0DDq`5}Qr zQqm3~A$l9eSM%Ndd{DxRMSQP9`Cx8IBxcgnM{`SLn2*cX#m@hf%-0-buM$JDp>J0z zpRIzLX(F+>K_amlzQ(YEevK_eoLfb)=uYKx4u1L<1jt$vJD^heDiMoWW$b)E+mFSI zNYeMUq_)_(gx-InttGYigQSpyZz}0}=cE<%H_#c90y(mdFHrbx8FVJ4ZeM0W2$Ur% zg?PE;(1_%$r+(7IPYy}f3}Ora$B)Tx>mlP59iOQrB5X>n%}Tbm$dBz*zQ9+2I35Y>{U(#6KK9tlI>^hCCYuJpGCq?qJRZk1vg>6geZgSDb(d3 z-4lw-BYTps`Z-ajQWyteIDNAZD0NoB1@dvfQYT^4lNV5cS#&K4$-vSIk)_VvCbEiT zcZM~V&552`bAz}!Sp9%ak0j~@tS0f&u%F0gG)4(bk`l9twgO;rj`r9EMQbx2vE(4zn-MpsrMqM+}@)<*TJCPXzEO zvqC#}rE!wT ziR~hu7EjeEDyS4qDnxOmz-sJER1ZH^-v{;Z4B4#eq7|Nehh_LO%b<`|LpqznmQ2R8 zmpP}9Tl@+c&gSc6_^>jRLS?MTqfpclU1iu$jFI6Kv0R3$#ZDPMDV~$zYvPy;zZHK< zxKs}x_g1P0g;Wop)aS7t6jD7XqUd=M$xe z;1lhAIIevRKWU%9N$peSXrHkR{T`N!VKwawR#W>Dv7WD31MO?pQ2RGK3*!p$dohMB zwg0fz+HuxF`;K+jzGr>3AKCfZPi%npGaI7)!b-JY*-(tTSo?vE)P7?VwLjPt?F5^u z{mG_lC)t%cuo)OPQ~RCG))~7&=j>)(WovbVt=A*$Vcld~b&KuNU50gMFJSnx9%XOo zS?rje&Hkh3upjhX_LH8+e%F2WhhB}H&~rG~@8Jf9mR^(B)ob&HdL3S%*X2$0dc0Ua zi?`Gp@z#1{-bpXwJ@h8LRBy_M>1Xp1dNCiRH|OKEr}!kjgiqC5@hh;bYcQOxx8`&8 zbNJ1Af-lwE@VoT3{9e61Ux(kzF??9>z&Gn1`D1z)zEAJUpVqta=k)IUCA}wqNAJZy z(tGpo^gfEN_f=}@{gg&}f2FB@zH*L!fzm}EsPxkZDTDP3m7)4Q$|wxS>O+)CdZ}`$ z-cz|+AEC_BM=Ce!qm(83Xl1oNMtMLVt30BQQ+Da&m3{gI<&Zv6IigQeUeYHk@938( zpXyVTuk}lnpY*AM>C=R!Um;9=y0G;tMTUNr$kb2pLUeXi(=-+N=&PhTho={JiJ`YmD%#!bR-ioQt9*B6W1^d(|B#;w9|wSKF3 zK)+3F)R&2E`t4#T#_z-MNqxC^4xeAs?-U>DcZp;8{56K(>MO*b`aP=9SE#yvw;It` zsyX^9)z{0^>KI=~UoGW+*VDgRKZ(8J)B6E_sMZ&4<=qT?N~&e3^+UA`O|2Qq{Tww{ zw1e)F_CC%YXP+Xr?Tc?jds4T6x}r#&OX?QTKop1$@`6hvah6g`%KhS^zUWBm7SIHD zhE7UH+;7enHKh)=3oS%-ic zuJQofC|vA~JY^S575%UVzVbD+m8DcuBM=q+#rdSBC@v5KLUS)_s9#>5)a)fJnRHF* zTp$MWZeJ8iz0*oDFi_L1Scz_lZxurerIZd2 zpRMBJ4N#3(02E71fV7mpzL$95p-Kmlyt*WLOA34)>CT{VsiIK_$y?%1N0WL0jua=6 zolC^M%oN@GY%Ed+%_zR6WXtPHaR8Uyln&QSdx=G;4rE$XQn_^yf+OvThV6C8H0T1G zk#$f>^G4R4d@p8;wRCw~DNZlRE`$0KtRcZt5K21IQWa2ng+-E0Ull8fl(d6d+eca% z@}sv8r=|nF*&;kB2f+*(&Vg@a_%r-YArtI88TMtD$nZ)wPkyI-s{v#_3Mn6jly5az z^1*x*Qa%bPABBt9YMCxjmT<`)ELqCZ*MXxy09pEj;Oj_5>KmXTVm&SOjnH0y7`p3^ zKyUpWxB$aJ`afW#z8NO!kHQpv3tXl@2GjJda5=uuz%>(8+U`VrO?-_OxsVCP}FzWR%7fc_F2tiQ~L>aVbi^;g+A{WUfo z<1WGPmt%OP{sxOrXdBCnU4ggk{i4 zZUh$G1?}WUV8eQ-Ct0ixvtW)Gi+L>^t!u?Nd6hf^8U+{4S#`*kSKVEliNN~-lYjA#hVBfC8S-ga5D0eb0~LP*#e$q#hwv%EO5H6mgI(^l>li;b+Jr??0q0 zeQO!CkEuva5}DhANJAuzE0t^2HGw|66hZqLQuvHV4hfizs7Beq*F$gO>`<{WTQV=~ka-c6baA1SC^U#C#RAm{VjvcX zN~r-B8OQ}PBn@i^6b!$%GBB#Xz1%Cy$@R3@Qm$_2HhAhGy*jWjjVwS zx+K>C2bXl6ehvmK;0I+8KS&MvK_>Bo%<>b@;{fq|-$}A^cm}mPPFD@)9i(ds7*>c| zu=-L_-UymvC3~D^%Q?Yp`HlF9C!|^>I}#}OC?#2>9h6 z=A|X>fr*K2)DaUab!1|(BuLzZzhnKasuSVsW$?&4eM2x zzU2FP^qfP_8G*)4JiscA;PyuLx<43wGCWmw1pW)JD6#l3v-PQu+ZoTON=hC(l`(9HM+t^qZ@2Cy2Il} z57=$=gy)T3@Q%?N-ZT2ZM@C=x#OMcK82#ZJ<9ztuxBz}J2EcFl?N4JMvy4G3(-_Qh zjUlX#QOb&pi&?QTg0(b8;Q}AcIvHbFPh&hg-3Xl&%=#%8|Rc$7bGY~j0% z$M`;DD}T~>oIhh!@Ry8j{HRgM-#51NW5y2tg|U+#H+JzqjVBbx*rP;^y-J?3PpM_> zSK`K#O2T+bInQ`T>1`ZTh8TyH(Z;jNWyU|1D~%({4aQ5#ZN|&W-Nq}*YU5R9t?`=j zi1E6z&3HrEWgJzWG~QHRG~QC)Gu~D{HQrIaG~QKyG~N^3cweZ-2f{Eu5{~h)$TdC@ zHH~AUq4Ak$ZG0g*7+;Dm#@C{^@o#aFQ6a_}--}7c4`RCUqnKsWdwTOe{DWjo|Sf?C83j8w27GyTBnz9YnO9VYn`4rBPRJkvvW83>7s-6WI zV3mIj;ZO>~p))~ff)JV_gl7Mx4gdUW2+yS;Ja;AtNOeV8B7~Cv z0^x)z;FbdU^)Ck6TmLE?R+@&w8CQ^2I(qDVK;Bi+G?^nlz*&osidUWy2-mlERF z3omErP(xn7P#_m<#11-6{{vGJ*oO+*DD~1{6J5N?jrwmN-=3KRB_UuN|(_^!mp8ikU@4F zSYxEed%$oRj)$9Ncsp#6;iGUwhOfhiGW?QdQOIhr+VY+9x5e(I{1j4t3MoH@l%GP% zPa);UQ0AwwF>5R1gQ>F>3UTW61ufDKr_TA19k~EnL;xVU5UTtTsM3#ISK>8jD9RXXiw&U~MDQ zS$mA{61hrF?eU0b;IvG!>$)ZR3#?m8+oxN~Hb=LVwok{T{DCDx`NI{kJ-l~xFD#L` zhr!~w>H|J|hWM9w50V}x$o>()M}ZocC@+XB#nEh%5BDiNgvdg$N|oXPeQB8%(QILu z?tQsh3#I(HZs7stFwUgY(*`TLa0`8wHy?zwI9#}2Ih;VEbQG?P`~?cb8TB#2%A!nh zC4YxF#?neJsERI>q++y?Y!ZqulRTtK(MYD2P{g3ghJ&^K~3ltvc8(8v-P8@UxGM{a{@k!3JFay!h4+yOU4 zmc#PMT~HQT0ry4jh6f`nVJA|^d+_~0qzn#6?t$kbtKntLb2M^an(E(2sjcfHxj8Y! zv0jwYA`W#SOMH!S3T{4D_%t4_75@e@c{~}e32j(SgDb>0{2Uzf4DoGhEXPO=8NkL< z#xfd=c$_T$mhocxUYVpu>B>$Yh5ruOwXu!7%(nyx$zsx}Yvr z3%3-+b?R_z_vr`cb9itb0W0!+njyHHRE=^%VIx9dkK?lE1W9}s4sG-B2)zY|AX0#1 z`~8+e{QtOb(IJRY-%EA69pcAeP>STBw3EXthr=OF&I<8sIatY*!G~zkDdSWWj+4C0 zCTPzO>}SXm8uOn)`%W4~iM$RX@&=fZHz68%3wPYNAusX{)Q-Fhbt3=5)%7+sjJyv; zkq_YP$cNA~@)3-Pe2lyA2QVS>DO?&k1~Vd`!K}#VxVpZ8d66$+KEB@+`6}(uza`aK zw&<&_?wBz&=Y6p54iMxLY(zy z$c+4k`~B}wBk~8%#1l{w`4c)tPQq}L!8nt{rKSQiO##=LD$Fr8xW&|A5x(DQM&M4< zg1b!{%1j6DH(l6hda%ii!Y(rd_L-S**vx_>W;VQF#^5b82j0f__sl#vX8Q1@Sq+Yx z)tO<|V2DO_1ZaH<5`raEmLThwN{LZJzrGA= z_=0TF>3$?|_F1nq5jk}7hjLzVihgIxIFG23pN-_#mPcDpf&u zi%D1AtPoQULXHgMm8wB@G!No|X>IY%O4SbR6bIfOEvYlmg2d{@6+96zrW*vW?9qcz zE%{ifdaJ-rzHM1xpN!e7PyREelcMDZb4z5HUt(Z=*g*sul|b1((tpTD62@A8nzpoN z$Te=!PLniAn6PnU-vI4=yF$%M+PP@z+gM(9pvypp3gYxRCTmL8XJTZgTFt>Kl(YUZ zqYPdyz!XT%1v#Gb9bALjTJkDI0u>G4)U~ppGu6kDYTna*8=qkD`oJR6Sh^E>7O7D* zD1%xAE_W5=o|4^(>Vc_Kdt^p`|y!vAl(S zM!+g*4XdOz?4)%GPCeOM!N8tPU>agAY*J#^0w8Csj=hBhGc-pNqWr`)l+R0MAPXZj zXy?$?iwd<`Fzwd)Cf2j&el{|gZnyi^0l`;6Z{ON4IEfg@sy4X3of0u%3bpkuzJS?=ZPL@1RaIS?~qAteJNg-n} zGdqIyRZax;yNVQDrjb)zOZvjSSk7(IU6CS>-W2NcuSzAjl^^k4JRb~_GRbT44Seqa z#A#?^ZgJNkbY6np5FtfbdB=dp7EjQmQ-a3QDS@m5*?Do~{LiM| zwW&K?>IL83LJNy2C863q)jy*gUL_~9(jd2#VI82*PGqq}wx1O$vZ)|y2g6*S z%&B)EP2gZ;t5VBpLt6|MJ2%DFp?eEK&T9Fqpp(Q@Xk=(Ey-#+xnpPDkSDi)c@$53l z&8PdorzMxjhvnOZbl_q|(B}t*_oNzV!EA0%b^&Zg2S9BMOmxj6z>n4{rda|~=Y$HE?S9K2zUhxhUQGjkFm29x0z^HQdm zQxQS9jAfhC*jeV~tiZgAwK8WQ5-^huFlVtL=4>|9yp~NcuVa(V>)Dm&9Co!ipIvJ% zU^kjKvPI@iY`M9Rtut?751NbFc5^A)XWq(QFmJ;Hei{4OT+U7NPVSg1cn$Mz-qbAP zUCq_Jr@4k-V6NqZ&2@a3c|V_KKESUsALO&l_53=soG&yV;)~3Ue1-Wif5d!*?=?5^ z1LhX~wD}l6Xl~`tnHTaG%nJUlxsAVX?&QbJUHsqXZvLJ51V3T!QMkERG0lBSwz*&N z%>zn(^C_j!d|K&f9#jUHhm}(ES!J5}Pi4CKoHE-yqFisjpe!|CRF;{qDJ#s^m3z%M zlydW^vekT3*=fF|95CNj-Z0-$J}}=^J~#iR{KtGx`PqD5`NRA`=;nvQG>?jG^WUPn z`Hg63ek+=o{}CnTana8FPV_Rr7yZp2M5+0s7-s$^Mw!2hvF0CQf_Xw*Vg4y*nkU6P z3&hP96N@b_mRpKgX9=;%QpFBS6VF(>IBXf>IV&QLT9)|Ovc*@HBfhg-@w4Tr+{#dO zD@(0zWvjKVnA+INQ46g+wVCCs&8=!`8>_l{u6aW3VbxaqT6NR`R$X3TD_$R?FDE;2vq8l zai1hfrS(ZFyJ~%;imL*O)>DeX1ZY|}DF#y^qIFS=nH_mI(S-pDOMw=_nAt2 z%n^ake6v(m1dL*#p z7&idw%N!275uTCUU58%)mj!YBm@*-_(#-#@j8to=`C#%Buv{%cl+;qP;an-yvXy(; zlTyHDDG$Ts0GjeBj0+qdD?8zQDNJ*f50Ky^VVbA>3|TU7R8(hOq@f>MG+}2;WY-bx zpq7|U7o){k_+6^Px?%$S!l++7F&TSQ+Bp-K!P|ioWHA#Cs;v-4rnnilOBh*VF;s|t zm?Imh{f-h^OuZVBVnUBCbu~DrwI|IF&;_&qi_yoj^m%2wq@&ubxL{y-(^rgjPVu6tKCvh6GL-I?cxIaMw@wE8A zXDcL0O)r2E6G*SE4#3Jmq1u4TC~!I5f2`h7xN8w6#XTxz=dtZHs&5jf0`qco=3)fZ_N)%9;ohtw}J&nheveOW1^Ytjl06ma)OQ z93Hi1YEpD(iJu#wiXG!FHc6m>Wzqz)A} zQf((U4KGC<)@GeUj!YqICFwr_O<4;`|EajxXUHk6!47yt39Mxug4Jq!$+Z?d#&bf} zSAPh6AS@`_sh-QAKqZfKc&e9*!U08;8OkK=YeZmSncZ|_VUtPTlTm}A2mtu>_S`h%;$iX&xNp_ZoX)_--n-FoX`;MOLH zSpR?wYcu3nk3uzT%inqw5bAKgB;>>$$98!5aX9%4>sv^MjYQGj64e)bOEhvTvz9$Z z3$B873^mkNCu#NI-ufb<&YYr{K?8?$K0PHO6zTdR8EeQ#9P)^7u16XRgGwk^1s@ky zDD$M7MXj8*E38x|kuIVkot9Zt2I97|0Gtp+N>zyi9|`yZ(y?qJv{IZ1trQoAR*Dn8 zy&tAksuxS!^zX$_Dc&JkHz;j*$YY>i0R|Kf4V=`{yDYQ2tg||b=#+zS2a+Ywqf#9! zx6cL2CZb`cRl;@2sLPd2%BFId95Z677`qlmkSn`YFr-ih=lhZU(7sX~hq${LKH1W} zTm6)yDRS_ZLsV1HU$*S8Jh6$;Zi=$PDCv$exIM3~`|~QXDS&iq0BNBtwaF=^)}~>7 z5Pb3wj#OR%ze1fT){x_`;G+>EUC@}SjwQq3^~f$bCfAGCLw4#J!Ix2v&`|h$NHPg> zMaS`oDjq*>kKXp|AB6jI*A` zMfwcfU>$-xti$kt^(?$*JqPbwM{o;$8ID`8u-ew^tg-b5Yik{4?X9<1KkIFFzV$CQ z!1@5U%MaP5)<^7W>ti<0`h?wOeabdi$Jj&G=WM6-1>0?X&GuLa*dgm%_N?_CJ8FH; zzOsH`-&sF#&H9-e)^9xD`klA7{@@9G?qr?deXT!vsdbVMwV7OAm88(jho=k^4p;jH zuHo>hzf{^*`4DxI6cAec0(CMz;bP-`)k`G%Et~gHr$~WcbGAagRN`zU?Do(cKwoy5 zI#q5OBm6a&rF08Y8B1g>(&fHFQy@OHV!X zAfaAK>3FqJvtP#z=PGqZxZ$kE8WA%;L2JBkQPnEH2V8Q{iL)ramIk?qd~`~i{_AOB z7bXY4%Hvd^=WnZ^+8Wffb*OEdaF%VQi3}2{4K{%|Rj|P()NAAht3pfY2Hml*&Vnp; zCdLWKP-m&L!#t+tr|sT|MmzLYfML)DNe9xK8MQ(*;wa*$P(ZT6SAlp><(}TGGDKJ6Wq* zg@NajzC{PbWQlpn3kRoG@n~8V3+NEH>tL_d1>LTXRcrt`c0;VJU#A1~$0yD_rP;p_Uxnh(@$W#IrcOTwcQe%(gLD( zYsj+C!R92u$FQE=4vOsd(9%8^I@%qeGd}mSJElovQv?w7k!LKEHy;8;k{oOhH4t$b zC<>plAR#Y@2#l$%&R1{1X;h4-ap2NDL%lK8{8{03mHISLXh zwyFotpPrCw_rjL+#_8P$>e_wNM2D$+icmjQ^Sa@HF!d&NVOWnvVLh4^(2bdZ(_Jg% zbJGuJwLI|udcsKi8uo=)ry)3(FT!3O3JvVx(9pgZC(8(EVvkI#SF=>TnyELdfq&yB zse0W4KZJPQ3VbJN^^vp-H3!r9@3q4pU9!0??NUwkQ!mxj!a1@?o>ReX8jpfXb*Vh3 z((c+|(lMA6Pbu|wJQhXTB^#oPx*;lg2mY3?g0}drQphVU75v~qD3sye`=FkDAgh1F zg8MC*BoDZi{%&7&+Oad4`oJCw_3a7J*q#W@?8(r^z6843Q=q$jDU{lm!BG2h7;j$z zlkMp+)xHw0vaf=x?U^v&o&`7Avtf~aE!=Kj2g~jGu*$vx9<~=irF|ppwr_&{_Ch#p z-wgk>m!t`}kA!{S82X0ydD+WJa}s+~m*`Ka^y2Cj z#z{)ILiSV2r{}9hR9MlWliSj|PI{2Gmw{p5jtlw@T+qvLZ@Lrrrn_)oS^=HxyP>ze z68d7?5W5V9W13O+>a<0jB2ZvVxK|l4R2nWLLGb{o8lzwXJ4o|4ls(s(A3vO`}cd!k4pm)J<0OsmR*2j#4Q zNSW(vp%rgIS86nxVteU+#sq1V3HwAJi7{mGNGS3xG9;(0&X? z*jsTiJr1+&3S3Ov;ATWz@4|46y&X1U{Nwg+c*5QTPuhEN5$%JQ?E`SseiA;hpMo#! zr{M?t8D`oCS=2tna_z$`-+q=AVA#U`Cu@)K-R(W>0{ewDhe`ueB=JDlDDe!H^;1_% zJR^&B3};*p3yeSu@L6C4TE!IerLiUr28Je;bhsuosbt_%4NNLU;KtCTk_r1@d3f9$ z4GlT#@I{!{U{07f!g9mBCaV_awScSls`rI+`4$M=W_K(+Bz<5@35$VK8J~$h7C6Uy zm#8$;aqCsr5P7DRQBrdE7f(p3mylNIUkC^(!DU099D~&oS$Fd6z)QTsrFsFP zqQv`27(p&0nac=rr6%qyvc6=$0-F6QIQDChX}^Id=397rzm2EnyLeju3n%Ue(AxeG zC+?pYaOg=rRye~BfJF4r|4LC4)tTE4*1VT+# zkM4-!WGrC0(#oL*tyx5U2*2uhg1j9P2p!;c$;ONz*0fjMC<%nw&{}<%4aKQ-J>o%M zNM6lKaMeeocj#TvM%@GtW85A@Af-D_EG_uzvN+_Z|B&t}xO%_(K*%3>FVNKCv&hML z;g)z|;Gw-z-Moq|!P&WtY=Pqod>yA3asv&kL;T^L5Pt}Ck^$EGTI%E6v~RgU7j*+p z66L>RK&halcMR~=?doHpPimYv##VT0gES1)q$nmBQz~KRmhjCtn4ni#fXuxCBJyR+ zsp-qv<+76MS~l@aFbj6DoD|4Z;Yu-6gWSzitymm1Q?`Mg$qvl$G>%w$8>D4JIr;yt z4SLXq(~I~oRf4s_5Ui3zp#87v7ZglfyZ_(yt19B}>vsx|Fn~sO$R#xG@1SV`wA6Zj zn7A?apSYe+f`eE|w!@&BgLImMM5801i=)Fx$AoJg3vR#!s~i^|ax!4IlL^l{*>J?k zgV!A&zICd>Pfm5FJ2jc<)MAaCx~zj!k9Bhzu;ETaHpOYo<~s%K7AMZioTltSrx|B28@0_~mq5xv2clVT9e zQnv-`AD=1%t|ERND-R=jx<_(l=_~CCDpX^0)$O=(lPlj3@NnOW>;GCPRCmf%`YrAm zwQ)}{Scfo9XY*5W55qE@_s#a zZ>Yg!ORu{M?mLgG6`{qElHfSxjpBRT=VM)Rur7hpT~HguakmuiRQEBEvXXMRrZA@N zRG;ENhh<<_Gp6TDW9k=4Os!{JB5ENY`W%U{HAd_$aJefZbA8K?tVdiKgG%)o$u^7z zXdI$!Z_o>!NcrndR^q(f5+KfE-N}W8@tx{n4uf~IP1rqbb3!eM6Cu(iZKlf#kYxoA89R{h=BJwhHS}^?Z#ihMVL}UK7O? z>csNk2@51XA=wm9OQEDvD5snA zaa73BI&B9Dhl((KCwc1Q`zfdXF*pZjV=2zYi*Pm$#hqdpRCh)|J!d2|c1A&oGaA}B zV{o?^3q752(BBykL!1e4u`?0IIg{X0XEMyg_r=Z>xE0gf?OX=;VBYo474Q#dI&62Y zg#FG{aLAc~JId9#qg(@TIy2!NXBNEY%!W^#YvC*BI{4nXo~h0pW;=6PmNSp}&U}{d z+`!Iq7O=+7O}OJMWIdhPY@l-so8~NHS2~N?OlK*($GMg5ah9=z&h6}3=MMIwvz#4s z?quIMcd=ibJ2-b%@=Rw{ns1awsU4V4QkHN-)~MNcDM%_;!Q-5=$W4r0r$i2n>a0QodorIH;k%AeoWd+2v9;qQZVW zQUf{25jIR>Cpx^z`b)pg2E4=iuqS0H@3Efhi?WmtVR~qye z2D0RAv1eg~+#hXr1nU}@C^-h1GKb4E5qEh>;y4+~uPNWmqe5wlPtufA9W#?C<(tz* zDbBsXoiz|~)`IJ-gDmHM$aNk_6Q%emQA%z~l+so07OFvRrY##l8;x5QPg;*Chk`g# zcER~dem+Q=8JE7LVq!JuF|9=4J|YP(+*jU+sd8!72$yEkS3dRZ=TjDWMEG4R8 z5wsl}xE*8h8f^^*1+?fRA=)1guzq=Ks!oXg*9o!zIwYCp__czJKa+$+^LktUHVmH@_#`{1CIh6IXn69e?_@v!bD{#p@wciQjq z)8lZbcn})+ZYT}$5VlvTzE#Fv3!aV+#_g+|9W1C+->&*fp1V?C@zcA1`H5Ael{xp6 zGOzF>)Ets+lZZ)uZxvka+xyiIE7Xqze~uF|HOD14k~A$1-%D;iUd+I)ClQq{kg4Fa zf+txpLHL9=J5M5Kh94z4Sd_Y)tO!Kc!>@%D27O%)Uy;eo(1GMkQgQR7irWN)LMmLwFg|+y%kQ^fUbo2@k^%p4{23btfJt9@MAgf11t+S1Iu* z;#dNKwx)jhk^xOM?5$vWxiN2n$LMI5z#^vu8$g-9Wl(nVX*?XGF(F1`4{{!tel-0| zT7c|0b_$KNSIUGL{^~d1OEX*Jhl|*sg~wLQFXa+dI zPcvD5Zp<(CW3nQ}f!CHiV%OvIew;8qA5!DnH%;Qej5|^&_O6o^-ekT38&b3 zVQ&^-n8b@}(sOT20KL~j28BJ6h2^9Qvr~no8ZtKU35ZYU`EHeN2R5~xi9_JM}?7RjqIj_U3&QW;Fc@sW$-h!{4x8b<+4*cT0%UU?^ zv4rzJ>*9RC`Z^!73!RTxsq+aN=6uUWJO4pa>Np}c-?6KmAJ}!yk8Gjy6T8j%ncd<1 z%2qnRvHP9hk+k}Q{loc_ZE-oPa0T1#s_ZFOW6!%fd)qbGaW}$#cTKLi7S~*x*L5A< z*mZdeH-oowW4yha!#lgVysw+b2f03<;#T7`-0J*#w+5f*=JR{qn*2ex7Jn4e>~!n% z{cZ#PjN6dE>z>7rxsCWYZexDjEl?acu4KD~N-gK8(%3y)Y33Fyt=#5H!fl~+aa$_= z-4bQ6+e(>D#!Wue2_9Lbh{|8yXPtI zyFHXI+@8ueZZG9mx3>^(A7Q!uL`}E9XzX4f3f%#sxjRU-b}tm|-NB+4hJ)NvG10w9 zOm~NhS?;-FfjdGhbVrG$?r3qRJ4UQ_$B7Deyx8GR5WC%p;wg8MIOt9m&$^e0SKLd* zQFp5NmwTD`%)L?^cdrsZxieJeUai{hHENbSOKs@RR?l{?Q(L&#t8Lu5Y6o|o+SQ$} z4#04@yFi`h-l)!YZ&K&GqtqpC8}%-CiF%K_R9)xZsy^i2rfzYUsg>^S>VEeQ^^m(< zebK#BJ?h@2e&w!Ee{}Cwe|J}^f4XH_#Jxw$a93;j?!8)pd!N?YU88k!*J|C}by_cX znKsB>s*P~VrK6Rp(4MfTln&(RBr>awR=-2^5|LSLghVP8(6nLd_Y#GTXr<~85{0#) zS;&cvK}{C;Tpg)#^+!qQUa5Yg{-pklakJIWBzkGUeDwn*Kx=UYslP}TTBW)ve0o*A zO)BtMY&RP#dB!%p!3PA$Cw$5i>aUV<)&=s^-|)#}qoFTvAfKLx$r9D|*m3A8IwBn-7p5{B9# z2}A9igrVLC2ZDB}55Yeqj7;@$xIcia9)bn3ZQ0n81=z328=ZjzmBoSB2+^)MiOw`1 z>y+hdWC%=1^Iy16UqE>Ctz{BxCN-#Xs7ulzd3MC&q#dJGuz{7DAvJ-jONF%>>rTE$ z_Y+AaUOFk$0`39Euaah*l;XH_b|(J=M_?)9L|Pbhw}FCacEsHdp1T9;xI3Y~yBnIh zPe6&g2RgWWp`W`CF2MJp?g5zKJ_(aC{dD)~G*R5*6dz`>H2p{@`eMxv6pXR)p^YB6 zS#ww~>FDIrkUsQas1)95&>R}cuGDcdu1yT@iI|q`9IcoP zJfw9F(LJfoQNzwrw=57$>U8e;

      *IQaQ=aU6SMrU)ehFO5uQH8c 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

      GayP#)uxD{Zxv16`iT#Z7Y_T3qEoA9DRz0!N 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≷L8y-7YM*2ZP4^%1@S0$kA!^LzYYUr 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μRI&G+Ug~>-o#e$58 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

      06#w(4-QvwIsOdWPk>V5(UpRsL$ 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


      S<6Tn2wjOQYG5Y~&2{f(- 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
      #IFr{g!I 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 + + * jartool.c (make_manifest): Initialize current_time before + calling unix2dostime on it. + +--- fastjar-0.97/jartool.c.jj 2008-10-15 18:35:37.000000000 +0200 ++++ fastjar-0.97/jartool.c 2009-01-14 15:40:50.000000000 +0100 +@@ -820,6 +820,10 @@ int make_manifest(int jfd, const char *m + int mod_time; /* file modification time */ + struct zipentry *ze; + ++ current_time = time(NULL); ++ if(current_time == (time_t)-1) ++ exit_on_error("time"); ++ + mod_time = unix2dostime(¤t_time); + + /* If we are creating a new manifest, create a META-INF directory entry */ +@@ -828,10 +832,6 @@ int make_manifest(int jfd, const char *m + + memset((file_header + 12), '\0', 16); /*clear mod time, crc, size fields*/ + +- current_time = time(NULL); +- if(current_time == (time_t)-1) +- exit_on_error("time"); +- + PACK_UB2(file_header, LOC_EXTRA, 0); + PACK_UB2(file_header, LOC_COMP, 0); + PACK_UB2(file_header, LOC_FNLEN, nlen); diff --git a/patches/source/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch b/patches/source/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch new file mode 100644 index 000000000..722351d33 --- /dev/null +++ b/patches/source/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch @@ -0,0 +1,16 @@ +2009-12-21 Chris Ball + + * jartool.c (add_file_to_jar): Test write return value against -1 + instead of 1. + +--- fastjar-0.97/jartool.c.jj 2008-10-15 12:35:37.000000000 -0400 ++++ fastjar-0.97/jartool.c 2009-12-22 06:48:09.309530000 -0500 +@@ -1257,7 +1257,7 @@ int add_file_to_jar(int jfd, int ffd, co + exit_on_error("write"); + + /* write the file name to the zip file */ +- if (1 == write(jfd, fname, file_name_length)) ++ if (-1 == write(jfd, fname, file_name_length)) + exit_on_error("write"); + + if(verbose){ diff --git a/patches/source/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch b/patches/source/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch new file mode 100644 index 000000000..34a02a74f --- /dev/null +++ b/patches/source/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch @@ -0,0 +1,14 @@ +2010-03-01 Richard Guenther + + * jartool.c (read_entries): Properly zero-terminate filename. + +--- fastjar-0.97/jartool.c 6 Sep 2009 22:16:00 -0000 1.59 ++++ fastjar-0.97/jartool.c 1 Mar 2010 15:38:43 -0000 1.60 +@@ -790,6 +790,7 @@ int read_entries (int fd) + progname, jarfile); + return 1; + } ++ ze->filename[len] = '\0'; + len = UNPACK_UB4(header, CEN_EFLEN); + len += UNPACK_UB4(header, CEN_COMLEN); + if (lseek (fd, len, SEEK_CUR) == -1) diff --git a/patches/source/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch b/patches/source/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch new file mode 100644 index 000000000..2c6e23c76 --- /dev/null +++ b/patches/source/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch @@ -0,0 +1,102 @@ +2010-06-10 Jakub Jelinek + Dan Rosenberg + + * jartool.c (extract_jar): Fix up checks for traversal to parent + directories, disallow absolute paths, make the code slightly more + efficient. + +--- fastjar-0.97/jartool.c.jj 2009-09-07 00:10:47.000000000 +0200 ++++ fastjar-0.97/jartool.c 2010-06-08 20:00:29.000000000 +0200 +@@ -1730,7 +1730,17 @@ int extract_jar(int fd, const char **fil + struct stat sbuf; + int depth = 0; + +- tmp_buff = malloc(sizeof(char) * strlen((const char *)filename)); ++ if(*filename == '/'){ ++ fprintf(stderr, "Absolute path names are not allowed.\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ tmp_buff = malloc(strlen((const char *)filename)); ++ ++ if(tmp_buff == NULL) { ++ fprintf(stderr, "Out of memory.\n"); ++ exit(EXIT_FAILURE); ++ } + + for(;;){ + const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/'); +@@ -1738,25 +1748,28 @@ int extract_jar(int fd, const char **fil + if(idx == NULL) + break; + else if(idx == start){ ++ tmp_buff[idx - filename] = '/'; + start++; + continue; + } +- start = idx + 1; + +- strncpy(tmp_buff, (const char *)filename, (idx - filename)); +- tmp_buff[(idx - filename)] = '\0'; ++ memcpy(tmp_buff + (start - filename), (const char *)start, (idx - start)); ++ tmp_buff[idx - filename] = '\0'; + + #ifdef DEBUG + printf("checking the existance of %s\n", tmp_buff); + #endif +- if(strcmp(tmp_buff, "..") == 0){ ++ if(idx - start == 2 && memcmp(start, "..", 2) == 0){ + --depth; + if (depth < 0){ + fprintf(stderr, "Traversal to parent directories during unpacking!\n"); + exit(EXIT_FAILURE); + } +- } else if (strcmp(tmp_buff, ".") != 0) ++ } else if (idx - start != 1 || *start != '.') + ++depth; ++ ++ start = idx + 1; ++ + if(stat(tmp_buff, &sbuf) < 0){ + if(errno != ENOENT) + exit_on_error("stat"); +@@ -1765,6 +1778,7 @@ int extract_jar(int fd, const char **fil + #ifdef DEBUG + printf("Directory exists\n"); + #endif ++ tmp_buff[idx - filename] = '/'; + continue; + }else { + fprintf(stderr, "Hmmm.. %s exists but isn't a directory!\n", +@@ -1781,10 +1795,11 @@ int extract_jar(int fd, const char **fil + if(verbose && handle) + printf("%10s: %s/\n", "created", tmp_buff); + ++ tmp_buff[idx - filename] = '/'; + } + + /* only a directory */ +- if(strlen((const char *)start) == 0) ++ if(*start == '\0') + dir = TRUE; + + #ifdef DEBUG +@@ -1792,7 +1807,7 @@ int extract_jar(int fd, const char **fil + #endif + + /* If the entry was just a directory, don't write to file, etc */ +- if(strlen((const char *)start) == 0) ++ if(*start == '\0') + f_fd = -1; + + free(tmp_buff); +@@ -1876,7 +1891,8 @@ int extract_jar(int fd, const char **fil + exit(EXIT_FAILURE); + } + +- close(f_fd); ++ if (f_fd != -1) ++ close(f_fd); + + if(verbose && dir == FALSE && handle) + printf("%10s: %s\n", diff --git a/patches/source/gcc/fastjar-patches/1004-fastjar-man.patch b/patches/source/gcc/fastjar-patches/1004-fastjar-man.patch new file mode 100644 index 000000000..34bf704db --- /dev/null +++ b/patches/source/gcc/fastjar-patches/1004-fastjar-man.patch @@ -0,0 +1,27 @@ +2010-03-24 Jan Kratochvil + + * Makefile.am (POD2MAN): Provide --date from ChangeLog. + * Makefile.in: Regenerate. + +--- fastjar-0.97/Makefile.am.jj 2008-10-16 04:24:55.000000000 -0400 ++++ fastjar-0.97/Makefile.am 2010-06-21 09:29:41.021398000 -0400 +@@ -39,7 +39,7 @@ EXTRA_DIST = \ + texi2pod.pl + + TEXI2POD = perl $(srcdir)/texi2pod.pl +-POD2MAN = pod2man --center="GNU" --release=@VERSION@ ++POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog) + + .pod.1: + -($(POD2MAN) --section=1 $< > $(@).T$$$$ && \ +--- fastjar-0.97/Makefile.in.jj 2008-10-16 04:15:16.000000000 -0400 ++++ fastjar-0.97/Makefile.in 2010-06-21 09:30:15.882810000 -0400 +@@ -515,7 +515,7 @@ EXTRA_DIST = \ + texi2pod.pl + + TEXI2POD = perl $(srcdir)/texi2pod.pl +-POD2MAN = pod2man --center="GNU" --release=@VERSION@ ++POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog) + + #SPLINT_FLAGS=-I . -I $(srcdir)/lib -I $(srcdir) -DHAVE_CONFIG_H +posixlib +weak + SPLINT_FLAGS = -I . -I $(srcdir)/lib -I $(srcdir) -DHAVE_CONFIG_H -DPRIx32= -warnposix +weak diff --git a/patches/source/gcc/gcc-no_fixincludes.diff b/patches/source/gcc/gcc-no_fixincludes.diff new file mode 100644 index 000000000..52b661613 --- /dev/null +++ b/patches/source/gcc/gcc-no_fixincludes.diff @@ -0,0 +1,27 @@ +--- ./gcc/Makefile.in.orig 2010-04-02 02:49:06.000000000 -0500 ++++ ./gcc/Makefile.in 2010-08-01 16:55:30.088318841 -0500 +@@ -3864,9 +3864,9 @@ + chmod a+r $${fix_dir}/limits.h; \ + done + # Install the README +- rm -f include-fixed/README +- cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README +- chmod a+r include-fixed/README ++# rm -f include-fixed/README ++# cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README ++# chmod a+r include-fixed/README + $(STAMP) $@ + + .PHONY: install-gcc-tooldir +@@ -3947,10 +3947,7 @@ + (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \ + SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \ + gcc_dir=`${PWD_COMMAND}` ; \ +- export TARGET_MACHINE srcdir SHELL MACRO_LIST && \ +- cd $(build_objdir)/fixincludes && \ +- $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \ +- $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \ ++ export TARGET_MACHINE srcdir SHELL MACRO_LIST ); \ + rm -f $${fix_dir}/syslimits.h; \ + if [ -f $${fix_dir}/limits.h ]; then \ + mv $${fix_dir}/limits.h $${fix_dir}/syslimits.h; \ diff --git a/patches/source/gcc/gcc.SlackBuild b/patches/source/gcc/gcc.SlackBuild new file mode 100755 index 000000000..73f2363cb --- /dev/null +++ b/patches/source/gcc/gcc.SlackBuild @@ -0,0 +1,827 @@ +#!/bin/sh +# GCC package build script (written by volkerdi@slackware.com) +# +# Copyright 2003, 2004 Slackware Linux, Inc., Concord, California, USA +# Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# Modified 2011 by Eric Hameleers for OpenJDK. + +# Some notes, Fri May 16 12:31:32 PDT 2003: +# +# Why i486 and not i386? Because the shared C++ libraries in gcc-3.2.x will +# require 486 opcodes even when a 386 target is used (so we already weren't +# compatible with the i386 for Slackware 9.0, didn't notice, and nobody +# complained :-). gcc-3.3 fixes this issue and allows you to build a 386 +# compiler, but the fix is done in a way that produces binaries that are not +# compatible with gcc-3.2.x compiled binaries. To retain compatibility with +# Slackware 9.0, we'll have to use i486 (or better) as the compiler target +# for gcc-3.3. +# +# It's time to say goodbye to i386 support in Slackware. I've surveyed 386 +# usage online, and the most common thing I see people say when someone asks +# about running Linux on a 386 is to "run Slackware", but then they also +# usually go on to say "be sure to get an OLD version, like 4.0, before glibc, +# because it'll be more efficient." Now, if that's the general advice, then +# I see no reason to continue 386 support in the latest Slackware (and indeed +# it's no longer easily possible). + +# Some more notes, Mon Aug 3 19:49:51 UTC 2015: +# +# Changing to -march=i586 for 32-bit x86 as several things (Mesa being one of +# them) no longer work if constrained to -march=i486. We're not going to use +# -march=i686 since the only additional opcode is CMOV, which is actually less +# efficient on modern CPUs running in 32-bit mode than the alternate i586 +# instructions. No need to throw i586 CPUs under the bus (yet). + +PKGNAM=gcc +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# How many jobs to run in parallel: +NUMJOBS=" -j 7 " + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" + LIB_ARCH=i386 +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" + LIB_ARCH=i386 +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" + LIB_ARCH=i386 +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" + LIB_ARCH=i386 +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + LIB_ARCH=s390 +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + LIB_ARCH=amd64 +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" + LIB_ARCH=armv7hl +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + LIB_ARCH=$ARCH +fi + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +CWD=$(pwd) +# Temporary build location. This should *NOT* be a directory +# path a non-root user could create later... +TMP=${TMP:-"/gcc-$(mcookie)"} + +# This is the main DESTDIR target: +PKG1=$TMP/package-gcc +# These are the directories to build other packages in: +PKG2=$TMP/package-gcc-g++ +PKG3=$TMP/package-gcc-gfortran +PKG4=$TMP/package-gcc-gnat +PKG5=$TMP/package-gcc-java +PKG6=$TMP/package-gcc-objc +PKG7=$TMP/package-gcc-g++-gch +PKG8=$TMP/package-gcc-go + +# Clear the build locations: +if [ -d $TMP ]; then + rm -rf $TMP +fi +mkdir -p $PKG{1,2,3,4,5,6,7,8}/usr/doc/gcc-$VERSION + +# Insert package descriptions: +mkdir -p $PKG{1,2,3,4,5,6,7,8}/install +cat $CWD/slack-desc.gcc > $PKG1/install/slack-desc +cat $CWD/slack-desc.gcc-g++ > $PKG2/install/slack-desc +cat $CWD/slack-desc.gcc-gfortran > $PKG3/install/slack-desc +cat $CWD/slack-desc.gcc-gnat > $PKG4/install/slack-desc +cat $CWD/slack-desc.gcc-java > $PKG5/install/slack-desc +cat $CWD/slack-desc.gcc-objc > $PKG6/install/slack-desc +# cat $CWD/slack-desc.gcc-g++-gch > $PKG7/install/slack-desc +cat $CWD/slack-desc.gcc-go > $PKG8/install/slack-desc + +cd $TMP +tar xvf $CWD/gcc-$VERSION.tar.?z || exit 1 + +# Patches based inside the gcc directory go here: +#( cd gcc-$VERSION/gcc +# #zcat $CWD/gcc.66782.diff.gz | patch -p0 --verbose || exit 1 +#) || exit 1 + +# Copy ecj.jar into the TLD of the source. Needed for java compiler. +# This can be retrieved from ftp://sourceware.org/pub/java +cp $CWD/ecj-4.9.jar gcc-$VERSION/ecj.jar + +# Use an antlr runtime to compile javadoc. +# The runtime can be obtained from: +#https://oss.sonatype.org/content/repositories/releases/org/antlr/antlr-runtime/ +ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) + +# install docs +( cd gcc-$VERSION + # Smite the fixincludes: + zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + + # Add retpoline support: + zcat $CWD/0001-i386-Move-struct-ix86_frame-to-machine_function.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0005-x86-Add-mindirect-branch-doc.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0005-x86-Add-mindirect-branch.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0006-x86-Add-mfunction-return-doc.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0006-x86-Add-mfunction-return.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0007-x86-Add-mindirect-branch-register-doc.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0007-x86-Add-mindirect-branch-register.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0008-x86-Add-V-register-operand-modifier-doc.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0008-x86-Add-V-register-operand-modifier.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff.gz | patch -p2 --verbose || exit 1 + zcat $CWD/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff.gz | patch -p2 --verbose || exit 1 + + # Fix perms/owners + chown -R root:root . + find . -perm 777 -exec chmod 755 {} \; + find . -perm 775 -exec chmod 755 {} \; + find . -perm 754 -exec chmod 755 {} \; + find . -perm 664 -exec chmod 644 {} \; + mkdir -p $PKG1/usr/doc/gcc-$VERSION + cp -a \ + COPYING* ChangeLog* FAQ INSTALL \ + LAST_UPDATED MAINTAINERS NEWS \ + README* *.html \ + $PKG1/usr/doc/gcc-$VERSION + + # We will keep part of these, but they are really big... + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + if [ -r NEWS ]; then + DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION) + cat NEWS | head -n 1000 > $DOCSDIR/NEWS + touch -r NEWS $DOCSDIR/NEWS + fi + + mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc + ( cd gcc + cp -a \ + ABOUT* COPYING* DATESTAMP DEV-PHASE LANG* ONEWS README* SERVICE \ + $PKG1/usr/doc/gcc-$VERSION/gcc + + mkdir -p $PKG3/usr/doc/gcc-${VERSION}/gcc/fortran + ( cd fortran + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog + touch -r ChangeLog $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog + fi + ) + + mkdir -p $PKG4/usr/doc/gcc-${VERSION}/gcc/ada + ( cd ada + cp -a \ + ChangeLog.tree-ssa \ + $PKG4/usr/doc/gcc-$VERSION/gcc/ada + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog + touch -r ChangeLog $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog + fi + ) + + mkdir -p $PKG5/usr/doc/gcc-${VERSION}/gcc/java + ( cd java + cp -a \ + ChangeLog.tree-ssa \ + $PKG5/usr/doc/gcc-${VERSION}/gcc/java + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog + touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog + fi + ) + + mkdir -p $PKG6/usr/doc/gcc-${VERSION}/gcc/objc + ( cd objc + cp -a \ + README* \ + $PKG6/usr/doc/gcc-${VERSION}/gcc/objc + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog + touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog + fi + ) + + mkdir -p $PKG8/usr/doc/gcc-${VERSION}/gcc/go + ( cd go + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog + touch -r ChangeLog $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog + fi + cp -a \ + README* THREADS* \ + gofrontend/{LICENSE,PATENTS,README} \ + $PKG8/usr/doc/gcc-${VERSION}/gcc/go + ) + + ) || exit 1 + + mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libgfortran + ( cd libgfortran + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog + touch -r ChangeLog $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog + fi + ) + + mkdir -p $PKG4/usr/doc/gcc-${VERSION}/libada + ( cd libada + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog + touch -r ChangeLog $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog + fi + ) + + mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi + ( cd libffi + cp -a \ + ChangeLog.libgcj ChangeLog.v1 \ + LICENSE* README* \ + $PKG5/usr/doc/gcc-${VERSION}/libffi + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog + touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog + fi + ) + + mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libjava + ( cd libjava + cp -a \ + COPYING* HACKING LIBGCJ_LICENSE \ + NEWS README* THANKS \ + $PKG5/usr/doc/gcc-${VERSION}/libjava + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog + touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog + fi + ) + + mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap + ( cd libmudflap + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog + touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog + fi + ) + + mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp + ( cd libgomp + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog + touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog + fi + ) + + mkdir -p $PKG6/usr/doc/gcc-${VERSION}/libobjc + ( cd libobjc + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog + touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog + fi + cp -a \ + README* THREADS* \ + $PKG6/usr/doc/gcc-${VERSION}/libobjc + ) + + mkdir -p $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3 + ( cd libstdc++-v3 + cp -a \ + README* \ + doc/html/faq.html \ + $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3 + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog + touch -r ChangeLog $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog + fi + ) + +) + +# Add fastjar to the gcc-java package: +( cd $TMP + FASTJARVER=$(echo $CWD/fastjar-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + echo + echo "Building fastjar-$FASTJARVER first" + echo + rm -rf fastjar-$FASTJARVER + tar xvf $CWD/fastjar-$FASTJARVER.tar.xz || exit 1 + cd fastjar-$FASTJARVER || exit 1 + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + for patch in $CWD/fastjar-patches/*.gz ; do + zcat $patch | patch -p1 --verbose || exit 1 + done + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + ./configure \ + --prefix=/usr \ + --libdir=/usr/lib$LIBDIRSUFFIX \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --build=$TARGET + make $NUMJOBS || exit 1 + make install DESTDIR=$PKG5 || exit 1 + mkdir -p $PKG5/usr/doc/fastjar-$FASTJARVER + cp -a \ + AUTHORS CHANGES COPYING* INSTALL NEWS README* TODO \ + $PKG5/usr/doc/fastjar-$FASTJARVER + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG5/usr/doc/fastjar-$FASTJARVER) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + find $PKG5 | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + # Compress and if needed symlink the man pages: + if [ -d $PKG5/usr/man ]; then + ( cd $PKG5/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) + fi + # Compress info files, if any: + if [ -d $PKG5/usr/info ]; then + ( cd $PKG5/usr/info + rm -f dir + gzip -9 * + ) + fi + echo +) || exit 1 + +# build gcc +( mkdir gcc.build.lnx; + cd gcc.build.lnx; + + # If enough people need "treelang" support for it may be considered. + # --enable-languages=ada,c,c++,fortran,java,objc,treelang + # I think it's incorrect to include this option (as it'll end up set + # to i586 on x86 platforms), and we want to tune the binary structure + # for i686, as that's where almost all of the optimization speedups + # are to be found. + # Correct me if my take on this is wrong. + # --with-cpu=$ARCH + + if [ "$ARCH" != "x86_64" ]; then + GCC_ARCHOPTS="--with-arch=$ARCH" + else + GCC_ARCHOPTS="--disable-multilib" + fi + + # NOTE: For Slackware 15.0, look into removing --with-default-libstdcxx-abi=gcc4-compatible, + # which will then require rebuilding all C++ libraries. That is, if there's any benefit. + + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + ../gcc-$VERSION/configure --prefix=/usr \ + --libdir=/usr/lib$LIBDIRSUFFIX \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --enable-shared \ + --enable-bootstrap \ + --enable-languages=ada,c,c++,fortran,go,java,lto,objc \ + --enable-threads=posix \ + --enable-checking=release \ + --enable-objc-gc \ + --with-system-zlib \ + --with-python-dir=/lib$LIBDIRSUFFIX/python2.7/site-packages \ + --enable-libstdcxx-dual-abi \ + --with-default-libstdcxx-abi=gcc4-compatible \ + --disable-libunwind-exceptions \ + --enable-__cxa_atexit \ + --enable-libssp \ + --enable-lto \ + --disable-install-libiberty \ + --with-gnu-ld \ + --verbose \ + --enable-java-home \ + --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \ + --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \ + --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \ + --with-arch-directory=$LIB_ARCH \ + --with-antlr-jar=$ANTLJAR \ + --enable-java-awt=gtk \ + --disable-gtktest \ + $GCC_ARCHOPTS \ + --target=${TARGET} \ + --build=${TARGET} \ + --host=${TARGET} || exit 1 + + # Start the build: + + # Include all debugging info (for now): + make $NUMJOBS bootstrap; + + ( cd gcc + make $NUMJOBS gnatlib GNATLIBCFLAGS="$SLKCFLAGS" + # This wants a shared -ladd2line? + #make gnatlib-shared + + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + make $NUMJOBS gnattools + ) + make info + + # Set GCCCHECK=something to run the tests + if [ ! -z $GCCCHECK ]; then + make $NUMJOBS check + fi + + make install DESTDIR=$PKG1 + +# KLUDGE ALERT +# These *gdb.py files are causing ldconfig to complain, so they are going +# to be REMOVED for now... at some point, they might be moved somewhere +# else, in which case things should Just Work(tm). Keep an eye on it. +rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/*gdb.py + +# Be sure the "specs" file is installed. +if [ ! -r $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs ]; then + cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs +fi + +# Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory: +if [ "$ARCH" = "x86_64" ]; then + sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \ + $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs +fi + +# make ada.install-common DESTDIR=$PKG1 +# make install-gnatlib DESTDIR=$PKG1 +make -i install-info DESTDIR=$PKG1 + +chmod 755 $PKG1/usr/lib${LIBDIRSUFFIX}/libgcc_s.so.1 + +# The (huge) static GNU java libraries are not packaged. In nearly all +# cases one or more dependencies will not be available as static anyway. +rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj.a +rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj-tools.a + +# Fix stuff up: +( cd $PKG1/usr/info ; rm dir ; gzip -9 * ) +( cd $PKG1 + # *not* ${LIBDIRSUFFIX} + mkdir -p lib + cd lib + ln -sf /usr/bin/cpp . +) + +( cd $PKG1/usr/bin + mv g++ g++-gcc-$VERSION + mv gcc gcc-$VERSION + mv ${TARGET}-gfortran gfortran-gcc-$VERSION + ln -sf g++-gcc-$VERSION g++ + ln -sf gcc-$VERSION gcc + ln -sf g++ c++ + ln -sf gcc cc + ln -sf gcc-$VERSION ${TARGET}-gcc + ln -sf gcc-$VERSION ${TARGET}-gcc-$VERSION + ln -sf gcc-ar ${TARGET}-gcc-ar + ln -sf gcc-nm ${TARGET}-gcc-nm + ln -sf gcc-ranlib ${TARGET}-gcc-ranlib + ln -sf gcj ${TARGET}-gcj + ln -sf gcjh ${TARGET}-gcjh + ln -sf g++-gcc-$VERSION ${TARGET}-c++ + ln -sf g++-gcc-$VERSION ${TARGET}-g++ + ln -sf gfortran-gcc-$VERSION gfortran + ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran + ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran-$VERSION + ln -sf gfortran-gcc-$VERSION ${TARGET}-g95 + ln -sf gfortran g95 + ln -sf gfortran f95 + ln -sf gfortran-gcc-$VERSION ${TARGET}-g77 + ln -sf gfortran g77 + ln -sf gfortran f77 + cat $CWD/c89.sh > c89 + cat $CWD/c99.sh > c99 + chmod 755 c89 c99 +) + +( cd $PKG1/usr/man + gzip -9 */* + cd man1 + ln -sf g++.1.gz c++.1.gz + ln -sf gcc.1.gz cc.1.gz +) + +## build the txz package +#( +# cd $PKG1; +# makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz +#) +# keep a log +) 2>&1 | tee $TMP/gcc.build.log + +# OK, time to split the big package where needed: + +# gcc-g++: +( cd $PKG2 + mkdir -p usr/bin + mv $PKG1/usr/bin/*++* usr/bin + mkdir -p usr/include + mv $PKG1/usr/include/c++ usr/include + mkdir -p usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/*++* usr/lib${LIBDIRSUFFIX} + mkdir -p usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus + mkdir -p usr/man/man1 + mv $PKG1/usr/man/man1/*++* usr/man/man1 +) + +# gcc-gfortran: +( cd $PKG3 + mkdir -p usr/bin + mv $PKG1/usr/bin/*gfortran* usr/bin + mv $PKG1/usr/bin/*95* usr/bin + mv $PKG1/usr/bin/*77* usr/bin + # Doesn't this seem like a logical idea? + ( cd usr/bin ; ln -sf gfortran-gcc-${VERSION} fortran ) + mkdir -p usr/info + mv $PKG1/usr/info/gfortran* usr/info + mkdir -p usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgfortran* usr/lib${LIBDIRSUFFIX} + mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + mkdir -p usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f951 usr/libexec/gcc/$TARGET/$VERSION/f951 + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/libgfortran* usr/libexec/gcc/$TARGET/$VERSION + mkdir -p usr/man/man1 + mv $PKG1/usr/man/man1/gfortran* usr/man/man1 +) + +# gcc-gnat: +# First, relocate usr/bin/gnative2ascii to the gcc-java package so it +# isn't matched and accidentally put in gcc-gnat: +mkdir -p $PKG5/usr/bin +mv $PKG1/usr/bin/gnative2ascii $PKG5/usr/bin +# Now make the gcc-gnat package tree: +( cd $PKG4 + mkdir -p usr/bin + mv $PKG1/usr/bin/gnat* usr/bin + mv $PKG1/usr/bin/gpr* usr/bin + mkdir -p usr/info + mv $PKG1/usr/info/gnat* usr/info + mkdir -p usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/gnat1 usr/libexec/gcc/$TARGET/$VERSION + mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION +) + +# gcc-java: +( cd $PKG5 + mkdir -p usr/bin + mv $PKG1/usr/bin/aot-compile usr/bin + mv $PKG1/usr/bin/addr2name.awk usr/bin + # mv $PKG1/usr/bin/fastjar usr/bin + mv $PKG1/usr/bin/gappletviewer usr/bin + mv $PKG1/usr/bin/gc-analyze usr/bin + mv $PKG1/usr/bin/*gcj* usr/bin + mv $PKG1/usr/bin/gij usr/bin + mv $PKG1/usr/bin/gjar usr/bin + mv $PKG1/usr/bin/gjarsigner usr/bin + mv $PKG1/usr/bin/gjdoc usr/bin + mv $PKG1/usr/bin/gkeytool usr/bin + mv $PKG1/usr/bin/grepjar usr/bin + mv $PKG1/usr/bin/grmid usr/bin + mv $PKG1/usr/bin/grmic usr/bin + mv $PKG1/usr/bin/grmiregistry usr/bin + mv $PKG1/usr/bin/gserialver usr/bin + mv $PKG1/usr/bin/gtnameserv usr/bin + mv $PKG1/usr/bin/gjavah usr/bin + mv $PKG1/usr/bin/gorbd usr/bin + mv $PKG1/usr/bin/jar usr/bin + mv $PKG1/usr/bin/jcf-dump usr/bin + mv $PKG1/usr/bin/jv-* usr/bin + mv $PKG1/usr/bin/rmi* usr/bin + mkdir -p usr/include/c++/$VERSION + # Move some Java only C++ headers from the C++ package: + mv $PKG2/usr/include/c++/$VERSION/{gcj,gnu,java,javax,org,sun} usr/include/c++/$VERSION + mv $PKG1/usr/include/ffi.h usr/include + mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffitarget.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jvmpi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/libffi usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + # aot-compile Python plugins: + if [ ! -d $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 ]; then + echo "NO $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 !" + exit 1 + fi + mv $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 usr/lib${LIBDIRSUFFIX} + mkdir -p usr/info + mv $PKG1/usr/info/gcj.* usr/info + # mv $PKG1/usr/info/fastjar.* usr/info + mkdir -p usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/libffi* usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/logging.properties usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcj* usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj* usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgij* usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib-org* usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/security usr/lib${LIBDIRSUFFIX} + mkdir -p usr/lib${LIBDIRSUFFIX}/pkgconfig + mv $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj*.pc usr/lib${LIBDIRSUFFIX}/pkgconfig + rmdir $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig 2> /dev/null + mkdir -p usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jc1 usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/ecj1 usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jvgenmain usr/libexec/gcc/$TARGET/$VERSION + mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/gcj usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mkdir -p usr/man/man1 + mv $PKG1/usr/man/man1/aot-compile.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gappletviewer.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gc-analyze.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gcj.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gcjh.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gcj-dbtool.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gij.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gjar.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gjarsigner.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gjavah.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gjdoc.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gjnih.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gkeytool.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gnative2ascii.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gorbd.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/grmic.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/grmid.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/grmiregistry.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gserialver.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gtnameserv.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/jcf-dump.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/jv-convert.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/jv-scan.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/rebuild-gcj-db.1.gz usr/man/man1 + mkdir -p usr/man/man3 + mv $PKG1/usr/man/man3/ffi* usr/man/man3 + mkdir -p usr/share + mv $PKG1/usr/share/java usr/share + # The ecj wrapper script: + cat $CWD/ecj.sh | sed -e "s,@JAVADIR@,/usr/share/java," > usr/bin/ecj + chmod 755 usr/bin/ecj + # The JAVA_HOME compatibility links. + # Caution: non-multilib arch-independent stuff! No lib64 here. + mkdir -p usr/lib$LIBDIRSUFFIX + mv $PKG1/usr/lib$LIBDIRSUFFIX/jvm* usr/lib$LIBDIRSUFFIX + # And add the missing javac symlink: + ln -s ../../../bin/ecj usr/lib$LIBDIRSUFFIX/jvm/bin/javac + # Don't package libffi stuff anymore. GCC will link the internal version + # statically, and we'll need a newer one elsewhere. + find . -name "ffi*.h" | xargs rm + find . -name "libffi*" | xargs rm + rm -f usr/man/man3/ffi* + rm -f usr/info/libffi* +) + +# gcc-objc: +( cd $PKG6 + mkdir -p usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/libobjc* usr/lib${LIBDIRSUFFIX} + mkdir -p usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION + mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include + mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/objc usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include +) + +## NOTE: Thought about this, because the precompiled headers are so large. +## Probably easier to keep everything together, though. +## gcc-g++-gch (precompiled c++ headers) +#( cd $PKG7 +# mkdir -p usr/include/c++/$VERSION/$TARGET/bits +# mv $PKG2/usr/include/c++/$VERSION/$TARGET/bits/stdc++.h.gch usr/include/c++/$VERSION/$TARGET/bits +#) + +# gcc-go: +( cd $PKG8 + mkdir -p usr/bin + mv $PKG1/usr/bin/*gccgo* usr/bin + mv $PKG1/usr/bin/go{,fmt} usr/bin + mkdir -p usr/libexec/gcc/$TARGET/$VERSION + mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/{cgo,go1} usr/libexec/gcc/$TARGET/$VERSION + mkdir -p usr/info + mv $PKG1/usr/info/gccgo.info.gz usr/info + mkdir -p usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/go usr/lib${LIBDIRSUFFIX} + mv $PKG1/usr/lib${LIBDIRSUFFIX}/{libgo.la,libgo.so*,libgobegin.a,libgolibbegin.a,libnetgo.a} usr/lib${LIBDIRSUFFIX} || exit 1 + # Ordinarily Slackware doesn't package static libraries, but in this case + # it is useful for deploying compiled binaries on machines that do not yet + # have libgo.so.0.0.0. + mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgo.a usr/lib${LIBDIRSUFFIX} + mkdir -p usr/man/man1 + mv $PKG1/usr/man/man1/gccgo.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/go.1.gz usr/man/man1 + mv $PKG1/usr/man/man1/gofmt.1.gz usr/man/man1 +) || exit 1 + +# Filter all .la files (thanks much to Mark Post for the sed script): +( cd $TMP + for file in $(find . -type f -name "*.la") ; do + cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file + cat $TMP/tmp-la-file > $file + done + rm $TMP/tmp-la-file +) + +## Strip bloated binaries and libraries: +for dir in $PKG{1,2,3,4,5,6,8}; do + ( cd $dir + find . -name "lib*so*" -exec strip --strip-unneeded "{}" \; + find . -name "lib*a" -exec strip -g "{}" \; + strip --strip-unneeded usr/bin/* 2> /dev/null + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + ) +done + +( cd $PKG1 + makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz ) +( cd $PKG2 + makepkg -l y -c n $TMP/gcc-g++-$VERSION-$ARCH-$BUILD.txz ) +( cd $PKG3 + makepkg -l y -c n $TMP/gcc-gfortran-$VERSION-$ARCH-$BUILD.txz ) +( cd $PKG4 + makepkg -l y -c n $TMP/gcc-gnat-$VERSION-$ARCH-$BUILD.txz ) +( cd $PKG5 + makepkg -l y -c n $TMP/gcc-java-$VERSION-$ARCH-$BUILD.txz ) +( cd $PKG6 + makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz ) +#( cd $PKG7 +# makepkg -l y -c n $TMP/gcc-g++-gch-$VERSION-$ARCH-$BUILD.txz ) +( cd $PKG8 + makepkg -l y -c n $TMP/gcc-go-$VERSION-$ARCH-$BUILD.txz ) + +echo +echo "Slackware GCC package build complete!" +echo + diff --git a/patches/source/gcc/slack-desc.gcc b/patches/source/gcc/slack-desc.gcc new file mode 100644 index 000000000..72e33b464 --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc: gcc (Base GCC package with C support) +gcc: +gcc: GCC is the GNU Compiler Collection. +gcc: +gcc: This package contains those parts of the compiler collection needed to +gcc: compile C code. Other packages add Ada, C++, Fortran, Go, +gcc: Objective-C, and Java support to the compiler core. +gcc: +gcc: +gcc: +gcc: diff --git a/patches/source/gcc/slack-desc.gcc-g++ b/patches/source/gcc/slack-desc.gcc-g++ new file mode 100644 index 000000000..3cbabac16 --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc-g++ @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc-g++: gcc-g++ (C++ for GCC) +gcc-g++: +gcc-g++: C++ support for the GNU Compiler Collection. +gcc-g++: +gcc-g++: This package contains those parts of the compiler collection needed to +gcc-g++: compile C++ code. The base gcc package is also required. +gcc-g++: +gcc-g++: +gcc-g++: +gcc-g++: +gcc-g++: diff --git a/patches/source/gcc/slack-desc.gcc-gfortran b/patches/source/gcc/slack-desc.gcc-gfortran new file mode 100644 index 000000000..5141cb02c --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc-gfortran @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc-gfortran: gcc-gfortran (Fortran support for GCC) +gcc-gfortran: +gcc-gfortran: The GNU Fortran compiler is fully compliant with the Fortran 95 +gcc-gfortran: Standard and includes legacy F77 support. In addition, a significant +gcc-gfortran: number of Fortran 2003 and Fortran 2008 features are implemented. +gcc-gfortran: GNU Fortran also contains many standard and extensions and can be +gcc-gfortran: used to run real-world programs. +gcc-gfortran: +gcc-gfortran: This package contains those parts of the compiler collection +gcc-gfortran: needed to compile Fortran code. The gcc package is also required. +gcc-gfortran: diff --git a/patches/source/gcc/slack-desc.gcc-gnat b/patches/source/gcc/slack-desc.gcc-gnat new file mode 100644 index 000000000..9aa4b3c4e --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc-gnat @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc-gnat: gcc-gnat (Ada support for GCC) +gcc-gnat: +gcc-gnat: Ada support for the GNU Compiler Collection. +gcc-gnat: +gcc-gnat: This package contains those parts of the compiler collection needed to +gcc-gnat: compile Ada code. GNAT implements Ada 95, Ada 2005 and Ada 2012, and +gcc-gnat: it may also be invoked in Ada 83 compatibility mode. By default, GNAT +gcc-gnat: assumes Ada 2012. The base gcc package is also required. +gcc-gnat: +gcc-gnat: +gcc-gnat: diff --git a/patches/source/gcc/slack-desc.gcc-go b/patches/source/gcc/slack-desc.gcc-go new file mode 100644 index 000000000..cdd859bc1 --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc-go @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc-go: gcc-go (Go support for GCC) +gcc-go: +gcc-go: Go is a compiled, garbage-collected, concurrent programming language +gcc-go: developed by Google Inc. The initial design of Go was started in +gcc-go: September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. +gcc-go: Rob Pike has stated that Go is being used "for real stuff" at Google. +gcc-go: Go's "gc" compiler targets the Linux, Mac OS X, FreeBSD, OpenBSD and +gcc-go: Microsoft Windows operating systems, and the i386, amd64, and ARM +gcc-go: processor architectures. +gcc-go: +gcc-go: Homepage: http://golang.org diff --git a/patches/source/gcc/slack-desc.gcc-java b/patches/source/gcc/slack-desc.gcc-java new file mode 100644 index 000000000..b65ca5554 --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc-java @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc-java: gcc-java (Java support for GCC) +gcc-java: +gcc-java: Java support for the GNU Compiler Collection. +gcc-java: +gcc-java: This package contains those parts of the compiler collection needed to +gcc-java: compile programs written in the Java programming language. The base +gcc-java: gcc package is also required. +gcc-java: +gcc-java: +gcc-java: +gcc-java: diff --git a/patches/source/gcc/slack-desc.gcc-objc b/patches/source/gcc/slack-desc.gcc-objc new file mode 100644 index 000000000..c01b79e37 --- /dev/null +++ b/patches/source/gcc/slack-desc.gcc-objc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gcc-objc: gcc-objc (Objective-C support for GCC) +gcc-objc: +gcc-objc: Objective-C support for the GNU Compiler Collection. +gcc-objc: +gcc-objc: This package contains those parts of the compiler collection needed to +gcc-objc: compile code written in Objective-C. Objective-C was originally +gcc-objc: developed to add object-oriented extensions to the C language, and is +gcc-objc: best known as the native language of the NeXT computer. +gcc-objc: +gcc-objc: The base gcc package is also required. +gcc-objc: diff --git a/patches/source/gd/gd.SlackBuild b/patches/source/gd/gd.SlackBuild new file mode 100755 index 000000000..bc827a0d5 --- /dev/null +++ b/patches/source/gd/gd.SlackBuild @@ -0,0 +1,122 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008, 2009, 2010, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=gd +VERSION=${VERSION:-$(echo libgd-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} + +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +cd $TMP +rm -rf libgd-${VERSION} +tar xvf $CWD/libgd-$VERSION.tar.xz || exit 1 +cd libgd-$VERSION || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +./bootstrap.sh + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --disable-static \ + --program-prefix= \ + --program-suffix= \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + COPYING INSTALL README-JPEG.TXT README.TXT index.html \ + $PKG/usr/doc/${PKGNAM}-$VERSION +# Fix stupid permissions: +chmod 644 $PKG/usr/doc/${PKGNAM}-$VERSION/* + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $TMP/package-${PKGNAM} +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/gd/slack-desc b/patches/source/gd/slack-desc new file mode 100644 index 000000000..adaab7a05 --- /dev/null +++ b/patches/source/gd/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gd: gd (a graphics library) +gd: +gd: gd is a graphics library. It allows your code to quickly draw images +gd: complete with lines, arcs, text, multiple colors, cut and paste from +gd: other images, and flood fills, and write out the result as a PNG or +gd: JPEG file. This is particularly useful in web applications, where +gd: PNG and JPEG are two of the formats accepted for inline images by +gd: most browsers. The gd library was written by Thomas Boutell. +gd: +gd: Homepage: https://www.libgd.org +gd: diff --git a/patches/source/gegl/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch b/patches/source/gegl/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch new file mode 100644 index 000000000..53d7328e8 --- /dev/null +++ b/patches/source/gegl/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch @@ -0,0 +1,68 @@ +From 012b0b019ede3cfa7df20bf60c7915a771ecff78 Mon Sep 17 00:00:00 2001 +From: Kalev Lember +Date: Thu, 4 Dec 2014 11:22:04 +0100 +Subject: [PATCH] matting-levin: Fix the build with recent suitesparse versions + +Stop using the UF_long define that was deprecated previously and has +completely disappeared in suitesparse 4.3. + +https://bugzilla.gnome.org/show_bug.cgi?id=741105 +--- + operations/external/matting-levin.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/operations/external/matting-levin.c b/operations/external/matting-levin.c +index 63e85d1..cf84699 100644 +--- a/operations/external/matting-levin.c ++++ b/operations/external/matting-levin.c +@@ -850,8 +850,8 @@ matting_sparse_new (guint cols, guint rows, guint elems) + sparse_t *s = g_new (sparse_t, 1); + s->columns = cols; + s->rows = rows; +- s->col_idx = g_new (UF_long, cols + 1); +- s->row_idx = g_new (UF_long, elems); ++ s->col_idx = g_new (SuiteSparse_long, cols + 1); ++ s->row_idx = g_new (SuiteSparse_long, elems); + s->values = g_new0 (gdouble, elems); + + return s; +@@ -964,8 +964,8 @@ matting_get_laplacian (const gdouble *restrict image, + image_elems = roi->width * roi->height, + i, j, k, x, y, + status; +- UF_long *trip_col, +- *trip_row; ++ SuiteSparse_long *trip_col, ++ *trip_row; + glong trip_nz = 0, + trip_cursor = 0, + trip_masked = 0; +@@ -995,8 +995,8 @@ matting_get_laplacian (const gdouble *restrict image, + trip_nz = trip_masked * window_elems * window_elems; + trip_nz += image_elems; // Sparse diagonal and row summing at conclusion + +- trip_col = g_new (UF_long, trip_nz); +- trip_row = g_new (UF_long, trip_nz); ++ trip_col = g_new (SuiteSparse_long, trip_nz); ++ trip_row = g_new (SuiteSparse_long, trip_nz); + trip_val = g_new0 (gdouble, trip_nz); + + /* Compute the contribution of each pixel in the image to the laplacian */ +@@ -1082,10 +1082,10 @@ matting_get_laplacian (const gdouble *restrict image, + for (y = 0; y < window_elems; ++y) + for (x = 0; x < window_elems; ++x) + { +- UF_long yx = y % diameter, +- yy = y / diameter, +- xx = x % diameter, +- xy = x / diameter; ++ SuiteSparse_long yx = y % diameter, ++ yy = y / diameter, ++ xx = x % diameter, ++ xy = x / diameter; + + g_return_val_if_fail (trip_cursor < trip_nz, FALSE); + trip_col[trip_cursor] = (i - radius + yx) + (j - radius + yy) * roi->width, +-- +2.1.0 + diff --git a/patches/source/gegl/gegl-0.2.0-CVE-2012-4433.patch b/patches/source/gegl/gegl-0.2.0-CVE-2012-4433.patch new file mode 100644 index 000000000..965c6fc20 --- /dev/null +++ b/patches/source/gegl/gegl-0.2.0-CVE-2012-4433.patch @@ -0,0 +1,159 @@ +From ffa77a246652c7e706d690682fe659f50fbe5656 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Mon, 1 Jul 2013 12:03:51 +0200 +Subject: [PATCH] patch: CVE-2012-4433 + +Squashed commit of the following: + +commit 2a9071e2dc4cfe1aaa7a726805985281936f9874 +Author: Nils Philippsen +Date: Tue Oct 16 16:57:37 2012 +0200 + + ppm-load: bring comment in line with reality + + (cherry picked from commit 6975a9cfeaf0698b42ac81b1c2f00d13c8755453) + +commit 8bb88ebf78e54837322d3be74688f98800e9f33a +Author: Nils Philippsen +Date: Tue Oct 16 16:56:40 2012 +0200 + + ppm-load: CVE-2012-4433: add plausibility checks for header fields + + Refuse values that are non-decimal, negative or overflow the target + type. + + (cherry picked from commit 4757cdf73d3675478d645a3ec8250ba02168a230) + +commit 2b099886969bf055a8635d06a4d89f20fed1ee42 +Author: Nils Philippsen +Date: Tue Oct 16 16:58:27 2012 +0200 + + ppm-load: CVE-2012-4433: don't overflow memory allocation + + Carefully selected width/height values could cause the size of a later + allocation to overflow, resulting in a buffer much too small to store + the data which would then written beyond its end. + + (cherry picked from commit 1e92e5235ded0415d555aa86066b8e4041ee5a53) +--- + operations/external/ppm-load.c | 64 +++++++++++++++++++++++++++++++++++------- + 1 file changed, 54 insertions(+), 10 deletions(-) + +diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c +index efe6d56..e22521c 100644 +--- a/operations/external/ppm-load.c ++++ b/operations/external/ppm-load.c +@@ -36,6 +36,7 @@ gegl_chant_file_path (path, _("File"), "", _("Path of file to load.")) + #include "gegl-chant.h" + #include + #include ++#include + + typedef enum { + PIXMAP_ASCII = 51, +@@ -44,8 +45,8 @@ typedef enum { + + typedef struct { + map_type type; +- gint width; +- gint height; ++ glong width; ++ glong height; + gsize numsamples; /* width * height * channels */ + gsize bpc; /* bytes per channel */ + guchar *data; +@@ -61,7 +62,7 @@ ppm_load_read_header(FILE *fp, + gchar header[MAX_CHARS_IN_ROW]; + gint maxval; + +- /* Check the PPM file Type P2 or P5 */ ++ /* Check the PPM file Type P3 or P6 */ + fgets (header,MAX_CHARS_IN_ROW,fp); + + if (header[0] != ASCII_P || +@@ -82,12 +83,33 @@ ppm_load_read_header(FILE *fp, + } + + /* Get Width and Height */ +- img->width = strtol (header,&ptr,0); +- img->height = atoi (ptr); +- img->numsamples = img->width * img->height * CHANNEL_COUNT; ++ errno = 0; ++ img->width = strtol (header,&ptr,10); ++ if (errno) ++ { ++ g_warning ("Error reading width: %s", strerror(errno)); ++ return FALSE; ++ } ++ else if (img->width < 0) ++ { ++ g_warning ("Error: width is negative"); ++ return FALSE; ++ } ++ ++ img->height = strtol (ptr,&ptr,10); ++ if (errno) ++ { ++ g_warning ("Error reading height: %s", strerror(errno)); ++ return FALSE; ++ } ++ else if (img->width < 0) ++ { ++ g_warning ("Error: height is negative"); ++ return FALSE; ++ } + + fgets (header,MAX_CHARS_IN_ROW,fp); +- maxval = strtol (header,&ptr,0); ++ maxval = strtol (header,&ptr,10); + + if ((maxval != 255) && (maxval != 65535)) + { +@@ -109,6 +131,16 @@ ppm_load_read_header(FILE *fp, + g_warning ("%s: Programmer stupidity error", G_STRLOC); + } + ++ /* Later on, img->numsamples is multiplied with img->bpc to allocate ++ * memory. Ensure it doesn't overflow. */ ++ if (!img->width || !img->height || ++ G_MAXSIZE / img->width / img->height / CHANNEL_COUNT < img->bpc) ++ { ++ g_warning ("Illegal width/height: %ld/%ld", img->width, img->height); ++ return FALSE; ++ } ++ img->numsamples = img->width * img->height * CHANNEL_COUNT; ++ + return TRUE; + } + +@@ -229,12 +261,24 @@ process (GeglOperation *operation, + if (!ppm_load_read_header (fp, &img)) + goto out; + +- rect.height = img.height; +- rect.width = img.width; +- + /* Allocating Array Size */ ++ ++ /* Should use g_try_malloc(), but this causes crashes elsewhere because the ++ * error signalled by returning FALSE isn't properly acted upon. Therefore ++ * g_malloc() is used here which aborts if the requested memory size can't be ++ * allocated causing a controlled crash. */ + img.data = (guchar*) g_malloc (img.numsamples * img.bpc); + ++ /* No-op without g_try_malloc(), see above. */ ++ if (! img.data) ++ { ++ g_warning ("Couldn't allocate %" G_GSIZE_FORMAT " bytes, giving up.", ((gsize)img.numsamples * img.bpc)); ++ goto out; ++ } ++ ++ rect.height = img.height; ++ rect.width = img.width; ++ + switch (img.bpc) + { + case 1: +-- +1.8.3.1 + diff --git a/patches/source/gegl/gegl-0.2.0-libopenraw.patch b/patches/source/gegl/gegl-0.2.0-libopenraw.patch new file mode 100644 index 000000000..c5738d6ce --- /dev/null +++ b/patches/source/gegl/gegl-0.2.0-libopenraw.patch @@ -0,0 +1,71 @@ +diff -up gegl-0.2.0/configure.ac.libopenraw gegl-0.2.0/configure.ac +--- gegl-0.2.0/configure.ac.libopenraw 2016-12-03 08:11:31.968387802 +0100 ++++ gegl-0.2.0/configure.ac 2016-12-03 08:12:19.398987931 +0100 +@@ -790,7 +790,7 @@ AC_ARG_WITH(libopenraw, [ --without-lib + + have_libopenraw="no" + if test "x$with_libopenraw" != "xno"; then +- PKG_CHECK_MODULES(OPENRAW, libopenraw-1.0 >= openraw_required_version, ++ PKG_CHECK_MODULES(OPENRAW, libopenraw-0.1 >= openraw_required_version, + have_libopenraw="yes", + have_libopenraw="no (openraw library not found)") + fi +diff -up gegl-0.2.0/configure.libopenraw gegl-0.2.0/configure +--- gegl-0.2.0/configure.libopenraw 2016-12-03 08:11:33.954412931 +0100 ++++ gegl-0.2.0/configure 2016-12-03 08:12:15.506938686 +0100 +@@ -20760,12 +20760,12 @@ if test -n "$OPENRAW_CFLAGS"; then + pkg_cv_OPENRAW_CFLAGS="$OPENRAW_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libopenraw-1.0 >= 0.0.5\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "libopenraw-1.0 >= 0.0.5") 2>&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libopenraw-0.1 >= 0.0.5\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "libopenraw-0.1 >= 0.0.5") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_OPENRAW_CFLAGS=`$PKG_CONFIG --cflags "libopenraw-1.0 >= 0.0.5" 2>/dev/null` ++ pkg_cv_OPENRAW_CFLAGS=`$PKG_CONFIG --cflags "libopenraw-0.1 >= 0.0.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes +@@ -20777,12 +20777,12 @@ if test -n "$OPENRAW_LIBS"; then + pkg_cv_OPENRAW_LIBS="$OPENRAW_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libopenraw-1.0 >= 0.0.5\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "libopenraw-1.0 >= 0.0.5") 2>&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libopenraw-0.1 >= 0.0.5\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "libopenraw-0.1 >= 0.0.5") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_OPENRAW_LIBS=`$PKG_CONFIG --libs "libopenraw-1.0 >= 0.0.5" 2>/dev/null` ++ pkg_cv_OPENRAW_LIBS=`$PKG_CONFIG --libs "libopenraw-0.1 >= 0.0.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes +@@ -20803,9 +20803,9 @@ else + _pkg_short_errors_supported=no + fi + if test $_pkg_short_errors_supported = yes; then +- OPENRAW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libopenraw-1.0 >= 0.0.5" 2>&1` ++ OPENRAW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libopenraw-0.1 >= 0.0.5" 2>&1` + else +- OPENRAW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libopenraw-1.0 >= 0.0.5" 2>&1` ++ OPENRAW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libopenraw-0.1 >= 0.0.5" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$OPENRAW_PKG_ERRORS" >&5 +diff -up gegl-0.2.0/operations/external/openraw.c.libopenraw gegl-0.2.0/operations/external/openraw.c +--- gegl-0.2.0/operations/external/openraw.c.libopenraw 2016-12-03 08:28:14.284333843 +0100 ++++ gegl-0.2.0/operations/external/openraw.c 2016-12-03 08:29:01.495751180 +0100 +@@ -116,7 +116,7 @@ load_buffer (GeglOperation *operation) + goto clean_file; + } + +- if(or_rawdata_format (rawdata) != OR_DATA_TYPE_CFA) ++ if(or_rawdata_format (rawdata) != OR_DATA_TYPE_RAW) + { + goto clean_file; + } diff --git a/patches/source/gegl/gegl-0.2.0-linker-flags.patch b/patches/source/gegl/gegl-0.2.0-linker-flags.patch new file mode 100644 index 000000000..0006ba249 --- /dev/null +++ b/patches/source/gegl/gegl-0.2.0-linker-flags.patch @@ -0,0 +1,36 @@ +diff -urNp gegl-0.2.0.orig/bin/Makefile.in gegl-0.2.0/bin/Makefile.in +--- gegl-0.2.0.orig/bin/Makefile.in 2015-05-07 15:06:23.716649233 +0200 ++++ gegl-0.2.0/bin/Makefile.in 2015-05-07 15:08:38.104260506 +0200 +@@ -363,7 +363,7 @@ AM_CFLAGS = \ + + AM_LDFLAGS = \ + $(no_undefined) ../gegl/libgegl-$(GEGL_API_VERSION).la \ +- $(DEP_LIBS) $(BABL_LIBS) $(PNG_LIBS) $(LIBSPIRO) ++ $(DEP_LIBS) $(BABL_LIBS) $(PNG_LIBS) $(LIBSPIRO) -lm + + gegl_SOURCES = gegl.c gegl-options.c gegl-options.h gegl-path-smooth.c \ + gegl-path-smooth.h $(am__append_1) +diff -urNp gegl-0.2.0.orig/examples/Makefile.in gegl-0.2.0/examples/Makefile.in +--- gegl-0.2.0.orig/examples/Makefile.in 2015-05-07 15:06:23.674649046 +0200 ++++ gegl-0.2.0/examples/Makefile.in 2015-05-07 16:13:36.057203261 +0200 +@@ -376,7 +376,7 @@ AM_CPPFLAGS = \ + AM_CFLAGS = $(DEP_CFLAGS) $(GTK_CFLAGS) $(BABL_CFLAGS) $(PNG_CFLAGS) + AM_LDFLAGS = \ + $(top_builddir)/gegl/libgegl-$(GEGL_API_VERSION).la \ +- $(DEP_LIBS) $(GTK_LIBS) $(BABL_LIBS) $(PNG_LIBS) ++ $(DEP_LIBS) $(GTK_LIBS) $(BABL_LIBS) $(PNG_LIBS) -lm + + all: all-recursive + +diff -urNp gegl-0.2.0.orig/tools/Makefile.in gegl-0.2.0/tools/Makefile.in +--- gegl-0.2.0.orig/tools/Makefile.in 2015-05-07 15:06:23.716649233 +0200 ++++ gegl-0.2.0/tools/Makefile.in 2015-05-07 15:31:43.643298848 +0200 +@@ -394,7 +394,7 @@ AM_CPPFLAGS = \ + AM_CFLAGS = $(DEP_CFLAGS) $(BABL_CFLAGS) + AM_LDFLAGS = \ + $(top_builddir)/gegl/libgegl-$(GEGL_API_VERSION).la \ +- $(DEP_LIBS) $(BABL_LIBS) ++ $(DEP_LIBS) $(BABL_LIBS) -lm + + @HAVE_EXIV2_TRUE@exp_combine_SOURCES = exp_combine.cpp + @HAVE_EXIV2_TRUE@exp_combine_LDADD = $(EXIV2_LIBS) diff --git a/patches/source/gegl/gegl-0.2.0-lua-5.2.patch b/patches/source/gegl/gegl-0.2.0-lua-5.2.patch new file mode 100644 index 000000000..e5a60bb9f --- /dev/null +++ b/patches/source/gegl/gegl-0.2.0-lua-5.2.patch @@ -0,0 +1,53 @@ +From 1e12a153d9a82a771c3bfd95c0265b810a424b3c Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Mon, 1 Jul 2013 14:41:33 +0200 +Subject: [PATCH] patch: lua-5.2 + +Squashed commit of the following: + +commit 96f65d260c6e40940f2818b721c19565c1b40607 +Author: Vincent Untz +Date: Wed Jan 11 09:52:25 2012 +0100 + + Fix build with lua 5.2 by not using API deprecated in 5.1 already + + https://bugzilla.gnome.org/show_bug.cgi?id=667675 + (cherry picked from commit a14a29c39352c60f003a65b721c9af8a1d8d20df) +--- + operations/workshop/external/gluas.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/operations/workshop/external/gluas.c b/operations/workshop/external/gluas.c +index 8ba1101..63e82a2 100644 +--- a/operations/workshop/external/gluas.c ++++ b/operations/workshop/external/gluas.c +@@ -97,7 +97,7 @@ static int l_progress (lua_State * lua); + static int l_flush (lua_State * lua); + static int l_print (lua_State * lua); + +-static const luaL_reg gluas_functions[] = ++static const luaL_Reg gluas_functions[] = + { + {"set_rgba", l_set_rgba}, + {"get_rgba", l_get_rgba}, +@@ -122,7 +122,7 @@ static const luaL_reg gluas_functions[] = + }; + static void + register_functions (lua_State *L, +- const luaL_reg *l) ++ const luaL_Reg *l) + { + for (;l->name; l++) + lua_register (L, l->name, l->func); +@@ -146,7 +146,7 @@ drawable_lua_process (GeglOperation *op, + lua_State *L; + Priv p; + +- L = lua_open (); ++ L = luaL_newstate (); + luaL_openlibs (L); + + register_functions (L, gluas_functions); +-- +1.8.3.1 + diff --git a/patches/source/gegl/gegl-0.2.0-remove-src-over-op.patch b/patches/source/gegl/gegl-0.2.0-remove-src-over-op.patch new file mode 100644 index 000000000..a823580fd --- /dev/null +++ b/patches/source/gegl/gegl-0.2.0-remove-src-over-op.patch @@ -0,0 +1,195 @@ +From 72168aba34445e4cd99aaed32d8e6a80e89ce729 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Mon, 1 Jul 2013 13:53:18 +0200 +Subject: [PATCH] patch: remove-src-over-op + +Squashed commit of the following: + +commit b766094d951bf1515a75408ee85d4e1af432e6bd +Author: Daniel Sabo +Date: Tue Jun 4 20:57:03 2013 -0700 + + Remove auto-generated svg:src-over + + It was already shadowed by gegl:over, which declares + svg:src-over as a compat-name. + + (cherry picked from commit c1caf2401271e8a17fd1937bf84279c250bd8e2a) + + Conflicts: + po/POTFILES.in +--- + operations/generated/src-over.c | 122 ----------------------------- + operations/generated/svg-12-porter-duff.rb | 5 +- + po/POTFILES.in | 3 +- + 3 files changed, 4 insertions(+), 126 deletions(-) + delete mode 100644 operations/generated/src-over.c + +diff --git a/operations/generated/src-over.c b/operations/generated/src-over.c +deleted file mode 100644 +index e586087..0000000 +--- a/operations/generated/src-over.c ++++ /dev/null +@@ -1,122 +0,0 @@ +- +-/* !!!! AUTOGENERATED FILE generated by svg-12-porter-duff.rb !!!!! +- * +- * This file is an image processing operation for GEGL +- * +- * GEGL is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Lesser General Public +- * License as published by the Free Software Foundation; either +- * version 3 of the License, or (at your option) any later version. +- * +- * GEGL is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- * Lesser General Public License for more details. +- * +- * You should have received a copy of the GNU Lesser General Public +- * License along with GEGL; if not, see . +- * +- * Copyright 2006, 2007 Øyvind KolÃ¥s +- * 2007 John Marshall +- * +- * SVG rendering modes; see: +- * http://www.w3.org/TR/SVG12/rendering.html +- * http://www.w3.org/TR/2004/WD-SVG12-20041027/rendering.html#comp-op-prop +- * +- * aA = aux(src) alpha aB = in(dst) alpha aD = out alpha +- * cA = aux(src) colour cB = in(dst) colour cD = out colour +- * +- * !!!! AUTOGENERATED FILE !!!!! +- */ +-#include "config.h" +-#include +- +- +-#ifdef GEGL_CHANT_PROPERTIES +- +-/* no properties */ +- +-#else +- +-#define GEGL_CHANT_TYPE_POINT_COMPOSER +-#define GEGL_CHANT_C_FILE "src-over.c" +- +-#include "gegl-chant.h" +- +-static void prepare (GeglOperation *operation) +-{ +- const Babl *format = babl_format ("RaGaBaA float"); +- +- gegl_operation_set_format (operation, "input", format); +- gegl_operation_set_format (operation, "aux", format); +- gegl_operation_set_format (operation, "output", format); +-} +- +-static gboolean +-process (GeglOperation *op, +- void *in_buf, +- void *aux_buf, +- void *out_buf, +- glong n_pixels, +- const GeglRectangle *roi, +- gint level) +-{ +- gint i; +- gfloat * GEGL_ALIGNED in = in_buf; +- gfloat * GEGL_ALIGNED aux = aux_buf; +- gfloat * GEGL_ALIGNED out = out_buf; +- +- if (aux==NULL) +- return TRUE; +- +- for (i = 0; i < n_pixels; i++) +- { +- gint j; +- gfloat aA G_GNUC_UNUSED, aB G_GNUC_UNUSED, aD G_GNUC_UNUSED; +- +- aB = in[3]; +- aA = aux[3]; +- aD = aA + aB - aA * aB; +- +- for (j = 0; j < 3; j++) +- { +- gfloat cA G_GNUC_UNUSED, cB G_GNUC_UNUSED; +- +- cB = in[j]; +- cA = aux[j]; +- out[j] = cA + cB * (1.0f - aA); +- } +- out[3] = aD; +- in += 4; +- aux += 4; +- out += 4; +- } +- return TRUE; +-} +- +- +-static void +-gegl_chant_class_init (GeglChantClass *klass) +-{ +- GeglOperationClass *operation_class; +- GeglOperationPointComposerClass *point_composer_class; +- +- operation_class = GEGL_OPERATION_CLASS (klass); +- point_composer_class = GEGL_OPERATION_POINT_COMPOSER_CLASS (klass); +- +- point_composer_class->process = process; +- operation_class->prepare = prepare; +- +- +- operation_class->compat_name = "gegl:src-over"; +- gegl_operation_class_set_keys (operation_class, +- "name" , "svg:src-over", +- "categories", "compositors:porter-duff", +- "description", +- _("Porter Duff operation src-over (d = cA + cB * (1.0f - aA))"), +- NULL); +- +- +-} +- +-#endif +diff --git a/operations/generated/svg-12-porter-duff.rb b/operations/generated/svg-12-porter-duff.rb +index 5516802..dab5d2f 100755 +--- a/operations/generated/svg-12-porter-duff.rb ++++ b/operations/generated/svg-12-porter-duff.rb +@@ -1,4 +1,5 @@ + #!/usr/bin/env ruby ++# encoding: utf-8 + + copyright = ' + /* !!!! AUTOGENERATED FILE generated by svg-12-porter-duff.rb !!!!! +@@ -38,8 +39,8 @@ a = [ + 'aA'], + ['dst', 'cB', + 'aB'], +- ['src_over', 'cA + cB * (1.0f - aA)', +- 'aA + aB - aA * aB'], ++# ['src_over', 'cA + cB * (1.0f - aA)', ++# 'aA + aB - aA * aB'], + ['dst_over', 'cB + cA * (1.0f - aB)', + 'aA + aB - aA * aB'], + ['dst_in', 'cB * aA', # <- XXX: typo? +diff --git a/po/POTFILES.in b/po/POTFILES.in +index e309594..d36cbc2 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -115,10 +115,9 @@ operations/generated/plus.c + operations/generated/screen.c + operations/generated/soft-light.c + operations/generated/src-atop.c ++operations/generated/src.c + operations/generated/src-in.c + operations/generated/src-out.c +-operations/generated/src-over.c +-operations/generated/src.c + operations/generated/subtract.c + operations/generated/svg-multiply.c + operations/generated/xor.c +-- +1.8.3.1 + diff --git a/patches/source/gegl/gegl.SlackBuild b/patches/source/gegl/gegl.SlackBuild new file mode 100755 index 000000000..61674ae3e --- /dev/null +++ b/patches/source/gegl/gegl.SlackBuild @@ -0,0 +1,116 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009 Robby Workman, Northport, Alabama, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo gegl-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-4_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-gegl + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf gegl-$VERSION +tar xvf $CWD/gegl-$VERSION.tar.?z* || exit 1 +cd gegl-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/gegl-0.2.0-lua-5.2.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/gegl-0.2.0-CVE-2012-4433.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/gegl-0.2.0-remove-src-over-op.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/gegl-0.2.0-linker-flags.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/gegl-0.2.0-libopenraw.patch.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --docdir=/usr/doc/gegl-$VERSION \ + --enable-gtk-doc \ + --disable-docs \ + --build=$ARCH-slackware-linux || exit 1 + +# Trust defaults: +# --enable-mmx \ +# --disable-sse \ + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc/gegl-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL NEWS README* TODO \ + $PKG/usr/doc/gegl-$VERSION +#( cd $PKG/usr/doc/gegl-$VERSION ; ln -s /usr/share/gtk-doc/html/gegl/ html ) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/gegl-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/gegl/slack-desc b/patches/source/gegl/slack-desc new file mode 100644 index 000000000..75eea8ad7 --- /dev/null +++ b/patches/source/gegl/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler--------------------------------------------------------| +gegl: GEGL (Generic Graphics Library) +gegl: +gegl: GEGL (Generic Graphics Library) is a graph based image processing +gegl: framework. +gegl: +gegl: GEGL provides infrastructure to do demand based cached non destructive +gegl: image editing on larger than RAM buffers. Through babl it provides +gegl: support for a wide range of color models and pixel storage formats for +gegl: input and output. +gegl: +gegl: diff --git a/patches/source/getmail/getmail.SlackBuild b/patches/source/getmail/getmail.SlackBuild new file mode 100755 index 000000000..a30826814 --- /dev/null +++ b/patches/source/getmail/getmail.SlackBuild @@ -0,0 +1,65 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +VERSION=${VERSION:-$(echo getmail-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-getmail +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf getmail-$VERSION +tar xvf $CWD/getmail-$VERSION.tar.xz || exit 1 +chown -R root:root getmail-$VERSION +cd getmail-$VERSION +python setup.py build || exit 1 +python setup.py install --root=$PKG || exit 1 + +( cd $PKG/usr/share + mv man .. + mv doc .. + cd .. + rmdir share +) + +gzip -9 $PKG/usr/man/man1/* + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/getmail-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/getmail/slack-desc b/patches/source/getmail/slack-desc new file mode 100644 index 000000000..6c91db1cc --- /dev/null +++ b/patches/source/getmail/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +getmail: getmail (POP3 mail retriever) +getmail: +getmail: getmail is a POP3 mail retriever, with support for both ordinary and +getmail: domain (or multidrop) POP3 mailboxes. It is written in Python, and +getmail: licensed under the GNU General Public License version 2. +getmail: +getmail: getmail was written by Charles Cazabon. +getmail: +getmail: +getmail: +getmail: diff --git a/patches/source/gimp/gimp.SlackBuild b/patches/source/gimp/gimp.SlackBuild new file mode 100755 index 000000000..c6a0ebaeb --- /dev/null +++ b/patches/source/gimp/gimp.SlackBuild @@ -0,0 +1,136 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=gimp +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-gimp +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +cd $TMP +rm -rf gimp-$VERSION +tar xvf $CWD/gimp-$VERSION.tar.?z* || exit 1 +cd gimp-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var/lib \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --docdir=/usr/doc/gimp-$VERSION \ + --disable-static \ + --with-libcurl \ + --with-lcms=lcms2 \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +mkdir -p $PKG/usr/share/applications $PKG/usr/share/application-registry +make install DESTDIR=$PKG || exit 1 + +# Add a manpage symlink for POLA-compliance +( cd $PKG/usr/man/man1 ; ln -sf gimptool-2.?.1 gimptool.1 ) + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/usr/doc/gimp-$VERSION +cp -a \ + AUTHORS COPYING* HACKING INSTALL LICENSE NEWS README* docs/Wilber* \ + $PKG/usr/doc/gimp-$VERSION +( cd $PKG/usr/doc/gimp-$VERSION + for i in \ + libgimp libgimpbase libgimpcolor libgimpconfig libgimpmath \ + libgimpmodule libgimpthumb libgimpwidgets ; do \ + ln -s /usr/share/gtk-doc/html/$i $i-html ; + done +) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/gimp-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/gimp/slack-desc b/patches/source/gimp/slack-desc new file mode 100644 index 000000000..9f9aca385 --- /dev/null +++ b/patches/source/gimp/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gimp: gimp (The GNU Image Manipulation Program) +gimp: +gimp: The GIMP is a powerful tool for the preparation and manipulation of +gimp: digital images. The GIMP provides the user with a wide variety of +gimp: image manipulation, painting, processing, and rendering tools. The +gimp: GIMP's open design and extensible architecture make for a very +gimp: powerful end product for photo and image retouching, web graphics +gimp: design, or digital illustration. +gimp: +gimp: +gimp: diff --git a/patches/source/git/git-2.14.1.tar.sign b/patches/source/git/git-2.14.1.tar.sign new file mode 100644 index 0000000000000000000000000000000000000000..2dffd4d31bea8110e72d6ce3ac49a76a9cd49bf2 GIT binary patch literal 543 zcmV+)0^t3L0vrSY0SEvF1p--%YKQ;|2@tTg=!TZB=F9U35Bv|amn&7ywu~CdR_&ME zaQeOHhtcMT6-aZEZ2gHx^@>A$lKt29gG1ovo1uftQuDu|zrmBsl$U3v*`sRV-@-06 zWvBCP>adcVL9(N=+~X27$*;BXx`alg45-X^*kUYBb=%*`}MF0fQ-UB5OLax zxQMvj@kvPl{)N zQ6X+j9MJ|;+)w~ALSTtq9!zihkR_xI^hf4 /dev/null 2> /dev/null ; then + echo "The git package needs to be removed before building to ensure that" + echo "the perl modules are included in the new package." + echo + echo "Removing the git package in 15 seconds, and then continuing with the build." + sleep 15 + removepkg git +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-git + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf git-$VERSION +tar xvf $CWD/git-$VERSION.tar.?z* || exit 1 +cd git-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +mkdir -p $PKG/usr/doc/git-$VERSION +cp -a \ + COPYING* INSTALL README \ + Documentation \ + contrib \ + $PKG/usr/doc/git-$VERSION +( cd $PKG/usr/doc/git-$VERSION/Documentation ; rm *.1 *.3 *.7 ) +( cd $PKG/usr/doc/git-$VERSION && find . -name ".git*" -exec rm -r "{}" \; ) + +make $NUMJOBS \ + prefix=/usr \ + mandir=/usr/man \ + CFLAGS="$SLKCFLAGS" \ + INSTALLDIRS=vendor \ + ASCIIDOC8=YesPlease \ + all doc || exit 1 + +make \ + prefix=/usr \ + mandir=/usr/man \ + "CFLAGS=$SLKCFLAGS" \ + INSTALLDIRS=vendor \ + ASCIIDOC8=YesPlease \ + install \ + install-doc \ + DESTDIR=$PKG || exit 1 + +mv $PKG/usr/share/man/man3 $PKG/usr/man +rmdir $PKG/usr/share/man + +# Don't stomp on perl's file: +rm -f $PKG/usr/lib*/perl5/perllocal.pod + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Since Stuart Winter hates hard links. ;-) +# +# Switch a hard link with a soft link: +( cd $PKG/usr/bin + find . -links +1 -not -name git | while read gitfile ; do + if [ git -ef $gitfile ]; then + rm -vf $gitfile + ln -vfs git $gitfile + fi + done +) + +# This removes our DESTDIR from the packlist filenames, to keep perl's +# internal inventories consistent and correct. +find $PKG -name .packlist | while read plist ; do + sed -e "s%/share/man%/man%g" \ + -e "s%$PKG%%g" \ + -e "s%\.1$%\.1\.gz%g" \ + -e "s%\.2$%\.2\.gz%g" \ + -e "s%\.3$%\.3\.gz%g" \ + -e "s%\.3pm$%\.3pm\.gz%g" \ + -e "s%\.4$%\.4\.gz%g" \ + -e "s%\.5$%\.5\.gz%g" \ + -e "s%\.6$%\.6\.gz%g" \ + -e "s%\.7$%\.7\.gz%g" \ + -e "s%\.8$%\.8\.gz%g" \ + ${plist} > ${plist}.new + mv -f ${plist}.new ${plist} +done + +# This is junk: +eval $(perl '-V:privlib') +( cd $PKG$(dirname $privlib) && rm -rf 5.* ) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/git-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/git/git.url b/patches/source/git/git.url new file mode 100644 index 000000000..a4c15db38 --- /dev/null +++ b/patches/source/git/git.url @@ -0,0 +1 @@ +https://www.kernel.org/pub/software/scm/git/ diff --git a/patches/source/git/slack-desc b/patches/source/git/slack-desc new file mode 100644 index 000000000..271b863a2 --- /dev/null +++ b/patches/source/git/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +git: git (the stupid content tracker) +git: +git: Git is a fast, scalable, distributed revision control system with an +git: unusually rich command set that provides both high-level operations +git: and full access to internals. +git: +git: "git" can mean anything, depending on your mood. +git: +git: Git was originally written by Linus Torvalds and is currently +git: maintained by Junio C. Hamano. +git: diff --git a/patches/source/gkrellm/gkrellm.SlackBuild b/patches/source/gkrellm/gkrellm.SlackBuild new file mode 100755 index 000000000..b8183fb68 --- /dev/null +++ b/patches/source/gkrellm/gkrellm.SlackBuild @@ -0,0 +1,149 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2016, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=gkrellm +VERSION=${VERSION:-$(echo $PKGNAM-2*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +PKGVER=$VERSION +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-gkrellm + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf gkrellm-$VERSION +tar xvf $CWD/gkrellm-$VERSION.tar.?z* || exit 1 +cd gkrellm-$VERSION || exit 1 +# Fix library paths (works for all ARCHs): +sed -i -e "s#lib/gkrellm2#lib${LIBDIRSUFFIX}/gkrellm2#g" $(grep -lr 'lib/gkrellm2' *) +# Increase the default width slightly, and don't use the text +# shadow effect by default (this seems better with Pango font +# rendering): +zcat $CWD/gkrellm.theme.defaults.diff.gz | patch -p1 --verbose || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +make \ + INSTALLROOT=/usr \ + INSTALLDIR=/usr/bin \ + INCLUDEDIR=/usr/include \ + MANDIR=/usr/man/man1 \ + LOCALEDIR=/usr/share/locale \ + PKGCONFIGDIR=/usr/lib${LIBDIRSUFFIX}/pkgconfig || exit 1 + +# We will need this installed to build plugins, so... +make install \ + INSTALLROOT=/usr \ + INSTALLDIR=/usr/bin \ + INCLUDEDIR=/usr/include \ + MANDIR=/usr/man/man1 \ + LOCALEDIR=/usr/share/locale \ + PKGCONFIGDIR=/usr/lib${LIBDIRSUFFIX}/pkgconfig || exit 1 + +# Install to the $PKG dir: +make install \ + INSTALLROOT=$PKG/usr \ + INSTALLDIR=$PKG/usr/bin \ + INCLUDEDIR=$PKG/usr/include \ + MANDIR=$PKG/usr/man/man1 \ + LOCALEDIR=$PKG/usr/share/locale \ + PKGCONFIGDIR=$PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig || exit 1 + +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/gkrellm2/plugins + +mkdir -p $PKG/usr/doc/gkrellm-$VERSION +cp -a \ + COPYRIGHT CREDITS INSTALL README* Themes.html \ + $PKG/usr/doc/gkrellm-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/gkrellm-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +gzip -9 $PKG/usr/man/man?/*.? + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Add optional plugin(s): +# The countdown plugin is needed to track X-Day. ;-) +COUNTDOWN=0.1.1 +cd $TMP +rm -rf gkrellm-countdown +tar xf $CWD/gkrellm-countdown-$COUNTDOWN.tar.gz || exit 1 +cd gkrellm-countdown || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +make || exit 1 +cp gkrellm-countdown.so $PKG/usr/lib${LIBDIRSUFFIX}/gkrellm2/plugins + +mkdir -p $PKG/usr/doc/gkrellm-countdown-$COUNTDOWN +cp -a \ + COPYING README \ + $PKG/usr/doc/gkrellm-countdown-$COUNTDOWN + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/gkrellm-countdown-$COUNTDOWN) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +cd $PKG +/sbin/makepkg -l y -c n $TMP/gkrellm-$PKGVER-$ARCH-$BUILD.txz + diff --git a/patches/source/gkrellm/gkrellm.theme.defaults.diff b/patches/source/gkrellm/gkrellm.theme.defaults.diff new file mode 100644 index 000000000..aff6a9fbc --- /dev/null +++ b/patches/source/gkrellm/gkrellm.theme.defaults.diff @@ -0,0 +1,11 @@ +--- ./src/config.c.orig 2008-10-03 19:33:37.000000000 -0500 ++++ ./src/config.c 2008-10-25 20:33:56.000000000 -0500 +@@ -1883,7 +1883,7 @@ + + _GK.chart_height_min = 5; + _GK.chart_height_max = 200; +- _GK.chart_width_ref = 60; ++ _GK.chart_width_ref = 75; + _GK.chart_text_no_fill = FALSE; + _GK.bg_separator_height = 2; + _GK.allow_scaling = FALSE; diff --git a/patches/source/gkrellm/slack-desc b/patches/source/gkrellm/slack-desc new file mode 100644 index 000000000..3540eb6a5 --- /dev/null +++ b/patches/source/gkrellm/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gkrellm: gkrellm (GNU Krell Monitors) +gkrellm: +gkrellm: GKrellM charts SMP CPU, load, Disk, and all active net interfaces +gkrellm: automatically. An on/off button and online timer for the PPP interface +gkrellm: is provided. Monitors for memory and swap usage, file system, internet +gkrellm: connections, APM laptop battery, mbox style mailboxes, and cpu temps. +gkrellm: Also includes an uptime monitor, hostname label, and clock/calendar. +gkrellm: +gkrellm: Bill Wilson is the author of GKrellM. +gkrellm: +gkrellm: diff --git a/patches/source/glib2/0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch b/patches/source/glib2/0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch new file mode 100644 index 000000000..a315a01b0 --- /dev/null +++ b/patches/source/glib2/0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch @@ -0,0 +1,25 @@ +From db641e32920ee8b553ab6f2d318aafa156e4390c Mon Sep 17 00:00:00 2001 +From: Evangelos Foutras +Date: Wed, 25 Nov 2015 23:29:18 +0200 +Subject: [PATCH] GDBusProxy: Fix a memory leak during initialization + +https://bugzilla.gnome.org/show_bug.cgi?id=758641 +--- + gio/gdbusproxy.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c +index 52a22fb..7b1140f 100644 +--- a/gio/gdbusproxy.c ++++ b/gio/gdbusproxy.c +@@ -1720,6 +1720,7 @@ async_initable_init_second_finish (GAsyncInitable *initable, + if (result != NULL) + { + process_get_all_reply (proxy, result); ++ g_variant_unref (result); + } + + proxy->priv->initialized = TRUE; +-- +2.6.3 + diff --git a/patches/source/glib2/doinst.sh b/patches/source/glib2/doinst.sh new file mode 100644 index 000000000..a14f9606c --- /dev/null +++ b/patches/source/glib2/doinst.sh @@ -0,0 +1,32 @@ +# Handle the incoming configuration files: +config() { + for infile in $1; do + NEW="$infile" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... + done +} + +# Prepare the new configuration files +for file in etc/profile.d/libglib2.csh.new etc/profile.d/libglib2.sh.new ; do + if test -e $(dirname $file)/$(basename $file .new) ; then + if [ ! -x $(dirname $file)/$(basename $file .new) ]; then + chmod 644 $file + else + chmod 755 $file + fi + fi + config $file +done + +# Try to run these. If they fail, no biggie. +chroot . /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas/ 1> /dev/null 2> /dev/null +chroot . /usr/bin/gio-querymodules @LIBDIR@/gio/modules/ 1> /dev/null 2> /dev/null + diff --git a/patches/source/glib2/glib.bug.758823.diff b/patches/source/glib2/glib.bug.758823.diff new file mode 100644 index 000000000..e92c03687 --- /dev/null +++ b/patches/source/glib2/glib.bug.758823.diff @@ -0,0 +1,40 @@ +From 30359e740953b596d6c3d980dba36dd131681a1f Mon Sep 17 00:00:00 2001 +From: Allison Ryan Lortie +Date: Mon, 30 Nov 2015 10:13:46 -0500 +Subject: file monitors: reorder some code to avoid segfault + +We must initialise '->source' before we use fields inside of it. + +https://bugzilla.gnome.org/show_bug.cgi?id=758823 +--- + gio/glocalfilemonitor.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c +index dbd62ec..49a4dd2 100644 +--- a/gio/glocalfilemonitor.c ++++ b/gio/glocalfilemonitor.c +@@ -748,6 +748,9 @@ g_local_file_monitor_start (GLocalFileMonitor *local_monitor, + + g_assert (!local_monitor->source); + ++ source = g_file_monitor_source_new (local_monitor, filename, is_directory, flags); ++ local_monitor->source = source; /* owns the ref */ ++ + if (is_directory && !class->mount_notify && (flags & G_FILE_MONITOR_WATCH_MOUNTS)) + { + #ifdef G_OS_WIN32 +@@ -771,9 +774,6 @@ g_local_file_monitor_start (GLocalFileMonitor *local_monitor, + #endif + } + +- source = g_file_monitor_source_new (local_monitor, filename, is_directory, flags); +- local_monitor->source = source; /* owns the ref */ +- + G_LOCAL_FILE_MONITOR_GET_CLASS (local_monitor)->start (local_monitor, + source->dirname, source->basename, source->filename, + source); +-- +cgit v0.12 + + diff --git a/patches/source/glib2/glib2.SlackBuild b/patches/source/glib2/glib2.SlackBuild new file mode 100755 index 000000000..0b39949ac --- /dev/null +++ b/patches/source/glib2/glib2.SlackBuild @@ -0,0 +1,145 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo glib-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-3_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-glib2 + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG/usr +cd $TMP +rm -rf glib-$VERSION +tar xvf $CWD/glib-$VERSION.tar.?z* || exit 1 +cd glib-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Silly upstream, using the bleeding edge. Reconf: +#autoreconf --force --install + +cat $CWD/0001-GDBusProxy-Fix-a-memory-leak-during-initialization.patch | patch -p1 --verbose || exit 1 + +# Patch from upsteam, fixes use-before-allocate bug: +cat $CWD/glib.bug.758823.diff | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --disable-libelf \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Install profile scripts: +mkdir -p $PKG/etc/profile.d/ +cp -a $CWD/libglib2.{csh,sh} $PKG/etc/profile.d/ +chown root:root $PKG/etc/profile.d/* +chmod 755 $PKG/etc/profile.d/* +mv $PKG/etc/profile.d/libglib2.csh $PKG/etc/profile.d/libglib2.csh.new +mv $PKG/etc/profile.d/libglib2.sh $PKG/etc/profile.d/libglib2.sh.new + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/usr/doc/glib-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* \ + $PKG/usr/doc/glib-$VERSION + rm -f $PKG/usr/doc/glib-$VERSION/README.{in,win32} +( cd $PKG/usr/doc/glib-$VERSION ; ln -s /usr/share/gtk-doc/html/gobject html ) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Trim down bloated NEWS file: +if [ -r NEWS ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat NEWS | head -n 1000 > $DOCSDIR/NEWS + touch -r NEWS $DOCSDIR/NEWS +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz | sed "s,@LIBDIR@,/usr/lib${LIBDIRSUFFIX}," > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n --prepend $TMP/glib2-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/glib2/libglib2.csh b/patches/source/glib2/libglib2.csh new file mode 100644 index 000000000..a1b675615 --- /dev/null +++ b/patches/source/glib2/libglib2.csh @@ -0,0 +1,27 @@ +#!/bin/csh +# +# Description: This script sets the environment variables G_FILENAME_ENCODING +# and G_BROKEN_FILENAMES for the glib-2.0 library. +# +# G_FILENAME_ENCODING +# This environment variable can be set to a comma-separated list of +# character set names. GLib assumes that filenames are encoded in the +# first character set from that list rather than in UTF-8. The special +# token "@locale" can be used to specify the character set for the +# current locale. +# +# G_BROKEN_FILENAMES +# If this environment variable is set, GLib assumes that filenames are +# in the locale encoding rather than in UTF-8. + +# If the LANG you have set contains any form of "UTF", we will guess you are +# using a UTF-8 locale. Hopefully we're correct. +echo $LANG | grep -iq UTF +if ($status == 0) then + setenv G_FILENAME_ENCODING "@locale" +endif + +# It doesn't hurt to export this since G_FILENAME_ENCODING takes priority +# over G_BROKEN_FILENAMES: +setenv G_BROKEN_FILENAMES 1 + diff --git a/patches/source/glib2/libglib2.sh b/patches/source/glib2/libglib2.sh new file mode 100644 index 000000000..9b9fdc69f --- /dev/null +++ b/patches/source/glib2/libglib2.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Description: This script sets the environment variables G_FILENAME_ENCODING +# and G_BROKEN_FILENAMES for the glib-2.0 library. +# +# G_FILENAME_ENCODING +# This environment variable can be set to a comma-separated list of +# character set names. GLib assumes that filenames are encoded in the +# first character set from that list rather than in UTF-8. The special +# token "@locale" can be used to specify the character set for the +# current locale. +# +# G_BROKEN_FILENAMES +# If this environment variable is set, GLib assumes that filenames are +# in the locale encoding rather than in UTF-8. + +# If the LANG you have set contains any form of "UTF", we will guess you are +# using a UTF-8 locale. Hopefully we're correct. +if echo $LANG | grep -iq UTF ; then + export G_FILENAME_ENCODING="@locale" +fi + +# It doesn't hurt to export this since G_FILENAME_ENCODING takes priority +# over G_BROKEN_FILENAMES: +export G_BROKEN_FILENAMES=1 + diff --git a/patches/source/glib2/slack-desc b/patches/source/glib2/slack-desc new file mode 100644 index 000000000..1633f2f7a --- /dev/null +++ b/patches/source/glib2/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glib2: glib2 (library of C routines) +glib2: +glib2: GLib is a library which includes support routines for C such as lists, +glib2: trees, hashes, memory allocation, and many other things. +glib2: +glib2: +glib2: +glib2: +glib2: +glib2: +glib2: diff --git a/patches/source/glibc-zoneinfo/doinst.sh b/patches/source/glibc-zoneinfo/doinst.sh new file mode 100644 index 000000000..3c86f65e4 --- /dev/null +++ b/patches/source/glibc-zoneinfo/doinst.sh @@ -0,0 +1,57 @@ +# In order to properly handle time before /usr is mounted (in +# the event that /usr is a separate partition, which for a number +# of reasons isn't really a great idea), the /etc/localtime file +# should be a copy of the desired zoneinfo file and not a symlink +# to a file in /usr/share/zoneinfo. But if we find a symlink here +# we should defer to the admin's wishes and leave it alone. +# +# Note that setting the timezone with timeconfig will wipe both +# /etc/localtime and /etc/localtime-copied from. +# /etc/localtime-copied-from will be a symlink to a file under +# /usr/share/zoneinfo, and /etc/localtime will be a copy of that file. + +# In a special case, we will handle the removal of the US/Pacific-New +# timezone. A bit of background information on this: +# +# "US/Pacific-New' stands for 'Pacific Presidential Election Time', +# which was passed by the House in April 1989 but never signed into law. +# In presidential election years, this rule would have delayed the +# PDT-to-PST switchover until after the election, to lessen the effect +# of broadcast news election projections on last-minute west-coast +# voters. " +# +# In nearly all cases, a machine that uses the US/Pacific-New timezone +# has chosen it by mistake. In 2016, having this as the system timezone +# actually led to clock errors, and after that it was decided that the +# timezone (only of historical interest anyway) should be removed from +# the timezone database. +# +# If we see that the machine's localtime-copied-from symlink is pointing +# to US/Pacific-New, change it to point to US/Pacific instead. +if [ "$(/bin/ls -l etc/localtime-copied-from | rev | cut -f 1,2 -d / | rev)" = "US/Pacific-New" ]; then + ( cd etc ; rm -rf localtime-copied-from ) + ( cd etc ; ln -sf /usr/share/zoneinfo/US/Pacific localtime-copied-from ) +fi + +# If we have no /etc/localtime, but we do have a localtime-copied-from +# symlink to locate what we would want there, then add a copy now: +if [ ! -r etc/localtime -a -L etc/localtime-copied-from ]; then + chroot . /bin/cp etc/localtime-copied-from etc/localtime +fi + +# Add the default timezone in /etc, if none exists: +if [ ! -r etc/localtime -a ! -L etc/localtime-copied-from ]; then + ( cd etc ; rm -rf localtime localtime-copied-from ) + ( cd etc ; ln -sf /usr/share/zoneinfo/Factory localtime-copied-from ) +fi + +# Make sure /etc/localtime is updated, unless it is a symlink (in which +# case leave it alone): +if [ ! -L etc/localtime ]; then + chroot . /bin/cp etc/localtime-copied-from etc/localtime +fi + +# Add a link to the timeconfig script in /usr/share/zoneinfo: +( cd usr/share/zoneinfo ; rm -rf timeconfig ) +( cd usr/share/zoneinfo ; ln -sf /usr/sbin/timeconfig timeconfig ) +### Make the rest of the symbolic links in the zoneinfo database: diff --git a/patches/source/glibc-zoneinfo/glibc-zoneinfo.SlackBuild b/patches/source/glibc-zoneinfo/glibc-zoneinfo.SlackBuild new file mode 100755 index 000000000..b294b01a3 --- /dev/null +++ b/patches/source/glibc-zoneinfo/glibc-zoneinfo.SlackBuild @@ -0,0 +1,147 @@ +#!/bin/sh + +# Copyright 2015, 2016, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=glibc-zoneinfo +ZONE_VERSIONS="$(echo tzdata* | cut -f1 -d . | cut -b7-11)" +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-DHAVE_SNPRINTF=1 -O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG/etc + +# Build and install the zoneinfo database: +cd $TMP +rm -rf tzcodedata-build +mkdir tzcodedata-build +cd tzcodedata-build +tar xzf $CWD/tzdata?????.tar.gz +tar xzf $CWD/tzcode?????.tar.gz + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +sed -i "s,/usr/local,$(pwd),g" Makefile +sed -i "s,/etc/zoneinfo,/zoneinfo,g" Makefile +sed -i "s,^CFLAGS=,CFLAGS= $SLKCFLAGS,g" Makefile +make +make install DESTDIR=$PKG/stage + +# Install the primary zone files: +mkdir -p $PKG/usr/share +mv $PKG/stage/usr/share/zoneinfo $PKG/usr/share + +# These are all identical to the normal zoneinfo files, so let's hard link +# them to save space: +cp -al $PKG/usr/share/zoneinfo $PKG/usr/share/posix +mv $PKG/usr/share/posix $PKG/usr/share/zoneinfo + +# Install the "right" files: +mkdir -p $PKG/usr/share/zoneinfo/right +cp -a $PKG/stage/usr/share/zoneinfo-leaps/* $PKG/usr/share/zoneinfo/right + +# Clean up staged file residue: +rm -rf $PKG/stage + +# Remove $PKG/usr/share/zoneinfo/localtime -- the install script will +# create it as a link to /etc/localtime. +rm -f $PKG/usr/share/zoneinfo/localtime + +# Install some scripts to help select a timezone: +mkdir -p $PKG/var/log/setup +cp -a $CWD/timezone-scripts/setup.timeconfig $PKG/var/log/setup +chown root:root $PKG/var/log/setup/setup.timeconfig +chmod 755 $PKG/var/log/setup/setup.timeconfig +mkdir -p $PKG/usr/sbin +cp -a $CWD/timezone-scripts/timeconfig $PKG/usr/sbin +chown root:root $PKG/usr/sbin/timeconfig +chmod 755 $PKG/usr/sbin/timeconfig +( cd $CWD/timezone-scripts + # Try to rebuild this: + sh output-updated-timeconfig.sh $PKG/usr/share/zoneinfo > $PKG/usr/sbin/timeconfig 2> /dev/null +) +# Note in timeconfig which zoneinfo database was used: +sed -i "s/# ChangeLog:/# ChangeLog:\n# $(date '+%Y-%m-%d'): Updated timezones from tzdata${ZONE_VERSIONS}./g" $PKG/usr/sbin/timeconfig + +# Don't forget to add the /usr/share/zoneinfo/localtime -> /etc/localtime symlink! :) +if [ ! -r $PKG/usr/share/zoneinfo/localtime ]; then + ( cd $PKG/usr/share/zoneinfo ; ln -sf /etc/localtime . ) +fi + +mkdir -p $PKG/usr/doc/glibc-zoneinfo-$ZONE_VERSIONS +cp -a \ + CONTRIBUTING NEWS README Theory \ + $PKG/usr/doc/glibc-zoneinfo-$ZONE_VERSIONS + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +makepkg -l y -c n $TMP/glibc-zoneinfo-$ZONE_VERSIONS-noarch-$BUILD.txz + diff --git a/patches/source/glibc-zoneinfo/slack-desc b/patches/source/glibc-zoneinfo/slack-desc new file mode 100644 index 000000000..69420f78d --- /dev/null +++ b/patches/source/glibc-zoneinfo/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-zoneinfo: glibc-zoneinfo (timezone database) +glibc-zoneinfo: +glibc-zoneinfo: This package allows you to configure your time zone. +glibc-zoneinfo: +glibc-zoneinfo: This timezone database comes from the tzdata and tzcode packages by +glibc-zoneinfo: Arthur David Olson et.al. The latest version and more information +glibc-zoneinfo: may be found at: http://www.iana.org/time-zones +glibc-zoneinfo: +glibc-zoneinfo: Use the timeconfig utility to set your local time zone. +glibc-zoneinfo: +glibc-zoneinfo: diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/output-updated-timeconfig.sh b/patches/source/glibc-zoneinfo/timezone-scripts/output-updated-timeconfig.sh new file mode 100755 index 000000000..268e4c6cc --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/output-updated-timeconfig.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# Copyright 2000, 2001, 2006, 2007, 2008, 2012 Patrick J. Volkerding, Sebeka, MN, USA. +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +if [ ! "$(basename "$1")" = "zoneinfo" -o ! -d "$1" ]; then + echo " Usage: output-updated-timeconfig.sh " + exit 1 +fi + +CWD=$(pwd) +cat $CWD/parts/00 +# Sorry, I'd rather not be US-centric but some people here have a hard +# time finding things. ;-) +( cd $1 + find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | cut -f 2- -d / | sort | grep "^US/" | while read zone ; do + echo "\"${zone}\" \" \" \\" + done +) +# Don't list right/ and posix/ zones, as these are wrong choices for most +# people. posix/ is just a duplicate of the normal zones, while right/ do +# not include leap seconds. Anyone actually needing something from one of +# those trees will have no problem selecting it by manually adjusting +# /etc/localtime. +( cd $1 + find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | cut -f 2- -d / | sort | grep -v "^US/" | grep -v "^posix/" | grep -v "^right/" | while read zone ; do + echo "\"${zone}\" \" \" \\" + done +) +cat $CWD/parts/02 +# US/ first: +( cd $1 + find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | cut -f 2- -d / | sort | grep "^US/" | while read zone ; do + echo "${zone}" + done +) +# Don't list right/ and posix/ zones: +( cd $1 + find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | cut -f 2- -d / | sort | grep -v "^US/" | grep -v "^posix/" | grep -v "^right/" | while read zone ; do + echo "${zone}" + done +) +cat $CWD/parts/04 diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/parts/00 b/patches/source/glibc-zoneinfo/timezone-scripts/parts/00 new file mode 100644 index 000000000..678094e16 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/parts/00 @@ -0,0 +1,132 @@ +#!/bin/sh +# +# timeconfig Slackware Linux timezone configuration utility. +# +# Author: Patrick Volkerding +# Modified by: David Cantrell , 06-Oct-2000 +# +# ChangeLog: +# 2014-10-22: Updated timezones from tzdata2014i. +# 2012-12-12: Updated timezones from tzdata2012j. +# 2008-03-10: Updated timezones from tzdata2008a. +# 2007-12-21: Updated timezones from tzdata2007j. +# 2006-12-03: Updated timezones from tzdata2006p. +# 2006-09-14: Updated timezones from tzdata2006k. +# 2006-08-22: Updated timezones from tzdata2006j. +# 2006-08-13: Updated timezones from tzdata2006g. +# 2006-03-13: Updated timezones from tzdata2006c. +# 19-Feb-2001 Add new timezones from glibc-2.2.2. +# 06-Oct-2000 Fixed a problem with selecting UTC time. It was writing +# the hardwareclock file to the root disk and not your dest +# partition. Changed the HWCLOCK_CONF variable to be +# $T_PX/etc/hardwareclock to fix this. Thanks to David L. +# Dickman for finding this and +# submitting a patch. +# +# 15-Mar-2000 Added the writeconf function to write out the +# /etc/hardwareclock file which tells what the hardware clock +# is set to (UTC or localtime). +# +# 03-Mar-2000 Reorganized script. Made one timezone set block, added +# stage that asks the user if the hardware clock is set to +# UTC. + +# setup our temp locations and variables +TMP=/var/log/setup/tmp +if [ -r $TMP/SeTT_PX ]; then + T_PX="`cat $TMP/SeTT_PX`" +elif [ ! "$!" = "" ]; then + T_PX=$1 +else + T_PX=/ +fi + +# the hardware clock configuration file +HWCLOCK_CONF=$T_PX/etc/hardwareclock + +# setzone( $TIMEZONE ) +# +# This function accepts a time zone as the only parameter and sets it as +# the default system time zone. +setzone() +{ + TZ=$1 + + cd $T_PX/etc + if [ -r $T_PX/usr/share/zoneinfo/$TZ -o \ + -r /var/log/mount/usr/share/zoneinfo/$TZ -o \ + -L $T_PX/usr/share/zoneinfo/$TZ -o \ + -L /var/log/mount/usr/share/zoneinfo/$TZ ]; then + rm -f localtime-copied-from + ln -sf /usr/share/zoneinfo/$TZ localtime-copied-from + rm -f localtime + cd .. + chroot . cp etc/localtime-copied-from etc/localtime + fi +} + +# writeconf( $CLOCK_SET_TO ) +# +# Writes out $HWCLOCK_CONF that tells rc.S how the hardware clock +# value is stored. +writeconf() +{ + echo "# /etc/hardwareclock" > $HWCLOCK_CONF + echo "#" >> $HWCLOCK_CONF + echo "# Tells how the hardware clock time is stored." >> $HWCLOCK_CONF + echo "# You should run timeconfig to edit this file." >> $HWCLOCK_CONF + echo >> $HWCLOCK_CONF + echo $1 >> $HWCLOCK_CONF +} + +# ask the user if the hardware clock is set for UTC/GMT +if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then + ### + ### use color menus here + ### + dialog --title "HARDWARE CLOCK SET TO UTC?" --menu "Is the hardware clock set \ +to Coordinated Universal Time (UTC/GMT)? If it is, select YES here. If the \ +hardware clock is set to the current local time (this is how most PCs are set \ +up), then say NO here. If you are not sure what this is, you should answer NO \ +here." 13 60 2 \ + "NO" "Hardware clock is set to local time" \ + "YES" "Hardware clock is set to UTC" \ + 2> $TMP/utc + if [ $? = 1 -o $? = 255 ]; then + rm -f $TMP/utc + exit + fi + if [ "`cat $TMP/utc`" = "YES" ]; then + # yes, the hardware clock is UTC + writeconf "UTC" + else # must be NO + writeconf "localtime" + fi + rm -f $TMP/utc +else + ### + ### use text prompts + ### + echo "Is the hardware clock set to Coordinated Universal Time (UTC/GMT)?" + echo "If it is, select 'y' here. If the hardware clock is set to the" + echo "current local time (this is how most PCs are set up), then say 'n'" + echo "here. If you are not sure what this is, you should answer 'n' here." + echo + echo -n "Is your hardware clock set to UTC ([y]es, [n]o)? " + read HEJAZ + + if [ "$HEJAZ" = "y" -o "$HEJAZ" = "Y" -o "$HEJAZ" = "YES" -o "$HEJAZ" = "yes" ]; then + # yes, the hardware clock is UTC + writeconf "UTC" + else + # default to localtime + writeconf "localtime" + fi +fi + +# Now set the correct timezone link: +if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then + ### + ### use color menus here + ### + dialog --title "TIMEZONE CONFIGURATION" --menu "Please select one of the following timezones for your machine:" 21 50 13 \ diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/parts/01 b/patches/source/glibc-zoneinfo/timezone-scripts/parts/01 new file mode 100644 index 000000000..999f67d77 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/parts/01 @@ -0,0 +1,585 @@ +"US/Alaska" " " \ +"US/Aleutian" " " \ +"US/Arizona" " " \ +"US/Central" " " \ +"US/East-Indiana" " " \ +"US/Eastern" " " \ +"US/Hawaii" " " \ +"US/Indiana-Starke" " " \ +"US/Michigan" " " \ +"US/Mountain" " " \ +"US/Pacific" " " \ +"US/Pacific-New" " " \ +"US/Samoa" " " \ +"Africa/Abidjan" " " \ +"Africa/Accra" " " \ +"Africa/Addis_Ababa" " " \ +"Africa/Algiers" " " \ +"Africa/Asmara" " " \ +"Africa/Asmera" " " \ +"Africa/Bamako" " " \ +"Africa/Bangui" " " \ +"Africa/Banjul" " " \ +"Africa/Bissau" " " \ +"Africa/Blantyre" " " \ +"Africa/Brazzaville" " " \ +"Africa/Bujumbura" " " \ +"Africa/Cairo" " " \ +"Africa/Casablanca" " " \ +"Africa/Ceuta" " " \ +"Africa/Conakry" " " \ +"Africa/Dakar" " " \ +"Africa/Dar_es_Salaam" " " \ +"Africa/Djibouti" " " \ +"Africa/Douala" " " \ +"Africa/El_Aaiun" " " \ +"Africa/Freetown" " " \ +"Africa/Gaborone" " " \ +"Africa/Harare" " " \ +"Africa/Johannesburg" " " \ +"Africa/Juba" " " \ +"Africa/Kampala" " " \ +"Africa/Khartoum" " " \ +"Africa/Kigali" " " \ +"Africa/Kinshasa" " " \ +"Africa/Lagos" " " \ +"Africa/Libreville" " " \ +"Africa/Lome" " " \ +"Africa/Luanda" " " \ +"Africa/Lubumbashi" " " \ +"Africa/Lusaka" " " \ +"Africa/Malabo" " " \ +"Africa/Maputo" " " \ +"Africa/Maseru" " " \ +"Africa/Mbabane" " " \ +"Africa/Mogadishu" " " \ +"Africa/Monrovia" " " \ +"Africa/Nairobi" " " \ +"Africa/Ndjamena" " " \ +"Africa/Niamey" " " \ +"Africa/Nouakchott" " " \ +"Africa/Ouagadougou" " " \ +"Africa/Porto-Novo" " " \ +"Africa/Sao_Tome" " " \ +"Africa/Timbuktu" " " \ +"Africa/Tripoli" " " \ +"Africa/Tunis" " " \ +"Africa/Windhoek" " " \ +"America/Adak" " " \ +"America/Anchorage" " " \ +"America/Anguilla" " " \ +"America/Antigua" " " \ +"America/Araguaina" " " \ +"America/Argentina/Buenos_Aires" " " \ +"America/Argentina/Catamarca" " " \ +"America/Argentina/ComodRivadavia" " " \ +"America/Argentina/Cordoba" " " \ +"America/Argentina/Jujuy" " " \ +"America/Argentina/La_Rioja" " " \ +"America/Argentina/Mendoza" " " \ +"America/Argentina/Rio_Gallegos" " " \ +"America/Argentina/Salta" " " \ +"America/Argentina/San_Juan" " " \ +"America/Argentina/San_Luis" " " \ +"America/Argentina/Tucuman" " " \ +"America/Argentina/Ushuaia" " " \ +"America/Aruba" " " \ +"America/Asuncion" " " \ +"America/Atikokan" " " \ +"America/Atka" " " \ +"America/Bahia" " " \ +"America/Bahia_Banderas" " " \ +"America/Barbados" " " \ +"America/Belem" " " \ +"America/Belize" " " \ +"America/Blanc-Sablon" " " \ +"America/Boa_Vista" " " \ +"America/Bogota" " " \ +"America/Boise" " " \ +"America/Buenos_Aires" " " \ +"America/Cambridge_Bay" " " \ +"America/Campo_Grande" " " \ +"America/Cancun" " " \ +"America/Caracas" " " \ +"America/Catamarca" " " \ +"America/Cayenne" " " \ +"America/Cayman" " " \ +"America/Chicago" " " \ +"America/Chihuahua" " " \ +"America/Coral_Harbour" " " \ +"America/Cordoba" " " \ +"America/Costa_Rica" " " \ +"America/Creston" " " \ +"America/Cuiaba" " " \ +"America/Curacao" " " \ +"America/Danmarkshavn" " " \ +"America/Dawson" " " \ +"America/Dawson_Creek" " " \ +"America/Denver" " " \ +"America/Detroit" " " \ +"America/Dominica" " " \ +"America/Edmonton" " " \ +"America/Eirunepe" " " \ +"America/El_Salvador" " " \ +"America/Ensenada" " " \ +"America/Fort_Nelson" " " \ +"America/Fort_Wayne" " " \ +"America/Fortaleza" " " \ +"America/Glace_Bay" " " \ +"America/Godthab" " " \ +"America/Goose_Bay" " " \ +"America/Grand_Turk" " " \ +"America/Grenada" " " \ +"America/Guadeloupe" " " \ +"America/Guatemala" " " \ +"America/Guayaquil" " " \ +"America/Guyana" " " \ +"America/Halifax" " " \ +"America/Havana" " " \ +"America/Hermosillo" " " \ +"America/Indiana/Indianapolis" " " \ +"America/Indiana/Knox" " " \ +"America/Indiana/Marengo" " " \ +"America/Indiana/Petersburg" " " \ +"America/Indiana/Tell_City" " " \ +"America/Indiana/Vevay" " " \ +"America/Indiana/Vincennes" " " \ +"America/Indiana/Winamac" " " \ +"America/Indianapolis" " " \ +"America/Inuvik" " " \ +"America/Iqaluit" " " \ +"America/Jamaica" " " \ +"America/Jujuy" " " \ +"America/Juneau" " " \ +"America/Kentucky/Louisville" " " \ +"America/Kentucky/Monticello" " " \ +"America/Knox_IN" " " \ +"America/Kralendijk" " " \ +"America/La_Paz" " " \ +"America/Lima" " " \ +"America/Los_Angeles" " " \ +"America/Louisville" " " \ +"America/Lower_Princes" " " \ +"America/Maceio" " " \ +"America/Managua" " " \ +"America/Manaus" " " \ +"America/Marigot" " " \ +"America/Martinique" " " \ +"America/Matamoros" " " \ +"America/Mazatlan" " " \ +"America/Mendoza" " " \ +"America/Menominee" " " \ +"America/Merida" " " \ +"America/Metlakatla" " " \ +"America/Mexico_City" " " \ +"America/Miquelon" " " \ +"America/Moncton" " " \ +"America/Monterrey" " " \ +"America/Montevideo" " " \ +"America/Montreal" " " \ +"America/Montserrat" " " \ +"America/Nassau" " " \ +"America/New_York" " " \ +"America/Nipigon" " " \ +"America/Nome" " " \ +"America/Noronha" " " \ +"America/North_Dakota/Beulah" " " \ +"America/North_Dakota/Center" " " \ +"America/North_Dakota/New_Salem" " " \ +"America/Ojinaga" " " \ +"America/Panama" " " \ +"America/Pangnirtung" " " \ +"America/Paramaribo" " " \ +"America/Phoenix" " " \ +"America/Port-au-Prince" " " \ +"America/Port_of_Spain" " " \ +"America/Porto_Acre" " " \ +"America/Porto_Velho" " " \ +"America/Puerto_Rico" " " \ +"America/Rainy_River" " " \ +"America/Rankin_Inlet" " " \ +"America/Recife" " " \ +"America/Regina" " " \ +"America/Resolute" " " \ +"America/Rio_Branco" " " \ +"America/Rosario" " " \ +"America/Santa_Isabel" " " \ +"America/Santarem" " " \ +"America/Santiago" " " \ +"America/Santo_Domingo" " " \ +"America/Sao_Paulo" " " \ +"America/Scoresbysund" " " \ +"America/Shiprock" " " \ +"America/Sitka" " " \ +"America/St_Barthelemy" " " \ +"America/St_Johns" " " \ +"America/St_Kitts" " " \ +"America/St_Lucia" " " \ +"America/St_Thomas" " " \ +"America/St_Vincent" " " \ +"America/Swift_Current" " " \ +"America/Tegucigalpa" " " \ +"America/Thule" " " \ +"America/Thunder_Bay" " " \ +"America/Tijuana" " " \ +"America/Toronto" " " \ +"America/Tortola" " " \ +"America/Vancouver" " " \ +"America/Virgin" " " \ +"America/Whitehorse" " " \ +"America/Winnipeg" " " \ +"America/Yakutat" " " \ +"America/Yellowknife" " " \ +"Antarctica/Casey" " " \ +"Antarctica/Davis" " " \ +"Antarctica/DumontDUrville" " " \ +"Antarctica/Macquarie" " " \ +"Antarctica/Mawson" " " \ +"Antarctica/McMurdo" " " \ +"Antarctica/Palmer" " " \ +"Antarctica/Rothera" " " \ +"Antarctica/South_Pole" " " \ +"Antarctica/Syowa" " " \ +"Antarctica/Troll" " " \ +"Antarctica/Vostok" " " \ +"Arctic/Longyearbyen" " " \ +"Asia/Aden" " " \ +"Asia/Almaty" " " \ +"Asia/Amman" " " \ +"Asia/Anadyr" " " \ +"Asia/Aqtau" " " \ +"Asia/Aqtobe" " " \ +"Asia/Ashgabat" " " \ +"Asia/Ashkhabad" " " \ +"Asia/Baghdad" " " \ +"Asia/Bahrain" " " \ +"Asia/Baku" " " \ +"Asia/Bangkok" " " \ +"Asia/Beirut" " " \ +"Asia/Bishkek" " " \ +"Asia/Brunei" " " \ +"Asia/Calcutta" " " \ +"Asia/Chita" " " \ +"Asia/Choibalsan" " " \ +"Asia/Chongqing" " " \ +"Asia/Chungking" " " \ +"Asia/Colombo" " " \ +"Asia/Dacca" " " \ +"Asia/Damascus" " " \ +"Asia/Dhaka" " " \ +"Asia/Dili" " " \ +"Asia/Dubai" " " \ +"Asia/Dushanbe" " " \ +"Asia/Gaza" " " \ +"Asia/Harbin" " " \ +"Asia/Hebron" " " \ +"Asia/Ho_Chi_Minh" " " \ +"Asia/Hong_Kong" " " \ +"Asia/Hovd" " " \ +"Asia/Irkutsk" " " \ +"Asia/Istanbul" " " \ +"Asia/Jakarta" " " \ +"Asia/Jayapura" " " \ +"Asia/Jerusalem" " " \ +"Asia/Kabul" " " \ +"Asia/Kamchatka" " " \ +"Asia/Karachi" " " \ +"Asia/Kashgar" " " \ +"Asia/Kathmandu" " " \ +"Asia/Katmandu" " " \ +"Asia/Khandyga" " " \ +"Asia/Kolkata" " " \ +"Asia/Krasnoyarsk" " " \ +"Asia/Kuala_Lumpur" " " \ +"Asia/Kuching" " " \ +"Asia/Kuwait" " " \ +"Asia/Macao" " " \ +"Asia/Macau" " " \ +"Asia/Magadan" " " \ +"Asia/Makassar" " " \ +"Asia/Manila" " " \ +"Asia/Muscat" " " \ +"Asia/Nicosia" " " \ +"Asia/Novokuznetsk" " " \ +"Asia/Novosibirsk" " " \ +"Asia/Omsk" " " \ +"Asia/Oral" " " \ +"Asia/Phnom_Penh" " " \ +"Asia/Pontianak" " " \ +"Asia/Pyongyang" " " \ +"Asia/Qatar" " " \ +"Asia/Qyzylorda" " " \ +"Asia/Rangoon" " " \ +"Asia/Riyadh" " " \ +"Asia/Saigon" " " \ +"Asia/Sakhalin" " " \ +"Asia/Samarkand" " " \ +"Asia/Seoul" " " \ +"Asia/Shanghai" " " \ +"Asia/Singapore" " " \ +"Asia/Srednekolymsk" " " \ +"Asia/Taipei" " " \ +"Asia/Tashkent" " " \ +"Asia/Tbilisi" " " \ +"Asia/Tehran" " " \ +"Asia/Tel_Aviv" " " \ +"Asia/Thimbu" " " \ +"Asia/Thimphu" " " \ +"Asia/Tokyo" " " \ +"Asia/Ujung_Pandang" " " \ +"Asia/Ulaanbaatar" " " \ +"Asia/Ulan_Bator" " " \ +"Asia/Urumqi" " " \ +"Asia/Ust-Nera" " " \ +"Asia/Vientiane" " " \ +"Asia/Vladivostok" " " \ +"Asia/Yakutsk" " " \ +"Asia/Yekaterinburg" " " \ +"Asia/Yerevan" " " \ +"Atlantic/Azores" " " \ +"Atlantic/Bermuda" " " \ +"Atlantic/Canary" " " \ +"Atlantic/Cape_Verde" " " \ +"Atlantic/Faeroe" " " \ +"Atlantic/Faroe" " " \ +"Atlantic/Jan_Mayen" " " \ +"Atlantic/Madeira" " " \ +"Atlantic/Reykjavik" " " \ +"Atlantic/South_Georgia" " " \ +"Atlantic/St_Helena" " " \ +"Atlantic/Stanley" " " \ +"Australia/ACT" " " \ +"Australia/Adelaide" " " \ +"Australia/Brisbane" " " \ +"Australia/Broken_Hill" " " \ +"Australia/Canberra" " " \ +"Australia/Currie" " " \ +"Australia/Darwin" " " \ +"Australia/Eucla" " " \ +"Australia/Hobart" " " \ +"Australia/LHI" " " \ +"Australia/Lindeman" " " \ +"Australia/Lord_Howe" " " \ +"Australia/Melbourne" " " \ +"Australia/NSW" " " \ +"Australia/North" " " \ +"Australia/Perth" " " \ +"Australia/Queensland" " " \ +"Australia/South" " " \ +"Australia/Sydney" " " \ +"Australia/Tasmania" " " \ +"Australia/Victoria" " " \ +"Australia/West" " " \ +"Australia/Yancowinna" " " \ +"Brazil/Acre" " " \ +"Brazil/DeNoronha" " " \ +"Brazil/East" " " \ +"Brazil/West" " " \ +"CET" " " \ +"CST6CDT" " " \ +"Canada/Atlantic" " " \ +"Canada/Central" " " \ +"Canada/East-Saskatchewan" " " \ +"Canada/Eastern" " " \ +"Canada/Mountain" " " \ +"Canada/Newfoundland" " " \ +"Canada/Pacific" " " \ +"Canada/Saskatchewan" " " \ +"Canada/Yukon" " " \ +"Chile/Continental" " " \ +"Chile/EasterIsland" " " \ +"Cuba" " " \ +"EET" " " \ +"EST" " " \ +"EST5EDT" " " \ +"Egypt" " " \ +"Eire" " " \ +"Etc/GMT" " " \ +"Etc/GMT+0" " " \ +"Etc/GMT+1" " " \ +"Etc/GMT+10" " " \ +"Etc/GMT+11" " " \ +"Etc/GMT+12" " " \ +"Etc/GMT+2" " " \ +"Etc/GMT+3" " " \ +"Etc/GMT+4" " " \ +"Etc/GMT+5" " " \ +"Etc/GMT+6" " " \ +"Etc/GMT+7" " " \ +"Etc/GMT+8" " " \ +"Etc/GMT+9" " " \ +"Etc/GMT-0" " " \ +"Etc/GMT-1" " " \ +"Etc/GMT-10" " " \ +"Etc/GMT-11" " " \ +"Etc/GMT-12" " " \ +"Etc/GMT-13" " " \ +"Etc/GMT-14" " " \ +"Etc/GMT-2" " " \ +"Etc/GMT-3" " " \ +"Etc/GMT-4" " " \ +"Etc/GMT-5" " " \ +"Etc/GMT-6" " " \ +"Etc/GMT-7" " " \ +"Etc/GMT-8" " " \ +"Etc/GMT-9" " " \ +"Etc/GMT0" " " \ +"Etc/Greenwich" " " \ +"Etc/UCT" " " \ +"Etc/UTC" " " \ +"Etc/Universal" " " \ +"Etc/Zulu" " " \ +"Europe/Amsterdam" " " \ +"Europe/Andorra" " " \ +"Europe/Athens" " " \ +"Europe/Belfast" " " \ +"Europe/Belgrade" " " \ +"Europe/Berlin" " " \ +"Europe/Bratislava" " " \ +"Europe/Brussels" " " \ +"Europe/Bucharest" " " \ +"Europe/Budapest" " " \ +"Europe/Busingen" " " \ +"Europe/Chisinau" " " \ +"Europe/Copenhagen" " " \ +"Europe/Dublin" " " \ +"Europe/Gibraltar" " " \ +"Europe/Guernsey" " " \ +"Europe/Helsinki" " " \ +"Europe/Isle_of_Man" " " \ +"Europe/Istanbul" " " \ +"Europe/Jersey" " " \ +"Europe/Kaliningrad" " " \ +"Europe/Kiev" " " \ +"Europe/Lisbon" " " \ +"Europe/Ljubljana" " " \ +"Europe/London" " " \ +"Europe/Luxembourg" " " \ +"Europe/Madrid" " " \ +"Europe/Malta" " " \ +"Europe/Mariehamn" " " \ +"Europe/Minsk" " " \ +"Europe/Monaco" " " \ +"Europe/Moscow" " " \ +"Europe/Nicosia" " " \ +"Europe/Oslo" " " \ +"Europe/Paris" " " \ +"Europe/Podgorica" " " \ +"Europe/Prague" " " \ +"Europe/Riga" " " \ +"Europe/Rome" " " \ +"Europe/Samara" " " \ +"Europe/San_Marino" " " \ +"Europe/Sarajevo" " " \ +"Europe/Simferopol" " " \ +"Europe/Skopje" " " \ +"Europe/Sofia" " " \ +"Europe/Stockholm" " " \ +"Europe/Tallinn" " " \ +"Europe/Tirane" " " \ +"Europe/Tiraspol" " " \ +"Europe/Uzhgorod" " " \ +"Europe/Vaduz" " " \ +"Europe/Vatican" " " \ +"Europe/Vienna" " " \ +"Europe/Vilnius" " " \ +"Europe/Volgograd" " " \ +"Europe/Warsaw" " " \ +"Europe/Zagreb" " " \ +"Europe/Zaporozhye" " " \ +"Europe/Zurich" " " \ +"Factory" " " \ +"GB" " " \ +"GB-Eire" " " \ +"GMT" " " \ +"GMT+0" " " \ +"GMT-0" " " \ +"GMT0" " " \ +"Greenwich" " " \ +"HST" " " \ +"Hongkong" " " \ +"Iceland" " " \ +"Indian/Antananarivo" " " \ +"Indian/Chagos" " " \ +"Indian/Christmas" " " \ +"Indian/Cocos" " " \ +"Indian/Comoro" " " \ +"Indian/Kerguelen" " " \ +"Indian/Mahe" " " \ +"Indian/Maldives" " " \ +"Indian/Mauritius" " " \ +"Indian/Mayotte" " " \ +"Indian/Reunion" " " \ +"Iran" " " \ +"Israel" " " \ +"Jamaica" " " \ +"Japan" " " \ +"Kwajalein" " " \ +"Libya" " " \ +"MET" " " \ +"MST" " " \ +"MST7MDT" " " \ +"Mexico/BajaNorte" " " \ +"Mexico/BajaSur" " " \ +"Mexico/General" " " \ +"NZ" " " \ +"NZ-CHAT" " " \ +"Navajo" " " \ +"PRC" " " \ +"PST8PDT" " " \ +"Pacific/Apia" " " \ +"Pacific/Auckland" " " \ +"Pacific/Bougainville" " " \ +"Pacific/Chatham" " " \ +"Pacific/Chuuk" " " \ +"Pacific/Easter" " " \ +"Pacific/Efate" " " \ +"Pacific/Enderbury" " " \ +"Pacific/Fakaofo" " " \ +"Pacific/Fiji" " " \ +"Pacific/Funafuti" " " \ +"Pacific/Galapagos" " " \ +"Pacific/Gambier" " " \ +"Pacific/Guadalcanal" " " \ +"Pacific/Guam" " " \ +"Pacific/Honolulu" " " \ +"Pacific/Johnston" " " \ +"Pacific/Kiritimati" " " \ +"Pacific/Kosrae" " " \ +"Pacific/Kwajalein" " " \ +"Pacific/Majuro" " " \ +"Pacific/Marquesas" " " \ +"Pacific/Midway" " " \ +"Pacific/Nauru" " " \ +"Pacific/Niue" " " \ +"Pacific/Norfolk" " " \ +"Pacific/Noumea" " " \ +"Pacific/Pago_Pago" " " \ +"Pacific/Palau" " " \ +"Pacific/Pitcairn" " " \ +"Pacific/Pohnpei" " " \ +"Pacific/Ponape" " " \ +"Pacific/Port_Moresby" " " \ +"Pacific/Rarotonga" " " \ +"Pacific/Saipan" " " \ +"Pacific/Samoa" " " \ +"Pacific/Tahiti" " " \ +"Pacific/Tarawa" " " \ +"Pacific/Tongatapu" " " \ +"Pacific/Truk" " " \ +"Pacific/Wake" " " \ +"Pacific/Wallis" " " \ +"Pacific/Yap" " " \ +"Poland" " " \ +"Portugal" " " \ +"ROC" " " \ +"ROK" " " \ +"Singapore" " " \ +"Turkey" " " \ +"UCT" " " \ +"UTC" " " \ +"Universal" " " \ +"W-SU" " " \ +"WET" " " \ +"Zulu" " " \ +"posixrules" " " \ diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/parts/02 b/patches/source/glibc-zoneinfo/timezone-scripts/parts/02 new file mode 100644 index 000000000..bd5a50bb0 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/parts/02 @@ -0,0 +1,28 @@ + 2> $TMP/tz + + if [ $? = 1 -o $? = 255 ]; then + rm -f $TMP/tz + exit + fi + + TIMEZONE="`cat $TMP/tz`" + rm -f $TMP/tz + + setzone $TIMEZONE + exit +else + ### + ### use text prompts + ### + while [ 0 ]; do + echo -n "Would you like to configure your timezone ([y]es, [n]o)? " + read TIMECONF; + echo + + if [ "$TIMECONF" = "n" ]; then + break + fi + + cat << EOF +Select one of these timezones: + diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/parts/03 b/patches/source/glibc-zoneinfo/timezone-scripts/parts/03 new file mode 100644 index 000000000..f595dfab0 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/parts/03 @@ -0,0 +1,585 @@ +US/Alaska +US/Aleutian +US/Arizona +US/Central +US/East-Indiana +US/Eastern +US/Hawaii +US/Indiana-Starke +US/Michigan +US/Mountain +US/Pacific +US/Pacific-New +US/Samoa +Africa/Abidjan +Africa/Accra +Africa/Addis_Ababa +Africa/Algiers +Africa/Asmara +Africa/Asmera +Africa/Bamako +Africa/Bangui +Africa/Banjul +Africa/Bissau +Africa/Blantyre +Africa/Brazzaville +Africa/Bujumbura +Africa/Cairo +Africa/Casablanca +Africa/Ceuta +Africa/Conakry +Africa/Dakar +Africa/Dar_es_Salaam +Africa/Djibouti +Africa/Douala +Africa/El_Aaiun +Africa/Freetown +Africa/Gaborone +Africa/Harare +Africa/Johannesburg +Africa/Juba +Africa/Kampala +Africa/Khartoum +Africa/Kigali +Africa/Kinshasa +Africa/Lagos +Africa/Libreville +Africa/Lome +Africa/Luanda +Africa/Lubumbashi +Africa/Lusaka +Africa/Malabo +Africa/Maputo +Africa/Maseru +Africa/Mbabane +Africa/Mogadishu +Africa/Monrovia +Africa/Nairobi +Africa/Ndjamena +Africa/Niamey +Africa/Nouakchott +Africa/Ouagadougou +Africa/Porto-Novo +Africa/Sao_Tome +Africa/Timbuktu +Africa/Tripoli +Africa/Tunis +Africa/Windhoek +America/Adak +America/Anchorage +America/Anguilla +America/Antigua +America/Araguaina +America/Argentina/Buenos_Aires +America/Argentina/Catamarca +America/Argentina/ComodRivadavia +America/Argentina/Cordoba +America/Argentina/Jujuy +America/Argentina/La_Rioja +America/Argentina/Mendoza +America/Argentina/Rio_Gallegos +America/Argentina/Salta +America/Argentina/San_Juan +America/Argentina/San_Luis +America/Argentina/Tucuman +America/Argentina/Ushuaia +America/Aruba +America/Asuncion +America/Atikokan +America/Atka +America/Bahia +America/Bahia_Banderas +America/Barbados +America/Belem +America/Belize +America/Blanc-Sablon +America/Boa_Vista +America/Bogota +America/Boise +America/Buenos_Aires +America/Cambridge_Bay +America/Campo_Grande +America/Cancun +America/Caracas +America/Catamarca +America/Cayenne +America/Cayman +America/Chicago +America/Chihuahua +America/Coral_Harbour +America/Cordoba +America/Costa_Rica +America/Creston +America/Cuiaba +America/Curacao +America/Danmarkshavn +America/Dawson +America/Dawson_Creek +America/Denver +America/Detroit +America/Dominica +America/Edmonton +America/Eirunepe +America/El_Salvador +America/Ensenada +America/Fort_Nelson +America/Fort_Wayne +America/Fortaleza +America/Glace_Bay +America/Godthab +America/Goose_Bay +America/Grand_Turk +America/Grenada +America/Guadeloupe +America/Guatemala +America/Guayaquil +America/Guyana +America/Halifax +America/Havana +America/Hermosillo +America/Indiana/Indianapolis +America/Indiana/Knox +America/Indiana/Marengo +America/Indiana/Petersburg +America/Indiana/Tell_City +America/Indiana/Vevay +America/Indiana/Vincennes +America/Indiana/Winamac +America/Indianapolis +America/Inuvik +America/Iqaluit +America/Jamaica +America/Jujuy +America/Juneau +America/Kentucky/Louisville +America/Kentucky/Monticello +America/Knox_IN +America/Kralendijk +America/La_Paz +America/Lima +America/Los_Angeles +America/Louisville +America/Lower_Princes +America/Maceio +America/Managua +America/Manaus +America/Marigot +America/Martinique +America/Matamoros +America/Mazatlan +America/Mendoza +America/Menominee +America/Merida +America/Metlakatla +America/Mexico_City +America/Miquelon +America/Moncton +America/Monterrey +America/Montevideo +America/Montreal +America/Montserrat +America/Nassau +America/New_York +America/Nipigon +America/Nome +America/Noronha +America/North_Dakota/Beulah +America/North_Dakota/Center +America/North_Dakota/New_Salem +America/Ojinaga +America/Panama +America/Pangnirtung +America/Paramaribo +America/Phoenix +America/Port-au-Prince +America/Port_of_Spain +America/Porto_Acre +America/Porto_Velho +America/Puerto_Rico +America/Rainy_River +America/Rankin_Inlet +America/Recife +America/Regina +America/Resolute +America/Rio_Branco +America/Rosario +America/Santa_Isabel +America/Santarem +America/Santiago +America/Santo_Domingo +America/Sao_Paulo +America/Scoresbysund +America/Shiprock +America/Sitka +America/St_Barthelemy +America/St_Johns +America/St_Kitts +America/St_Lucia +America/St_Thomas +America/St_Vincent +America/Swift_Current +America/Tegucigalpa +America/Thule +America/Thunder_Bay +America/Tijuana +America/Toronto +America/Tortola +America/Vancouver +America/Virgin +America/Whitehorse +America/Winnipeg +America/Yakutat +America/Yellowknife +Antarctica/Casey +Antarctica/Davis +Antarctica/DumontDUrville +Antarctica/Macquarie +Antarctica/Mawson +Antarctica/McMurdo +Antarctica/Palmer +Antarctica/Rothera +Antarctica/South_Pole +Antarctica/Syowa +Antarctica/Troll +Antarctica/Vostok +Arctic/Longyearbyen +Asia/Aden +Asia/Almaty +Asia/Amman +Asia/Anadyr +Asia/Aqtau +Asia/Aqtobe +Asia/Ashgabat +Asia/Ashkhabad +Asia/Baghdad +Asia/Bahrain +Asia/Baku +Asia/Bangkok +Asia/Beirut +Asia/Bishkek +Asia/Brunei +Asia/Calcutta +Asia/Chita +Asia/Choibalsan +Asia/Chongqing +Asia/Chungking +Asia/Colombo +Asia/Dacca +Asia/Damascus +Asia/Dhaka +Asia/Dili +Asia/Dubai +Asia/Dushanbe +Asia/Gaza +Asia/Harbin +Asia/Hebron +Asia/Ho_Chi_Minh +Asia/Hong_Kong +Asia/Hovd +Asia/Irkutsk +Asia/Istanbul +Asia/Jakarta +Asia/Jayapura +Asia/Jerusalem +Asia/Kabul +Asia/Kamchatka +Asia/Karachi +Asia/Kashgar +Asia/Kathmandu +Asia/Katmandu +Asia/Khandyga +Asia/Kolkata +Asia/Krasnoyarsk +Asia/Kuala_Lumpur +Asia/Kuching +Asia/Kuwait +Asia/Macao +Asia/Macau +Asia/Magadan +Asia/Makassar +Asia/Manila +Asia/Muscat +Asia/Nicosia +Asia/Novokuznetsk +Asia/Novosibirsk +Asia/Omsk +Asia/Oral +Asia/Phnom_Penh +Asia/Pontianak +Asia/Pyongyang +Asia/Qatar +Asia/Qyzylorda +Asia/Rangoon +Asia/Riyadh +Asia/Saigon +Asia/Sakhalin +Asia/Samarkand +Asia/Seoul +Asia/Shanghai +Asia/Singapore +Asia/Srednekolymsk +Asia/Taipei +Asia/Tashkent +Asia/Tbilisi +Asia/Tehran +Asia/Tel_Aviv +Asia/Thimbu +Asia/Thimphu +Asia/Tokyo +Asia/Ujung_Pandang +Asia/Ulaanbaatar +Asia/Ulan_Bator +Asia/Urumqi +Asia/Ust-Nera +Asia/Vientiane +Asia/Vladivostok +Asia/Yakutsk +Asia/Yekaterinburg +Asia/Yerevan +Atlantic/Azores +Atlantic/Bermuda +Atlantic/Canary +Atlantic/Cape_Verde +Atlantic/Faeroe +Atlantic/Faroe +Atlantic/Jan_Mayen +Atlantic/Madeira +Atlantic/Reykjavik +Atlantic/South_Georgia +Atlantic/St_Helena +Atlantic/Stanley +Australia/ACT +Australia/Adelaide +Australia/Brisbane +Australia/Broken_Hill +Australia/Canberra +Australia/Currie +Australia/Darwin +Australia/Eucla +Australia/Hobart +Australia/LHI +Australia/Lindeman +Australia/Lord_Howe +Australia/Melbourne +Australia/NSW +Australia/North +Australia/Perth +Australia/Queensland +Australia/South +Australia/Sydney +Australia/Tasmania +Australia/Victoria +Australia/West +Australia/Yancowinna +Brazil/Acre +Brazil/DeNoronha +Brazil/East +Brazil/West +CET +CST6CDT +Canada/Atlantic +Canada/Central +Canada/East-Saskatchewan +Canada/Eastern +Canada/Mountain +Canada/Newfoundland +Canada/Pacific +Canada/Saskatchewan +Canada/Yukon +Chile/Continental +Chile/EasterIsland +Cuba +EET +EST +EST5EDT +Egypt +Eire +Etc/GMT +Etc/GMT+0 +Etc/GMT+1 +Etc/GMT+10 +Etc/GMT+11 +Etc/GMT+12 +Etc/GMT+2 +Etc/GMT+3 +Etc/GMT+4 +Etc/GMT+5 +Etc/GMT+6 +Etc/GMT+7 +Etc/GMT+8 +Etc/GMT+9 +Etc/GMT-0 +Etc/GMT-1 +Etc/GMT-10 +Etc/GMT-11 +Etc/GMT-12 +Etc/GMT-13 +Etc/GMT-14 +Etc/GMT-2 +Etc/GMT-3 +Etc/GMT-4 +Etc/GMT-5 +Etc/GMT-6 +Etc/GMT-7 +Etc/GMT-8 +Etc/GMT-9 +Etc/GMT0 +Etc/Greenwich +Etc/UCT +Etc/UTC +Etc/Universal +Etc/Zulu +Europe/Amsterdam +Europe/Andorra +Europe/Athens +Europe/Belfast +Europe/Belgrade +Europe/Berlin +Europe/Bratislava +Europe/Brussels +Europe/Bucharest +Europe/Budapest +Europe/Busingen +Europe/Chisinau +Europe/Copenhagen +Europe/Dublin +Europe/Gibraltar +Europe/Guernsey +Europe/Helsinki +Europe/Isle_of_Man +Europe/Istanbul +Europe/Jersey +Europe/Kaliningrad +Europe/Kiev +Europe/Lisbon +Europe/Ljubljana +Europe/London +Europe/Luxembourg +Europe/Madrid +Europe/Malta +Europe/Mariehamn +Europe/Minsk +Europe/Monaco +Europe/Moscow +Europe/Nicosia +Europe/Oslo +Europe/Paris +Europe/Podgorica +Europe/Prague +Europe/Riga +Europe/Rome +Europe/Samara +Europe/San_Marino +Europe/Sarajevo +Europe/Simferopol +Europe/Skopje +Europe/Sofia +Europe/Stockholm +Europe/Tallinn +Europe/Tirane +Europe/Tiraspol +Europe/Uzhgorod +Europe/Vaduz +Europe/Vatican +Europe/Vienna +Europe/Vilnius +Europe/Volgograd +Europe/Warsaw +Europe/Zagreb +Europe/Zaporozhye +Europe/Zurich +Factory +GB +GB-Eire +GMT +GMT+0 +GMT-0 +GMT0 +Greenwich +HST +Hongkong +Iceland +Indian/Antananarivo +Indian/Chagos +Indian/Christmas +Indian/Cocos +Indian/Comoro +Indian/Kerguelen +Indian/Mahe +Indian/Maldives +Indian/Mauritius +Indian/Mayotte +Indian/Reunion +Iran +Israel +Jamaica +Japan +Kwajalein +Libya +MET +MST +MST7MDT +Mexico/BajaNorte +Mexico/BajaSur +Mexico/General +NZ +NZ-CHAT +Navajo +PRC +PST8PDT +Pacific/Apia +Pacific/Auckland +Pacific/Bougainville +Pacific/Chatham +Pacific/Chuuk +Pacific/Easter +Pacific/Efate +Pacific/Enderbury +Pacific/Fakaofo +Pacific/Fiji +Pacific/Funafuti +Pacific/Galapagos +Pacific/Gambier +Pacific/Guadalcanal +Pacific/Guam +Pacific/Honolulu +Pacific/Johnston +Pacific/Kiritimati +Pacific/Kosrae +Pacific/Kwajalein +Pacific/Majuro +Pacific/Marquesas +Pacific/Midway +Pacific/Nauru +Pacific/Niue +Pacific/Norfolk +Pacific/Noumea +Pacific/Pago_Pago +Pacific/Palau +Pacific/Pitcairn +Pacific/Pohnpei +Pacific/Ponape +Pacific/Port_Moresby +Pacific/Rarotonga +Pacific/Saipan +Pacific/Samoa +Pacific/Tahiti +Pacific/Tarawa +Pacific/Tongatapu +Pacific/Truk +Pacific/Wake +Pacific/Wallis +Pacific/Yap +Poland +Portugal +ROC +ROK +Singapore +Turkey +UCT +UTC +Universal +W-SU +WET +Zulu +posixrules diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/parts/04 b/patches/source/glibc-zoneinfo/timezone-scripts/parts/04 new file mode 100644 index 000000000..5b0da0e83 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/parts/04 @@ -0,0 +1,33 @@ + +Type it at the prompt below exactly as it appears above. (NOTE: If you don't +see your timezone, use "timeconfig" again after booting for the verbose list) + +EOF + echo -n "Timezone? " + read TIMEZONE; + echo + + if [ -n "$TIMEZONE" -a \ + -r $T_PX/usr/share/zoneinfo/$TIMEZONE -o \ + -r /var/log/mount/usr/share/zoneinfo/$TIMEZONE -o \ + -L $T_PX/usr/share/zoneinfo/$TIMEZONE -o \ + -L /var/log/mount/usr/share/zoneinfo/$TIMEZONE ]; then + echo "Creating link from $TIMEZONE to localtime in /etc..." + echo + setzone $TIMEZONE + exit + else + cat << EOF + +Timezone $TIMEZONE could not be found. You may try again if you wish. +Make sure you type the name exactly as it appears - this configuration script +is case sensitive. + +Press [enter] to continue. + +EOF + read JUNK; + fi + done +fi + diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/parts/README b/patches/source/glibc-zoneinfo/timezone-scripts/parts/README new file mode 100644 index 000000000..80d5cf5b4 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/parts/README @@ -0,0 +1,2 @@ +Files 01 and 03 are samples, showing the format, and are +not necessarily up to date... diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/setup.timeconfig b/patches/source/glibc-zoneinfo/timezone-scripts/setup.timeconfig new file mode 100644 index 000000000..81ff7055f --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/setup.timeconfig @@ -0,0 +1,3 @@ +#!/bin/sh +#BLURB="Select your timezone" +sh usr/sbin/timeconfig $* diff --git a/patches/source/glibc-zoneinfo/timezone-scripts/timeconfig b/patches/source/glibc-zoneinfo/timezone-scripts/timeconfig new file mode 100644 index 000000000..0fa59ac02 --- /dev/null +++ b/patches/source/glibc-zoneinfo/timezone-scripts/timeconfig @@ -0,0 +1,1363 @@ +#!/bin/sh +# +# timeconfig Slackware Linux timezone configuration utility. +# +# Author: Patrick Volkerding +# Modified by: David Cantrell , 06-Oct-2000 +# +# ChangeLog: +# 2014-10-22: Updated timezones from tzdata2014i. +# 2012-12-12: Updated timezones from tzdata2012j. +# 2008-03-10: Updated timezones from tzdata2008a. +# 2007-12-21: Updated timezones from tzdata2007j. +# 2006-12-03: Updated timezones from tzdata2006p. +# 2006-09-14: Updated timezones from tzdata2006k. +# 2006-08-22: Updated timezones from tzdata2006j. +# 2006-08-13: Updated timezones from tzdata2006g. +# 2006-03-13: Updated timezones from tzdata2006c. +# 19-Feb-2001 Add new timezones from glibc-2.2.2. +# 06-Oct-2000 Fixed a problem with selecting UTC time. It was writing +# the hardwareclock file to the root disk and not your dest +# partition. Changed the HWCLOCK_CONF variable to be +# $T_PX/etc/hardwareclock to fix this. Thanks to David L. +# Dickman for finding this and +# submitting a patch. +# +# 15-Mar-2000 Added the writeconf function to write out the +# /etc/hardwareclock file which tells what the hardware clock +# is set to (UTC or localtime). +# +# 03-Mar-2000 Reorganized script. Made one timezone set block, added +# stage that asks the user if the hardware clock is set to +# UTC. + +# setup our temp locations and variables +TMP=/var/log/setup/tmp +if [ -r $TMP/SeTT_PX ]; then + T_PX="`cat $TMP/SeTT_PX`" +elif [ ! "$!" = "" ]; then + T_PX=$1 +else + T_PX=/ +fi + +# the hardware clock configuration file +HWCLOCK_CONF=$T_PX/etc/hardwareclock + +# setzone( $TIMEZONE ) +# +# This function accepts a time zone as the only parameter and sets it as +# the default system time zone. +setzone() +{ + TZ=$1 + + cd $T_PX/etc + if [ -r $T_PX/usr/share/zoneinfo/$TZ -o \ + -r /var/log/mount/usr/share/zoneinfo/$TZ -o \ + -L $T_PX/usr/share/zoneinfo/$TZ -o \ + -L /var/log/mount/usr/share/zoneinfo/$TZ ]; then + rm -f localtime-copied-from + ln -sf /usr/share/zoneinfo/$TZ localtime-copied-from + rm -f localtime + cd .. + chroot . cp etc/localtime-copied-from etc/localtime + fi +} + +# writeconf( $CLOCK_SET_TO ) +# +# Writes out $HWCLOCK_CONF that tells rc.S how the hardware clock +# value is stored. +writeconf() +{ + echo "# /etc/hardwareclock" > $HWCLOCK_CONF + echo "#" >> $HWCLOCK_CONF + echo "# Tells how the hardware clock time is stored." >> $HWCLOCK_CONF + echo "# You should run timeconfig to edit this file." >> $HWCLOCK_CONF + echo >> $HWCLOCK_CONF + echo $1 >> $HWCLOCK_CONF +} + +# ask the user if the hardware clock is set for UTC/GMT +if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then + ### + ### use color menus here + ### + dialog --title "HARDWARE CLOCK SET TO UTC?" --menu "Is the hardware clock set \ +to Coordinated Universal Time (UTC/GMT)? If it is, select YES here. If the \ +hardware clock is set to the current local time (this is how most PCs are set \ +up), then say NO here. If you are not sure what this is, you should answer NO \ +here." 13 60 2 \ + "NO" "Hardware clock is set to local time" \ + "YES" "Hardware clock is set to UTC" \ + 2> $TMP/utc + if [ $? = 1 -o $? = 255 ]; then + rm -f $TMP/utc + exit + fi + if [ "`cat $TMP/utc`" = "YES" ]; then + # yes, the hardware clock is UTC + writeconf "UTC" + else # must be NO + writeconf "localtime" + fi + rm -f $TMP/utc +else + ### + ### use text prompts + ### + echo "Is the hardware clock set to Coordinated Universal Time (UTC/GMT)?" + echo "If it is, select 'y' here. If the hardware clock is set to the" + echo "current local time (this is how most PCs are set up), then say 'n'" + echo "here. If you are not sure what this is, you should answer 'n' here." + echo + echo -n "Is your hardware clock set to UTC ([y]es, [n]o)? " + read HEJAZ + + if [ "$HEJAZ" = "y" -o "$HEJAZ" = "Y" -o "$HEJAZ" = "YES" -o "$HEJAZ" = "yes" ]; then + # yes, the hardware clock is UTC + writeconf "UTC" + else + # default to localtime + writeconf "localtime" + fi +fi + +# Now set the correct timezone link: +if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then + ### + ### use color menus here + ### + dialog --title "TIMEZONE CONFIGURATION" --menu "Please select one of the following timezones for your machine:" 21 50 13 \ +"US/Alaska" " " \ +"US/Aleutian" " " \ +"US/Arizona" " " \ +"US/Central" " " \ +"US/East-Indiana" " " \ +"US/Eastern" " " \ +"US/Hawaii" " " \ +"US/Indiana-Starke" " " \ +"US/Michigan" " " \ +"US/Mountain" " " \ +"US/Pacific" " " \ +"US/Pacific-New" " " \ +"US/Samoa" " " \ +"Africa/Abidjan" " " \ +"Africa/Accra" " " \ +"Africa/Addis_Ababa" " " \ +"Africa/Algiers" " " \ +"Africa/Asmara" " " \ +"Africa/Asmera" " " \ +"Africa/Bamako" " " \ +"Africa/Bangui" " " \ +"Africa/Banjul" " " \ +"Africa/Bissau" " " \ +"Africa/Blantyre" " " \ +"Africa/Brazzaville" " " \ +"Africa/Bujumbura" " " \ +"Africa/Cairo" " " \ +"Africa/Casablanca" " " \ +"Africa/Ceuta" " " \ +"Africa/Conakry" " " \ +"Africa/Dakar" " " \ +"Africa/Dar_es_Salaam" " " \ +"Africa/Djibouti" " " \ +"Africa/Douala" " " \ +"Africa/El_Aaiun" " " \ +"Africa/Freetown" " " \ +"Africa/Gaborone" " " \ +"Africa/Harare" " " \ +"Africa/Johannesburg" " " \ +"Africa/Juba" " " \ +"Africa/Kampala" " " \ +"Africa/Khartoum" " " \ +"Africa/Kigali" " " \ +"Africa/Kinshasa" " " \ +"Africa/Lagos" " " \ +"Africa/Libreville" " " \ +"Africa/Lome" " " \ +"Africa/Luanda" " " \ +"Africa/Lubumbashi" " " \ +"Africa/Lusaka" " " \ +"Africa/Malabo" " " \ +"Africa/Maputo" " " \ +"Africa/Maseru" " " \ +"Africa/Mbabane" " " \ +"Africa/Mogadishu" " " \ +"Africa/Monrovia" " " \ +"Africa/Nairobi" " " \ +"Africa/Ndjamena" " " \ +"Africa/Niamey" " " \ +"Africa/Nouakchott" " " \ +"Africa/Ouagadougou" " " \ +"Africa/Porto-Novo" " " \ +"Africa/Sao_Tome" " " \ +"Africa/Timbuktu" " " \ +"Africa/Tripoli" " " \ +"Africa/Tunis" " " \ +"Africa/Windhoek" " " \ +"America/Adak" " " \ +"America/Anchorage" " " \ +"America/Anguilla" " " \ +"America/Antigua" " " \ +"America/Araguaina" " " \ +"America/Argentina/Buenos_Aires" " " \ +"America/Argentina/Catamarca" " " \ +"America/Argentina/ComodRivadavia" " " \ +"America/Argentina/Cordoba" " " \ +"America/Argentina/Jujuy" " " \ +"America/Argentina/La_Rioja" " " \ +"America/Argentina/Mendoza" " " \ +"America/Argentina/Rio_Gallegos" " " \ +"America/Argentina/Salta" " " \ +"America/Argentina/San_Juan" " " \ +"America/Argentina/San_Luis" " " \ +"America/Argentina/Tucuman" " " \ +"America/Argentina/Ushuaia" " " \ +"America/Aruba" " " \ +"America/Asuncion" " " \ +"America/Atikokan" " " \ +"America/Atka" " " \ +"America/Bahia" " " \ +"America/Bahia_Banderas" " " \ +"America/Barbados" " " \ +"America/Belem" " " \ +"America/Belize" " " \ +"America/Blanc-Sablon" " " \ +"America/Boa_Vista" " " \ +"America/Bogota" " " \ +"America/Boise" " " \ +"America/Buenos_Aires" " " \ +"America/Cambridge_Bay" " " \ +"America/Campo_Grande" " " \ +"America/Cancun" " " \ +"America/Caracas" " " \ +"America/Catamarca" " " \ +"America/Cayenne" " " \ +"America/Cayman" " " \ +"America/Chicago" " " \ +"America/Chihuahua" " " \ +"America/Coral_Harbour" " " \ +"America/Cordoba" " " \ +"America/Costa_Rica" " " \ +"America/Creston" " " \ +"America/Cuiaba" " " \ +"America/Curacao" " " \ +"America/Danmarkshavn" " " \ +"America/Dawson" " " \ +"America/Dawson_Creek" " " \ +"America/Denver" " " \ +"America/Detroit" " " \ +"America/Dominica" " " \ +"America/Edmonton" " " \ +"America/Eirunepe" " " \ +"America/El_Salvador" " " \ +"America/Ensenada" " " \ +"America/Fort_Nelson" " " \ +"America/Fort_Wayne" " " \ +"America/Fortaleza" " " \ +"America/Glace_Bay" " " \ +"America/Godthab" " " \ +"America/Goose_Bay" " " \ +"America/Grand_Turk" " " \ +"America/Grenada" " " \ +"America/Guadeloupe" " " \ +"America/Guatemala" " " \ +"America/Guayaquil" " " \ +"America/Guyana" " " \ +"America/Halifax" " " \ +"America/Havana" " " \ +"America/Hermosillo" " " \ +"America/Indiana/Indianapolis" " " \ +"America/Indiana/Knox" " " \ +"America/Indiana/Marengo" " " \ +"America/Indiana/Petersburg" " " \ +"America/Indiana/Tell_City" " " \ +"America/Indiana/Vevay" " " \ +"America/Indiana/Vincennes" " " \ +"America/Indiana/Winamac" " " \ +"America/Indianapolis" " " \ +"America/Inuvik" " " \ +"America/Iqaluit" " " \ +"America/Jamaica" " " \ +"America/Jujuy" " " \ +"America/Juneau" " " \ +"America/Kentucky/Louisville" " " \ +"America/Kentucky/Monticello" " " \ +"America/Knox_IN" " " \ +"America/Kralendijk" " " \ +"America/La_Paz" " " \ +"America/Lima" " " \ +"America/Los_Angeles" " " \ +"America/Louisville" " " \ +"America/Lower_Princes" " " \ +"America/Maceio" " " \ +"America/Managua" " " \ +"America/Manaus" " " \ +"America/Marigot" " " \ +"America/Martinique" " " \ +"America/Matamoros" " " \ +"America/Mazatlan" " " \ +"America/Mendoza" " " \ +"America/Menominee" " " \ +"America/Merida" " " \ +"America/Metlakatla" " " \ +"America/Mexico_City" " " \ +"America/Miquelon" " " \ +"America/Moncton" " " \ +"America/Monterrey" " " \ +"America/Montevideo" " " \ +"America/Montreal" " " \ +"America/Montserrat" " " \ +"America/Nassau" " " \ +"America/New_York" " " \ +"America/Nipigon" " " \ +"America/Nome" " " \ +"America/Noronha" " " \ +"America/North_Dakota/Beulah" " " \ +"America/North_Dakota/Center" " " \ +"America/North_Dakota/New_Salem" " " \ +"America/Ojinaga" " " \ +"America/Panama" " " \ +"America/Pangnirtung" " " \ +"America/Paramaribo" " " \ +"America/Phoenix" " " \ +"America/Port-au-Prince" " " \ +"America/Port_of_Spain" " " \ +"America/Porto_Acre" " " \ +"America/Porto_Velho" " " \ +"America/Puerto_Rico" " " \ +"America/Rainy_River" " " \ +"America/Rankin_Inlet" " " \ +"America/Recife" " " \ +"America/Regina" " " \ +"America/Resolute" " " \ +"America/Rio_Branco" " " \ +"America/Rosario" " " \ +"America/Santa_Isabel" " " \ +"America/Santarem" " " \ +"America/Santiago" " " \ +"America/Santo_Domingo" " " \ +"America/Sao_Paulo" " " \ +"America/Scoresbysund" " " \ +"America/Shiprock" " " \ +"America/Sitka" " " \ +"America/St_Barthelemy" " " \ +"America/St_Johns" " " \ +"America/St_Kitts" " " \ +"America/St_Lucia" " " \ +"America/St_Thomas" " " \ +"America/St_Vincent" " " \ +"America/Swift_Current" " " \ +"America/Tegucigalpa" " " \ +"America/Thule" " " \ +"America/Thunder_Bay" " " \ +"America/Tijuana" " " \ +"America/Toronto" " " \ +"America/Tortola" " " \ +"America/Vancouver" " " \ +"America/Virgin" " " \ +"America/Whitehorse" " " \ +"America/Winnipeg" " " \ +"America/Yakutat" " " \ +"America/Yellowknife" " " \ +"Antarctica/Casey" " " \ +"Antarctica/Davis" " " \ +"Antarctica/DumontDUrville" " " \ +"Antarctica/Macquarie" " " \ +"Antarctica/Mawson" " " \ +"Antarctica/McMurdo" " " \ +"Antarctica/Palmer" " " \ +"Antarctica/Rothera" " " \ +"Antarctica/South_Pole" " " \ +"Antarctica/Syowa" " " \ +"Antarctica/Troll" " " \ +"Antarctica/Vostok" " " \ +"Arctic/Longyearbyen" " " \ +"Asia/Aden" " " \ +"Asia/Almaty" " " \ +"Asia/Amman" " " \ +"Asia/Anadyr" " " \ +"Asia/Aqtau" " " \ +"Asia/Aqtobe" " " \ +"Asia/Ashgabat" " " \ +"Asia/Ashkhabad" " " \ +"Asia/Baghdad" " " \ +"Asia/Bahrain" " " \ +"Asia/Baku" " " \ +"Asia/Bangkok" " " \ +"Asia/Beirut" " " \ +"Asia/Bishkek" " " \ +"Asia/Brunei" " " \ +"Asia/Calcutta" " " \ +"Asia/Chita" " " \ +"Asia/Choibalsan" " " \ +"Asia/Chongqing" " " \ +"Asia/Chungking" " " \ +"Asia/Colombo" " " \ +"Asia/Dacca" " " \ +"Asia/Damascus" " " \ +"Asia/Dhaka" " " \ +"Asia/Dili" " " \ +"Asia/Dubai" " " \ +"Asia/Dushanbe" " " \ +"Asia/Gaza" " " \ +"Asia/Harbin" " " \ +"Asia/Hebron" " " \ +"Asia/Ho_Chi_Minh" " " \ +"Asia/Hong_Kong" " " \ +"Asia/Hovd" " " \ +"Asia/Irkutsk" " " \ +"Asia/Istanbul" " " \ +"Asia/Jakarta" " " \ +"Asia/Jayapura" " " \ +"Asia/Jerusalem" " " \ +"Asia/Kabul" " " \ +"Asia/Kamchatka" " " \ +"Asia/Karachi" " " \ +"Asia/Kashgar" " " \ +"Asia/Kathmandu" " " \ +"Asia/Katmandu" " " \ +"Asia/Khandyga" " " \ +"Asia/Kolkata" " " \ +"Asia/Krasnoyarsk" " " \ +"Asia/Kuala_Lumpur" " " \ +"Asia/Kuching" " " \ +"Asia/Kuwait" " " \ +"Asia/Macao" " " \ +"Asia/Macau" " " \ +"Asia/Magadan" " " \ +"Asia/Makassar" " " \ +"Asia/Manila" " " \ +"Asia/Muscat" " " \ +"Asia/Nicosia" " " \ +"Asia/Novokuznetsk" " " \ +"Asia/Novosibirsk" " " \ +"Asia/Omsk" " " \ +"Asia/Oral" " " \ +"Asia/Phnom_Penh" " " \ +"Asia/Pontianak" " " \ +"Asia/Pyongyang" " " \ +"Asia/Qatar" " " \ +"Asia/Qyzylorda" " " \ +"Asia/Rangoon" " " \ +"Asia/Riyadh" " " \ +"Asia/Saigon" " " \ +"Asia/Sakhalin" " " \ +"Asia/Samarkand" " " \ +"Asia/Seoul" " " \ +"Asia/Shanghai" " " \ +"Asia/Singapore" " " \ +"Asia/Srednekolymsk" " " \ +"Asia/Taipei" " " \ +"Asia/Tashkent" " " \ +"Asia/Tbilisi" " " \ +"Asia/Tehran" " " \ +"Asia/Tel_Aviv" " " \ +"Asia/Thimbu" " " \ +"Asia/Thimphu" " " \ +"Asia/Tokyo" " " \ +"Asia/Ujung_Pandang" " " \ +"Asia/Ulaanbaatar" " " \ +"Asia/Ulan_Bator" " " \ +"Asia/Urumqi" " " \ +"Asia/Ust-Nera" " " \ +"Asia/Vientiane" " " \ +"Asia/Vladivostok" " " \ +"Asia/Yakutsk" " " \ +"Asia/Yekaterinburg" " " \ +"Asia/Yerevan" " " \ +"Atlantic/Azores" " " \ +"Atlantic/Bermuda" " " \ +"Atlantic/Canary" " " \ +"Atlantic/Cape_Verde" " " \ +"Atlantic/Faeroe" " " \ +"Atlantic/Faroe" " " \ +"Atlantic/Jan_Mayen" " " \ +"Atlantic/Madeira" " " \ +"Atlantic/Reykjavik" " " \ +"Atlantic/South_Georgia" " " \ +"Atlantic/St_Helena" " " \ +"Atlantic/Stanley" " " \ +"Australia/ACT" " " \ +"Australia/Adelaide" " " \ +"Australia/Brisbane" " " \ +"Australia/Broken_Hill" " " \ +"Australia/Canberra" " " \ +"Australia/Currie" " " \ +"Australia/Darwin" " " \ +"Australia/Eucla" " " \ +"Australia/Hobart" " " \ +"Australia/LHI" " " \ +"Australia/Lindeman" " " \ +"Australia/Lord_Howe" " " \ +"Australia/Melbourne" " " \ +"Australia/NSW" " " \ +"Australia/North" " " \ +"Australia/Perth" " " \ +"Australia/Queensland" " " \ +"Australia/South" " " \ +"Australia/Sydney" " " \ +"Australia/Tasmania" " " \ +"Australia/Victoria" " " \ +"Australia/West" " " \ +"Australia/Yancowinna" " " \ +"Brazil/Acre" " " \ +"Brazil/DeNoronha" " " \ +"Brazil/East" " " \ +"Brazil/West" " " \ +"CET" " " \ +"CST6CDT" " " \ +"Canada/Atlantic" " " \ +"Canada/Central" " " \ +"Canada/East-Saskatchewan" " " \ +"Canada/Eastern" " " \ +"Canada/Mountain" " " \ +"Canada/Newfoundland" " " \ +"Canada/Pacific" " " \ +"Canada/Saskatchewan" " " \ +"Canada/Yukon" " " \ +"Chile/Continental" " " \ +"Chile/EasterIsland" " " \ +"Cuba" " " \ +"EET" " " \ +"EST" " " \ +"EST5EDT" " " \ +"Egypt" " " \ +"Eire" " " \ +"Etc/GMT" " " \ +"Etc/GMT+0" " " \ +"Etc/GMT+1" " " \ +"Etc/GMT+10" " " \ +"Etc/GMT+11" " " \ +"Etc/GMT+12" " " \ +"Etc/GMT+2" " " \ +"Etc/GMT+3" " " \ +"Etc/GMT+4" " " \ +"Etc/GMT+5" " " \ +"Etc/GMT+6" " " \ +"Etc/GMT+7" " " \ +"Etc/GMT+8" " " \ +"Etc/GMT+9" " " \ +"Etc/GMT-0" " " \ +"Etc/GMT-1" " " \ +"Etc/GMT-10" " " \ +"Etc/GMT-11" " " \ +"Etc/GMT-12" " " \ +"Etc/GMT-13" " " \ +"Etc/GMT-14" " " \ +"Etc/GMT-2" " " \ +"Etc/GMT-3" " " \ +"Etc/GMT-4" " " \ +"Etc/GMT-5" " " \ +"Etc/GMT-6" " " \ +"Etc/GMT-7" " " \ +"Etc/GMT-8" " " \ +"Etc/GMT-9" " " \ +"Etc/GMT0" " " \ +"Etc/Greenwich" " " \ +"Etc/UCT" " " \ +"Etc/UTC" " " \ +"Etc/Universal" " " \ +"Etc/Zulu" " " \ +"Europe/Amsterdam" " " \ +"Europe/Andorra" " " \ +"Europe/Athens" " " \ +"Europe/Belfast" " " \ +"Europe/Belgrade" " " \ +"Europe/Berlin" " " \ +"Europe/Bratislava" " " \ +"Europe/Brussels" " " \ +"Europe/Bucharest" " " \ +"Europe/Budapest" " " \ +"Europe/Busingen" " " \ +"Europe/Chisinau" " " \ +"Europe/Copenhagen" " " \ +"Europe/Dublin" " " \ +"Europe/Gibraltar" " " \ +"Europe/Guernsey" " " \ +"Europe/Helsinki" " " \ +"Europe/Isle_of_Man" " " \ +"Europe/Istanbul" " " \ +"Europe/Jersey" " " \ +"Europe/Kaliningrad" " " \ +"Europe/Kiev" " " \ +"Europe/Lisbon" " " \ +"Europe/Ljubljana" " " \ +"Europe/London" " " \ +"Europe/Luxembourg" " " \ +"Europe/Madrid" " " \ +"Europe/Malta" " " \ +"Europe/Mariehamn" " " \ +"Europe/Minsk" " " \ +"Europe/Monaco" " " \ +"Europe/Moscow" " " \ +"Europe/Nicosia" " " \ +"Europe/Oslo" " " \ +"Europe/Paris" " " \ +"Europe/Podgorica" " " \ +"Europe/Prague" " " \ +"Europe/Riga" " " \ +"Europe/Rome" " " \ +"Europe/Samara" " " \ +"Europe/San_Marino" " " \ +"Europe/Sarajevo" " " \ +"Europe/Simferopol" " " \ +"Europe/Skopje" " " \ +"Europe/Sofia" " " \ +"Europe/Stockholm" " " \ +"Europe/Tallinn" " " \ +"Europe/Tirane" " " \ +"Europe/Tiraspol" " " \ +"Europe/Uzhgorod" " " \ +"Europe/Vaduz" " " \ +"Europe/Vatican" " " \ +"Europe/Vienna" " " \ +"Europe/Vilnius" " " \ +"Europe/Volgograd" " " \ +"Europe/Warsaw" " " \ +"Europe/Zagreb" " " \ +"Europe/Zaporozhye" " " \ +"Europe/Zurich" " " \ +"Factory" " " \ +"GB" " " \ +"GB-Eire" " " \ +"GMT" " " \ +"GMT+0" " " \ +"GMT-0" " " \ +"GMT0" " " \ +"Greenwich" " " \ +"HST" " " \ +"Hongkong" " " \ +"Iceland" " " \ +"Indian/Antananarivo" " " \ +"Indian/Chagos" " " \ +"Indian/Christmas" " " \ +"Indian/Cocos" " " \ +"Indian/Comoro" " " \ +"Indian/Kerguelen" " " \ +"Indian/Mahe" " " \ +"Indian/Maldives" " " \ +"Indian/Mauritius" " " \ +"Indian/Mayotte" " " \ +"Indian/Reunion" " " \ +"Iran" " " \ +"Israel" " " \ +"Jamaica" " " \ +"Japan" " " \ +"Kwajalein" " " \ +"Libya" " " \ +"MET" " " \ +"MST" " " \ +"MST7MDT" " " \ +"Mexico/BajaNorte" " " \ +"Mexico/BajaSur" " " \ +"Mexico/General" " " \ +"NZ" " " \ +"NZ-CHAT" " " \ +"Navajo" " " \ +"PRC" " " \ +"PST8PDT" " " \ +"Pacific/Apia" " " \ +"Pacific/Auckland" " " \ +"Pacific/Bougainville" " " \ +"Pacific/Chatham" " " \ +"Pacific/Chuuk" " " \ +"Pacific/Easter" " " \ +"Pacific/Efate" " " \ +"Pacific/Enderbury" " " \ +"Pacific/Fakaofo" " " \ +"Pacific/Fiji" " " \ +"Pacific/Funafuti" " " \ +"Pacific/Galapagos" " " \ +"Pacific/Gambier" " " \ +"Pacific/Guadalcanal" " " \ +"Pacific/Guam" " " \ +"Pacific/Honolulu" " " \ +"Pacific/Johnston" " " \ +"Pacific/Kiritimati" " " \ +"Pacific/Kosrae" " " \ +"Pacific/Kwajalein" " " \ +"Pacific/Majuro" " " \ +"Pacific/Marquesas" " " \ +"Pacific/Midway" " " \ +"Pacific/Nauru" " " \ +"Pacific/Niue" " " \ +"Pacific/Norfolk" " " \ +"Pacific/Noumea" " " \ +"Pacific/Pago_Pago" " " \ +"Pacific/Palau" " " \ +"Pacific/Pitcairn" " " \ +"Pacific/Pohnpei" " " \ +"Pacific/Ponape" " " \ +"Pacific/Port_Moresby" " " \ +"Pacific/Rarotonga" " " \ +"Pacific/Saipan" " " \ +"Pacific/Samoa" " " \ +"Pacific/Tahiti" " " \ +"Pacific/Tarawa" " " \ +"Pacific/Tongatapu" " " \ +"Pacific/Truk" " " \ +"Pacific/Wake" " " \ +"Pacific/Wallis" " " \ +"Pacific/Yap" " " \ +"Poland" " " \ +"Portugal" " " \ +"ROC" " " \ +"ROK" " " \ +"Singapore" " " \ +"Turkey" " " \ +"UCT" " " \ +"UTC" " " \ +"Universal" " " \ +"W-SU" " " \ +"WET" " " \ +"Zulu" " " \ +"posixrules" " " \ + 2> $TMP/tz + + if [ $? = 1 -o $? = 255 ]; then + rm -f $TMP/tz + exit + fi + + TIMEZONE="`cat $TMP/tz`" + rm -f $TMP/tz + + setzone $TIMEZONE + exit +else + ### + ### use text prompts + ### + while [ 0 ]; do + echo -n "Would you like to configure your timezone ([y]es, [n]o)? " + read TIMECONF; + echo + + if [ "$TIMECONF" = "n" ]; then + break + fi + + cat << EOF +Select one of these timezones: + +US/Alaska +US/Aleutian +US/Arizona +US/Central +US/East-Indiana +US/Eastern +US/Hawaii +US/Indiana-Starke +US/Michigan +US/Mountain +US/Pacific +US/Pacific-New +US/Samoa +Africa/Abidjan +Africa/Accra +Africa/Addis_Ababa +Africa/Algiers +Africa/Asmara +Africa/Asmera +Africa/Bamako +Africa/Bangui +Africa/Banjul +Africa/Bissau +Africa/Blantyre +Africa/Brazzaville +Africa/Bujumbura +Africa/Cairo +Africa/Casablanca +Africa/Ceuta +Africa/Conakry +Africa/Dakar +Africa/Dar_es_Salaam +Africa/Djibouti +Africa/Douala +Africa/El_Aaiun +Africa/Freetown +Africa/Gaborone +Africa/Harare +Africa/Johannesburg +Africa/Juba +Africa/Kampala +Africa/Khartoum +Africa/Kigali +Africa/Kinshasa +Africa/Lagos +Africa/Libreville +Africa/Lome +Africa/Luanda +Africa/Lubumbashi +Africa/Lusaka +Africa/Malabo +Africa/Maputo +Africa/Maseru +Africa/Mbabane +Africa/Mogadishu +Africa/Monrovia +Africa/Nairobi +Africa/Ndjamena +Africa/Niamey +Africa/Nouakchott +Africa/Ouagadougou +Africa/Porto-Novo +Africa/Sao_Tome +Africa/Timbuktu +Africa/Tripoli +Africa/Tunis +Africa/Windhoek +America/Adak +America/Anchorage +America/Anguilla +America/Antigua +America/Araguaina +America/Argentina/Buenos_Aires +America/Argentina/Catamarca +America/Argentina/ComodRivadavia +America/Argentina/Cordoba +America/Argentina/Jujuy +America/Argentina/La_Rioja +America/Argentina/Mendoza +America/Argentina/Rio_Gallegos +America/Argentina/Salta +America/Argentina/San_Juan +America/Argentina/San_Luis +America/Argentina/Tucuman +America/Argentina/Ushuaia +America/Aruba +America/Asuncion +America/Atikokan +America/Atka +America/Bahia +America/Bahia_Banderas +America/Barbados +America/Belem +America/Belize +America/Blanc-Sablon +America/Boa_Vista +America/Bogota +America/Boise +America/Buenos_Aires +America/Cambridge_Bay +America/Campo_Grande +America/Cancun +America/Caracas +America/Catamarca +America/Cayenne +America/Cayman +America/Chicago +America/Chihuahua +America/Coral_Harbour +America/Cordoba +America/Costa_Rica +America/Creston +America/Cuiaba +America/Curacao +America/Danmarkshavn +America/Dawson +America/Dawson_Creek +America/Denver +America/Detroit +America/Dominica +America/Edmonton +America/Eirunepe +America/El_Salvador +America/Ensenada +America/Fort_Nelson +America/Fort_Wayne +America/Fortaleza +America/Glace_Bay +America/Godthab +America/Goose_Bay +America/Grand_Turk +America/Grenada +America/Guadeloupe +America/Guatemala +America/Guayaquil +America/Guyana +America/Halifax +America/Havana +America/Hermosillo +America/Indiana/Indianapolis +America/Indiana/Knox +America/Indiana/Marengo +America/Indiana/Petersburg +America/Indiana/Tell_City +America/Indiana/Vevay +America/Indiana/Vincennes +America/Indiana/Winamac +America/Indianapolis +America/Inuvik +America/Iqaluit +America/Jamaica +America/Jujuy +America/Juneau +America/Kentucky/Louisville +America/Kentucky/Monticello +America/Knox_IN +America/Kralendijk +America/La_Paz +America/Lima +America/Los_Angeles +America/Louisville +America/Lower_Princes +America/Maceio +America/Managua +America/Manaus +America/Marigot +America/Martinique +America/Matamoros +America/Mazatlan +America/Mendoza +America/Menominee +America/Merida +America/Metlakatla +America/Mexico_City +America/Miquelon +America/Moncton +America/Monterrey +America/Montevideo +America/Montreal +America/Montserrat +America/Nassau +America/New_York +America/Nipigon +America/Nome +America/Noronha +America/North_Dakota/Beulah +America/North_Dakota/Center +America/North_Dakota/New_Salem +America/Ojinaga +America/Panama +America/Pangnirtung +America/Paramaribo +America/Phoenix +America/Port-au-Prince +America/Port_of_Spain +America/Porto_Acre +America/Porto_Velho +America/Puerto_Rico +America/Rainy_River +America/Rankin_Inlet +America/Recife +America/Regina +America/Resolute +America/Rio_Branco +America/Rosario +America/Santa_Isabel +America/Santarem +America/Santiago +America/Santo_Domingo +America/Sao_Paulo +America/Scoresbysund +America/Shiprock +America/Sitka +America/St_Barthelemy +America/St_Johns +America/St_Kitts +America/St_Lucia +America/St_Thomas +America/St_Vincent +America/Swift_Current +America/Tegucigalpa +America/Thule +America/Thunder_Bay +America/Tijuana +America/Toronto +America/Tortola +America/Vancouver +America/Virgin +America/Whitehorse +America/Winnipeg +America/Yakutat +America/Yellowknife +Antarctica/Casey +Antarctica/Davis +Antarctica/DumontDUrville +Antarctica/Macquarie +Antarctica/Mawson +Antarctica/McMurdo +Antarctica/Palmer +Antarctica/Rothera +Antarctica/South_Pole +Antarctica/Syowa +Antarctica/Troll +Antarctica/Vostok +Arctic/Longyearbyen +Asia/Aden +Asia/Almaty +Asia/Amman +Asia/Anadyr +Asia/Aqtau +Asia/Aqtobe +Asia/Ashgabat +Asia/Ashkhabad +Asia/Baghdad +Asia/Bahrain +Asia/Baku +Asia/Bangkok +Asia/Beirut +Asia/Bishkek +Asia/Brunei +Asia/Calcutta +Asia/Chita +Asia/Choibalsan +Asia/Chongqing +Asia/Chungking +Asia/Colombo +Asia/Dacca +Asia/Damascus +Asia/Dhaka +Asia/Dili +Asia/Dubai +Asia/Dushanbe +Asia/Gaza +Asia/Harbin +Asia/Hebron +Asia/Ho_Chi_Minh +Asia/Hong_Kong +Asia/Hovd +Asia/Irkutsk +Asia/Istanbul +Asia/Jakarta +Asia/Jayapura +Asia/Jerusalem +Asia/Kabul +Asia/Kamchatka +Asia/Karachi +Asia/Kashgar +Asia/Kathmandu +Asia/Katmandu +Asia/Khandyga +Asia/Kolkata +Asia/Krasnoyarsk +Asia/Kuala_Lumpur +Asia/Kuching +Asia/Kuwait +Asia/Macao +Asia/Macau +Asia/Magadan +Asia/Makassar +Asia/Manila +Asia/Muscat +Asia/Nicosia +Asia/Novokuznetsk +Asia/Novosibirsk +Asia/Omsk +Asia/Oral +Asia/Phnom_Penh +Asia/Pontianak +Asia/Pyongyang +Asia/Qatar +Asia/Qyzylorda +Asia/Rangoon +Asia/Riyadh +Asia/Saigon +Asia/Sakhalin +Asia/Samarkand +Asia/Seoul +Asia/Shanghai +Asia/Singapore +Asia/Srednekolymsk +Asia/Taipei +Asia/Tashkent +Asia/Tbilisi +Asia/Tehran +Asia/Tel_Aviv +Asia/Thimbu +Asia/Thimphu +Asia/Tokyo +Asia/Ujung_Pandang +Asia/Ulaanbaatar +Asia/Ulan_Bator +Asia/Urumqi +Asia/Ust-Nera +Asia/Vientiane +Asia/Vladivostok +Asia/Yakutsk +Asia/Yekaterinburg +Asia/Yerevan +Atlantic/Azores +Atlantic/Bermuda +Atlantic/Canary +Atlantic/Cape_Verde +Atlantic/Faeroe +Atlantic/Faroe +Atlantic/Jan_Mayen +Atlantic/Madeira +Atlantic/Reykjavik +Atlantic/South_Georgia +Atlantic/St_Helena +Atlantic/Stanley +Australia/ACT +Australia/Adelaide +Australia/Brisbane +Australia/Broken_Hill +Australia/Canberra +Australia/Currie +Australia/Darwin +Australia/Eucla +Australia/Hobart +Australia/LHI +Australia/Lindeman +Australia/Lord_Howe +Australia/Melbourne +Australia/NSW +Australia/North +Australia/Perth +Australia/Queensland +Australia/South +Australia/Sydney +Australia/Tasmania +Australia/Victoria +Australia/West +Australia/Yancowinna +Brazil/Acre +Brazil/DeNoronha +Brazil/East +Brazil/West +CET +CST6CDT +Canada/Atlantic +Canada/Central +Canada/East-Saskatchewan +Canada/Eastern +Canada/Mountain +Canada/Newfoundland +Canada/Pacific +Canada/Saskatchewan +Canada/Yukon +Chile/Continental +Chile/EasterIsland +Cuba +EET +EST +EST5EDT +Egypt +Eire +Etc/GMT +Etc/GMT+0 +Etc/GMT+1 +Etc/GMT+10 +Etc/GMT+11 +Etc/GMT+12 +Etc/GMT+2 +Etc/GMT+3 +Etc/GMT+4 +Etc/GMT+5 +Etc/GMT+6 +Etc/GMT+7 +Etc/GMT+8 +Etc/GMT+9 +Etc/GMT-0 +Etc/GMT-1 +Etc/GMT-10 +Etc/GMT-11 +Etc/GMT-12 +Etc/GMT-13 +Etc/GMT-14 +Etc/GMT-2 +Etc/GMT-3 +Etc/GMT-4 +Etc/GMT-5 +Etc/GMT-6 +Etc/GMT-7 +Etc/GMT-8 +Etc/GMT-9 +Etc/GMT0 +Etc/Greenwich +Etc/UCT +Etc/UTC +Etc/Universal +Etc/Zulu +Europe/Amsterdam +Europe/Andorra +Europe/Athens +Europe/Belfast +Europe/Belgrade +Europe/Berlin +Europe/Bratislava +Europe/Brussels +Europe/Bucharest +Europe/Budapest +Europe/Busingen +Europe/Chisinau +Europe/Copenhagen +Europe/Dublin +Europe/Gibraltar +Europe/Guernsey +Europe/Helsinki +Europe/Isle_of_Man +Europe/Istanbul +Europe/Jersey +Europe/Kaliningrad +Europe/Kiev +Europe/Lisbon +Europe/Ljubljana +Europe/London +Europe/Luxembourg +Europe/Madrid +Europe/Malta +Europe/Mariehamn +Europe/Minsk +Europe/Monaco +Europe/Moscow +Europe/Nicosia +Europe/Oslo +Europe/Paris +Europe/Podgorica +Europe/Prague +Europe/Riga +Europe/Rome +Europe/Samara +Europe/San_Marino +Europe/Sarajevo +Europe/Simferopol +Europe/Skopje +Europe/Sofia +Europe/Stockholm +Europe/Tallinn +Europe/Tirane +Europe/Tiraspol +Europe/Uzhgorod +Europe/Vaduz +Europe/Vatican +Europe/Vienna +Europe/Vilnius +Europe/Volgograd +Europe/Warsaw +Europe/Zagreb +Europe/Zaporozhye +Europe/Zurich +Factory +GB +GB-Eire +GMT +GMT+0 +GMT-0 +GMT0 +Greenwich +HST +Hongkong +Iceland +Indian/Antananarivo +Indian/Chagos +Indian/Christmas +Indian/Cocos +Indian/Comoro +Indian/Kerguelen +Indian/Mahe +Indian/Maldives +Indian/Mauritius +Indian/Mayotte +Indian/Reunion +Iran +Israel +Jamaica +Japan +Kwajalein +Libya +MET +MST +MST7MDT +Mexico/BajaNorte +Mexico/BajaSur +Mexico/General +NZ +NZ-CHAT +Navajo +PRC +PST8PDT +Pacific/Apia +Pacific/Auckland +Pacific/Bougainville +Pacific/Chatham +Pacific/Chuuk +Pacific/Easter +Pacific/Efate +Pacific/Enderbury +Pacific/Fakaofo +Pacific/Fiji +Pacific/Funafuti +Pacific/Galapagos +Pacific/Gambier +Pacific/Guadalcanal +Pacific/Guam +Pacific/Honolulu +Pacific/Johnston +Pacific/Kiritimati +Pacific/Kosrae +Pacific/Kwajalein +Pacific/Majuro +Pacific/Marquesas +Pacific/Midway +Pacific/Nauru +Pacific/Niue +Pacific/Norfolk +Pacific/Noumea +Pacific/Pago_Pago +Pacific/Palau +Pacific/Pitcairn +Pacific/Pohnpei +Pacific/Ponape +Pacific/Port_Moresby +Pacific/Rarotonga +Pacific/Saipan +Pacific/Samoa +Pacific/Tahiti +Pacific/Tarawa +Pacific/Tongatapu +Pacific/Truk +Pacific/Wake +Pacific/Wallis +Pacific/Yap +Poland +Portugal +ROC +ROK +Singapore +Turkey +UCT +UTC +Universal +W-SU +WET +Zulu +posixrules + +Type it at the prompt below exactly as it appears above. (NOTE: If you don't +see your timezone, use "timeconfig" again after booting for the verbose list) + +EOF + echo -n "Timezone? " + read TIMEZONE; + echo + + if [ -n "$TIMEZONE" -a \ + -r $T_PX/usr/share/zoneinfo/$TIMEZONE -o \ + -r /var/log/mount/usr/share/zoneinfo/$TIMEZONE -o \ + -L $T_PX/usr/share/zoneinfo/$TIMEZONE -o \ + -L /var/log/mount/usr/share/zoneinfo/$TIMEZONE ]; then + echo "Creating link from $TIMEZONE to localtime in /etc..." + echo + setzone $TIMEZONE + exit + else + cat << EOF + +Timezone $TIMEZONE could not be found. You may try again if you wish. +Make sure you type the name exactly as it appears - this configuration script +is case sensitive. + +Press [enter] to continue. + +EOF + read JUNK; + fi + done +fi + diff --git a/patches/source/glibc/doinst.sh-glibc b/patches/source/glibc/doinst.sh-glibc new file mode 100644 index 000000000..fc947587e --- /dev/null +++ b/patches/source/glibc/doinst.sh-glibc @@ -0,0 +1,179 @@ +#!/bin/sh +# Copyright (C) 2002, 2005 Slackware Linux, Inc. +# Copyright 2005, 2006, 2007, 2011, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# Swap glibc on the fly. +# +# If we're on a running system we have to handle this _very_ carefully. :-) +# The tricks involved here get trickier every time... + +# OK, now we have to be sure of a few things. First, you do have a 2.6 +# kernel running, right? + +if [ -r /proc/ksyms ]; then + echo "FATAL: you need to be running a 2.6.x kernel in order to upgrade" + echo "to this version of glibc." + echo + sleep 999 + exit 1 +fi + +# Next, stop using the /lib/ntpl libraries. These are now obsolete and +# will break the installation if present: +if [ -d lib/tls ]; then + mkdir -p lib/obsolete + mv lib/tls lib/obsolete +fi +if [ -x sbin/ldconfig ]; then + sbin/ldconfig -r . +fi + +# Install NPTL glibc libraries: +if [ -x /sbin/ldconfig -a -d lib/incoming ]; then # swap on the fly + # First create copies of the incoming libraries: + ( cd lib/incoming + for file in * ; do + if [ ! -r ../${file}.incoming ]; then + cp -a $file ../${file}.incoming + fi + done + ) + # Then switch to them all at once: + /sbin/ldconfig -l lib/*.incoming 2> /dev/null + # Finally, rename them and clean up: + ( cd lib + for file in *.incoming ; do + rm -f `basename $file .incoming` + cp -a $file `basename $file .incoming` + /sbin/ldconfig -l `basename $file .incoming` + rm -f $file + done + ) +else # no ldconfig? Good, it's safe to just jam it on home (and make links below): + ( cd lib/incoming + for file in * ; do + cp -a $file .. + done + ) +fi +# Now, get rid of the temporary directory: +rm -rf lib/incoming +# Done installing NPTL glibc libraries. + +# Handle config files: +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/nscd.conf.new +config etc/profile.d/glibc.csh.new +config etc/profile.d/glibc.sh.new +# Clearly you already decided this issue. :-) +rm -f etc/profile.d/glibc.csh.new +rm -f etc/profile.d/glibc.sh.new + +# In case there's no ldconfig, make the links manually: +if [ ! -x /sbin/ldconfig ]; then +( cd lib ; rm -rf libnss_nis.so.2 ) +( cd lib ; ln -sf libnss_nis-@@VERSION@@.so libnss_nis.so.2 ) +( cd lib ; rm -rf libm.so.6 ) +( cd lib ; ln -sf libm-@@VERSION@@.so libm.so.6 ) +( cd lib ; rm -rf libnss_files.so.2 ) +( cd lib ; ln -sf libnss_files-@@VERSION@@.so libnss_files.so.2 ) +( cd lib ; rm -rf libresolv.so.2 ) +( cd lib ; ln -sf libresolv-@@VERSION@@.so libresolv.so.2 ) +( cd lib ; rm -rf libnsl.so.1 ) +( cd lib ; ln -sf libnsl-@@VERSION@@.so libnsl.so.1 ) +( cd lib ; rm -rf libutil.so.1 ) +( cd lib ; ln -sf libutil-@@VERSION@@.so libutil.so.1 ) +( cd lib ; rm -rf libnss_compat.so.2 ) +( cd lib ; ln -sf libnss_compat-@@VERSION@@.so libnss_compat.so.2 ) +( cd lib ; rm -rf libthread_db.so.1 ) +( cd lib ; ln -sf libthread_db-1.0.so libthread_db.so.1 ) +( cd lib ; rm -rf libnss_hesiod.so.2 ) +( cd lib ; ln -sf libnss_hesiod-@@VERSION@@.so libnss_hesiod.so.2 ) +( cd lib ; rm -rf libanl.so.1 ) +( cd lib ; ln -sf libanl-@@VERSION@@.so libanl.so.1 ) +( cd lib ; rm -rf libcrypt.so.1 ) +( cd lib ; ln -sf libcrypt-@@VERSION@@.so libcrypt.so.1 ) +( cd lib ; rm -rf libBrokenLocale.so.1 ) +( cd lib ; ln -sf libBrokenLocale-@@VERSION@@.so libBrokenLocale.so.1 ) +( cd lib ; rm -rf ld-linux.so.2 ) +( cd lib ; ln -sf ld-@@VERSION@@.so ld-linux.so.2 ) +( cd lib ; rm -rf libdl.so.2 ) +( cd lib ; ln -sf libdl-@@VERSION@@.so libdl.so.2 ) +( cd lib ; rm -rf libnss_dns.so.2 ) +( cd lib ; ln -sf libnss_dns-@@VERSION@@.so libnss_dns.so.2 ) +( cd lib ; rm -rf libpthread.so.0 ) +( cd lib ; ln -sf libpthread-@@VERSION@@.so libpthread.so.0 ) +( cd lib ; rm -rf libnss_nisplus.so.2 ) +( cd lib ; ln -sf libnss_nisplus-@@VERSION@@.so libnss_nisplus.so.2 ) +( cd lib ; rm -rf libc.so.6 ) +( cd lib ; ln -sf libc-@@VERSION@@.so libc.so.6 ) +( cd lib ; rm -rf librt.so.1 ) +( cd lib ; ln -sf librt-@@VERSION@@.so librt.so.1 ) +fi + +# More links: +( cd usr/lib ; rm -rf libnss_nisplus.so ) +( cd usr/lib ; ln -sf ../../lib/libnss_nisplus.so.2 libnss_nisplus.so ) +# This is now a linker script: +#( cd usr/lib ; rm -rf libpthread.so ) +#( cd usr/lib ; ln -sf ../../lib/libpthread.so.0 libpthread.so ) +( cd usr/lib ; rm -rf libresolv.so ) +( cd usr/lib ; ln -sf ../../lib/libresolv.so.2 libresolv.so ) +( cd usr/lib ; rm -rf libnsl.so ) +( cd usr/lib ; ln -sf ../../lib/libnsl.so.1 libnsl.so ) +( cd usr/lib ; rm -rf libnss_hesiod.so ) +( cd usr/lib ; ln -sf ../../lib/libnss_hesiod.so.2 libnss_hesiod.so ) +( cd usr/lib ; rm -rf libnss_files.so ) +( cd usr/lib ; ln -sf ../../lib/libnss_files.so.2 libnss_files.so ) +# This is now a linker script: +#( cd usr/lib ; rm -rf libm.so ) +#( cd usr/lib ; ln -sf ../../lib/libm.so.6 libm.so ) +( cd usr/lib ; rm -rf libutil.so ) +( cd usr/lib ; ln -sf ../../lib/libutil.so.1 libutil.so ) +( cd usr/lib ; rm -rf libnss_compat.so ) +( cd usr/lib ; ln -sf ../../lib/libnss_compat.so.2 libnss_compat.so ) +( cd usr/lib ; rm -rf libthread_db.so ) +( cd usr/lib ; ln -sf ../../lib/libthread_db.so.1 libthread_db.so ) +( cd usr/lib ; rm -rf libcrypt.so ) +( cd usr/lib ; ln -sf ../../lib/libcrypt.so.1 libcrypt.so ) +( cd usr/lib ; rm -rf libBrokenLocale.so ) +( cd usr/lib ; ln -sf ../../lib/libBrokenLocale.so.1 libBrokenLocale.so ) +( cd usr/lib ; rm -rf libdl.so ) +( cd usr/lib ; ln -sf ../../lib/libdl.so.2 libdl.so ) +( cd usr/lib ; rm -rf libnss_dns.so ) +( cd usr/lib ; ln -sf ../../lib/libnss_dns.so.2 libnss_dns.so ) +( cd usr/lib ; rm -rf librt.so ) +( cd usr/lib ; ln -sf ../../lib/librt.so.1 librt.so ) +( cd usr/lib ; rm -rf libanl.so ) +( cd usr/lib ; ln -sf ../../lib/libanl.so.1 libanl.so ) +( cd usr/lib ; rm -rf libnss_nis.so ) +( cd usr/lib ; ln -sf ../../lib/libnss_nis.so.2 libnss_nis.so ) +( cd usr/share/zoneinfo ; rm -rf localtime ) +( cd usr/share/zoneinfo ; ln -sf /etc/localtime localtime ) +( cd bin ; rm -rf sln ) +( cd bin ; ln -sf /sbin/sln sln ) + +# Reload to prevent init from holding a stale handle to glibc on shutdown: +if [ -x /sbin/telinit ]; then + /sbin/telinit u +fi diff --git a/patches/source/glibc/doinst.sh-glibc-solibs b/patches/source/glibc/doinst.sh-glibc-solibs new file mode 100644 index 000000000..a11c36a55 --- /dev/null +++ b/patches/source/glibc/doinst.sh-glibc-solibs @@ -0,0 +1,137 @@ +#!/bin/sh +# Copyright (C) 2002, 2005 Slackware Linux, Inc. +# Copyright 2005, 2006, 2011, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# Swap glibc on the fly. +# +# If we're on a running system we have to handle this _very_ carefully. :-) +# The tricks involved here get trickier every time... + +# OK, now we have to be sure of a few things. First, you do have a 2.6 +# kernel running, right? + +if [ -r /proc/ksyms ]; then + echo "FATAL: you need to be running a 2.6.x kernel in order to upgrade" + echo "to this version of glibc." + echo + sleep 999 + exit 1 +fi + +# Next, stop using the /lib/ntpl libraries. These are now obsolete and +# will break the installation if present: +if [ -d lib/tls ]; then + mkdir -p lib/obsolete + mv lib/tls lib/obsolete +fi +if [ -x sbin/ldconfig ]; then + sbin/ldconfig -r . +fi + +# Install NPTL glibc libraries: +if [ -x /sbin/ldconfig -a -d lib/incoming ]; then # swap on the fly + # First create copies of the incoming libraries: + ( cd lib/incoming + for file in * ; do + if [ ! -r ../${file}.incoming ]; then + cp -a $file ../${file}.incoming + fi + done + ) + # Then switch to them all at once: + /sbin/ldconfig -l lib/*.incoming 2> /dev/null + # Finally, rename them and clean up: + ( cd lib + for file in *.incoming ; do + rm -f `basename $file .incoming` + cp -a $file `basename $file .incoming` + /sbin/ldconfig -l `basename $file .incoming` + rm -f $file + done + ) +else # no ldconfig? Good, it's safe to just jam it on home (and make links below): + ( cd lib/incoming + for file in * ; do + cp -a $file .. + done + ) +fi +# Now, get rid of the temporary directory: +rm -rf lib/incoming +# Done installing NPTL glibc libraries. + +# Handle config files: +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/profile.d/glibc.csh.new +config etc/profile.d/glibc.sh.new +# Clearly you already decided this issue. :-) +rm -f etc/profile.d/glibc.csh.new +rm -f etc/profile.d/glibc.sh.new + +# In case there's no ldconfig, make the links manually: +if [ ! -x /sbin/ldconfig ]; then +( cd lib ; rm -rf libnss_nis.so.2 ) +( cd lib ; ln -sf libnss_nis-@@VERSION@@.so libnss_nis.so.2 ) +( cd lib ; rm -rf libm.so.6 ) +( cd lib ; ln -sf libm-@@VERSION@@.so libm.so.6 ) +( cd lib ; rm -rf libnss_files.so.2 ) +( cd lib ; ln -sf libnss_files-@@VERSION@@.so libnss_files.so.2 ) +( cd lib ; rm -rf libresolv.so.2 ) +( cd lib ; ln -sf libresolv-@@VERSION@@.so libresolv.so.2 ) +( cd lib ; rm -rf libnsl.so.1 ) +( cd lib ; ln -sf libnsl-@@VERSION@@.so libnsl.so.1 ) +( cd lib ; rm -rf libutil.so.1 ) +( cd lib ; ln -sf libutil-@@VERSION@@.so libutil.so.1 ) +( cd lib ; rm -rf libnss_compat.so.2 ) +( cd lib ; ln -sf libnss_compat-@@VERSION@@.so libnss_compat.so.2 ) +( cd lib ; rm -rf libthread_db.so.1 ) +( cd lib ; ln -sf libthread_db-1.0.so libthread_db.so.1 ) +( cd lib ; rm -rf libnss_hesiod.so.2 ) +( cd lib ; ln -sf libnss_hesiod-@@VERSION@@.so libnss_hesiod.so.2 ) +( cd lib ; rm -rf libanl.so.1 ) +( cd lib ; ln -sf libanl-@@VERSION@@.so libanl.so.1 ) +( cd lib ; rm -rf libcrypt.so.1 ) +( cd lib ; ln -sf libcrypt-@@VERSION@@.so libcrypt.so.1 ) +( cd lib ; rm -rf libBrokenLocale.so.1 ) +( cd lib ; ln -sf libBrokenLocale-@@VERSION@@.so libBrokenLocale.so.1 ) +( cd lib ; rm -rf ld-linux.so.2 ) +( cd lib ; ln -sf ld-@@VERSION@@.so ld-linux.so.2 ) +( cd lib ; rm -rf libdl.so.2 ) +( cd lib ; ln -sf libdl-@@VERSION@@.so libdl.so.2 ) +( cd lib ; rm -rf libnss_dns.so.2 ) +( cd lib ; ln -sf libnss_dns-@@VERSION@@.so libnss_dns.so.2 ) +( cd lib ; rm -rf libpthread.so.0 ) +( cd lib ; ln -sf libpthread-@@VERSION@@.so libpthread.so.0 ) +( cd lib ; rm -rf libnss_nisplus.so.2 ) +( cd lib ; ln -sf libnss_nisplus-@@VERSION@@.so libnss_nisplus.so.2 ) +( cd lib ; rm -rf libc.so.6 ) +( cd lib ; ln -sf libc-@@VERSION@@.so libc.so.6 ) +( cd lib ; rm -rf librt.so.1 ) +( cd lib ; ln -sf librt-@@VERSION@@.so librt.so.1 ) +fi + +# Reload to prevent init from holding a stale handle to glibc on shutdown: +if [ -x /sbin/telinit ]; then + /sbin/telinit u +fi + diff --git a/patches/source/glibc/glibc-2.10-dns-no-gethostbyname4.diff b/patches/source/glibc/glibc-2.10-dns-no-gethostbyname4.diff new file mode 100644 index 000000000..3fa365afa --- /dev/null +++ b/patches/source/glibc/glibc-2.10-dns-no-gethostbyname4.diff @@ -0,0 +1,26 @@ +The gethostbyname4() lookup method is problematic since it fires out both +the A and AAAA DNS queries in parallel and over the same socket. This +should work in theory, but it turns out that many cheap DSL modems and +similar devices have buggy DNS servers - if the AAAA query arrives too +quickly after the A query, the server will generate only a single reply +with the A query id but returning an error for the AAAA query; we get +stuck waiting for the second reply. + +For gethostbyname4() users affected, disabling IPv6 in the system might +work around the issue, unfortunately it only helps with applications +using AI_ADDRCONFIG (e.g. Firefox); some (notably e.g. Pidgin) neglect +to do that. + +Real fix should be using separate ports for the A and AAAA queries. + +--- resolv/Versions 2008-08-02 10:26:09.000000000 +0200 ++++ resolv/Versions 2008-12-08 12:51:53.000000000 +0100 +@@ -102,7 +102,7 @@ libnss_dns { + _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r; + _nss_dns_getnetbyname_r; _nss_dns_getcanonname_r; + _nss_dns_gethostbyaddr2_r; +- _nss_dns_gethostbyname4_r; ++# _nss_dns_gethostbyname4_r; + } + } + diff --git a/patches/source/glibc/glibc-c-utf8-locale.patch b/patches/source/glibc/glibc-c-utf8-locale.patch new file mode 100644 index 000000000..70c92a986 --- /dev/null +++ b/patches/source/glibc/glibc-c-utf8-locale.patch @@ -0,0 +1,251 @@ +--- ./localedata/SUPPORTED.orig 2015-08-05 01:42:21.000000000 -0500 ++++ ./localedata/SUPPORTED 2015-12-17 17:07:08.053200616 -0600 +@@ -1,6 +1,7 @@ + # This file names the currently supported and somewhat tested locales. + # If you have any additions please file a glibc bug report. + SUPPORTED-LOCALES=\ ++C.UTF-8/UTF-8 \ + aa_DJ.UTF-8/UTF-8 \ + aa_DJ/ISO-8859-1 \ + aa_ER/UTF-8 \ +--- ./localedata/locales/C.orig 2015-12-17 17:07:08.053200616 -0600 ++++ ./localedata/locales/C 2015-12-17 17:07:08.053200616 -0600 +@@ -0,0 +1,238 @@ ++escape_char / ++comment_char % ++% Locale for C locale in UTF-8 ++ ++LC_IDENTIFICATION ++title "C locale" ++source "" ++address "" ++contact "" ++email "" ++tel "" ++fax "" ++language "C" ++territory "" ++revision "1.0" ++date "2015-08-10" ++% ++category "C:2015";LC_IDENTIFICATION ++category "C:2015";LC_CTYPE ++category "C:2015";LC_COLLATE ++category "C:2015";LC_TIME ++category "C:2015";LC_NUMERIC ++category "C:2015";LC_MONETARY ++category "C:2015";LC_MESSAGES ++category "C:2015";LC_PAPER ++category "C:2015";LC_NAME ++category "C:2015";LC_ADDRESS ++category "C:2015";LC_TELEPHONE ++category "C:2015";LC_MEASUREMENT ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++ ++END LC_CTYPE ++ ++LC_COLLATE ++order_start forward ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++UNDEFINED ++order_end ++END LC_COLLATE ++ ++LC_MONETARY ++% This is the 14652 i18n fdcc-set definition for ++% the LC_MONETARY category ++% (except for the int_curr_symbol and currency_symbol, they are empty in ++% the 14652 i18n fdcc-set definition and also empty in ++% glibc/locale/C-monetary.c. But localedef complains in that case). ++% ++% Using "USD" for int_curr_symbol. But maybe "XXX" would be better? ++% XXX is "No currency" (https://en.wikipedia.org/wiki/ISO_4217) ++int_curr_symbol "" ++% Using "$" for currency_symbol. But maybe would be better? ++% U+00A4 is the "generic currency symbol" ++% (https://en.wikipedia.org/wiki/Currency_sign_%28typography%29) ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping -1 ++positive_sign "" ++negative_sign "" ++int_frac_digits -1 ++frac_digits -1 ++p_cs_precedes -1 ++int_p_sep_by_space -1 ++p_sep_by_space -1 ++n_cs_precedes -1 ++int_n_sep_by_space -1 ++n_sep_by_space -1 ++p_sign_posn -1 ++n_sign_posn -1 ++% ++END LC_MONETARY ++ ++LC_NUMERIC ++% This is the POSIX Locale definition for ++% the LC_NUMERIC category. ++% ++decimal_point "" ++thousands_sep "" ++grouping -1 ++END LC_NUMERIC ++ ++LC_TIME ++% This is the POSIX Locale definition for ++% the LC_TIME category. ++% ++% Abbreviated weekday names (%a) ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++ ++% Full weekday names (%A) ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% Abbreviated month names (%b) ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++ ++% Full month names (%B) ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% Week description, consists of three fields: ++% 1. Number of days in a week. ++% 2. Gregorian date that is a first weekday (19971130 for Sunday, 19971201 for Monday). ++% 3. The weekday number to be contained in the first week of the year. ++% ++% ISO 8601 conforming applications should use the values 7, 19971201 (a ++% Monday), and 4 (Thursday), respectively. ++week 7;19971201;4 ++first_weekday 1 ++first_workday 1 ++ ++% Appropriate date and time representation (%c) ++% "%a %b %e %H:%M:%S %Y" ++d_t_fmt "" ++ ++% Appropriate date representation (%x) ++% "%m/%d/%y" ++d_fmt "" ++ ++% Appropriate time representation (%X) ++% "%H:%M:%S" ++t_fmt "" ++ ++% Appropriate AM/PM time representation (%r) ++% "%I:%M:%S %p" ++t_fmt_ampm "" ++ ++% Equivalent of AM/PM (%p) "AM"/"PM" ++% ++am_pm "";"" ++ ++% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y" ++date_fmt "" ++END LC_TIME ++ ++LC_MESSAGES ++% This is the POSIX Locale definition for ++% the LC_NUMERIC category. ++% ++yesexpr "" ++noexpr "" ++yesstr "" ++nostr "" ++END LC_MESSAGES ++ ++LC_PAPER ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_PAPER category. ++% (A4 paper, this is also used in the built in C/POSIX ++% locale in glibc/locale/C-paper.c) ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_NAME ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_NAME category. ++% "%p%t%g%t%m%t%f" ++% (also used in the built in C/POSIX locale in glibc/locale/C-name.c) ++name_fmt "/ ++" ++END LC_NAME ++ ++LC_ADDRESS ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_ADDRESS category. ++% "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N" ++% (also used in the built in C/POSIX locale in glibc/locale/C-address.c) ++postal_fmt "/ ++/ ++/ ++/ ++" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_TELEPHONE category. ++% "+%c %a %l" ++tel_int_fmt "/ ++" ++% (also used in the built in C/POSIX locale in glibc/locale/C-telephone.c) ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_MEASUREMENT category. ++% (same as in the built in C/POSIX locale in glibc/locale/C-measurement.c) ++%metric ++measurement 1 ++END LC_MEASUREMENT ++ diff --git a/patches/source/glibc/glibc-cvs-checkout.sh b/patches/source/glibc/glibc-cvs-checkout.sh new file mode 100755 index 000000000..022d0117b --- /dev/null +++ b/patches/source/glibc/glibc-cvs-checkout.sh @@ -0,0 +1,3 @@ +echo "The password below is \"anoncvs\":" +cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc login +cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc co libc diff --git a/patches/source/glibc/glibc.3776f38f.diff b/patches/source/glibc/glibc.3776f38f.diff new file mode 100644 index 000000000..d2b787a4f --- /dev/null +++ b/patches/source/glibc/glibc.3776f38f.diff @@ -0,0 +1,52 @@ +From 3776f38fcd267c127ba5eb222e2c614c191744aa Mon Sep 17 00:00:00 2001 +From: Siddhesh Poyarekar +Date: Tue, 20 Jun 2017 05:59:17 +0200 +Subject: [PATCH] Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (bug + #21209) + +The LD_HWCAP_MASK environment variable may alter the selection of +function variants for some architectures. For AT_SECURE process it +means that if an outdated routine has a bug that would otherwise not +affect newer platforms by default, LD_HWCAP_MASK will allow that bug +to be exploited. + +To be on the safe side, ignore and disable LD_HWCAP_MASK for setuid +binaries. + + [BZ #21209] + * elf/rtld.c (process_envvars): Ignore LD_HWCAP_MASK for + AT_SECURE processes. + * sysdeps/generic/unsecvars.h: Add LD_HWCAP_MASK. + +(cherry picked from commit 1c1243b6fc33c029488add276e56570a07803bfd) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 369724b..9362a21 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -2534,7 +2534,8 @@ process_envvars (enum mode *modep) + + case 10: + /* Mask for the important hardware capabilities. */ +- if (memcmp (envline, "HWCAP_MASK", 10) == 0) ++ if (!__libc_enable_secure ++ && memcmp (envline, "HWCAP_MASK", 10) == 0) + GLRO(dl_hwcap_mask) = __strtoul_internal (&envline[11], NULL, + 0, 0); + break; +diff --git a/sysdeps/generic/unsecvars.h b/sysdeps/generic/unsecvars.h +index a740837..5ea8a4a 100644 +--- a/sysdeps/generic/unsecvars.h ++++ b/sysdeps/generic/unsecvars.h +@@ -16,6 +16,7 @@ + "LD_DEBUG\0" \ + "LD_DEBUG_OUTPUT\0" \ + "LD_DYNAMIC_WEAK\0" \ ++ "LD_HWCAP_MASK\0" \ + "LD_LIBRARY_PATH\0" \ + "LD_ORIGIN_PATH\0" \ + "LD_PRELOAD\0" \ +-- +2.9.3 + + diff --git a/patches/source/glibc/glibc.46703a39.diff b/patches/source/glibc/glibc.46703a39.diff new file mode 100644 index 000000000..c21200bea --- /dev/null +++ b/patches/source/glibc/glibc.46703a39.diff @@ -0,0 +1,119 @@ +From 46703a3995aa3ca2b816814aa4ad05ed524194dd Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 19 Jun 2017 22:31:04 +0200 +Subject: [PATCH] ld.so: Reject overly long LD_PRELOAD path elements + +(cherry picked from commit 6d0ba622891bed9d8394eef1935add53003b12e8) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 2fc33a6..4badcf6 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -99,6 +99,35 @@ uintptr_t __pointer_chk_guard_local + strong_alias (__pointer_chk_guard_local, __pointer_chk_guard) + #endif + ++/* Length limits for names and paths, to protect the dynamic linker, ++ particularly when __libc_enable_secure is active. */ ++#ifdef NAME_MAX ++# define SECURE_NAME_LIMIT NAME_MAX ++#else ++# define SECURE_NAME_LIMIT 255 ++#endif ++#ifdef PATH_MAX ++# define SECURE_PATH_LIMIT PATH_MAX ++#else ++# define SECURE_PATH_LIMIT 1024 ++#endif ++ ++/* Check that AT_SECURE=0, or that the passed name does not contain ++ directories and is not overly long. Reject empty names ++ unconditionally. */ ++static bool ++dso_name_valid_for_suid (const char *p) ++{ ++ if (__glibc_unlikely (__libc_enable_secure)) ++ { ++ /* Ignore pathnames with directories for AT_SECURE=1 ++ programs, and also skip overlong names. */ ++ size_t len = strlen (p); ++ if (len >= SECURE_NAME_LIMIT || memchr (p, '/', len) != NULL) ++ return false; ++ } ++ return *p != '\0'; ++} + + /* List of auditing DSOs. */ + static struct audit_list +@@ -716,6 +745,42 @@ static const char *preloadlist attribute_relro; + /* Nonzero if information about versions has to be printed. */ + static int version_info attribute_relro; + ++/* The LD_PRELOAD environment variable gives list of libraries ++ separated by white space or colons that are loaded before the ++ executable's dependencies and prepended to the global scope list. ++ (If the binary is running setuid all elements containing a '/' are ++ ignored since it is insecure.) Return the number of preloads ++ performed. */ ++unsigned int ++handle_ld_preload (const char *preloadlist, struct link_map *main_map) ++{ ++ unsigned int npreloads = 0; ++ const char *p = preloadlist; ++ char fname[SECURE_PATH_LIMIT]; ++ ++ while (*p != '\0') ++ { ++ /* Split preload list at space/colon. */ ++ size_t len = strcspn (p, " :"); ++ if (len > 0 && len < sizeof (fname)) ++ { ++ memcpy (fname, p, len); ++ fname[len] = '\0'; ++ } ++ else ++ fname[0] = '\0'; ++ ++ /* Skip over the substring and the following delimiter. */ ++ p += len; ++ if (*p != '\0') ++ ++p; ++ ++ if (dso_name_valid_for_suid (fname)) ++ npreloads += do_preload (fname, main_map, "LD_PRELOAD"); ++ } ++ return npreloads; ++} ++ + static void + dl_main (const ElfW(Phdr) *phdr, + ElfW(Word) phnum, +@@ -1462,23 +1527,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", + + if (__glibc_unlikely (preloadlist != NULL)) + { +- /* The LD_PRELOAD environment variable gives list of libraries +- separated by white space or colons that are loaded before the +- executable's dependencies and prepended to the global scope +- list. If the binary is running setuid all elements +- containing a '/' are ignored since it is insecure. */ +- char *list = strdupa (preloadlist); +- char *p; +- + HP_TIMING_NOW (start); +- +- /* Prevent optimizing strsep. Speed is not important here. */ +- while ((p = (strsep) (&list, " :")) != NULL) +- if (p[0] != '\0' +- && (__builtin_expect (! __libc_enable_secure, 1) +- || strchr (p, '/') == NULL)) +- npreloads += do_preload (p, main_map, "LD_PRELOAD"); +- ++ npreloads += handle_ld_preload (preloadlist, main_map); + HP_TIMING_NOW (stop); + HP_TIMING_DIFF (diff, start, stop); + HP_TIMING_ACCUM_NT (load_time, diff); +-- +2.9.3 + + diff --git a/patches/source/glibc/glibc.6a824767.dont.assert.on.older.intel.cpus.diff b/patches/source/glibc/glibc.6a824767.dont.assert.on.older.intel.cpus.diff new file mode 100644 index 000000000..a3d1b147f --- /dev/null +++ b/patches/source/glibc/glibc.6a824767.dont.assert.on.older.intel.cpus.diff @@ -0,0 +1,32 @@ +From 6a824767d8948faf10d8d3a602eb4f2a59431601 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Wed, 12 Oct 2016 08:22:52 -0700 +Subject: [PATCH] X86: Don't assert on older Intel CPUs [BZ #20647] + +Since the maximum CPUID level of older Intel CPUs is 1, change +handle_intel to return -1, instead of assert, when the maximum +CPUID level is less than 2. + + [BZ #20647] + * sysdeps/x86_64/cacheinfo.c (handle_intel): Return -1 if the + maximum CPUID level is less than 2. + +diff --git a/sysdeps/x86_64/cacheinfo.c b/sysdeps/x86_64/cacheinfo.c +index cf4f64b..35268e8 100644 +--- a/sysdeps/x86_64/cacheinfo.c ++++ b/sysdeps/x86_64/cacheinfo.c +@@ -259,7 +259,9 @@ intel_check_word (int name, unsigned int value, bool *has_level_2, + static long int __attribute__ ((noinline)) + handle_intel (int name, unsigned int maxidx) + { +- assert (maxidx >= 2); ++ /* Return -1 for older CPUs. */ ++ if (maxidx < 2) ++ return -1; + + /* OK, we can use the CPUID instruction to get all info about the + caches. */ +-- +2.9.3 + + diff --git a/patches/source/glibc/glibc.CVE-2017-1000366.3c7cd212.diff b/patches/source/glibc/glibc.CVE-2017-1000366.3c7cd212.diff new file mode 100644 index 000000000..ee2870bc8 --- /dev/null +++ b/patches/source/glibc/glibc.CVE-2017-1000366.3c7cd212.diff @@ -0,0 +1,32 @@ +From 3c7cd21290cabdadd72984fb69bc51e64ff1002d Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 19 Jun 2017 18:31:27 +0200 +Subject: [PATCH] CVE-2017-1000366: Ignore LD_LIBRARY_PATH for AT_SECURE=1 + programs [BZ #21624] + +LD_LIBRARY_PATH can only be used to reorder system search paths, which +is not useful functionality. + +This makes an exploitable unbounded alloca in _dl_init_paths unreachable +for AT_SECURE=1 programs. + +(cherry picked from commit f6110a8fee2ca36f8e2d2abecf3cba9fa7b8ea7d) + +diff --git a/elf/rtld.c b/elf/rtld.c +index a036ece..2fc33a6 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -2418,7 +2418,8 @@ process_envvars (enum mode *modep) + + case 12: + /* The library search path. */ +- if (memcmp (envline, "LIBRARY_PATH", 12) == 0) ++ if (!__libc_enable_secure ++ && memcmp (envline, "LIBRARY_PATH", 12) == 0) + { + library_path = &envline[13]; + break; +-- +2.9.3 + + diff --git a/patches/source/glibc/glibc.SlackBuild b/patches/source/glibc/glibc.SlackBuild new file mode 100755 index 000000000..a1dd9a90e --- /dev/null +++ b/patches/source/glibc/glibc.SlackBuild @@ -0,0 +1,440 @@ +#!/bin/sh + +# Copyright 2006, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +## build glibc-$VERSION for Slackware + +VERSION=${VERSION:-$(echo glibc-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +CHECKOUT=${CHECKOUT:-""} +BUILD=${BUILD:-4_slack14.2} + +# I was considering disabling NSCD, but MoZes talked me out of it. :) +#DISABLE_NSCD=" --disable-nscd " + +# $ARCH may be preset, otherwise i586 compatibility with i686 binary +# structuring is the Slackware default. +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# I'll break this out as an option for fun :-) +case $ARCH in + i386) + OPTIMIZ="-O3 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" + ;; + i486) + OPTIMIZ="-O3 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" + ;; + i586) + OPTIMIZ="-O3 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" + ;; + i686) + OPTIMIZ="-O3 -march=i686" + LIBDIRSUFFIX="" + ;; + athlon) + OPTIMIZ="-O3 -march=athlon" + LIBDIRSUFFIX="" + ;; + s390) + OPTIMIZ="-O3" + LIBDIRSUFFIX="" + ;; + x86_64) + OPTIMIZ="-O3 -fPIC" + LIBDIRSUFFIX="64" + ;; + *) + OPTIMIZ="-O3" + LIBDIRSUFFIX="" + ;; +esac + +case $ARCH in + x86_64) + TARGET=${TARGET:-x86_64} + ;; + i586) + # This should be i586 for all 32-bit x86 arch: + TARGET=${TARGET:-i586} + ;; +esac + +# Hand off the $ARCH variable to $SLACKWARE_ARCH to avoid confusing glibc: +SLACKWARE_ARCH=$ARCH +unset ARCH + +CVSVER=${VERSION}${CHECKOUT} + +# NOTE!!! glibc needs to be built against the sanitized kernel headers, +# which will be installed under /usr/include by the kernel-headers package. +# Be sure the correct version of the headers package is installed BEFORE +# building glibc! + +CWD=$(pwd) +# Temporary build location. This should not be a directory +# path a non-root user could create later... +TMP=${TMP:-/glibc-tmp-$(mcookie)} +mkdir -p $TMP + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# This function fixes a doinst.sh file for x86_64. +# With thanks to Fred Emmott. +fix_doinst() { + if [ "x$LIBDIRSUFFIX" = "x" ]; then + return; + fi; + # Fix "( cd usr/lib ;" occurrences + sed -i "s#lib ;#lib${LIBDIRSUFFIX} ;#" install/doinst.sh + # Fix "lib/" occurrences + sed -i "s#lib/#lib${LIBDIRSUFFIX}/#g" install/doinst.sh + # Fix "( cd lib" occurrences + sed -i "s#( cd lib\$#( cd lib${LIBDIRSUFFIX}#" install/doinst.sh + + if [ "$SLACKWARE_ARCH" = "x86_64" ]; then + sed -i 's#ld-linux.so.2#ld-linux-x86-64.so.2#' install/doinst.sh + fi +} + +# This is a patch function to put all glibc patches in the build script +# up near the top. +apply_patches() { + # Use old-style locale directories rather than a single (and strangely + # formatted) /usr/lib/locale/locale-archive file: + zcat $CWD/glibc.locale.no-archive.diff.gz | patch -p1 --verbose || exit 1 + # The is_IS locale is causing a strange error about the "echn" command + # not existing. This patch reverts is_IS to the version shipped in + # glibc-2.5: + zcat $CWD/is_IS.diff.gz | patch -p1 --verbose || exit 1 + # Support ru_RU.CP1251 locale: + zcat $CWD/glibc.ru_RU.CP1251.diff.gz | patch -p1 --verbose || exit 1 + # Fix resolver problem with glibc-2.9: + zcat $CWD/glibc-2.10-dns-no-gethostbyname4.diff.gz | patch -p0 --verbose || exit 1 + # This reverts a patch that was made to glibc to fix "namespace leakage", + # which seems to cause some build failures (e.g. with conntrack): + zcat $CWD/glibc.revert.to.fix.build.breakages.diff.gz | patch -p1 -l --verbose || exit 1 + # Make it harder for people to trick ldd into running code: + zcat $CWD/glibc.ldd.trace.through.dynamic.linker.diff.gz | patch -p1 --verbose || exit 1 + # Add a C.UTF-8 locale: + zcat $CWD/glibc-c-utf8-locale.patch.gz | patch -p1 --verbose || exit 1 + # Upstream git patches for security hardening (CVE-2017-1000366): + zcat $CWD/glibc.3776f38f.diff.gz | patch -p1 --verbose || exit 1 + zcat $CWD/glibc.46703a39.diff.gz | patch -p1 --verbose || exit 1 + zcat $CWD/glibc.CVE-2017-1000366.3c7cd212.diff.gz | patch -p1 --verbose || exit 1 + zcat $CWD/glibc.adc7e06f.diff.gz | patch -p1 --verbose || exit 1 + zcat $CWD/glibc.c69d4a0f.diff.gz | patch -p1 --verbose || exit 1 + # Don't assert on older Intel CPUs. + # This fixes an ldconfig failure on Pentium MMX. + zcat $CWD/glibc.6a824767.dont.assert.on.older.intel.cpus.diff.gz | patch -p1 --verbose || exit 1 +} + +# This is going to be the initial $DESTDIR: +export PKG=$TMP/package-glibc-incoming-tree +PGLIBC=$TMP/package-glibc +PSOLIBS=$TMP/package-glibc-solibs +PI18N=$TMP/package-glibc-i18n +PPROFILE=$TMP/package-glibc-profile +PDEBUG=$TMP/package-glibc-debug + +# Empty these locations first: +for dir in $PKG $PGLIBC $PSOLIBS $PZONE $PI18N $PPROFILE $PDEBUG ; do + if [ -d $dir ]; then + rm -rf $dir + fi + mkdir -p $dir +done +if [ -d $TMP/glibc-$VERSION ]; then + rm -rf $TMP/glibc-$VERSION +fi + +# Create an incoming directory structure for glibc to be built into: +mkdir -p $PKG/lib${LIBDIRSUFFIX} +mkdir -p $PKG/sbin +mkdir -p $PKG/usr/bin +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX} +mkdir -p $PKG/usr/sbin +mkdir -p $PKG/usr/include +mkdir -p $PKG/usr/doc +mkdir -p $PKG/usr/man +mkdir -p $PKG/usr/share +mkdir -p $PKG/var/db/nscd +mkdir -p $PKG/var/run/nscd + +# Begin extract/compile: +cd $TMP +rm -rf glibc-$CVSVER +tar xvf $CWD/glibc-$CVSVER.tar.xz \ + || tar xvf $CWD/glibc-$CVSVER.tar.bz2 \ + || tar xvf $CWD/glibc-$CVSVER.tar.gz +cd glibc-$CVSVER + +chown -R root:root . +find . -perm 666 -exec chmod 644 {} \; +find . -perm 664 -exec chmod 644 {} \; +find . -perm 600 -exec chmod 644 {} \; +find . -perm 444 -exec chmod 644 {} \; +find . -perm 400 -exec chmod 644 {} \; +find . -perm 440 -exec chmod 644 {} \; +find . -perm 777 -exec chmod 755 {} \; +find . -perm 775 -exec chmod 755 {} \; +find . -perm 511 -exec chmod 755 {} \; +find . -perm 711 -exec chmod 755 {} \; +find . -perm 555 -exec chmod 755 {} \; + +# Clean up leftover CVS directories: +find . -type d -name CVS -exec rm -r {} \; 2> /dev/null + +# Apply patches; exit if any fail. +apply_patches +if [ ! $? = 0 ]; then + exit 1 +fi + +# Make build directory: +mkdir build-glibc-$VERSION +cd build-glibc-$VERSION || exit 1 + +echo "BUILDING DAS NPTL GLIBC" +CFLAGS="-g $OPTIMIZ" \ +../configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --enable-kernel=2.6.32 \ + --with-headers=/usr/include \ + --enable-add-ons \ + --enable-obsolete-rpc \ + --enable-profile \ + $DISABLE_NSCD \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --with-tls \ + --with-__thread \ + --without-cvs \ + $TARGET-slackware-linux + +make $NUMJOBS || make || exit 1 +make install install_root=$PKG || exit 1 +make localedata/install-locales install_root=$PKG || exit 1 + +# The prevailing standard seems to be putting unstripped libraries in +# /usr/lib/debug/ and stripping the debugging symbols from all the other +# libraries. +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/debug +cp -a $PKG/lib${LIBDIRSUFFIX}/l*.so* $PKG/usr/lib${LIBDIRSUFFIX}/debug +cp -a $PKG/usr/lib${LIBDIRSUFFIX}/*.a $PKG/usr/lib${LIBDIRSUFFIX}/debug +# Don't need debug+profile: +( cd $PKG/usr/lib${LIBDIRSUFFIX}/debug ; rm -f *_p.* ) +# NOTE: Is there really a reason for the glibc-debug package? +# If you're debugging glibc, you can also compile it, right? + +## COMMENTED OUT: There's no reason for profile libs to include -g information. +## Put back unstripped profiling libraries: +#mv $PKG/usr/lib${LIBDIRSUFFIX}/debug/*_p.a $PKG/usr/lib${LIBDIRSUFFIX} +# It might be best to put the unstripped and profiling libraries in glibc-debug and glibc-profile. + +# I don't think "strip -g" causes the pthread problems. It's --strip-unneeded that does. +strip -g $PKG/lib${LIBDIRSUFFIX}/l*.so* +strip -g $PKG/usr/lib${LIBDIRSUFFIX}/l*.so* +strip -g $PKG/usr/lib${LIBDIRSUFFIX}/lib*.a + +# Remove the rquota.x and rquota.h include files, as they are provided by +# the quota package: +rm -f $PKG/usr/include/rpcsvc/rquota.{h,x} + +# Back to the sources dir to add some files/docs: +cd $TMP/glibc-$CVSVER + +# We'll automatically install the config file for the Name Server Cache Daemon. +# Perhaps this should also have some commented-out startup code in rc.inet2... +mkdir -p $PKG/etc +cat nscd/nscd.conf > $PKG/etc/nscd.conf.new + +# Install docs: +( mkdir -p $PKG/usr/doc/glibc-$VERSION + cp -a \ + BUGS CONFORMANCE COPYING* FAQ INSTALL LICENSES NAMESPACE \ + NEWS NOTES PROJECTS README* \ + $PKG/usr/doc/glibc-$VERSION +) + +# Trim the NEWS file to omit ancient history: +if [ -r NEWS ]; then + DOCSDIR=$(echo $PKG/usr/doc/glibc-$VERSION) + cat NEWS | head -n 1000 > $DOCSDIR/NEWS + touch -r NEWS $DOCSDIR/NEWS +fi + +# OK, there are some very old Linux standards that say that any binaries in a /bin or +# /sbin directory (and the directories themselves) should be group bin rather than +# group root, unless a specific group is really needed for some reason. +# +# I can't find any mention of this in more recent standards docs, and always thought +# that it was pretty cosmetic anyway (hey, if there's a reason -- fill me in!), so +# it's possible that this ownership change won't be followed in the near future +# (it's a PITA, and causes many bug reports when the perms change is occasionally +# forgotten). +# +# But, it's hard to get me to break old habits, so we'll continue the tradition here: +# +# No, no we won't. You know how we love to break traditions. + +# Strip most binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null +) + +# Fix info dir: +rm $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* + +# This is junk +rm $PKG/etc/ld.so.cache +( cd $PKG + find . -name "*.orig" -exec rm {} \; +) + +################################## +# OK, time to make some packages # +################################## + +# glibc-profile: +cd $PPROFILE +mkdir -p usr/lib${LIBDIRSUFFIX} +# Might as well just grab these with 'mv' to simplify things later: +mv $PKG/usr/lib${LIBDIRSUFFIX}/lib*_p.a usr/lib${LIBDIRSUFFIX} +# Profile libs should be stripped. Use the debug libs to debug... +( cd usr/lib${LIBDIRSUFFIX} ; strip -g *.a ) +mkdir install +cp -a $CWD/slack-desc.glibc-profile install/slack-desc +makepkg -l y -c n $TMP/glibc-profile-$VERSION-$SLACKWARE_ARCH-$BUILD.txz + +# THIS IS NO LONGER PACKAGED (or is it? might be better to let it be made, and then ship it or not...) +# glibc-debug: +cd $PDEBUG +mkdir -p usr/lib${LIBDIRSUFFIX} +# Might as well just grab these with 'mv' to simplify things later: +mv $PKG/usr/lib${LIBDIRSUFFIX}/debug usr/lib${LIBDIRSUFFIX} +mkdir install +cp -a $CWD/slack-desc.glibc-debug install/slack-desc +# Don't package this. +#makepkg -l y -c n $TMP/glibc-debug-$VERSION-$SLACKWARE_ARCH-$BUILD.txz +## INSTEAD, NUKE THESE LIBS +#rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/debug + +# glibc-i18n: +cd $PI18N +mkdir -p usr/lib${LIBDIRSUFFIX}/locale +mv $PKG/usr/lib${LIBDIRSUFFIX}/locale/* usr/lib${LIBDIRSUFFIX}/locale +mkdir -p usr/share/{i18n,locale} +mv $PKG/usr/share/i18n/* usr/share/i18n +mv $PKG/usr/share/locale/* usr/share/locale +# Leave copies of the C, POSIX, and en_US locales in the main glibc package: +cp -a usr/lib${LIBDIRSUFFIX}/locale/{C,en_US}* $PKG/usr/lib${LIBDIRSUFFIX}/locale +mkdir -p $PKG/usr/share/i18n/locales +cp -a usr/share/i18n/locales/{C,POSIX,en_US} $PKG/usr/share/i18n/locales +mkdir install +cp -a $CWD/slack-desc.glibc-i18n install/slack-desc +makepkg -l y -c n $TMP/glibc-i18n-$VERSION-$SLACKWARE_ARCH-$BUILD.txz + +# glibc-solibs: +cd $PSOLIBS +mkdir -p etc/profile.d +cp -a $CWD/profile.d/* etc/profile.d +chown -R root:root etc +chmod 755 etc/profile.d/* +mkdir -p lib${LIBDIRSUFFIX} +cp -a $PKG/lib${LIBDIRSUFFIX}/* lib${LIBDIRSUFFIX} +( cd lib${LIBDIRSUFFIX} + mkdir incoming + mv *so* incoming + mv incoming/libSegFault.so . +) +mkdir -p usr +cp -a $PKG/usr/bin usr +mv usr/bin/ldd . +rm usr/bin/* +mv ldd usr/bin +mkdir -p usr/lib${LIBDIRSUFFIX} +# The gconv directory has a lot of stuff, but including it here will save some problems. +# Seems standard elsewhere. +cp -a $PKG/usr/lib${LIBDIRSUFFIX}/gconv usr/lib${LIBDIRSUFFIX} +# Another manpage abandoned by GNU... +#mkdir -p usr/man/man1 +#cp -a $PKG/usr/man/man1/ldd.1.gz usr/man/man1 +mkdir -p usr/libexec +cp -a $PKG/usr/libexec/pt_chown usr/libexec +# Same usr.bin deal: +cp -a $PKG/sbin . +mv sbin/ldconfig . +rm sbin/* +mv ldconfig sbin +mkdir install +cp -a $CWD/slack-desc.glibc-solibs install/slack-desc +cp -a $CWD/doinst.sh-glibc-solibs install/doinst.sh +fix_doinst +sed -i "s/@@VERSION@@/$VERSION/g" install/doinst.sh +# Ditch links: +find . -type l -exec rm {} \; +# libm.so is *not* a linker script on all $ARCH. +# If it's missing now, replace the symlink: +if [ ! -r usr/lib${LIBDIRSUFFIX}/libm.so ]; then + ( cd usr/lib${LIBDIRSUFFIX} ; ln -sf ../../lib${LIBDIRSUFFIX}/libm.so.6 libm.so ) +fi +# Build the package: +makepkg -l y -c n $TMP/glibc-solibs-$VERSION-$SLACKWARE_ARCH-$BUILD.txz + +# And finally, the complete "all-in-one" glibc package is created +# from whatever was leftover: +cd $PGLIBC +mv $PKG/* . +mkdir -p etc/profile.d +cp -a $CWD/profile.d/* etc/profile.d +chown -R root:root etc +chmod 755 etc/profile.d/* +# Ditch links (these are in doinst.sh-glibc): +find . -type l -exec rm {} \; +mkdir install +cp -a $CWD/slack-desc.glibc install/slack-desc +cp -a $CWD/doinst.sh-glibc install/doinst.sh +fix_doinst +sed -i "s/@@VERSION@@/$VERSION/g" install/doinst.sh +( cd lib${LIBDIRSUFFIX} + mkdir incoming + mv *so* incoming + mv incoming/libSegFault.so . +) +# Build the package: +/sbin/makepkg -l y -c n $TMP/glibc-$VERSION-$SLACKWARE_ARCH-$BUILD.txz + +# Done! +echo +echo "glibc packages built in $TMP!" + diff --git a/patches/source/glibc/glibc.adc7e06f.diff b/patches/source/glibc/glibc.adc7e06f.diff new file mode 100644 index 000000000..ca5eac556 --- /dev/null +++ b/patches/source/glibc/glibc.adc7e06f.diff @@ -0,0 +1,38 @@ +From adc7e06fb412a2a1ee52f8cb788caf436335b9f3 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Wed, 14 Jun 2017 08:11:22 +0200 +Subject: [PATCH] i686: Add missing IS_IN (libc) guards to vectorized strcspn + +Since commit d957c4d3fa48d685ff2726c605c988127ef99395 (i386: Compile +rtld-*.os with -mno-sse -mno-mmx -mfpmath=387), vector intrinsics can +no longer be used in ld.so, even if the compiled code never makes it +into the final ld.so link. This commit adds the missing IS_IN (libc) +guard to the SSE 4.2 strcspn implementation, so that it can be used from +ld.so in the future. + +(cherry picked from commit 69052a3a95da37169a08f9e59b2cc1808312753c) + +diff --git a/sysdeps/i386/i686/multiarch/strcspn-c.c b/sysdeps/i386/i686/multiarch/strcspn-c.c +index 6d61e19..ec230fb 100644 +--- a/sysdeps/i386/i686/multiarch/strcspn-c.c ++++ b/sysdeps/i386/i686/multiarch/strcspn-c.c +@@ -1,2 +1,4 @@ +-#define __strcspn_sse2 __strcspn_ia32 +-#include ++#if IS_IN (libc) ++# define __strcspn_sse2 __strcspn_ia32 ++# include ++#endif +diff --git a/sysdeps/i386/i686/multiarch/varshift.c b/sysdeps/i386/i686/multiarch/varshift.c +index 7760b96..6742a35 100644 +--- a/sysdeps/i386/i686/multiarch/varshift.c ++++ b/sysdeps/i386/i686/multiarch/varshift.c +@@ -1 +1,3 @@ +-#include ++#if IS_IN (libc) ++# include ++#endif +-- +2.9.3 + + diff --git a/patches/source/glibc/glibc.c69d4a0f.diff b/patches/source/glibc/glibc.c69d4a0f.diff new file mode 100644 index 000000000..f44880003 --- /dev/null +++ b/patches/source/glibc/glibc.c69d4a0f.diff @@ -0,0 +1,201 @@ +From c69d4a0f680a24fdbe323764a50382ad324041e9 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 19 Jun 2017 22:32:12 +0200 +Subject: [PATCH] ld.so: Reject overly long LD_AUDIT path elements + +Also only process the last LD_AUDIT entry. + +(cherry picked from commit 81b82fb966ffbd94353f793ad17116c6088dedd9) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 4badcf6..369724b 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -129,13 +129,91 @@ dso_name_valid_for_suid (const char *p) + return *p != '\0'; + } + +-/* List of auditing DSOs. */ ++/* LD_AUDIT variable contents. Must be processed before the ++ audit_list below. */ ++const char *audit_list_string; ++ ++/* Cyclic list of auditing DSOs. audit_list->next is the first ++ element. */ + static struct audit_list + { + const char *name; + struct audit_list *next; + } *audit_list; + ++/* Iterator for audit_list_string followed by audit_list. */ ++struct audit_list_iter ++{ ++ /* Tail of audit_list_string still needing processing, or NULL. */ ++ const char *audit_list_tail; ++ ++ /* The list element returned in the previous iteration. NULL before ++ the first element. */ ++ struct audit_list *previous; ++ ++ /* Scratch buffer for returning a name which is part of ++ audit_list_string. */ ++ char fname[SECURE_NAME_LIMIT]; ++}; ++ ++/* Initialize an audit list iterator. */ ++static void ++audit_list_iter_init (struct audit_list_iter *iter) ++{ ++ iter->audit_list_tail = audit_list_string; ++ iter->previous = NULL; ++} ++ ++/* Iterate through both audit_list_string and audit_list. */ ++static const char * ++audit_list_iter_next (struct audit_list_iter *iter) ++{ ++ if (iter->audit_list_tail != NULL) ++ { ++ /* First iterate over audit_list_string. */ ++ while (*iter->audit_list_tail != '\0') ++ { ++ /* Split audit list at colon. */ ++ size_t len = strcspn (iter->audit_list_tail, ":"); ++ if (len > 0 && len < sizeof (iter->fname)) ++ { ++ memcpy (iter->fname, iter->audit_list_tail, len); ++ iter->fname[len] = '\0'; ++ } ++ else ++ /* Do not return this name to the caller. */ ++ iter->fname[0] = '\0'; ++ ++ /* Skip over the substring and the following delimiter. */ ++ iter->audit_list_tail += len; ++ if (*iter->audit_list_tail == ':') ++ ++iter->audit_list_tail; ++ ++ /* If the name is valid, return it. */ ++ if (dso_name_valid_for_suid (iter->fname)) ++ return iter->fname; ++ /* Otherwise, wrap around and try the next name. */ ++ } ++ /* Fall through to the procesing of audit_list. */ ++ } ++ ++ if (iter->previous == NULL) ++ { ++ if (audit_list == NULL) ++ /* No pre-parsed audit list. */ ++ return NULL; ++ /* Start of audit list. The first list element is at ++ audit_list->next (cyclic list). */ ++ iter->previous = audit_list->next; ++ return iter->previous->name; ++ } ++ if (iter->previous == audit_list) ++ /* Cyclic list wrap-around. */ ++ return NULL; ++ iter->previous = iter->previous->next; ++ return iter->previous->name; ++} ++ + #ifndef HAVE_INLINED_SYSCALLS + /* Set nonzero during loading and initialization of executable and + libraries, cleared before the executable's entry point runs. This +@@ -1303,11 +1381,13 @@ of this helper program; chances are you did not intend to run this program.\n\ + GL(dl_rtld_map).l_tls_modid = _dl_next_tls_modid (); + + /* If we have auditing DSOs to load, do it now. */ +- if (__glibc_unlikely (audit_list != NULL)) ++ bool need_security_init = true; ++ if (__glibc_unlikely (audit_list != NULL) ++ || __glibc_unlikely (audit_list_string != NULL)) + { +- /* Iterate over all entries in the list. The order is important. */ + struct audit_ifaces *last_audit = NULL; +- struct audit_list *al = audit_list->next; ++ struct audit_list_iter al_iter; ++ audit_list_iter_init (&al_iter); + + /* Since we start using the auditing DSOs right away we need to + initialize the data structures now. */ +@@ -1318,9 +1398,14 @@ of this helper program; chances are you did not intend to run this program.\n\ + use different values (especially the pointer guard) and will + fail later on. */ + security_init (); ++ need_security_init = false; + +- do ++ while (true) + { ++ const char *name = audit_list_iter_next (&al_iter); ++ if (name == NULL) ++ break; ++ + int tls_idx = GL(dl_tls_max_dtv_idx); + + /* Now it is time to determine the layout of the static TLS +@@ -1329,7 +1414,7 @@ of this helper program; chances are you did not intend to run this program.\n\ + no DF_STATIC_TLS bit is set. The reason is that we know + glibc will use the static model. */ + struct dlmopen_args dlmargs; +- dlmargs.fname = al->name; ++ dlmargs.fname = name; + dlmargs.map = NULL; + + const char *objname; +@@ -1342,7 +1427,7 @@ of this helper program; chances are you did not intend to run this program.\n\ + not_loaded: + _dl_error_printf ("\ + ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", +- al->name, err_str); ++ name, err_str); + if (malloced) + free ((char *) err_str); + } +@@ -1446,10 +1531,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", + goto not_loaded; + } + } +- +- al = al->next; + } +- while (al != audit_list->next); + + /* If we have any auditing modules, announce that we already + have two objects loaded. */ +@@ -1713,7 +1795,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", + if (tcbp == NULL) + tcbp = init_tls (); + +- if (__glibc_likely (audit_list == NULL)) ++ if (__glibc_likely (need_security_init)) + /* Initialize security features. But only if we have not done it + earlier. */ + security_init (); +@@ -2344,9 +2426,7 @@ process_dl_audit (char *str) + char *p; + + while ((p = (strsep) (&str, ":")) != NULL) +- if (p[0] != '\0' +- && (__builtin_expect (! __libc_enable_secure, 1) +- || strchr (p, '/') == NULL)) ++ if (dso_name_valid_for_suid (p)) + { + /* This is using the local malloc, not the system malloc. The + memory can never be freed. */ +@@ -2410,7 +2490,7 @@ process_envvars (enum mode *modep) + break; + } + if (memcmp (envline, "AUDIT", 5) == 0) +- process_dl_audit (&envline[6]); ++ audit_list_string = &envline[6]; + break; + + case 7: +-- +2.9.3 + + diff --git a/patches/source/glibc/glibc.ldd.trace.through.dynamic.linker.diff b/patches/source/glibc/glibc.ldd.trace.through.dynamic.linker.diff new file mode 100644 index 000000000..6b1f5c843 --- /dev/null +++ b/patches/source/glibc/glibc.ldd.trace.through.dynamic.linker.diff @@ -0,0 +1,49 @@ +2009-11-08 Aurelien Jarno + + * elf/ldd.bash.in: also handle error code 126 (ld.so non + executable). Always trace dynamic library dependencies through + the dynamic linker. + +--- a/elf/ldd.bash.in ++++ b/elf/ldd.bash.in +@@ -153,8 +153,6 @@ for file do + echo "ldd: ${file}:" $"not regular file" >&2 + result=1 + elif test -r "$file"; then +- test -x "$file" || echo 'ldd:' $"\ +-warning: you do not have execution permission for" "\`$file'" >&2 + RTLD= + ret=1 + for rtld in ${RTLDLIST}; do +@@ -167,28 +165,16 @@ warning: you do not have execution permission for" "\`$file'" >&2 + fi + done + case $ret in +- 0) +- # If the program exits with exit code 5, it means the process has been +- # invoked with __libc_enable_secure. Fall back to running it through +- # the dynamic linker. +- try_trace "$file" +- rc=$? +- if [ $rc = 5 ]; then +- try_trace "$RTLD" "$file" +- rc=$? +- fi +- [ $rc = 0 ] || result=1 ++ 0|2) ++ try_trace "$RTLD" "$file" || result=1 + ;; +- 1) ++ 1|126) + # This can be a non-ELF binary or no binary at all. + nonelf "$file" || { + echo $" not a dynamic executable" + result=1 + } + ;; +- 2) +- try_trace "$RTLD" "$file" || result=1 +- ;; + *) + echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($ret)" >&2 + exit 1 diff --git a/patches/source/glibc/glibc.locale.no-archive.diff b/patches/source/glibc/glibc.locale.no-archive.diff new file mode 100644 index 000000000..bf1a83b71 --- /dev/null +++ b/patches/source/glibc/glibc.locale.no-archive.diff @@ -0,0 +1,10 @@ +--- ./localedata/Makefile.orig 2003-11-20 15:31:38.000000000 -0800 ++++ ./localedata/Makefile 2004-08-03 17:20:54.000000000 -0700 +@@ -222,6 +222,7 @@ + echo -n '...'; \ + input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ + $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ diff --git a/patches/source/glibc/glibc.make-3.82.diff b/patches/source/glibc/glibc.make-3.82.diff new file mode 100644 index 000000000..56b0675b3 --- /dev/null +++ b/patches/source/glibc/glibc.make-3.82.diff @@ -0,0 +1,28 @@ +Submitted By: Matt Burgess +Date: 2010-07-26 +Initial Package Version: 2.11.2 +Upstream Status: Not submitted +Origin: Denis Onischenko + (http://www.mail-archive.com/help-make@gnu.org/msg08847.html) +Description: Fixes an incompatibility with Make-3.82. + +diff -Naur glibc-2.11.2.orig/manual/Makefile glibc-2.11.2/manual/Makefile +--- glibc-2.11.2.orig/manual/Makefile 2010-05-19 20:38:20.000000000 +0000 ++++ glibc-2.11.2/manual/Makefile 2010-07-26 06:51:27.049899308 +0000 +@@ -232,9 +232,13 @@ + .PHONY: stubs + stubs: $(objpfx)stubs + endif +-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: +- $(make-target-directory) +- touch $@ ++$(objpfx)stubs ../po/manual.pot: ++ $(make-target-directory) ++ touch $@ ++ ++$(objpfx)stamp%: ++ $(make-target-directory) ++ touch $@ + + # Make the target directory if it doesn't exist, using the `mkinstalldirs' + # script that does `mkdir -p' even if `mkdir' doesn't support that flag. diff --git a/patches/source/glibc/glibc.revert.to.fix.build.breakages.diff b/patches/source/glibc/glibc.revert.to.fix.build.breakages.diff new file mode 100644 index 000000000..9c8e93b9b --- /dev/null +++ b/patches/source/glibc/glibc.revert.to.fix.build.breakages.diff @@ -0,0 +1,13 @@ +--- ./sysdeps/unix/sysv/linux/bits/socket.h.orig 2008-07-27 03:25:30.000000000 -0500 ++++ ./sysdeps/unix/sysv/linux/bits/socket.h 2009-02-24 17:38:52.000000000 -0600 +@@ -26,8 +26,9 @@ + #endif + + #define __need_size_t ++#define __need_NULL + #include +- ++#include + #include + + /* Type for length arguments in socket calls. */ diff --git a/patches/source/glibc/glibc.ru_RU.CP1251.diff b/patches/source/glibc/glibc.ru_RU.CP1251.diff new file mode 100644 index 000000000..376cf76a7 --- /dev/null +++ b/patches/source/glibc/glibc.ru_RU.CP1251.diff @@ -0,0 +1,10 @@ +--- ./localedata/SUPPORTED.orig 2005-07-17 20:50:35.000000000 -0500 ++++ ./localedata/SUPPORTED 2006-08-22 01:33:09.000000000 -0500 +@@ -270,6 +270,7 @@ + ro_RO/ISO-8859-2 \ + ru_RU.KOI8-R/KOI8-R \ + ru_RU.UTF-8/UTF-8 \ ++ru_RU.CP1251/CP1251 \ + ru_RU/ISO-8859-5 \ + ru_UA.UTF-8/UTF-8 \ + ru_UA/KOI8-U \ diff --git a/patches/source/glibc/is_IS.diff b/patches/source/glibc/is_IS.diff new file mode 100644 index 000000000..52a99696c --- /dev/null +++ b/patches/source/glibc/is_IS.diff @@ -0,0 +1,19 @@ +--- ./localedata/locales/is_IS.orig 2007-09-30 17:30:17.000000000 -0500 ++++ ./localedata/locales/is_IS 2006-07-30 17:19:43.000000000 -0500 +@@ -947,6 +947,7 @@ + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; ++<"=> IGNORE;IGNORE;IGNORE;<"=> + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; +@@ -955,6 +956,8 @@ + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; ++ IGNORE;IGNORE;IGNORE; ++ IGNORE;IGNORE;IGNORE; + UNDEFINED IGNORE;IGNORE;IGNORE + + ;;IGNORE;IGNORE diff --git a/patches/source/glibc/profile.d/glibc.csh.new b/patches/source/glibc/profile.d/glibc.csh.new new file mode 100755 index 000000000..1f33e9663 --- /dev/null +++ b/patches/source/glibc/profile.d/glibc.csh.new @@ -0,0 +1,9 @@ +#!/bin/csh +# Set more relaxed (glibc-2.3.5 like) malloc() checking. +# +# This relaxes the default paranoia level so that it reports +# bugs, but does not kill the questionable process. You can +# get away with running broken programs with this setting, +# but at a possible performance and security cost. +# +#setenv MALLOC_CHECK_ 1 diff --git a/patches/source/glibc/profile.d/glibc.sh.new b/patches/source/glibc/profile.d/glibc.sh.new new file mode 100755 index 000000000..979f4879e --- /dev/null +++ b/patches/source/glibc/profile.d/glibc.sh.new @@ -0,0 +1,8 @@ +#!/bin/sh +# Set more relaxed (glibc-2.3.5 like) malloc() checking. +# +# This relaxes the default paranoia level so that it reports +# bugs, but does not kill the questionable process. You can +# get away with running broken programs with this setting, +# but at a possible performance and security cost. +#export MALLOC_CHECK_=1 diff --git a/patches/source/glibc/slack-desc.glibc b/patches/source/glibc/slack-desc.glibc new file mode 100644 index 000000000..c9c35c2da --- /dev/null +++ b/patches/source/glibc/slack-desc.glibc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc: glibc (GNU C libraries) +glibc: +glibc: This package contains the GNU C libraries and header files. The GNU +glibc: C library was written originally by Roland McGrath, and is currently +glibc: maintained by Ulrich Drepper. Some parts of the library were +glibc: contributed or worked on by other people. +glibc: +glibc: You'll need this package to compile programs. +glibc: +glibc: +glibc: diff --git a/patches/source/glibc/slack-desc.glibc-debug b/patches/source/glibc/slack-desc.glibc-debug new file mode 100644 index 000000000..79398d0b6 --- /dev/null +++ b/patches/source/glibc/slack-desc.glibc-debug @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-debug: glibc-debug (GNU C libraries with debugging symbols) +glibc-debug: +glibc-debug: This package contains versions of the GNU C libraries with debugging +glibc-debug: information. These are needed only if you wish to be able to step +glibc-debug: through C library routines while debugging programs. Most debugging +glibc-debug: efforts will not require these. +glibc-debug: To use these libraries, set LD_LIBRARY_PATH when calling the debugger: +glibc-debug: LD_LIBRARY_PATH=/usr/lib/debug gdb +glibc-debug: +glibc-debug: Or, use this approach if you need to debug a setuid binary: +glibc-debug: su user -c "LD_LIBRARY_PATH=/usr/lib/debug gdb " diff --git a/patches/source/glibc/slack-desc.glibc-i18n b/patches/source/glibc/slack-desc.glibc-i18n new file mode 100644 index 000000000..1a678d98a --- /dev/null +++ b/patches/source/glibc/slack-desc.glibc-i18n @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-i18n: glibc-i18n (locale files from glibc) +glibc-i18n: +glibc-i18n: These files go in /usr/lib/locale, /usr/share/i18n/, and +glibc-i18n: /usr/share/locale/ to provide internationalization support. +glibc-i18n: You'll need this package unless you will be using US English only. +glibc-i18n: +glibc-i18n: +glibc-i18n: +glibc-i18n: +glibc-i18n: +glibc-i18n: diff --git a/patches/source/glibc/slack-desc.glibc-profile b/patches/source/glibc/slack-desc.glibc-profile new file mode 100644 index 000000000..8c873fd92 --- /dev/null +++ b/patches/source/glibc/slack-desc.glibc-profile @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-profile: glibc-profile (GNU C libraries with profiling support) +glibc-profile: +glibc-profile: This package contains static versions of the GNU C libraries with +glibc-profile: support for profiling binaries using gprof. gprof calculates how +glibc-profile: much time a program spends in each routine which can suggest where +glibc-profile: to concentrate efforts to improve performance. +glibc-profile: +glibc-profile: See the gprof man page for more details. +glibc-profile: +glibc-profile: +glibc-profile: diff --git a/patches/source/glibc/slack-desc.glibc-solibs b/patches/source/glibc/slack-desc.glibc-solibs new file mode 100644 index 000000000..807df645a --- /dev/null +++ b/patches/source/glibc/slack-desc.glibc-solibs @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-solibs: glibc-solibs (shared GNU C libraries) +glibc-solibs: +glibc-solibs: This package contains the shared libraries, binaries, and support +glibc-solibs: files required to run most Linux applications linked with glibc. +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: +glibc-solibs: diff --git a/patches/source/glibc/slack-desc.glibc-solibs-linuxthreads b/patches/source/glibc/slack-desc.glibc-solibs-linuxthreads new file mode 100644 index 000000000..9efe3bf1d --- /dev/null +++ b/patches/source/glibc/slack-desc.glibc-solibs-linuxthreads @@ -0,0 +1,18 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-solibs-linuxthreads: glibc-solibs-linuxthreads (LinuxThreads shared GNU C libraries) +glibc-solibs-linuxthreads: +glibc-solibs-linuxthreads: This package contains the shared libraries for glibc that uses +glibc-solibs-linuxthreads: LinuxThreads, the threading implementation in Linux 2.4.x and +glibc-solibs-linuxthreads: earlier kernels. In some cases you'll need to use these libraries +glibc-solibs-linuxthreads: to run old binaries by setting these environment variables: +glibc-solibs-linuxthreads: export LD_ASSUME_KERNEL=2.4.33 +glibc-solibs-linuxthreads: export LD_LIBRARY_PATH=/lib/obsolete/linuxthreads +glibc-solibs-linuxthreads: old-program +glibc-solibs-linuxthreads: Most users should have no need for this package. Recompile. :-) diff --git a/patches/source/gnupg/gnupg.SlackBuild b/patches/source/gnupg/gnupg.SlackBuild new file mode 100755 index 000000000..b031808f4 --- /dev/null +++ b/patches/source/gnupg/gnupg.SlackBuild @@ -0,0 +1,115 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2013, 2015, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=gnupg +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-gnupg + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +rm -rf $PKG +mkdir -p $PKG $PKG + +cd $TMP +rm -rf gnupg-$VERSION +tar xvf $CWD/gnupg-$VERSION.tar.?z* || exit 1 +cd gnupg-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* + +gzip -9 $PKG/usr/man/*/* + +mkdir -p $PKG/usr/doc/gnupg-$VERSION +cp -a \ + ABOUT-NLS AUTHORS BUGS COPYING* INSTALL NEWS PROJECTS README* THANKS TODO VERSION \ + $PKG/usr/doc/gnupg-$VERSION +if [ -r $PKG/usr/share/gnupg/FAQ ]; then + ( cd $PKG/usr/doc/gnupg-$VERSION + ln -sf /usr/share/gnupg/FAQ . ) +fi + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Add slack-desc files: +mkdir -p $PKG/install +cat $CWD/slack-desc.gnupg > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/gnupg-$VERSION-$ARCH-$BUILD.txz + +# Clean up the extra stuff: +if [ "$1" = "--cleanup" ]; then + rm -rf $TMP/gnupg-$VERSION + rm -rf $PKG +fi diff --git a/patches/source/gnupg/slack-desc.gnupg b/patches/source/gnupg/slack-desc.gnupg new file mode 100644 index 000000000..496005e9b --- /dev/null +++ b/patches/source/gnupg/slack-desc.gnupg @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gnupg: gnupg (The GNU Privacy Guard) +gnupg: +gnupg: GnuPG is GNU's tool for secure communication and data storage. It can +gnupg: be used to encrypt data and to create digital signatures. It includes +gnupg: an advanced key management facility and is compliant with the proposed +gnupg: OpenPGP Internet standard as described in RFC2440. +gnupg: +gnupg: +gnupg: +gnupg: +gnupg: diff --git a/patches/source/gnutls/gnutls.SlackBuild b/patches/source/gnutls/gnutls.SlackBuild new file mode 100755 index 000000000..a74330a64 --- /dev/null +++ b/patches/source/gnutls/gnutls.SlackBuild @@ -0,0 +1,141 @@ +#!/bin/sh + +# Copyright 2007, 2008, 2009, 2010, 2016, 2017 Patrick Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=gnutls +VERSION=${VERSION:-$(echo gnutls-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP + +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --enable-static=no \ + --disable-rpath \ + --with-included-libtasn1 \ + --enable-openssl-compatibility \ + --build=$ARCH-slackware-linux \ + --host=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +( cd $PKG/usr/info + rm -f dir + gzip -9 *.info* +) + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL LICENSE NEWS README* THANKS \ + doc/COPYING* \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Likewise for the bloated NEWS: +if [ -r NEWS ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat NEWS | head -n 1000 > $DOCSDIR/NEWS + touch -r NEWS $DOCSDIR/NEWS +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n -p $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/gnutls/slack-desc b/patches/source/gnutls/slack-desc new file mode 100644 index 000000000..49fdb9f0c --- /dev/null +++ b/patches/source/gnutls/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gnutls: gnutls (GNU TLS library) +gnutls: +gnutls: This is a TLS (Transport Layer Security) 1.0 and SSL (Secure Sockets +gnutls: Layer) 3.0 implementation. In brief, GnuTLS can be described as a +gnutls: library which offers an API to access secure communication protocols. +gnutls: These protocols provide privacy over insecure lines, and were designed +gnutls: to prevent eavesdropping, tampering, or message forgery. +gnutls: +gnutls: Homepage: http://www.gnu.org/software/gnutls/ +gnutls: +gnutls: diff --git a/patches/source/gtk+2/doinst.sh b/patches/source/gtk+2/doinst.sh new file mode 100644 index 000000000..ee74ab9c4 --- /dev/null +++ b/patches/source/gtk+2/doinst.sh @@ -0,0 +1,26 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/gtk-2.0/im-multipress.conf.new + +chroot . rm -f /usr/share/icons/*/icon-theme.cache 1> /dev/null 2> /dev/null + +# Run this if we are on an installed system. Otherwise it will be +# handled on first boot. +if [ -x /usr/bin/update-gtk-immodules-2.0 ]; then + /usr/bin/update-gtk-immodules +fi + +# In case this is the first run installing the standalone gdk-pixbuf, +# we will run this a second time to fix machines that will not reboot. +chroot . /usr/bin/update-gdk-pixbuf-loaders 1> /dev/null 2> /dev/null + diff --git a/patches/source/gtk+2/fix_build_issues_on_tutorial_and_faq.diff b/patches/source/gtk+2/fix_build_issues_on_tutorial_and_faq.diff new file mode 100644 index 000000000..6c3523518 --- /dev/null +++ b/patches/source/gtk+2/fix_build_issues_on_tutorial_and_faq.diff @@ -0,0 +1,26 @@ +diff -Nur gtk+-2.24.27.orig/docs/faq/Makefile.in gtk+-2.24.27/docs/faq/Makefile.in +--- gtk+-2.24.27.orig/docs/faq/Makefile.in 2015-03-03 10:41:21.000000000 -0600 ++++ gtk+-2.24.27/docs/faq/Makefile.in 2015-03-05 20:21:08.037167566 -0600 +@@ -644,7 +644,8 @@ + @HAVE_DOCBOOK_TRUE@ (cd $(srcdir); \ + @HAVE_DOCBOOK_TRUE@ db2html gtk-faq.sgml; \ + @HAVE_DOCBOOK_TRUE@ test -d html && rm -r html; \ +-@HAVE_DOCBOOK_TRUE@ mv gtk-faq html); \ ++@HAVE_DOCBOOK_TRUE@ mkdir html; \ ++@HAVE_DOCBOOK_TRUE@ mv *.html html); \ + @HAVE_DOCBOOK_TRUE@ fi + + @HAVE_DOCBOOK_TRUE@pdf: +diff -Nur gtk+-2.24.27.orig/docs/tutorial/Makefile.in gtk+-2.24.27/docs/tutorial/Makefile.in +--- gtk+-2.24.27.orig/docs/tutorial/Makefile.in 2015-03-03 10:41:21.000000000 -0600 ++++ gtk+-2.24.27/docs/tutorial/Makefile.in 2015-03-05 20:19:52.973017063 -0600 +@@ -657,7 +657,8 @@ + @HAVE_DOCBOOK_TRUE@ (cd $(srcdir); \ + @HAVE_DOCBOOK_TRUE@ db2html gtk-tut.sgml; \ + @HAVE_DOCBOOK_TRUE@ test -d html && rm -r html; \ +-@HAVE_DOCBOOK_TRUE@ mv gtk-tut html; \ ++@HAVE_DOCBOOK_TRUE@ mkdir html; \ ++@HAVE_DOCBOOK_TRUE@ mv *.html html; \ + @HAVE_DOCBOOK_TRUE@ mkdir html/images; \ + @HAVE_DOCBOOK_TRUE@ cp images/*.png html/images); \ + @HAVE_DOCBOOK_TRUE@ fi diff --git a/patches/source/gtk+2/gtk+-2.24.x.icon-compat.am.diff b/patches/source/gtk+2/gtk+-2.24.x.icon-compat.am.diff new file mode 100644 index 000000000..3fc35dcab --- /dev/null +++ b/patches/source/gtk+2/gtk+-2.24.x.icon-compat.am.diff @@ -0,0 +1,264 @@ +--- gtk+-2.24.14.orig/gtk/Makefile.am 2012-08-24 18:38:09.000000000 -0500 ++++ gtk+-2.24.14/gtk/Makefile.am 2012-12-12 19:03:36.039889640 -0600 +@@ -1339,7 +1339,171 @@ + stock-icons/24/document-save.png \ + stock-icons/24/folder-remote.png \ + stock-icons/24/user-home.png \ +- stock-icons/24/user-desktop.png ++ stock-icons/24/user-desktop.png \ ++ stock-icons/16/gtk-quit.png \ ++ stock-icons/16/gtk-info.png \ ++ stock-icons/16/gtk-file.png \ ++ stock-icons/16/gtk-open.png \ ++ stock-icons/16/gtk-print-preview.png \ ++ stock-icons/16/gtk-print.png \ ++ stock-icons/16/gtk-properties.png \ ++ stock-icons/16/gtk-revert-to-saved-ltr.png \ ++ stock-icons/16/gtk-revert-to-saved-rtl.png \ ++ stock-icons/16/gtk-save-as.png \ ++ stock-icons/16/gtk-new.png \ ++ stock-icons/16/gtk-harddisk.png \ ++ stock-icons/16/gtk-clear.png \ ++ stock-icons/16/gtk-copy.png \ ++ stock-icons/16/gtk-cut.png \ ++ stock-icons/16/gtk-delete.png \ ++ stock-icons/16/gtk-find-and-replace.png \ ++ stock-icons/16/gtk-find.png \ ++ stock-icons/16/gtk-paste.png \ ++ stock-icons/16/gtk-redo-ltr.png \ ++ stock-icons/16/gtk-redo-rtl.png \ ++ stock-icons/16/gtk-select-all.png \ ++ stock-icons/16/gtk-undo-ltr.png \ ++ stock-icons/16/gtk-undo-rtl.png \ ++ stock-icons/16/gtk-directory.png \ ++ stock-icons/16/gtk-unindent-ltr.png \ ++ stock-icons/16/gtk-unindent-rtl.png \ ++ stock-icons/16/gtk-indent-ltr.png \ ++ stock-icons/16/gtk-indent-rtl.png \ ++ stock-icons/16/gtk-justify-center.png \ ++ stock-icons/16/gtk-justify-fill.png \ ++ stock-icons/16/gtk-justify-left.png \ ++ stock-icons/16/gtk-justify-right.png \ ++ stock-icons/16/gtk-bold.png \ ++ stock-icons/16/gtk-italic.png \ ++ stock-icons/16/gtk-strikethrough.png \ ++ stock-icons/16/gtk-underline.png \ ++ stock-icons/16/gtk-goto-bottom.png \ ++ stock-icons/16/gtk-go-down.png \ ++ stock-icons/16/gtk-goto-first-ltr.png \ ++ stock-icons/16/gtk-home.png \ ++ stock-icons/16/gtk-jump-to-ltr.png \ ++ stock-icons/16/gtk-jump-to-rtl.png \ ++ stock-icons/16/gtk-goto-last-ltr.png \ ++ stock-icons/16/gtk-go-forward-ltr.png \ ++ stock-icons/16/gtk-go-back-ltr.png \ ++ stock-icons/16/gtk-goto-top.png \ ++ stock-icons/16/gtk-go-up.png \ ++ stock-icons/16/gtk-about.png \ ++ stock-icons/16/gtk-help.png \ ++ stock-icons/16/gtk-missing-image.png \ ++ stock-icons/16/gtk-add.png \ ++ stock-icons/16/gtk-remove.png \ ++ stock-icons/16/gtk-floppy.png \ ++ stock-icons/16/gtk-cdrom.png \ ++ stock-icons/16/gtk-media-pause.png \ ++ stock-icons/16/gtk-media-play-ltr.png \ ++ stock-icons/16/gtk-media-play-rtl.png \ ++ stock-icons/16/gtk-media-stop.png \ ++ stock-icons/16/gtk-media-record.png \ ++ stock-icons/16/gtk-media-rewind-ltr.png \ ++ stock-icons/16/gtk-media-forward-ltr.png \ ++ stock-icons/16/gtk-media-previous-ltr.png \ ++ stock-icons/16/gtk-media-next-ltr.png \ ++ stock-icons/16/gtk-network.png \ ++ stock-icons/16/gtk-print-error.png \ ++ stock-icons/16/gtk-print-report.png \ ++ stock-icons/16/gtk-print-paused.png \ ++ stock-icons/16/gtk-print-warning.png \ ++ stock-icons/16/gtk-stop.png \ ++ stock-icons/16/gtk-execute.png \ ++ stock-icons/16/gtk-spell-check.png \ ++ stock-icons/16/gtk-fullscreen.png \ ++ stock-icons/16/gtk-refresh.png \ ++ stock-icons/16/gtk-leave-fullscreen.png \ ++ stock-icons/16/gtk-sort-ascending.png \ ++ stock-icons/16/gtk-sort-descending.png \ ++ stock-icons/16/gtk-close.png \ ++ stock-icons/16/gtk-zoom-fit.png \ ++ stock-icons/16/gtk-zoom-in.png \ ++ stock-icons/16/gtk-zoom-100.png \ ++ stock-icons/16/gtk-zoom-out.png \ ++ stock-icons/24/gtk-quit.png \ ++ stock-icons/24/gtk-info.png \ ++ stock-icons/24/gtk-file.png \ ++ stock-icons/24/gtk-open.png \ ++ stock-icons/24/gtk-print-preview.png \ ++ stock-icons/24/gtk-print.png \ ++ stock-icons/24/gtk-properties.png \ ++ stock-icons/24/gtk-revert-to-saved-ltr.png \ ++ stock-icons/24/gtk-revert-to-saved-rtl.png \ ++ stock-icons/24/gtk-save-as.png \ ++ stock-icons/24/gtk-new.png \ ++ stock-icons/24/gtk-harddisk.png \ ++ stock-icons/24/gtk-clear.png \ ++ stock-icons/24/gtk-copy.png \ ++ stock-icons/24/gtk-cut.png \ ++ stock-icons/24/gtk-delete.png \ ++ stock-icons/24/gtk-find-and-replace.png \ ++ stock-icons/24/gtk-find.png \ ++ stock-icons/24/gtk-paste.png \ ++ stock-icons/24/gtk-redo-ltr.png \ ++ stock-icons/24/gtk-redo-rtl.png \ ++ stock-icons/24/gtk-select-all.png \ ++ stock-icons/24/gtk-undo-ltr.png \ ++ stock-icons/24/gtk-undo-rtl.png \ ++ stock-icons/24/gtk-directory.png \ ++ stock-icons/24/gtk-unindent-ltr.png \ ++ stock-icons/24/gtk-unindent-rtl.png \ ++ stock-icons/24/gtk-indent-ltr.png \ ++ stock-icons/24/gtk-indent-rtl.png \ ++ stock-icons/24/gtk-justify-center.png \ ++ stock-icons/24/gtk-justify-fill.png \ ++ stock-icons/24/gtk-justify-left.png \ ++ stock-icons/24/gtk-justify-right.png \ ++ stock-icons/24/gtk-bold.png \ ++ stock-icons/24/gtk-italic.png \ ++ stock-icons/24/gtk-strikethrough.png \ ++ stock-icons/24/gtk-underline.png \ ++ stock-icons/24/gtk-goto-bottom.png \ ++ stock-icons/24/gtk-go-down.png \ ++ stock-icons/24/gtk-goto-first-ltr.png \ ++ stock-icons/24/gtk-home.png \ ++ stock-icons/24/gtk-jump-to-ltr.png \ ++ stock-icons/24/gtk-jump-to-rtl.png \ ++ stock-icons/24/gtk-goto-last-ltr.png \ ++ stock-icons/24/gtk-go-forward-ltr.png \ ++ stock-icons/24/gtk-go-back-ltr.png \ ++ stock-icons/24/gtk-goto-top.png \ ++ stock-icons/24/gtk-go-up.png \ ++ stock-icons/24/gtk-about.png \ ++ stock-icons/24/gtk-help.png \ ++ stock-icons/24/gtk-missing-image.png \ ++ stock-icons/24/gtk-add.png \ ++ stock-icons/24/gtk-remove.png \ ++ stock-icons/24/gtk-floppy.png \ ++ stock-icons/24/gtk-cdrom.png \ ++ stock-icons/24/gtk-media-pause.png \ ++ stock-icons/24/gtk-media-play-ltr.png \ ++ stock-icons/24/gtk-media-play-rtl.png \ ++ stock-icons/24/gtk-media-stop.png \ ++ stock-icons/24/gtk-media-record.png \ ++ stock-icons/24/gtk-media-rewind-ltr.png \ ++ stock-icons/24/gtk-media-forward-ltr.png \ ++ stock-icons/24/gtk-media-previous-ltr.png \ ++ stock-icons/24/gtk-media-next-ltr.png \ ++ stock-icons/24/gtk-network.png \ ++ stock-icons/24/gtk-print-error.png \ ++ stock-icons/24/gtk-print-report.png \ ++ stock-icons/24/gtk-print-paused.png \ ++ stock-icons/24/gtk-print-warning.png \ ++ stock-icons/24/gtk-stop.png \ ++ stock-icons/24/gtk-execute.png \ ++ stock-icons/24/gtk-spell-check.png \ ++ stock-icons/24/gtk-fullscreen.png \ ++ stock-icons/24/gtk-refresh.png \ ++ stock-icons/24/gtk-leave-fullscreen.png \ ++ stock-icons/24/gtk-sort-ascending.png \ ++ stock-icons/24/gtk-sort-descending.png \ ++ stock-icons/24/gtk-close.png \ ++ stock-icons/24/gtk-zoom-fit.png \ ++ stock-icons/24/gtk-zoom-in.png \ ++ stock-icons/24/gtk-zoom-100.png \ ++ stock-icons/24/gtk-zoom-out.png + + # need to copy the icons so that we can replace the generated ones with + # symlinks, even in the readonly srcdir case +@@ -1379,6 +1543,88 @@ + && $(LN_S) folder.png user-desktop.png \ + && $(RM) user-home.png \ + && $(LN_S) folder.png user-home.png \ ++ && $(LN_S) application-exit.png gtk-quit.png \ ++ && $(LN_S) dialog-info.png gtk-info.png \ ++ && $(LN_S) document-new.png gtk-file.png \ ++ && $(LN_S) document-open.png gtk-open.png \ ++ && $(LN_S) document-print-preview.png gtk-print-preview.png \ ++ && $(LN_S) document-print.png gtk-print.png \ ++ && $(LN_S) document-properties.png gtk-properties.png \ ++ && $(LN_S) document-revert-ltr.png gtk-revert-to-saved-ltr.png \ ++ && $(LN_S) document-revert-rtl.png gtk-revert-to-saved-rtl.png \ ++ && $(LN_S) document-save-as.png gtk-save-as.png \ ++ && $(LN_S) document-x-generic.png gtk-new.png \ ++ && $(LN_S) drive-harddisk.png gtk-harddisk.png \ ++ && $(LN_S) edit-clear.png gtk-clear.png \ ++ && $(LN_S) edit-copy.png gtk-copy.png \ ++ && $(LN_S) edit-cut.png gtk-cut.png \ ++ && $(LN_S) edit-delete.png gtk-delete.png \ ++ && $(LN_S) edit-find-replace.png gtk-find-and-replace.png \ ++ && $(LN_S) edit-find.png gtk-find.png \ ++ && $(LN_S) edit-paste.png gtk-paste.png \ ++ && $(LN_S) edit-redo-ltr.png gtk-redo-ltr.png \ ++ && $(LN_S) edit-redo-rtl.png gtk-redo-rtl.png \ ++ && $(LN_S) edit-select-all.png gtk-select-all.png \ ++ && $(LN_S) edit-undo-ltr.png gtk-undo-ltr.png \ ++ && $(LN_S) edit-undo-rtl.png gtk-undo-rtl.png \ ++ && $(LN_S) folder.png gtk-directory.png \ ++ && $(LN_S) format-indent-less-ltr.png gtk-unindent-ltr.png \ ++ && $(LN_S) format-indent-less-rtl.png gtk-unindent-rtl.png \ ++ && $(LN_S) format-indent-more-ltr.png gtk-indent-ltr.png \ ++ && $(LN_S) format-indent-more-rtl.png gtk-indent-rtl.png \ ++ && $(LN_S) format-justify-center.png gtk-justify-center.png \ ++ && $(LN_S) format-justify-fill.png gtk-justify-fill.png \ ++ && $(LN_S) format-justify-left.png gtk-justify-left.png \ ++ && $(LN_S) format-justify-right.png gtk-justify-right.png \ ++ && $(LN_S) format-text-bold.png gtk-bold.png \ ++ && $(LN_S) format-text-italic.png gtk-italic.png \ ++ && $(LN_S) format-text-strikethrough.png gtk-strikethrough.png \ ++ && $(LN_S) format-text-underline.png gtk-underline.png \ ++ && $(LN_S) go-bottom.png gtk-goto-bottom.png \ ++ && $(LN_S) go-down.png gtk-go-down.png \ ++ && $(LN_S) go-first-ltr.png gtk-goto-first-ltr.png \ ++ && $(LN_S) go-home.png gtk-home.png \ ++ && $(LN_S) go-jump-ltr.png gtk-jump-to-ltr.png \ ++ && $(LN_S) go-jump-rtl.png gtk-jump-to-rtl.png \ ++ && $(LN_S) go-last-ltr.png gtk-goto-last-ltr.png \ ++ && $(LN_S) go-next-ltr.png gtk-go-forward-ltr.png \ ++ && $(LN_S) go-previous-ltr.png gtk-go-back-ltr.png \ ++ && $(LN_S) go-top.png gtk-goto-top.png \ ++ && $(LN_S) go-up.png gtk-go-up.png \ ++ && $(LN_S) help-about.png gtk-about.png \ ++ && $(LN_S) help-contents.png gtk-help.png \ ++ && $(LN_S) image-missing.png gtk-missing-image.png \ ++ && $(LN_S) list-add.png gtk-add.png \ ++ && $(LN_S) list-remove.png gtk-remove.png \ ++ && $(LN_S) media-floppy.png gtk-floppy.png \ ++ && $(LN_S) media-optical.png gtk-cdrom.png \ ++ && $(LN_S) media-playback-pause.png gtk-media-pause.png \ ++ && $(LN_S) media-playback-start-ltr.png gtk-media-play-ltr.png \ ++ && $(LN_S) media-playback-start-rtl.png gtk-media-play-rtl.png \ ++ && $(LN_S) media-playback-stop.png gtk-media-stop.png \ ++ && $(LN_S) media-record.png gtk-media-record.png \ ++ && $(LN_S) media-seek-backward-ltr.png gtk-media-rewind-ltr.png \ ++ && $(LN_S) media-seek-forward-ltr.png gtk-media-forward-ltr.png \ ++ && $(LN_S) media-skip-backward-ltr.png gtk-media-previous-ltr.png \ ++ && $(LN_S) media-skip-forward-ltr.png gtk-media-next-ltr.png \ ++ && $(LN_S) network-idle.png gtk-network.png \ ++ && $(LN_S) printer-error.png gtk-print-error.png \ ++ && $(LN_S) printer-info.png gtk-print-report.png \ ++ && $(LN_S) printer-paused.png gtk-print-paused.png \ ++ && $(LN_S) printer-warning.png gtk-print-warning.png \ ++ && $(LN_S) process-stop.png gtk-stop.png \ ++ && $(LN_S) system-run.png gtk-execute.png \ ++ && $(LN_S) tools-check-spelling.png gtk-spell-check.png \ ++ && $(LN_S) view-fullscreen.png gtk-fullscreen.png \ ++ && $(LN_S) view-refresh.png gtk-refresh.png \ ++ && $(LN_S) view-restore.png gtk-leave-fullscreen.png \ ++ && $(LN_S) view-sort-ascending.png gtk-sort-ascending.png \ ++ && $(LN_S) view-sort-descending.png gtk-sort-descending.png \ ++ && $(LN_S) window-close.png gtk-close.png \ ++ && $(LN_S) zoom-fit-best.png gtk-zoom-fit.png \ ++ && $(LN_S) zoom-in.png gtk-zoom-in.png \ ++ && $(LN_S) zoom-original.png gtk-zoom-100.png \ ++ && $(LN_S) zoom-out.png gtk-zoom-out.png \ + ) done \ + && touch stamp-icons + diff --git a/patches/source/gtk+2/gtk+-2.24.x.icon-compat.diff b/patches/source/gtk+2/gtk+-2.24.x.icon-compat.diff new file mode 100644 index 000000000..ff9a444b4 --- /dev/null +++ b/patches/source/gtk+2/gtk+-2.24.x.icon-compat.diff @@ -0,0 +1,264 @@ +--- gtk+-2.24.14.orig/gtk/Makefile.in 2012-12-05 21:46:20.000000000 -0600 ++++ gtk+-2.24.14/gtk/Makefile.in 2012-12-12 18:59:17.734970161 -0600 +@@ -1938,7 +1938,171 @@ + stock-icons/24/document-save.png \ + stock-icons/24/folder-remote.png \ + stock-icons/24/user-home.png \ +- stock-icons/24/user-desktop.png ++ stock-icons/24/user-desktop.png \ ++ stock-icons/16/gtk-quit.png \ ++ stock-icons/16/gtk-info.png \ ++ stock-icons/16/gtk-file.png \ ++ stock-icons/16/gtk-open.png \ ++ stock-icons/16/gtk-print-preview.png \ ++ stock-icons/16/gtk-print.png \ ++ stock-icons/16/gtk-properties.png \ ++ stock-icons/16/gtk-revert-to-saved-ltr.png \ ++ stock-icons/16/gtk-revert-to-saved-rtl.png \ ++ stock-icons/16/gtk-save-as.png \ ++ stock-icons/16/gtk-new.png \ ++ stock-icons/16/gtk-harddisk.png \ ++ stock-icons/16/gtk-clear.png \ ++ stock-icons/16/gtk-copy.png \ ++ stock-icons/16/gtk-cut.png \ ++ stock-icons/16/gtk-delete.png \ ++ stock-icons/16/gtk-find-and-replace.png \ ++ stock-icons/16/gtk-find.png \ ++ stock-icons/16/gtk-paste.png \ ++ stock-icons/16/gtk-redo-ltr.png \ ++ stock-icons/16/gtk-redo-rtl.png \ ++ stock-icons/16/gtk-select-all.png \ ++ stock-icons/16/gtk-undo-ltr.png \ ++ stock-icons/16/gtk-undo-rtl.png \ ++ stock-icons/16/gtk-directory.png \ ++ stock-icons/16/gtk-unindent-ltr.png \ ++ stock-icons/16/gtk-unindent-rtl.png \ ++ stock-icons/16/gtk-indent-ltr.png \ ++ stock-icons/16/gtk-indent-rtl.png \ ++ stock-icons/16/gtk-justify-center.png \ ++ stock-icons/16/gtk-justify-fill.png \ ++ stock-icons/16/gtk-justify-left.png \ ++ stock-icons/16/gtk-justify-right.png \ ++ stock-icons/16/gtk-bold.png \ ++ stock-icons/16/gtk-italic.png \ ++ stock-icons/16/gtk-strikethrough.png \ ++ stock-icons/16/gtk-underline.png \ ++ stock-icons/16/gtk-goto-bottom.png \ ++ stock-icons/16/gtk-go-down.png \ ++ stock-icons/16/gtk-goto-first-ltr.png \ ++ stock-icons/16/gtk-home.png \ ++ stock-icons/16/gtk-jump-to-ltr.png \ ++ stock-icons/16/gtk-jump-to-rtl.png \ ++ stock-icons/16/gtk-goto-last-ltr.png \ ++ stock-icons/16/gtk-go-forward-ltr.png \ ++ stock-icons/16/gtk-go-back-ltr.png \ ++ stock-icons/16/gtk-goto-top.png \ ++ stock-icons/16/gtk-go-up.png \ ++ stock-icons/16/gtk-about.png \ ++ stock-icons/16/gtk-help.png \ ++ stock-icons/16/gtk-missing-image.png \ ++ stock-icons/16/gtk-add.png \ ++ stock-icons/16/gtk-remove.png \ ++ stock-icons/16/gtk-floppy.png \ ++ stock-icons/16/gtk-cdrom.png \ ++ stock-icons/16/gtk-media-pause.png \ ++ stock-icons/16/gtk-media-play-ltr.png \ ++ stock-icons/16/gtk-media-play-rtl.png \ ++ stock-icons/16/gtk-media-stop.png \ ++ stock-icons/16/gtk-media-record.png \ ++ stock-icons/16/gtk-media-rewind-ltr.png \ ++ stock-icons/16/gtk-media-forward-ltr.png \ ++ stock-icons/16/gtk-media-previous-ltr.png \ ++ stock-icons/16/gtk-media-next-ltr.png \ ++ stock-icons/16/gtk-network.png \ ++ stock-icons/16/gtk-print-error.png \ ++ stock-icons/16/gtk-print-report.png \ ++ stock-icons/16/gtk-print-paused.png \ ++ stock-icons/16/gtk-print-warning.png \ ++ stock-icons/16/gtk-stop.png \ ++ stock-icons/16/gtk-execute.png \ ++ stock-icons/16/gtk-spell-check.png \ ++ stock-icons/16/gtk-fullscreen.png \ ++ stock-icons/16/gtk-refresh.png \ ++ stock-icons/16/gtk-leave-fullscreen.png \ ++ stock-icons/16/gtk-sort-ascending.png \ ++ stock-icons/16/gtk-sort-descending.png \ ++ stock-icons/16/gtk-close.png \ ++ stock-icons/16/gtk-zoom-fit.png \ ++ stock-icons/16/gtk-zoom-in.png \ ++ stock-icons/16/gtk-zoom-100.png \ ++ stock-icons/16/gtk-zoom-out.png \ ++ stock-icons/24/gtk-quit.png \ ++ stock-icons/24/gtk-info.png \ ++ stock-icons/24/gtk-file.png \ ++ stock-icons/24/gtk-open.png \ ++ stock-icons/24/gtk-print-preview.png \ ++ stock-icons/24/gtk-print.png \ ++ stock-icons/24/gtk-properties.png \ ++ stock-icons/24/gtk-revert-to-saved-ltr.png \ ++ stock-icons/24/gtk-revert-to-saved-rtl.png \ ++ stock-icons/24/gtk-save-as.png \ ++ stock-icons/24/gtk-new.png \ ++ stock-icons/24/gtk-harddisk.png \ ++ stock-icons/24/gtk-clear.png \ ++ stock-icons/24/gtk-copy.png \ ++ stock-icons/24/gtk-cut.png \ ++ stock-icons/24/gtk-delete.png \ ++ stock-icons/24/gtk-find-and-replace.png \ ++ stock-icons/24/gtk-find.png \ ++ stock-icons/24/gtk-paste.png \ ++ stock-icons/24/gtk-redo-ltr.png \ ++ stock-icons/24/gtk-redo-rtl.png \ ++ stock-icons/24/gtk-select-all.png \ ++ stock-icons/24/gtk-undo-ltr.png \ ++ stock-icons/24/gtk-undo-rtl.png \ ++ stock-icons/24/gtk-directory.png \ ++ stock-icons/24/gtk-unindent-ltr.png \ ++ stock-icons/24/gtk-unindent-rtl.png \ ++ stock-icons/24/gtk-indent-ltr.png \ ++ stock-icons/24/gtk-indent-rtl.png \ ++ stock-icons/24/gtk-justify-center.png \ ++ stock-icons/24/gtk-justify-fill.png \ ++ stock-icons/24/gtk-justify-left.png \ ++ stock-icons/24/gtk-justify-right.png \ ++ stock-icons/24/gtk-bold.png \ ++ stock-icons/24/gtk-italic.png \ ++ stock-icons/24/gtk-strikethrough.png \ ++ stock-icons/24/gtk-underline.png \ ++ stock-icons/24/gtk-goto-bottom.png \ ++ stock-icons/24/gtk-go-down.png \ ++ stock-icons/24/gtk-goto-first-ltr.png \ ++ stock-icons/24/gtk-home.png \ ++ stock-icons/24/gtk-jump-to-ltr.png \ ++ stock-icons/24/gtk-jump-to-rtl.png \ ++ stock-icons/24/gtk-goto-last-ltr.png \ ++ stock-icons/24/gtk-go-forward-ltr.png \ ++ stock-icons/24/gtk-go-back-ltr.png \ ++ stock-icons/24/gtk-goto-top.png \ ++ stock-icons/24/gtk-go-up.png \ ++ stock-icons/24/gtk-about.png \ ++ stock-icons/24/gtk-help.png \ ++ stock-icons/24/gtk-missing-image.png \ ++ stock-icons/24/gtk-add.png \ ++ stock-icons/24/gtk-remove.png \ ++ stock-icons/24/gtk-floppy.png \ ++ stock-icons/24/gtk-cdrom.png \ ++ stock-icons/24/gtk-media-pause.png \ ++ stock-icons/24/gtk-media-play-ltr.png \ ++ stock-icons/24/gtk-media-play-rtl.png \ ++ stock-icons/24/gtk-media-stop.png \ ++ stock-icons/24/gtk-media-record.png \ ++ stock-icons/24/gtk-media-rewind-ltr.png \ ++ stock-icons/24/gtk-media-forward-ltr.png \ ++ stock-icons/24/gtk-media-previous-ltr.png \ ++ stock-icons/24/gtk-media-next-ltr.png \ ++ stock-icons/24/gtk-network.png \ ++ stock-icons/24/gtk-print-error.png \ ++ stock-icons/24/gtk-print-report.png \ ++ stock-icons/24/gtk-print-paused.png \ ++ stock-icons/24/gtk-print-warning.png \ ++ stock-icons/24/gtk-stop.png \ ++ stock-icons/24/gtk-execute.png \ ++ stock-icons/24/gtk-spell-check.png \ ++ stock-icons/24/gtk-fullscreen.png \ ++ stock-icons/24/gtk-refresh.png \ ++ stock-icons/24/gtk-leave-fullscreen.png \ ++ stock-icons/24/gtk-sort-ascending.png \ ++ stock-icons/24/gtk-sort-descending.png \ ++ stock-icons/24/gtk-close.png \ ++ stock-icons/24/gtk-zoom-fit.png \ ++ stock-icons/24/gtk-zoom-in.png \ ++ stock-icons/24/gtk-zoom-100.png \ ++ stock-icons/24/gtk-zoom-out.png + + @CROSS_COMPILING_FALSE@gtk_update_icon_cache_program = \ + @CROSS_COMPILING_FALSE@ ./gtk-update-icon-cache +@@ -5401,6 +5565,88 @@ + && $(LN_S) folder.png user-desktop.png \ + && $(RM) user-home.png \ + && $(LN_S) folder.png user-home.png \ ++ && $(LN_S) application-exit.png gtk-quit.png \ ++ && $(LN_S) dialog-info.png gtk-info.png \ ++ && $(LN_S) document-new.png gtk-file.png \ ++ && $(LN_S) document-open.png gtk-open.png \ ++ && $(LN_S) document-print-preview.png gtk-print-preview.png \ ++ && $(LN_S) document-print.png gtk-print.png \ ++ && $(LN_S) document-properties.png gtk-properties.png \ ++ && $(LN_S) document-revert-ltr.png gtk-revert-to-saved-ltr.png \ ++ && $(LN_S) document-revert-rtl.png gtk-revert-to-saved-rtl.png \ ++ && $(LN_S) document-save-as.png gtk-save-as.png \ ++ && $(LN_S) document-x-generic.png gtk-new.png \ ++ && $(LN_S) drive-harddisk.png gtk-harddisk.png \ ++ && $(LN_S) edit-clear.png gtk-clear.png \ ++ && $(LN_S) edit-copy.png gtk-copy.png \ ++ && $(LN_S) edit-cut.png gtk-cut.png \ ++ && $(LN_S) edit-delete.png gtk-delete.png \ ++ && $(LN_S) edit-find-replace.png gtk-find-and-replace.png \ ++ && $(LN_S) edit-find.png gtk-find.png \ ++ && $(LN_S) edit-paste.png gtk-paste.png \ ++ && $(LN_S) edit-redo-ltr.png gtk-redo-ltr.png \ ++ && $(LN_S) edit-redo-rtl.png gtk-redo-rtl.png \ ++ && $(LN_S) edit-select-all.png gtk-select-all.png \ ++ && $(LN_S) edit-undo-ltr.png gtk-undo-ltr.png \ ++ && $(LN_S) edit-undo-rtl.png gtk-undo-rtl.png \ ++ && $(LN_S) folder.png gtk-directory.png \ ++ && $(LN_S) format-indent-less-ltr.png gtk-unindent-ltr.png \ ++ && $(LN_S) format-indent-less-rtl.png gtk-unindent-rtl.png \ ++ && $(LN_S) format-indent-more-ltr.png gtk-indent-ltr.png \ ++ && $(LN_S) format-indent-more-rtl.png gtk-indent-rtl.png \ ++ && $(LN_S) format-justify-center.png gtk-justify-center.png \ ++ && $(LN_S) format-justify-fill.png gtk-justify-fill.png \ ++ && $(LN_S) format-justify-left.png gtk-justify-left.png \ ++ && $(LN_S) format-justify-right.png gtk-justify-right.png \ ++ && $(LN_S) format-text-bold.png gtk-bold.png \ ++ && $(LN_S) format-text-italic.png gtk-italic.png \ ++ && $(LN_S) format-text-strikethrough.png gtk-strikethrough.png \ ++ && $(LN_S) format-text-underline.png gtk-underline.png \ ++ && $(LN_S) go-bottom.png gtk-goto-bottom.png \ ++ && $(LN_S) go-down.png gtk-go-down.png \ ++ && $(LN_S) go-first-ltr.png gtk-goto-first-ltr.png \ ++ && $(LN_S) go-home.png gtk-home.png \ ++ && $(LN_S) go-jump-ltr.png gtk-jump-to-ltr.png \ ++ && $(LN_S) go-jump-rtl.png gtk-jump-to-rtl.png \ ++ && $(LN_S) go-last-ltr.png gtk-goto-last-ltr.png \ ++ && $(LN_S) go-next-ltr.png gtk-go-forward-ltr.png \ ++ && $(LN_S) go-previous-ltr.png gtk-go-back-ltr.png \ ++ && $(LN_S) go-top.png gtk-goto-top.png \ ++ && $(LN_S) go-up.png gtk-go-up.png \ ++ && $(LN_S) help-about.png gtk-about.png \ ++ && $(LN_S) help-contents.png gtk-help.png \ ++ && $(LN_S) image-missing.png gtk-missing-image.png \ ++ && $(LN_S) list-add.png gtk-add.png \ ++ && $(LN_S) list-remove.png gtk-remove.png \ ++ && $(LN_S) media-floppy.png gtk-floppy.png \ ++ && $(LN_S) media-optical.png gtk-cdrom.png \ ++ && $(LN_S) media-playback-pause.png gtk-media-pause.png \ ++ && $(LN_S) media-playback-start-ltr.png gtk-media-play-ltr.png \ ++ && $(LN_S) media-playback-start-rtl.png gtk-media-play-rtl.png \ ++ && $(LN_S) media-playback-stop.png gtk-media-stop.png \ ++ && $(LN_S) media-record.png gtk-media-record.png \ ++ && $(LN_S) media-seek-backward-ltr.png gtk-media-rewind-ltr.png \ ++ && $(LN_S) media-seek-forward-ltr.png gtk-media-forward-ltr.png \ ++ && $(LN_S) media-skip-backward-ltr.png gtk-media-previous-ltr.png \ ++ && $(LN_S) media-skip-forward-ltr.png gtk-media-next-ltr.png \ ++ && $(LN_S) network-idle.png gtk-network.png \ ++ && $(LN_S) printer-error.png gtk-print-error.png \ ++ && $(LN_S) printer-info.png gtk-print-report.png \ ++ && $(LN_S) printer-paused.png gtk-print-paused.png \ ++ && $(LN_S) printer-warning.png gtk-print-warning.png \ ++ && $(LN_S) process-stop.png gtk-stop.png \ ++ && $(LN_S) system-run.png gtk-execute.png \ ++ && $(LN_S) tools-check-spelling.png gtk-spell-check.png \ ++ && $(LN_S) view-fullscreen.png gtk-fullscreen.png \ ++ && $(LN_S) view-refresh.png gtk-refresh.png \ ++ && $(LN_S) view-restore.png gtk-leave-fullscreen.png \ ++ && $(LN_S) view-sort-ascending.png gtk-sort-ascending.png \ ++ && $(LN_S) view-sort-descending.png gtk-sort-descending.png \ ++ && $(LN_S) window-close.png gtk-close.png \ ++ && $(LN_S) zoom-fit-best.png gtk-zoom-fit.png \ ++ && $(LN_S) zoom-in.png gtk-zoom-in.png \ ++ && $(LN_S) zoom-original.png gtk-zoom-100.png \ ++ && $(LN_S) zoom-out.png gtk-zoom-out.png \ + ) done \ + && touch stamp-icons + diff --git a/patches/source/gtk+2/gtk+2.SlackBuild b/patches/source/gtk+2/gtk+2.SlackBuild new file mode 100755 index 000000000..54812fff8 --- /dev/null +++ b/patches/source/gtk+2/gtk+2.SlackBuild @@ -0,0 +1,203 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo gtk+-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-gtk2 + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG/usr +cd $TMP +rm -rf gtk+-$VERSION +tar xvf $CWD/gtk+-$VERSION.tar.?z* || exit 1 +cd gtk+-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Fix build errors +zcat $CWD/fix_build_issues_on_tutorial_and_faq.diff.gz | patch -p1 --verbose || exit 1 + +# Do not flood the console or .xsession-errors with "trouble ahead" +# warnings (most noticable when using Firefox and Flash): +zcat $CWD/gtk.xid.nowarningflood.diff.gz | patch -p1 --verbose || exit 1 + +# Patch to restore commonly used icon names, otherwise everything breaks. +# I fail to see the point of this "cleanup" +zcat $CWD/gtk+-2.24.x.icon-compat.am.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/gtk+-2.24.x.icon-compat.diff.gz | patch -p1 --verbose || exit 1 + +# Prevents build failures in the docs. Found online. +# Only needed if autoreconf is used... ? +zcat $CWD/gtk.gtk-faq.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/gtk.gtk-tut.diff.gz | patch -p1 --verbose || exit 1 + +# Regenerate ./configure: +libtoolize --force +autoreconf -vif + +# Autoconf changes linux to linux-gnu. +# Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu: +sed -i -e 's#linux|linux-gnu|#linux|linux|#' config.sub + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --with-xinput=yes \ + --enable-xkb \ + --enable-introspection \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 + +# Check the host value that is passed to the compile to the one in this script: +host="$ARCH-slackware-linux" +compile_host=$(grep 'host_triplet =' gtk/Makefile | sed -e "s/.* = //") +if [ "x$compile_host" != "x$host" ]; then + echo "Host mismatch: compile='$compile_host', SlackBuild='$host'" && exit 1 +fi + +make install \ + RUN_QUERY_IMMODULES_TEST=false RUN_QUERY_LOADER_TEST=false \ + DESTDIR=$PKG \ + || exit 1 + +# Don't clobber im-multipress.conf +mv $PKG/etc/gtk-2.0/im-multipress.conf $PKG/etc/gtk-2.0/im-multipress.conf.new || exit 1 + +# Install a "starter" gtkrc +# /etc/gtk-2.0/gtkrc overrides this --rworkman +echo 'gtk-theme-name="GTK+"' > $PKG/usr/share/gtk-2.0/gtkrc +echo 'gtk-icon-theme-name="Adwaita"' >> $PKG/usr/share/gtk-2.0/gtkrc +echo 'gtk-fallback-icon-theme = "Tango"' >> $PKG/usr/share/gtk-2.0/gtkrc + +# We need to have separate 32-bit and 64-bit binaries +# for places where we have two copies of the GTK+ package installed. +# (we might have x86_64 and i486 packages on the same system, for example.) +case "$host" in + s390x*|x86_64*) + mv $PKG/usr/bin/gtk-query-immodules-2.0{,-64} + ( cd $PKG/usr/bin + ln -sf gtk-query-immodules-2.0-64 gtk-query-immodules-2.0 + ) + ;; + *) + mv $PKG/usr/bin/gtk-query-immodules-2.0{,-32} + ( cd $PKG/usr/bin + ln -sf gtk-query-immodules-2.0-32 gtk-query-immodules-2.0 + ) + ;; +esac + +# Install wrappers for the binaries: +cp -a $CWD/update-gtk-immodules* $PKG/usr/bin +chown root:root $PKG/usr/bin/update-* +chmod 0755 $PKG/usr/bin/update-* + +# Add profile scripts to set up GTK+ environment: +mkdir -p $PKG/etc/profile.d +cp -a $CWD/profile.d/* $PKG/etc/profile.d +chmod 0755 $PKG/etc/profile.d/* + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/usr/doc/gtk+-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* TODO \ + $PKG/usr/doc/gtk+-$VERSION +( cd $PKG/usr/doc/gtk+-$VERSION + ln -s ../../share/gtk-doc/html/gail-libgail-util . + ln -s ../../share/gtk-doc/html/gdk . + ln -s ../../share/gtk-doc/html/gtk . +) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/gtk+2-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/gtk+2/gtk.gtk-faq.diff b/patches/source/gtk+2/gtk.gtk-faq.diff new file mode 100644 index 000000000..f3307d51f --- /dev/null +++ b/patches/source/gtk+2/gtk.gtk-faq.diff @@ -0,0 +1,11 @@ +--- ./docs/faq/Makefile.am.orig 2014-09-29 15:02:16.000000000 -0500 ++++ ./docs/faq/Makefile.am 2015-03-18 22:11:42.692413132 -0500 +@@ -7,7 +7,7 @@ + html: + if test -w $(srcdir); then \ + (cd $(srcdir); \ +- db2html gtk-faq.sgml; \ ++ db2html -o gtk-faq gtk-faq.sgml; \ + test -d html && rm -r html; \ + mv gtk-faq html); \ + fi diff --git a/patches/source/gtk+2/gtk.gtk-tut.diff b/patches/source/gtk+2/gtk.gtk-tut.diff new file mode 100644 index 000000000..ee363a266 --- /dev/null +++ b/patches/source/gtk+2/gtk.gtk-tut.diff @@ -0,0 +1,11 @@ +--- ./docs/tutorial/Makefile.am.orig 2014-09-29 15:02:16.000000000 -0500 ++++ ./docs/tutorial/Makefile.am 2015-03-18 22:04:36.171382357 -0500 +@@ -40,7 +40,7 @@ + html: gtk-tut.sgml + if test -w $(srcdir); then \ + (cd $(srcdir); \ +- db2html gtk-tut.sgml; \ ++ db2html -o gtk-tut gtk-tut.sgml; \ + test -d html && rm -r html; \ + mv gtk-tut html; \ + mkdir html/images; \ diff --git a/patches/source/gtk+2/gtk.xid.nowarningflood.diff b/patches/source/gtk+2/gtk.xid.nowarningflood.diff new file mode 100644 index 000000000..6b8c854d8 --- /dev/null +++ b/patches/source/gtk+2/gtk.xid.nowarningflood.diff @@ -0,0 +1,12 @@ +--- ./gdk/x11/gdkxid.c.orig 2009-12-18 20:54:50.000000000 -0600 ++++ ./gdk/x11/gdkxid.c 2010-02-08 14:42:50.000000000 -0600 +@@ -57,9 +57,6 @@ + display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash, + (GEqualFunc) gdk_xid_equal); + +- if (g_hash_table_lookup (display_x11->xid_ht, xid)) +- g_warning ("XID collision, trouble ahead"); +- + g_hash_table_insert (display_x11->xid_ht, xid, data); + } + diff --git a/patches/source/gtk+2/profile.d/gtk+.csh b/patches/source/gtk+2/profile.d/gtk+.csh new file mode 100755 index 000000000..c9ea5acb5 --- /dev/null +++ b/patches/source/gtk+2/profile.d/gtk+.csh @@ -0,0 +1,2 @@ +#!/bin/csh +setenv GDK_USE_XFT 1 diff --git a/patches/source/gtk+2/profile.d/gtk+.sh b/patches/source/gtk+2/profile.d/gtk+.sh new file mode 100755 index 000000000..ff3d4927b --- /dev/null +++ b/patches/source/gtk+2/profile.d/gtk+.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +GDK_USE_XFT=1 +export GDK_USE_XFT diff --git a/patches/source/gtk+2/slack-desc b/patches/source/gtk+2/slack-desc new file mode 100644 index 000000000..bd800ade8 --- /dev/null +++ b/patches/source/gtk+2/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +gtk+2: GTK+ version 2 (multi-platform GUI toolkit) +gtk+2: +gtk+2: This is GTK+, a multi-platform toolkit for creating graphical user +gtk+2: interfaces. Offering a complete set of widgets, GTK+ is suitable for +gtk+2: projects ranging from small one-off projects to complete application +gtk+2: suites. +gtk+2: +gtk+2: +gtk+2: +gtk+2: +gtk+2: diff --git a/patches/source/gtk+2/update-gtk-immodules b/patches/source/gtk+2/update-gtk-immodules new file mode 100644 index 000000000..a56b3fdcb --- /dev/null +++ b/patches/source/gtk+2/update-gtk-immodules @@ -0,0 +1,12 @@ +#! /bin/sh +# +# This is a wrapper script that calls update-gtk-immodules-2.0 (GTK+2) +# and/or update-gtk-immodules-3.0 (GTK+3) to do the actual updating. + +if [ -x /usr/bin/update-gtk-immodules-2.0 ]; then + /usr/bin/update-gtk-immodules-2.0 $* +fi +if [ -x /usr/bin/update-gtk-immodules-3.0 ]; then + /usr/bin/update-gtk-immodules-3.0 $* +fi + diff --git a/patches/source/gtk+2/update-gtk-immodules-2.0 b/patches/source/gtk+2/update-gtk-immodules-2.0 new file mode 100644 index 000000000..f12353fb8 --- /dev/null +++ b/patches/source/gtk+2/update-gtk-immodules-2.0 @@ -0,0 +1,48 @@ +#! /bin/sh +# Updates the immodules cache at /usr/lib(64)/gtk-2.0/2.10.0/immodules.cache + +umask 022 + +# Get the machine type from uname: +host=$(uname -m)-slackware-linux + +# Fix $host for arm arch: +case "$host" in + arm*) host=arm-slackware-linux-gnueabi ;; +esac + +case "$host" in + s390x*|x86_64*) + if [ -x /usr/bin/gtk-query-immodules-2.0-64 ]; then + if [ "$1" = "--verbose" ]; then + echo "Updating gtk.immodules for ${host}:" + echo " /usr/bin/gtk-query-immodules-2.0-64 --update-cache" + fi + /usr/bin/gtk-query-immodules-2.0-64 --update-cache 2>/dev/null + # Check for multilib + if [ -x /usr/bin/gtk-query-immodules-2.0-32 ]; then + if [ "$1" = "--verbose" ]; then + echo "Updating 32bit gtk.immodules: " + echo " /usr/bin/gtk-query-immodules-2.0-32 --update-cache" + fi + /usr/bin/gtk-query-immodules-2.0-32 --update-cache 2>/dev/null + fi + fi + ;; + *) + if [ -x /usr/bin/gtk-query-immodules-2.0-32 ]; then + if [ "$1" = "--verbose" ]; then + echo "Updating gtk.immodules for ${host}:" + echo " /usr/bin/gtk-query-immodules-2.0-32 --update-cache" + fi + /usr/bin/gtk-query-immodules-2.0-32 --update-cache 2>/dev/null + else + if [ "$1" = "--verbose" ]; then + echo "Updating gtk.immodules for ${host}:" + echo " /usr/bin/gtk-query-immodules-2.0 --update-cache" + fi + /usr/bin/gtk-query-immodules-2.0 --update-cache 2>/dev/null + fi + ;; +esac + diff --git a/patches/source/httpd/apache-2.4.CVE-2017-9798.optionsbleed.patch b/patches/source/httpd/apache-2.4.CVE-2017-9798.optionsbleed.patch new file mode 100644 index 000000000..be590f294 --- /dev/null +++ b/patches/source/httpd/apache-2.4.CVE-2017-9798.optionsbleed.patch @@ -0,0 +1,15 @@ +--- httpd/httpd/branches/2.4.x/server/core.c 2017/08/16 16:50:29 1805223 ++++ httpd/httpd/branches/2.4.x/server/core.c 2017/09/08 13:13:11 1807754 +@@ -2266,6 +2266,12 @@ + /* method has not been registered yet, but resource restriction + * is always checked before method handling, so register it. + */ ++ if (cmd->pool == cmd->temp_pool) { ++ /* In .htaccess, we can't globally register new methods. */ ++ return apr_psprintf(cmd->pool, "Could not register method '%s' " ++ "for %s from .htaccess configuration", ++ method, cmd->cmd->name); ++ } + methnum = ap_method_register(cmd->pool, + apr_pstrdup(cmd->pool, method)); + } diff --git a/patches/source/httpd/doinst.sh b/patches/source/httpd/doinst.sh new file mode 100644 index 000000000..e233c362b --- /dev/null +++ b/patches/source/httpd/doinst.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + # Don't use config() -- we always want to install this, changed or unchanged. + #config ${NEW} +} + +if [ ! -e var/log/httpd ]; then + mkdir -p var/log/httpd + chmod 755 var/log/httpd +fi + +# Don't wipe out an existing document root with symlinks. If someone has +# replaced the symlinks that are created on a fresh installation, assume +# that they know what they are doing and leave things as-is. +if [ ! -e srv/www ]; then + ( cd srv ; ln -sf /var/www www ) +fi +if [ ! -e srv/httpd ]; then + ( cd srv ; ln -sf /var/www httpd ) +fi + +# Once again, our intent is not to wipe out anyone's +# site, but building in Apache's docs tree is not as +# good an idea as picking a unique DocumentRoot. +# +# Still, we will do what we can here to mitigate +# possible site damage: +if [ -r var/www/htdocs/index.html ]; then + if [ ! -r "var/log/packages/httpd-*upgraded*" ]; then + if [ var/www/htdocs/index.html -nt var/log/packages/httpd-*-? ]; then + cp -a var/www/htdocs/index.html var/www/htdocs/index.html.bak.$$ + fi + fi +fi + +# Keep same perms when installing rc.httpd.new: +preserve_perms etc/rc.d/rc.httpd.new +# Always install the new rc.httpd: +mv etc/rc.d/rc.httpd.new etc/rc.d/rc.httpd + +# Handle config files. Unless this is a fresh installation, the +# admin will have to move the .new files into place to complete +# the package installation, as we don't want to clobber files that +# may contain local customizations. +config etc/httpd/httpd.conf.new +config etc/logrotate.d/httpd.new +for conf_file in etc/httpd/extra/*.new; do + config $conf_file +done +config var/www/htdocs/index.html.new + diff --git a/patches/source/httpd/httpd.SlackBuild b/patches/source/httpd/httpd.SlackBuild new file mode 100755 index 000000000..b43665279 --- /dev/null +++ b/patches/source/httpd/httpd.SlackBuild @@ -0,0 +1,246 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This script was written using the one from slackbuilds.org as a reference, +# so thanks to Adis Nezirovic ( adis _at_ linux.org.ba ) for the original work. + + +PKGNAM=httpd +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1 +cd ${PKGNAM}-$VERSION || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# A brief note about mpms: +# +# "prefork" is the legacy forked mpm, used with mod_php. Starting with httpd +# 2.4.0, new threaded mpms are available, and previously experimental mpms are +# now stable +# +# Non-threaded mpms are no longer required, since php applications can now be +# deployed with the help of mod_fcgid, essentially a set of fixed dedicated cgi +# processes spawned for the whole purpose of executing dynamic applications +# +# Threaded mpms, by their very nature, are far more scalable than the +# traditional preforking solution. They consume less memory for the same +# workload, when serving the same amount of clients. httpd 2.4 ships with two +# options, "event" and "worker", where the former is the default mpm used if +# none is specified at the ./configure line +# +# Lastly, the "prefork" mpm can be used with mod_php as of version 5.4.0, +# which yields a much improved stability, even with most mod_php extensions +# loaded. +# +# The running mpm can be changed by simply loading the module. Here is a sample: +# LoadModule mpm_event_module lib(64)/httpd/modules/mod_mpm_event.so +# +# When upgrading from 2.2, please make sure to stop the deamon first, or your +# new instance may segfault. + +# Fix config.layout to use lib${LIBDIRSUFFIX}: +sed -i -e "s#lib/httpd#lib${LIBDIRSUFFIX}/httpd#" config.layout + +# If /var/run becomes a tmpfs or a link to /run, subdirectories could be a problem. +# Just use /var/run rather than /var/run/httpd. +sed -i -e "s#/run/httpd#/run#" config.layout + +# Configure: +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --enable-layout=Slackware-FHS \ + --with-apr=/usr \ + --with-apr-util=/usr \ + --enable-mods-shared=all \ + --enable-so \ + --enable-mpms-shared=all \ + --enable-pie \ + --enable-cgi \ + --with-pcre \ + --enable-ssl \ + --enable-rewrite \ + --enable-vhost-alias \ + --enable-proxy \ + --enable-proxy-http \ + --enable-proxy-ftp \ + --enable-cache \ + --enable-mem-cache \ + --enable-file-cache \ + --enable-disk-cache \ + --enable-dav \ + --enable-ldap \ + --enable-authnz-ldap \ + --enable-authn-anon \ + --enable-authn-alias \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +rmdir $PKG/usr/bin + +# Tweak default apache configuration +( cd $PKG + zcat $CWD/httpd.runasapache.diff.gz | patch -p1 --verbose || exit 1 + # mod_proxy_balancer should be commented out, as otherwise httpd + # will not start without additional configuration: + sed -i "s/^LoadModule proxy_balancer_module/#LoadModule proxy_balancer_module/g" $PKG/etc/httpd/httpd.conf + # This module issues a warning unless some non-default modules are loaded: + sed -i "s/^LoadModule lbmethod_heartbeat_module/#LoadModule lbmethod_heartbeat_module/g" $PKG/etc/httpd/httpd.conf + rm -f $PKG/etc/httpd/httpd.conf~ $PKG/etc/httpd/httpd.conf.orig +) || exit 1 +# Change config files to .new: +( cd $PKG/etc/httpd + mv httpd.conf httpd.conf.new + for file in extra/*; do + mv $file "${file}.new" + done +) + +cat << EOF >> $PKG/etc/httpd/httpd.conf.new + +# Uncomment the following line to enable PHP: +# +#Include /etc/httpd/mod_php.conf + +# Uncomment the following lines (and mod_dav above) to enable svn support: +# +#LoadModule dav_svn_module lib${LIBDIRSUFFIX}/httpd/modules/mod_dav_svn.so +#LoadModule authz_svn_module lib${LIBDIRSUFFIX}/httpd/modules/mod_authz_svn.so + +EOF + +rmdir $PKG/var/log/httpd + +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.httpd > $PKG/etc/rc.d/rc.httpd.new + +mkdir -p $PKG/etc/logrotate.d +cat $CWD/logrotate.httpd > $PKG/etc/logrotate.d/httpd.new + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/ +cp -a \ + ABOUT_APACHE Apache.dsw BuildBin.dsp CHANGES INSTALL InstallBin.dsp LAYOUT LICENSE NOTICE NWGNUmakefile README* ROADMAP VERSIONING \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# Other distributions also strip the manual down to just English. +# If this isn't your language of choice, mea culpa. +( cd $PKG/srv/httpd/htdocs/manual + for file in $(find . -type f -name "*.html") ; do + if [ -f ${file}.en ]; then + cp ${file}.en ${file} + rm -f ${file}.* + fi + done +) + +# On Slackware, the traditional location for the Apache document root has always +# been "/var/www/htdocs/". We can avoid an unpleasant surprise for people by +# leaving things where they've always been, and comply with the FHS by providing +# symlinks allowing access through the FHS-approved pathnames. KDE, for example, +# will look for htdig's htsearch here: /var/www/cgi-bin/htsearch +mv $PKG/srv/httpd $PKG/var/www + +## DISABLED. Don't make these symlinks prior to packaging any more, as it is +## possibly dangerous to an existing document root created in the place where +## these symlinks are normally found. Instead, we make them in the install +## script (only if nothing exists there already) +#( cd $PKG/srv +# ln -sf /var/www . +# ln -sf /var/www httpd +#) + +# OK, it's just not generally good form to put your web site in /var/www/htdocs, +# but people do it every day. Like all new .new files, this won't save them this +# time, but if they don't learn their lesson now then it will the next time: +mv $PKG/var/www/htdocs/index.html $PKG/var/www/htdocs/index.html.new + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) +fi + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/httpd/httpd.runasapache.diff b/patches/source/httpd/httpd.runasapache.diff new file mode 100644 index 000000000..c1954ec33 --- /dev/null +++ b/patches/source/httpd/httpd.runasapache.diff @@ -0,0 +1,13 @@ +--- ./etc/httpd/httpd.conf.orig 2008-02-14 15:24:21.000000000 -0600 ++++ ./etc/httpd/httpd.conf 2008-02-14 15:34:58.000000000 -0600 +@@ -125,8 +125,8 @@ + # It is usually good practice to create a dedicated user and group for + # running httpd, as with most system services. + # +-User daemon +-Group daemon ++User apache ++Group apache + + + diff --git a/patches/source/httpd/httpd.url b/patches/source/httpd/httpd.url new file mode 100644 index 000000000..b86771d42 --- /dev/null +++ b/patches/source/httpd/httpd.url @@ -0,0 +1,2 @@ +http://www.apache.org/dist/httpd/httpd-2.4.29.tar.bz2 +http://www.apache.org/dist/httpd/httpd-2.4.29.tar.bz2.asc diff --git a/patches/source/httpd/logrotate.httpd b/patches/source/httpd/logrotate.httpd new file mode 100644 index 000000000..cc6383674 --- /dev/null +++ b/patches/source/httpd/logrotate.httpd @@ -0,0 +1,12 @@ +/var/log/httpd/*_log { + rotate 10 + notifempty + missingok + size=5M + compress + delaycompress + sharedscripts + postrotate + /etc/rc.d/rc.httpd restart + endscript +} diff --git a/patches/source/httpd/rc.httpd b/patches/source/httpd/rc.httpd new file mode 100644 index 000000000..81189098f --- /dev/null +++ b/patches/source/httpd/rc.httpd @@ -0,0 +1,44 @@ +#!/bin/sh +# +# /etc/rc.d/rc.httpd +# +# Start/stop/restart/graceful[ly restart]/graceful[ly]-stop +# the Apache (httpd) web server. +# +# To make Apache start automatically at boot, make this +# file executable: chmod 755 /etc/rc.d/rc.httpd +# +# For information on these options, "man apachectl". + +case "$1" in + 'start') + /usr/sbin/apachectl -k start + ;; + 'stop') + /usr/sbin/apachectl -k stop + killall httpd + # Remove both old and new .pid locations: + rm -f /var/run/httpd.pid /var/run/httpd/httpd.pid + ;; + 'force-restart') + # Because sometimes restarting through apachectl just doesn't do the trick... + /usr/sbin/apachectl -k stop + killall httpd + # Remove both old and new .pid locations: + rm -f /var/run/httpd.pid /var/run/httpd/httpd.pid + /usr/sbin/apachectl -k start + ;; + 'restart') + /usr/sbin/apachectl -k restart + ;; + 'graceful') + /usr/sbin/apachectl -k graceful + ;; + 'graceful-stop') + /usr/sbin/apachectl -k graceful-stop + ;; + *) + echo "Usage: $0 {start|stop|restart|graceful|graceful-stop}" + ;; +esac + diff --git a/patches/source/httpd/slack-desc b/patches/source/httpd/slack-desc new file mode 100644 index 000000000..38d240b6b --- /dev/null +++ b/patches/source/httpd/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +httpd: httpd (The Apache HTTP Server) +httpd: +httpd: Apache is an HTTP server designed as a plug-in replacement for the +httpd: NCSA HTTP server. It fixes numerous bugs in the NCSA server and +httpd: includes many frequently requested new features, and has an API which +httpd: allows it to be extended to meet users' needs more easily. +httpd: +httpd: Apache is the most popular web server in the known universe; over +httpd: half of the servers on the Internet are running Apache or one of +httpd: its variants. +httpd: diff --git a/patches/source/intltool/intltool-0.51.0-perl-5.22.patch b/patches/source/intltool/intltool-0.51.0-perl-5.22.patch new file mode 100644 index 000000000..be672d0cc --- /dev/null +++ b/patches/source/intltool/intltool-0.51.0-perl-5.22.patch @@ -0,0 +1,44 @@ +diff -Naur intltool-0.51.0.orig/intltool-update.in intltool-0.51.0/intltool-update.in +--- intltool-0.51.0.orig/intltool-update.in 2015-03-09 02:39:54.000000000 +0100 ++++ intltool-0.51.0/intltool-update.in 2015-06-19 01:52:07.171228154 +0200 +@@ -1062,7 +1062,7 @@ + } + } + +- if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/) ++ if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/) + { + my $rest = $3; + my $untouched = $1; +@@ -1190,10 +1190,10 @@ + $name =~ s/\(+$//g; + $version =~ s/\(+$//g; + +- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); +- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); +- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); +- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); ++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); ++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); ++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); ++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); + } + + if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m) +@@ -1219,11 +1219,11 @@ + $version =~ s/\(+$//g; + $bugurl =~ s/\(+$//g if (defined $bugurl); + +- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); +- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); +- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); +- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); +- $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/); ++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); ++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); ++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); ++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); ++ $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/); + } + + # \s makes this not work, why? diff --git a/patches/source/intltool/intltool.SlackBuild b/patches/source/intltool/intltool.SlackBuild new file mode 100755 index 000000000..89f1e0651 --- /dev/null +++ b/patches/source/intltool/intltool.SlackBuild @@ -0,0 +1,132 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=intltool +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-3_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1 +cd ${PKGNAM}-$VERSION || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Compatability with perl 5.22: +zcat $CWD/intltool-0.51.0-perl-5.22.patch.gz | patch -p1 --verbose || exit 1 + +# Fix build issues when used with automake >= 1.15: +zcat $CWD/no-guess-builddir.diff.gz | patch -p0 --verbose || exit 1 + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --docdir=/usr/doc/${PKGNAM}-$VERSION \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + rm -f $PKG/usr/info/dir + gzip -9 $PKG/usr/info/* +fi + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL NEWS README* TODO \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/intltool/no-guess-builddir.diff b/patches/source/intltool/no-guess-builddir.diff new file mode 100644 index 000000000..3670ee523 --- /dev/null +++ b/patches/source/intltool/no-guess-builddir.diff @@ -0,0 +1,31 @@ +=== modified file 'intltool-update.in' +--- intltool-update.in 2014-05-14 02:15:53 +0000 ++++ intltool-update.in 2015-02-03 15:05:59 +0000 +@@ -620,6 +620,14 @@ + + my @result; + ++ # If the builddir is a subdir of srcdir, the list of files found will be prefixed with ++ # an additional prefix (e.g. "_build/sub" for automake 1.15 make distcheck). Try to ++ # handle that, by removing those matches as well. ++ my $absbuilddir = Cwd::abs_path("..\/"); ++ my $abssrcdir = Cwd::abs_path("$SRCDIR/.."); ++ # Check if builddir is a subdir of srcdir ++ my ($abspath,$relpath) = split /\s*$abssrcdir\/\s*/, $absbuilddir, 2; ++ + foreach (@buf_allfiles_sorted) + { + my $dummy = $_; +@@ -628,7 +636,10 @@ + $srcdir =~ s#^../##; + $dummy =~ s#^$srcdir/../##; + $dummy =~ s#^$srcdir/##; +- $dummy =~ s#_build/##; ++ if ($relpath) ++ { ++ $dummy =~ s#^$relpath/##; ++ } + if (!exists($in2{$dummy})) + { + push @result, $dummy + diff --git a/patches/source/intltool/slack-desc b/patches/source/intltool/slack-desc new file mode 100644 index 000000000..1486c0481 --- /dev/null +++ b/patches/source/intltool/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +intltool: intltool (Utilities for translation support) +intltool: +intltool: This package contains scripts and autoconf files for +intltool: internationalizing data. +intltool: +intltool: Homepage: https://edge.launchpad.net/intltool +intltool: +intltool: +intltool: +intltool: +intltool: diff --git a/patches/source/irssi/doinst.sh b/patches/source/irssi/doinst.sh new file mode 100644 index 000000000..197eddcef --- /dev/null +++ b/patches/source/irssi/doinst.sh @@ -0,0 +1,12 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/irssi.conf.new diff --git a/patches/source/irssi/irssi.SlackBuild b/patches/source/irssi/irssi.SlackBuild new file mode 100755 index 000000000..c3905a802 --- /dev/null +++ b/patches/source/irssi/irssi.SlackBuild @@ -0,0 +1,143 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-irssi + +VERSION=${VERSION:-$(echo irssi-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +DIRCD=${VERSION} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf irssi-$VERSION +tar xvf $CWD/irssi-$VERSION.tar.xz || exit 1 +cd irssi-$DIRCD + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 -o -perm 2777 -o -perm 2775 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --sysconfdir=/etc \ + --docdir=/usr/doc/irssi-$VERSION \ + --enable-true-color \ + --with-textui \ + --with-perl-lib=vendor \ + --with-proxy \ + --build=$ARCH-slackware-linux || exit 1 + +make \ + docdir=/usr/doc/irssi-$VERSION \ + $NUMJOBS || make || exit 1 +make install \ + docdir=/usr/doc/irssi-$VERSION \ + DESTDIR=$PKG || exit 1 + +# This removes our DESTDIR from the packlist filenames, to keep perl's +# internal inventories consistent and correct. +find $PKG -name .packlist | while read plist ; do + sed -e "s%$PKG%%g" \ + -e "s%/share/man%/man%g" \ + -re "s%\.([1-9]n?|3pm)$%&.gz%g # extend man filenames for .gz" \ + ${plist} > ${plist}.new + mv -f ${plist}.new ${plist} +done + +mv $PKG/etc/irssi.conf $PKG/etc/irssi.conf.new + +find $PKG -name perllocal.pod | xargs rm -f +eval $(perl '-V:archlib') ; rmdir -p $PKG/$archlib 2> /dev/null + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +cp -a \ + AUTHORS COPYING* INSTALL NEWS README* TODO \ + $PKG/usr/doc/irssi-$VERSION +( cd $PKG/usr/doc/irssi-$VERSION ; ln -sf /usr/share/irssi/help . ) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/irssi-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/irssi/slack-desc b/patches/source/irssi/slack-desc new file mode 100644 index 000000000..2a0578921 --- /dev/null +++ b/patches/source/irssi/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +irssi: irssi (Internet Relay Chat client) +irssi: +irssi: Irssi is an Internet Relay Chat client. Designed to be both secure +irssi: and expandable, irssi is easily customized using modules and scripts. +irssi: +irssi: For more information, visit: http://irssi.org +irssi: +irssi: irssi was written by Timo Sirainen. +irssi: +irssi: +irssi: diff --git a/patches/source/kdelibs/KDE.SlackBuild b/patches/source/kdelibs/KDE.SlackBuild new file mode 100755 index 000000000..ea663a694 --- /dev/null +++ b/patches/source/kdelibs/KDE.SlackBuild @@ -0,0 +1,532 @@ +#!/bin/sh +# Copyright 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Adapted by Eric Hameleers from the modular x.org build. + +# To build only a single package group, specify it as $1, like: +# ./KDE.SlackBuild kdeedu +# To build only a single package, specify both the group name +# and the name of the package, like: +# ./KDE.SlackBuild kdeedu:marble +# ./KDE.SlackBuild kdebindings:perlqt,perlkde + + +CLEANUP=${CLEANUP:-"yes"} # clean up build directory after successful build. +PRECHECK=${PRECHECK:-"no"} # don't let the script check the available sources. +CHECKOUT=${CHECKOUT:-"no"} # don't let the script checkout missing sources. + +KDEGITURI="git://anongit.kde.org" + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Set up a few useful functions: + +fix_perms() { + target_dir=$1 + [ -z "$target_dir" ] && target_dir='.' + + chown -R root:root $target_dir + find $target_dir \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +strip_binaries() { + target_dir=$1 + [ -z "$target_dir" ] && target_dir='.' + + find $target_dir | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find $target_dir | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find $target_dir | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +precheck() { + # See if the sources we have match the module components we want to build: + RETVAL=0 + + for SRCFILE in $(find $CWD/src -name "*.tar.?z*") ; do + if cat modules/* |grep "^ *#" |grep -wq $(echo $(basename $SRCFILE) | rev | cut -f2- -d- | rev)$ ; then + echo "Source file '$(basename $SRCFILE)' is commented out in 'modules' !" + elif ! cat modules/* |grep -v "^ *#" |grep -wq $(echo $(basename $SRCFILE) | rev | cut -f2- -d- | rev) ; then + echo "Source file '$(basename $SRCFILE)' is not mentioned in 'modules' !" + RETVAL=1 + fi + done + + for MODULE in $(cat $CWD/modules/* | grep -v "^#") ; do + #if [ -z "$(find $CWD/src -name ${MODULE}-*)" ] ; then + if [ -z "$(find $CWD/src -name $MODULE-*.tar.* |grep -E "$MODULE-[^-]+.tar.*$|$MODULE-[0-9].+.tar.*$")" ] ; then + echo "Module '$MODULE' does not have a matching source tarball !" + if [ "$CHECKOUT" = "yes" -o "$CHECKOUT" = "YES" ]; then + echo "Checking out KDE component at branch '$VERSION'." + git archive --format=tar --prefix {$MODULE}-${VERSION}/ --remote ${KDEGITURI}/${MODULE}.git v${VERSION} | xz -c > $CWD/src/${MODULE}-${VERSION}.tar.xz + RETVAL=$? + if [ $RETVAL -ne 0 ]; then + echo "Error while checking out '$MODULE' !" + mv $CWD/src/${MODULE}-${VERSION}.tar.xz $CWD/src/${MODULE}-${VERSION}.tar.xz.failed + fi + else + RETVAL=1 + fi + fi + # A missing slack-desc counts as fatal even if the program may end up + # inside the big meta-package. + if [ -z "$(find $CWD/slack-desc -name ${MODULE})" ] ; then + echo "Module '$MODULE' does not have a slack-desc file !" + RETVAL=1 + fi + done + + if [ $RETVAL -eq 0 ]; then + echo "Check complete, build starts in 5 seconds" + sleep 5 + else + exit 1 + fi +} + +# Support function builds one complete module (like 'kdelibs'), or +# exactly one package which is part of a module (like 'okular'): +build_mod_pkg () { + kde_module=$1 + kde_pkg=$2 + + cd $CWD/modules + + # See if $kde_module is a module name like "kdeadmin": + if [ ! -z "$kde_module" ]; then + if [ ! -f "$kde_module" ]; then + return + fi + fi + PKG=${SLACK_KDE_BUILD_DIR}/${kde_module}/package-${kde_module} + rm -rf $PKG + mkdir -p $PKG + ( for PKGNAME in $(cat $kde_module |grep -v "^$" |grep -v "^#") ; do + # Find the full source filename - yeah ugly, but I had two goals: + # 1- source tarball can be in a random subdirectory of src/ + # 2- differentiate between e.g. 'kdepim' and 'kdepim-runtime' + kde_src=$(basename $(find $CWD/src -name "$PKGNAME-*.tar.?z*" |grep -E "$PKGNAME-[^-]+.tar.*$|$PKGNAME-[0-9].+.tar.*$") 2>/dev/null) + if [ "x$kde_src" = "x" ]; then + echo "** Did not find '$PKGNAME' in src" + continue + fi + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_KDE_BUILD_DIR/${kde_module} + # If $kde_pkg is set, we only want to build one package: + if [ ! -z "$kde_pkg" ]; then + if [ "$kde_pkg" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_KDE_BUILD_DIR/${kde_module}/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${kde_src}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_KDE_BUILD_DIR/${kde_module}/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $kde_src | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $kde_src) + tar xf $(find $CWD/src -name ${kde_src}) || exit 1 + cd $(pkgbase $kde_src) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch || exit 1 + fi + + # If there's any pre-install things to do, do them: + if [ -r $CWD/pre-install/${PKGNAME}.pre-install ]; then + . $CWD/pre-install/${PKGNAME}.pre-install + fi + + # Run cmake, using custom cmake script if needed: + if [ -r $CWD/cmake/${PKGNAME} ]; then + . $CWD/cmake/${PKGNAME} + elif [ -r $CWD/cmake/${kde_module} ]; then + . $CWD/cmake/${kde_module} + else + # This is the default configure script: + . $CWD/cmake/cmake + fi + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + + # Back to source toplevel builddir, since cmake may have run in a subdir: + cd $SLACK_KDE_BUILD_DIR/${kde_module}/$(pkgbase $kde_src) + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + # Use specific documentation files if available, else use a default set: + if [ -r $CWD/docs/${PKGNAME} ]; then + cp -a $(cat $CWD/docs/${PKGNAME}) \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + else + cp -a \ + AUTHORS* CONTRIBUTING* COPYING* HACKING* \ + INSTALL* MAINTAINERS README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + # If there's a ChangeLog, installing at least part of the recent + # history is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + strip_binaries $PKG + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + . $CWD/post-install/${PKGNAME}.post-install + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_KDE_BUILD_DIR/${kde_module}/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_KDE_BUILD_DIR}/${kde_module}/${PKGNAME}-$(echo $MODULAR_PACKAGE_VERSION |tr - _)-${PKGARCH}-${MODBUILD}.txz + fi + # We will continue with the fresh packages installed: + upgradepkg --install-new --reinstall ${SLACK_KDE_BUILD_DIR}/${kde_module}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + # Keep MIME database current: + /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null & + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_KDE_BUILD_DIR}/${kde_module}/package-${kde_module} + + done + + # At this point, we have left the loop to build modular packages. + # We might need to build a package for the "", but to + # avoid needlessly repacking if there happens to be a package with + # the same name as "", we'll do some checks first. + + # If every package listed in modules/"" is also listed + # in the modularize file, then there's no need to make a package + # for "": + echo + echo "Searching for packages in ${kde_module} that were not built modular:" + cat $CWD/modules/${kde_module} | grep -v "^#" | grep -v -w "^" | while read checkpackage ; do + if ! grep -wq "^$checkpackage" ${CWD}/modularize ; then + # Non-modular package found, so we'll have to build the package below. + # It might already have been built once, but in that case it is likely + # that more things have been added to the package directory since then. + echo "Found non-modular package $checkpackage." + exit 99 + fi + done + + # Exit if everything in "" was built modular: + if [ ! $? = 99 ]; then + echo "No non-modular components found in ${kde_module}." + echo "Not building catch-all package for ${kde_module}." + echo + return + fi + + # If there's no /usr directory in the "" package directory, + # then skip it. There's nothing present worth packing up. + if [ ! -d ${SLACK_KDE_BUILD_DIR}/${kde_module}/package-${kde_module}/usr ]; then + echo "No /usr directory found in package-${kde_module}." + echo "Not building catch-all package for ${kde_module}." + echo + return + fi + + # Build a "" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + + # Put up a bit of a black-box warning, in case this was a mistake where + # something was meant to be listed in the modularize file and wasn't: + echo + echo "**************************************************************************" + echo "* Building combined package for non-modular parts of ${kde_module}" + echo "**************************************************************************" + echo + + PKGARCH=$ARCH + cd $PKG + + process_man_pages + process_info_pages + no_usr_share_doc + + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/${kde_module}.post-install ]; then + . $CWD/post-install/${kde_module}.post-install + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${kde_module} ]; then + cat $CWD/slack-desc/${kde_module} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/${kde_module} ]; then + cat $CWD/doinst.sh/${kde_module} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/${kde_module} ]; then + SRCDIRBUILD=$(cat $CWD/build/${kde_module}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${kde_module} ]; then + BUILD=$SRCDIRBUILD . $CWD/makepkg/${kde_module} + else + /sbin/makepkg -l y -c n ${SLACK_KDE_BUILD_DIR}/${kde_module}/${kde_module}-$(echo $VERSION |tr - _)-${PKGARCH}-${SRCDIRBUILD}.txz + fi + # We will continue with the fresh packages installed: + upgradepkg --install-new --reinstall ${SLACK_KDE_BUILD_DIR}/${kde_module}/${kde_module}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + # Keep MIME database current: + /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null & + ) +} + +# Process the module queue. Format is: +# module[:subpackage[,subpackage]] [module...] +deterministic_build() { + RET=0 + for ENTRY in $1 ; do + KDE_MOD=$(echo "$ENTRY": | cut -f1 -d:) + KDE_PKGS=$(echo "$ENTRY": | cut -f2 -d:) + if [ -z "$KDE_PKGS" ]; then + build_mod_pkg $KDE_MOD + let RET=$RET+$? + else + for KDE_PKG in $(echo $KDE_PKGS |tr ',' ' ') ; do + build_mod_pkg $KDE_MOD $KDE_PKG + let RET=$RET+$? + done + fi + done + + return $RET +} + +# MAIN PART # + +# Import the build configuration options for as far as they are not already set: +[ -r ./KDE.options ] && . ./KDE.options + +# This avoids compiling a version number into KDE's .la files: +QTDIR=/usr/lib${LIBDIRSUFFIX}/qt ; export QTDIR + +# Get the kde environment variables +[ -d post-install/kdebase ] && eval $(sed -e "s#/lib#/lib${LIBDIRSUFFIX}#" ./post-install/kdebase/profile.d/kde.sh) + +# Where we are going to do all the hard labour: +SLACK_KDE_BUILD_DIR=$TMP/kde_build +mkdir -p $SLACK_KDE_BUILD_DIR + +# Yes, we know kde-workspace is built twice. kdebase needs the +# plasma bits from it, and then we build it again for good measure... +# Same goes for kdelibs (at least during KDE 4.8.x) kdeutils:ksecrets needs +# kdelibs and then kdelibs needs a rebuild to pick up ksecretservice +# (this will no longer be required in KDE 4.9). +# And kde-baseapps is rebuilt after kdewebdev because it can then pickup +# libtidy and enable the Konqueror validators plugin to validate HTML. +KDEMODS=" \ + kdelibs \ + kdebase:nepomuk-core \ + kdepimlibs \ + kdebase \ + kdesdk \ + extragear:libkscreen \ + kdegraphics \ + kdebindings \ + kdebase:kde-workspace \ + kdeaccessibility \ + kdeutils \ + kdelibs \ + kdemultimedia \ + extragear:libktorrent \ + kdenetwork \ + oxygen-icons \ + kdeadmin \ + kdeartwork \ + kdegames \ + kdetoys \ + kdepim \ + kdepim-runtime \ + kdenetwork:kopete \ + kdeedu \ + kdewebdev \ + kdebase:kde-baseapps \ + kdeplasma-addons \ + polkit-kde \ + extragear \ + " + +# Allow for specification of individual packages to be built: +if [ -z "$1" ]; then + MODQUEUE=$KDEMODS +else + MODQUEUE="$*" +fi + +# If requested, check if +# sources, module definitions and slack-desc are complete and matching: +if [ "$PRECHECK" = "yes" -o "$PRECHECK" = "YES" ]; then + precheck +fi + +# And finally, start working! +for module in \ + $MODQUEUE ; +do + echo "SlackBuild processing module '$module'" + deterministic_build $module + if [ $? = 0 ]; then + # Move the created packages up into the KDE build directory: + mv ${SLACK_KDE_BUILD_DIR}/$(echo $module |cut -f1 -d:)/*.t?z ${SLACK_KDE_BUILD_DIR}/ + if [ "$CLEANUP" = "yes" -o "$CLEANUP" = "YES" ]; then + # Clean out package and build directories: + rm -rf ${SLACK_KDE_BUILD_DIR}/$(echo $module |cut -f1 -d:) + fi + else + echo "${module} failed to build." + exit 1 + fi + cd - ; +done + +exit 0 + + diff --git a/patches/source/kdelibs/KDE.options b/patches/source/kdelibs/KDE.options new file mode 100644 index 000000000..c54dbfcfd --- /dev/null +++ b/patches/source/kdelibs/KDE.options @@ -0,0 +1,58 @@ +# Set default version/arch/build. You can override these settings +# in the SlackBuild scripts for each package (koffice, for example, +# usually has a different version number), or by setting your own +# environment variables. + +[ -z $VERSION ] && export VERSION=4.14.3 +[ -z $BUILD ] && export BUILD=1 + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +[ -z $PKGARCH ] && export PKGARCH=$ARCH + +# Use this as CFLAGS and CXXFLAGS: +if [ -z "$SLKCFLAGS" ]; then + if [ "$ARCH" = "i586" ]; then + export SLKCFLAGS="-O2 -march=i586 -mtune=i686" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "s390" ]; then + export SLKCFLAGS="-O2" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "x86_64" ]; then + export SLKCFLAGS="-O2 -fPIC" + export LIBDIRSUFFIX="64" + elif [ "$ARCH" = "arm" ]; then + export SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "armel" ]; then + export SLKCFLAGS="-O2 -march=armv4t" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "armv7hl" ]; then + export SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + export LIBDIRSUFFIX="" + else + export SLKCFLAGS="-O2" + export LIBDIRSUFFIX="" + fi +fi + +# Use this to set the number of parallel make jobs: +if [ -z "$NUMJOBS" ]; then + export NUMJOBS="-j7" +fi + +# Additional cmake flags that are spanned across the KDE modules +# Do not use "final build" unless we build an actual release. +#export KDE_OPT_ARGS=" -DKDE4_ENABLE_FINAL=\"ON\" -DSITE=\"slackware.com\" " +export KDE_OPT_ARGS=" -DKDE4_BUILD_TESTS=OFF -DSITE=\"slackware.com\" -DKDE_DISTRIBUTION_TEXT=\"volkerdi@slackware.com\" " + diff --git a/patches/source/kdelibs/build/kdelibs b/patches/source/kdelibs/build/kdelibs new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/kdelibs/build/kdelibs @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/kdelibs/cmake/kdelibs b/patches/source/kdelibs/cmake/kdelibs new file mode 100644 index 000000000..92015a911 --- /dev/null +++ b/patches/source/kdelibs/cmake/kdelibs @@ -0,0 +1,17 @@ +mkdir -p build +cd build + cmake \ + $KDE_OPT_ARGS \ + -DWITH_HAL=OFF \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DMAN_INSTALL_DIR=/usr/man \ + -DSYSCONF_INSTALL_DIR=/etc/kde \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DKDE_DISTRIBUTION_TEXT="volkerdi@slackware.com" \ + .. + diff --git a/patches/source/kdelibs/doinst.sh/kdelibs b/patches/source/kdelibs/doinst.sh/kdelibs new file mode 100644 index 000000000..d7006c70a --- /dev/null +++ b/patches/source/kdelibs/doinst.sh/kdelibs @@ -0,0 +1,9 @@ + +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database /usr/share/applications >/dev/null 2>&1 +fi + +if [ -x usr/bin/update-mime-database ]; then + /usr/bin/update-mime-database /usr/share/mime >/dev/null 2>&1 +fi + diff --git a/patches/source/kdelibs/kdelibs.SlackBuild b/patches/source/kdelibs/kdelibs.SlackBuild new file mode 100755 index 000000000..542ddb604 --- /dev/null +++ b/patches/source/kdelibs/kdelibs.SlackBuild @@ -0,0 +1,2 @@ +./KDE.SlackBuild kdelibs:kdelibs +mv /tmp/kde_build/kdelibs*txz /tmp diff --git a/patches/source/kdelibs/modularize b/patches/source/kdelibs/modularize new file mode 100644 index 000000000..4dd401b5a --- /dev/null +++ b/patches/source/kdelibs/modularize @@ -0,0 +1,268 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. +# +# Things to note: +# +# Listing a package here will not cause it to be built. To do that, +# make sure it is added to one of the files in the modules/ directory +# that is built by the main KDE.SlackBuild script. +# +# If a subpackage name happens to be the same as the "grab bag" package +# that contains it, you need to be a bit careful. Unless everything +# in that collection will be built modular, *do not* list that name +# here! If you do, first the module by that name will be built, and +# then everything that's not modular in that collection will be built +# into a "grab bag" that will replace that first package. +# +# If the goal is to build the most combined packages possible, the +# easiest way to accomplish that is just to move this file out of the +# way and replace it with an empty one before building. + +# kdeaccessibility +jovie +kaccessible +kmouth +kmousetool +kmag + +# kdelibs: +kdelibs + +# kdebase: +baloo +baloo-widgets +nepomuk-core +nepomuk-widgets +kfilemetadata +kde-baseapps +kactivities +konsole +kate +kde-wallpapers +kde-workspace +kde-runtime +kde-base-artwork + +# kdeedu: +libkdeedu +analitza +artikulate +blinken +cantor +kalgebra +kalzium +kanagram +kbruch +kgeography +khangman +kig +kiten +klettres +kmplot +kqtquickcharts +kstars +ktouch +kturtle +kwordquiz +marble +parley +pairs +rocs +step + +# kdeadmin +kcron +ksystemlog +kuser +#kdeadmin + +# kdeartwork +kdeartwork + +# kdegraphics: +libkipi +libkexiv2 +libkdcraw +libksane +okular +kdegraphics-mobipocket +kdegraphics-strigi-analyzer +kdegraphics-thumbnailers +gwenview +kamera +kcolorchooser +kgamma +kolourpaint +kruler +ksaneplugin +ksnapshot +svgpart + +# kdebindings +smokegen +smokeqt +qtruby +perlqt +smokekde +korundum +perlkde +pykde4 +kross-interpreters +kimono +qyoto + +# kdemultimedia +libkcddb +libkcompactdisc +audiocd-kio +dragon +ffmpegthumbs +mplayerthumbs +juk +kmix +kscd + +# kdenetwork +kdenetwork-filesharing +kdenetwork-strigi-analyzers +#kdnssd +zeroconf-ioslave +kget +kopete +kppp +krdc +krfb +#kdenetwork + +# kdeutils +ark +filelight +kcalc +kcharselect +kdf +kfloppy +kgpg +#printer-applet +print-manager +kremotecontrol +ktimer +kwalletmanager +superkaramba +sweeper + +# kdegames +libkdegames +libkmahjongg +klickety +ksudoku +ksquares +kpat +klines +ksnakeduel +kollision +kshisen +kblocks +lskat +kreversi +bovo +kajongg +granatier +kmines +kiriki +kigo +bomber +kolf +kdiamond +kbounce +konquest +kapman +knavalbattle +killbots +kubrick +kgoldrunner +knetwalk +kbreakout +ksirk +kfourinline +picmi +kblackbox +palapeli +katomic +ktuberling +kjumpingcube +kmahjongg +kspaceduel + +# kdewebdev +kdewebdev + +# kdepim +kdepim +kdepim-runtime + +# kdepimlibs +kdepimlibs + +# kdeplasma-addons +kdeplasma-addons + +# kdesdk +cervisia +dolphin-plugins +kapptemplate +kcachegrind +kde-dev-scripts +kde-dev-utils +kdesdk-kioslaves +kdesdk-strigi-analyzers +kdesdk-thumbnailers +libkomparediff2 +kompare +lokalize +okteta +poxml +umbrello +#kdesdk + +# kdetoys +amor +kteatime +ktux +#kdetoys + +# oxygen-icons +oxygen-icons + +# polkit-kde +polkit-kde-agent-1 +polkit-kde-kcmodules-1 + +# extragear +bluedevil +k3b +kaudiocreator +kplayer +kwebkitpart +oxygen-gtk2 +kdevplatform +kdevelop-pg-qt +kdevelop +kdev-python +kdevelop-php +kdevelop-php-docs +#quanta +wicd-kde +libmm-qt +libnm-qt +plasma-nm +skanlite +kio-mtp +libktorrent +ktorrent +amarok +calligra +libkscreen +kscreen +partitionmanager +kdeconnect-kde + diff --git a/patches/source/kdelibs/modules/kdelibs b/patches/source/kdelibs/modules/kdelibs new file mode 100644 index 000000000..473159785 --- /dev/null +++ b/patches/source/kdelibs/modules/kdelibs @@ -0,0 +1 @@ +kdelibs diff --git a/patches/source/kdelibs/noarch b/patches/source/kdelibs/noarch new file mode 100644 index 000000000..0c1318f12 --- /dev/null +++ b/patches/source/kdelibs/noarch @@ -0,0 +1,5 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: + +kde-wallpapers + diff --git a/patches/source/kdelibs/package-blacklist b/patches/source/kdelibs/package-blacklist new file mode 100644 index 000000000..71e99c40c --- /dev/null +++ b/patches/source/kdelibs/package-blacklist @@ -0,0 +1,9 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +## kdebindings: +# needs c-sharp: +kimono +qyoto + diff --git a/patches/source/kdelibs/patch/kdelibs.patch b/patches/source/kdelibs/patch/kdelibs.patch new file mode 100644 index 000000000..c314b559c --- /dev/null +++ b/patches/source/kdelibs/patch/kdelibs.patch @@ -0,0 +1,14 @@ +# Slackware ships a different version of XML DTDs: +zcat $CWD/patch/kdelibs/kdelibs.docbook.patch.gz | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } + +# Make uPnP support depend on the environment variable SOLID_UPNP, +# e.g. by creating an /etc/profile.d/upnp.sh file with the following contents: +# export SOLID_UPNP=1 +zcat $CWD/patch/kdelibs/kdelibs.upnp_conditional.patch.gz | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } + +# Revert 3 patches which (although they probably follow the FDo spec better), +# cause incorrect icon overrides: +zcat $CWD/patch/kdelibs/return-not-break.-copy-paste-error.patch.gz | patch -R -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/kdelibs/coding-style-fixes.patch.gz | patch -R -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/kdelibs/return-application-icons-properly.patch.gz | patch -R -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } + diff --git a/patches/source/kdelibs/patch/kdelibs/coding-style-fixes.patch b/patches/source/kdelibs/patch/kdelibs/coding-style-fixes.patch new file mode 100644 index 000000000..11108f0a4 --- /dev/null +++ b/patches/source/kdelibs/patch/kdelibs/coding-style-fixes.patch @@ -0,0 +1,62 @@ +From 2173580f070e806d4715e13048c697c49ec262e2 Mon Sep 17 00:00:00 2001 +From: Aaron Seigo +Date: Thu, 21 Feb 2013 17:59:58 +0100 +Subject: [PATCH 047/111] coding style fixes + +--- + kdeui/icons/kiconloader.cpp | 27 ++++++++++++--------------- + 1 file changed, 12 insertions(+), 15 deletions(-) + +diff --git a/kdeui/icons/kiconloader.cpp b/kdeui/icons/kiconloader.cpp +index 6fed667..dba474d 100644 +--- a/kdeui/icons/kiconloader.cpp ++++ b/kdeui/icons/kiconloader.cpp +@@ -938,32 +938,29 @@ K3Icon KIconLoaderPrivate::findMatchingIcon(const QString& name, int size) const + } + } + +- foreach (KIconThemeNode *themeNode, links) +- { ++ foreach (KIconThemeNode *themeNode, links) { + QString currentName = name; + +- while (!currentName.isEmpty()) +- { +- ++ while (!currentName.isEmpty()) { + //kDebug(264) << "Looking up" << currentName; + +-// The following code has been commented out because the Qt SVG renderer needs +-// to be improved. If you are going to change/remove some code from this part, +-// please contact me before (ereslibre@kde.org), or kde-core-devel@kde.org. (ereslibre) +- for (int i = 0 ; i < 4 ; i++) +- { ++ for (int i = 0 ; i < 4 ; i++) { + icon = themeNode->theme->iconPath(currentName + ext[i], size, KIconLoader::MatchExact); +- if (icon.isValid()) +- return icon; ++ if (icon.isValid()) { ++ break; ++ } + + icon = themeNode->theme->iconPath(currentName + ext[i], size, KIconLoader::MatchBest); +- if (icon.isValid()) +- return icon; ++ if (icon.isValid()) { ++ break; ++ } + } ++ //kDebug(264) << "Looking up" << currentName; + +- if (genericFallback) ++ if (genericFallback) { + // we already tested the base name + break; ++ } + + int rindex = currentName.lastIndexOf('-'); + if (rindex > 1) { // > 1 so that we don't split x-content or x-epoc +-- +1.8.1.4 + + diff --git a/patches/source/kdelibs/patch/kdelibs/kdelibs.docbook.patch b/patches/source/kdelibs/patch/kdelibs/kdelibs.docbook.patch new file mode 100644 index 000000000..6a20cd279 --- /dev/null +++ b/patches/source/kdelibs/patch/kdelibs/kdelibs.docbook.patch @@ -0,0 +1,11 @@ +--- kdelibs-4.4.85/cmake/modules/FindDocBookXML.cmake.orig 2010-05-27 19:25:00.000000000 +0200 ++++ kdelibs-4.4.85/cmake/modules/FindDocBookXML.cmake 2010-06-07 16:18:35.000000000 +0200 +@@ -12,7 +12,7 @@ + # Redistribution and use is allowed according to the terms of the BSD license. + # For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +-set (DOCBOOKXML_CURRENTDTD_VERSION "4.2" ++set (DOCBOOKXML_CURRENTDTD_VERSION "4.5" + CACHE INTERNAL "Required version of XML DTDs") + + set (DTD_PATH_LIST diff --git a/patches/source/kdelibs/patch/kdelibs/kdelibs.upnp_conditional.patch b/patches/source/kdelibs/patch/kdelibs/kdelibs.upnp_conditional.patch new file mode 100644 index 000000000..3a1944774 --- /dev/null +++ b/patches/source/kdelibs/patch/kdelibs/kdelibs.upnp_conditional.patch @@ -0,0 +1,15 @@ +--- kdelibs-4.8.0/solid/solid/managerbase.cpp.orig 2011-07-27 20:34:39.000000000 +0200 ++++ kdelibs-4.8.0/solid/solid/managerbase.cpp 2012-01-26 09:17:49.409993419 +0100 +@@ -90,7 +90,11 @@ + # endif + + # if defined (HUPNP_FOUND) +- m_backends << new Solid::Backends::UPnP::UPnPDeviceManager(0); ++ bool solidUpnpEnabled ++ = QString::fromLocal8Bit(qgetenv("SOLID_UPNP")).toInt()==1; ++ if (solidUpnpEnabled) { ++ m_backends << new Solid::Backends::UPnP::UPnPDeviceManager(0); ++ } + # endif + } + } diff --git a/patches/source/kdelibs/patch/kdelibs/return-application-icons-properly.patch b/patches/source/kdelibs/patch/kdelibs/return-application-icons-properly.patch new file mode 100644 index 000000000..2bdb53adf --- /dev/null +++ b/patches/source/kdelibs/patch/kdelibs/return-application-icons-properly.patch @@ -0,0 +1,56 @@ +From 613c951a1157df0d8a907a155a5eaa706816d5f9 Mon Sep 17 00:00:00 2001 +From: Aaron Seigo +Date: Thu, 21 Feb 2013 17:58:11 +0100 +Subject: return application icons properly + +BUG:315578 +--- + kdeui/icons/kiconloader.cpp | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +diff --git a/kdeui/icons/kiconloader.cpp b/kdeui/icons/kiconloader.cpp +index f65e941..6fed667 100644 +--- a/kdeui/icons/kiconloader.cpp ++++ b/kdeui/icons/kiconloader.cpp +@@ -909,7 +909,36 @@ K3Icon KIconLoaderPrivate::findMatchingIcon(const QString& name, int size) const + const char * const ext[4] = { ".png", ".svgz", ".svg", ".xpm" }; + bool genericFallback = name.endsWith(QLatin1String("-x-generic")); + +- foreach(KIconThemeNode *themeNode, links) ++ // Do two passes through themeNodes. ++ // ++ // The first pass looks for an exact match in each themeNode one after the other. ++ // If one is found and it is an app icon then return that icon. ++ // ++ // In the next pass (assuming the first pass failed), it looks for exact matches ++ // and then generic fallbacks in each themeNode one after the other ++ // ++ // The reasoning is that application icons should always match exactly, all other ++ // icons may fallback. Since we do not know what the context is here when we start ++ // looking for it, we can only go by the path found. ++ foreach (KIconThemeNode *themeNode, links) { ++ for (int i = 0 ; i < 4 ; i++) { ++ icon = themeNode->theme->iconPath(name + ext[i], size, KIconLoader::MatchExact); ++ if (icon.isValid()) { ++ break; ++ } ++ ++ icon = themeNode->theme->iconPath(name + ext[i], size, KIconLoader::MatchBest); ++ if (icon.isValid()) { ++ break; ++ } ++ } ++ ++ if (icon.isValid() && icon.path.contains("/apps/")) { ++ return icon; ++ } ++ } ++ ++ foreach (KIconThemeNode *themeNode, links) + { + QString currentName = name; + +-- +1.8.1.4 + + diff --git a/patches/source/kdelibs/patch/kdelibs/return-not-break.-copy-paste-error.patch b/patches/source/kdelibs/patch/kdelibs/return-not-break.-copy-paste-error.patch new file mode 100644 index 000000000..b62818ed6 --- /dev/null +++ b/patches/source/kdelibs/patch/kdelibs/return-not-break.-copy-paste-error.patch @@ -0,0 +1,31 @@ +From 0edfd42151ad57322a10a24ab4971b638e220e6e Mon Sep 17 00:00:00 2001 +From: Aaron Seigo +Date: Thu, 21 Feb 2013 18:14:54 +0100 +Subject: [PATCH 049/111] return, not break. copy/paste error + +--- + kdeui/icons/kiconloader.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/kdeui/icons/kiconloader.cpp b/kdeui/icons/kiconloader.cpp +index dba474d..ce6aeea 100644 +--- a/kdeui/icons/kiconloader.cpp ++++ b/kdeui/icons/kiconloader.cpp +@@ -947,12 +947,12 @@ K3Icon KIconLoaderPrivate::findMatchingIcon(const QString& name, int size) const + for (int i = 0 ; i < 4 ; i++) { + icon = themeNode->theme->iconPath(currentName + ext[i], size, KIconLoader::MatchExact); + if (icon.isValid()) { +- break; ++ return icon; + } + + icon = themeNode->theme->iconPath(currentName + ext[i], size, KIconLoader::MatchBest); + if (icon.isValid()) { +- break; ++ return icon; + } + } + //kDebug(264) << "Looking up" << currentName; +-- +1.8.1.4 + diff --git a/patches/source/kdelibs/post-install/kdelibs.post-install b/patches/source/kdelibs/post-install/kdelibs.post-install new file mode 100644 index 000000000..9239a3e5f --- /dev/null +++ b/patches/source/kdelibs/post-install/kdelibs.post-install @@ -0,0 +1,2 @@ +# Move the polkit dbus configuration files to the proper place: +mv $PKG/etc/kde/dbus-1 $PKG/etc/ diff --git a/patches/source/kdelibs/slack-desc/kdelibs b/patches/source/kdelibs/slack-desc/kdelibs new file mode 100644 index 000000000..a89ea3c8a --- /dev/null +++ b/patches/source/kdelibs/slack-desc/kdelibs @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +kdelibs: kdelibs (KDE libraries) +kdelibs: +kdelibs: System libraries and other resources required for the KDE Platform. +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: +kdelibs: diff --git a/patches/source/libX11/arch.use.flags b/patches/source/libX11/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libX11/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libX11/build/libX11 b/patches/source/libX11/build/libX11 new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libX11/build/libX11 @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libX11/configure/libX11 b/patches/source/libX11/configure/libX11 new file mode 100644 index 000000000..cf85e58d4 --- /dev/null +++ b/patches/source/libX11/configure/libX11 @@ -0,0 +1,12 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libX11/libX11.SlackBuild b/patches/source/libX11/libX11.SlackBuild new file mode 100755 index 000000000..6db227798 --- /dev/null +++ b/patches/source/libX11/libX11.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libX11 +mv /tmp/x11-build/libX11*txz /tmp diff --git a/patches/source/libX11/modularize b/patches/source/libX11/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libX11/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libX11/noarch b/patches/source/libX11/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libX11/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libX11/package-blacklist b/patches/source/libX11/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libX11/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libX11/post-install/libX11.post-install b/patches/source/libX11/post-install/libX11.post-install new file mode 100644 index 000000000..7232b6802 --- /dev/null +++ b/patches/source/libX11/post-install/libX11.post-install @@ -0,0 +1,2 @@ +mkdir -p $PKG/usr/share/X11 +zcat $CWD/post-install/libX11/XKeysymDB.gz > $PKG/usr/share/X11/XKeysymDB diff --git a/patches/source/libX11/slack-desc/libX11 b/patches/source/libX11/slack-desc/libX11 new file mode 100644 index 000000000..2ec4f39a3 --- /dev/null +++ b/patches/source/libX11/slack-desc/libX11 @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libX11: libX11 (Core X11 protocol client library) +libX11: +libX11: libX11 is part of X11. +libX11: +libX11: For more information about the X.Org Foundation (the providers of the +libX11: X.Org implementation of the X Window System), see their website: +libX11: +libX11: http://www.x.org +libX11: +libX11: +libX11: diff --git a/patches/source/libX11/x11.SlackBuild b/patches/source/libX11/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libX11/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXcursor/arch.use.flags b/patches/source/libXcursor/arch.use.flags new file mode 100644 index 000000000..641c24a44 --- /dev/null +++ b/patches/source/libXcursor/arch.use.flags @@ -0,0 +1,7 @@ +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXcursor/build/increment.sh b/patches/source/libXcursor/build/increment.sh new file mode 100755 index 000000000..6de5d0da6 --- /dev/null +++ b/patches/source/libXcursor/build/increment.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# A script to increment build numbers. +# Call it with the list of the build numbers to increase by one: +# +# ./increment.sh xf86-input-acecad xf86-input-aiptek xf86-input-joystick +# +# If a build file does not exist, it will be created with a value of 2. + +for build in $* ; do + if [ ! -r $build ]; then + echo "Creating $build with value 2" + echo 2 > $build + else + echo "Incrementing $build $(cat $build) -> $(expr $(cat $build) + 1)" + echo $(expr $(cat $build) + 1) > $build + fi +done diff --git a/patches/source/libXcursor/build/libXcursor b/patches/source/libXcursor/build/libXcursor new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXcursor/build/libXcursor @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXcursor/configure/configure b/patches/source/libXcursor/configure/configure new file mode 100644 index 000000000..0f3bccf24 --- /dev/null +++ b/patches/source/libXcursor/configure/configure @@ -0,0 +1,12 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXcursor/libXcursor.SlackBuild b/patches/source/libXcursor/libXcursor.SlackBuild new file mode 100755 index 000000000..4d4f81d27 --- /dev/null +++ b/patches/source/libXcursor/libXcursor.SlackBuild @@ -0,0 +1,26 @@ +#!/bin/sh + +# Copyright 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +UPGRADE_PACKAGES=no sh x11-build-script.sh lib libXcursor +mv --verbose /tmp/x11-build/*.txz /tmp + diff --git a/patches/source/libXcursor/modularize b/patches/source/libXcursor/modularize new file mode 100644 index 000000000..38762ffda --- /dev/null +++ b/patches/source/libXcursor/modularize @@ -0,0 +1,272 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXcursor/noarch b/patches/source/libXcursor/noarch new file mode 100644 index 000000000..480ffc26c --- /dev/null +++ b/patches/source/libXcursor/noarch @@ -0,0 +1,76 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-cf-files +xorg-docs +xproto +xtrans diff --git a/patches/source/libXcursor/package-blacklist b/patches/source/libXcursor/package-blacklist new file mode 100644 index 000000000..8e2f3eb5c --- /dev/null +++ b/patches/source/libXcursor/package-blacklist @@ -0,0 +1,43 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXcursor/slack-desc/libXcursor b/patches/source/libXcursor/slack-desc/libXcursor new file mode 100644 index 000000000..2906c6aaf --- /dev/null +++ b/patches/source/libXcursor/slack-desc/libXcursor @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXcursor: libXcursor (X Window System Cursor management library) +libXcursor: +libXcursor: libXcursor is part of X11. +libXcursor: +libXcursor: For more information about the X.Org Foundation (the providers of the +libXcursor: X.Org implementation of the X Window System), see their website: +libXcursor: +libXcursor: http://www.x.org +libXcursor: +libXcursor: +libXcursor: diff --git a/patches/source/libXcursor/x11-build-script.sh b/patches/source/libXcursor/x11-build-script.sh new file mode 100755 index 000000000..9869c665c --- /dev/null +++ b/patches/source/libXcursor/x11-build-script.sh @@ -0,0 +1,374 @@ +#!/bin/sh +# Copyright 2007-2013 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# This is default. To not upgrade, pass UPGRADE_PACKAGES=no (or anything else). +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXfixes/arch.use.flags b/patches/source/libXfixes/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXfixes/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXfixes/build/libXfixes b/patches/source/libXfixes/build/libXfixes new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXfixes/build/libXfixes @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXfixes/configure/configure b/patches/source/libXfixes/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXfixes/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXfixes/libXfixes.SlackBuild b/patches/source/libXfixes/libXfixes.SlackBuild new file mode 100755 index 000000000..8d5116f4e --- /dev/null +++ b/patches/source/libXfixes/libXfixes.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXfixes +mv /tmp/x11-build/libXfixes*txz /tmp diff --git a/patches/source/libXfixes/modularize b/patches/source/libXfixes/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXfixes/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXfixes/noarch b/patches/source/libXfixes/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXfixes/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXfixes/package-blacklist b/patches/source/libXfixes/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXfixes/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXfixes/slack-desc/libXfixes b/patches/source/libXfixes/slack-desc/libXfixes new file mode 100644 index 000000000..3c44fa46f --- /dev/null +++ b/patches/source/libXfixes/slack-desc/libXfixes @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXfixes: libXfixes (client library for the Xfixes extension) +libXfixes: +libXfixes: libXfixes is part of X11. +libXfixes: +libXfixes: For more information about the X.Org Foundation (the providers of the +libXfixes: X.Org implementation of the X Window System), see their website: +libXfixes: +libXfixes: http://www.x.org +libXfixes: +libXfixes: +libXfixes: diff --git a/patches/source/libXfixes/x11.SlackBuild b/patches/source/libXfixes/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXfixes/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXfont/arch.use.flags b/patches/source/libXfont/arch.use.flags new file mode 100644 index 000000000..f28a6ccab --- /dev/null +++ b/patches/source/libXfont/arch.use.flags @@ -0,0 +1,7 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXfont/build/increment.sh b/patches/source/libXfont/build/increment.sh new file mode 100755 index 000000000..6de5d0da6 --- /dev/null +++ b/patches/source/libXfont/build/increment.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# A script to increment build numbers. +# Call it with the list of the build numbers to increase by one: +# +# ./increment.sh xf86-input-acecad xf86-input-aiptek xf86-input-joystick +# +# If a build file does not exist, it will be created with a value of 2. + +for build in $* ; do + if [ ! -r $build ]; then + echo "Creating $build with value 2" + echo 2 > $build + else + echo "Incrementing $build $(cat $build) -> $(expr $(cat $build) + 1)" + echo $(expr $(cat $build) + 1) > $build + fi +done diff --git a/patches/source/libXfont/build/libXfont b/patches/source/libXfont/build/libXfont new file mode 100644 index 000000000..cf5deb272 --- /dev/null +++ b/patches/source/libXfont/build/libXfont @@ -0,0 +1 @@ +2_slack14.2 diff --git a/patches/source/libXfont/configure/configure b/patches/source/libXfont/configure/configure new file mode 100644 index 000000000..0f3bccf24 --- /dev/null +++ b/patches/source/libXfont/configure/configure @@ -0,0 +1,12 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXfont/libXfont.SlackBuild b/patches/source/libXfont/libXfont.SlackBuild new file mode 100755 index 000000000..25821f171 --- /dev/null +++ b/patches/source/libXfont/libXfont.SlackBuild @@ -0,0 +1,26 @@ +#!/bin/sh + +# Copyright 2014 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +UPGRADE_PACKAGES=no sh x11-build-script.sh lib libXfont +mv --verbose /tmp/x11-build/*.txz /tmp + diff --git a/patches/source/libXfont/modularize b/patches/source/libXfont/modularize new file mode 100644 index 000000000..38762ffda --- /dev/null +++ b/patches/source/libXfont/modularize @@ -0,0 +1,272 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXfont/noarch b/patches/source/libXfont/noarch new file mode 100644 index 000000000..480ffc26c --- /dev/null +++ b/patches/source/libXfont/noarch @@ -0,0 +1,76 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-cf-files +xorg-docs +xproto +xtrans diff --git a/patches/source/libXfont/package-blacklist b/patches/source/libXfont/package-blacklist new file mode 100644 index 000000000..8e2f3eb5c --- /dev/null +++ b/patches/source/libXfont/package-blacklist @@ -0,0 +1,43 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXfont/patch/libXfont.patch b/patches/source/libXfont/patch/libXfont.patch new file mode 100644 index 000000000..7b6e24570 --- /dev/null +++ b/patches/source/libXfont/patch/libXfont.patch @@ -0,0 +1 @@ +zcat $CWD/patch/libXfont/libXfont.CVE-2017-16611.diff.gz | patch -p1 || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/patches/source/libXfont/patch/libXfont/libXfont.CVE-2017-16611.diff b/patches/source/libXfont/patch/libXfont/libXfont.CVE-2017-16611.diff new file mode 100644 index 000000000..5b50ae664 --- /dev/null +++ b/patches/source/libXfont/patch/libXfont/libXfont.CVE-2017-16611.diff @@ -0,0 +1,105 @@ +From 7b377456f95d2ec3ead40f4fb74ea620191f88c8 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Thu, 26 Oct 2017 09:48:13 +0200 +Subject: Open files with O_NOFOLLOW. (CVE-2017-16611) + +A non-privileged X client can instruct X server running under root to open any +file by creating own directory with "fonts.dir", "fonts.alias" or any font file +being a symbolic link to any other file in the system. X server will then open +it. This can be issue with special files such as /dev/watchdog. + +Reviewed-by: Matthieu Herrb + +diff --git a/src/fontfile/dirfile.c b/src/fontfile/dirfile.c +index 04cfa40..2802980 100644 +--- a/src/fontfile/dirfile.c ++++ b/src/fontfile/dirfile.c +@@ -42,6 +42,7 @@ in this Software without prior written authorization from The Open Group. + #include + #include + #include ++#include + #include + #include + +@@ -61,8 +62,9 @@ FontFileReadDirectory (const char *directory, FontDirectoryPtr *pdir) + char dir_file[MAXFONTFILENAMELEN]; + char dir_path[MAXFONTFILENAMELEN]; + char *ptr; +- FILE *file; +- int count, ++ FILE *file = 0; ++ int file_fd, ++ count, + num_fonts, + status; + struct stat statb; +@@ -92,7 +94,14 @@ FontFileReadDirectory (const char *directory, FontDirectoryPtr *pdir) + if (dir_file[strlen(dir_file) - 1] != '/') + strcat(dir_file, "/"); + strcat(dir_file, FontDirFile); ++#ifndef WIN32 ++ file_fd = open(dir_file, O_RDONLY | O_NOFOLLOW); ++ if (file_fd >= 0) { ++ file = fdopen(file_fd, "rt"); ++ } ++#else + file = fopen(dir_file, "rt"); ++#endif + if (file) { + #ifndef WIN32 + if (fstat (fileno(file), &statb) == -1) +@@ -262,7 +271,8 @@ ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) + char alias[MAXFONTNAMELEN]; + char font_name[MAXFONTNAMELEN]; + char alias_file[MAXFONTFILENAMELEN]; +- FILE *file; ++ int file_fd; ++ FILE *file = 0; + FontDirectoryPtr dir; + int token; + char *lexToken; +@@ -280,7 +290,16 @@ ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) + strcat(alias_file, "/"); + strcat(alias_file, FontAliasFile); + } ++ ++#ifndef WIN32 ++ file_fd = open(alias_file, O_RDONLY | O_NOFOLLOW); ++ if (file_fd >= 0) { ++ file = fdopen(file_fd, "rt"); ++ } ++#else + file = fopen(alias_file, "rt"); ++#endif ++ + if (!file) + return ((errno == ENOENT) ? Successful : BadFontPath); + if (!dir) +diff --git a/src/fontfile/fileio.c b/src/fontfile/fileio.c +index 074ebcb..05374b4 100644 +--- a/src/fontfile/fileio.c ++++ b/src/fontfile/fileio.c +@@ -40,6 +40,9 @@ in this Software without prior written authorization from The Open Group. + #ifndef O_CLOEXEC + #define O_CLOEXEC 0 + #endif ++#ifndef O_NOFOLLOW ++#define O_NOFOLLOW 0 ++#endif + + FontFilePtr + FontFileOpen (const char *name) +@@ -48,7 +51,7 @@ FontFileOpen (const char *name) + int len; + BufFilePtr raw, cooked; + +- fd = open (name, O_BINARY|O_CLOEXEC); ++ fd = open (name, O_BINARY|O_CLOEXEC|O_NOFOLLOW); + if (fd < 0) + return 0; + raw = BufFileOpenRead (fd); +-- +cgit v0.10.2 + + diff --git a/patches/source/libXfont/slack-desc/libXfont b/patches/source/libXfont/slack-desc/libXfont new file mode 100644 index 000000000..d78d6a0e9 --- /dev/null +++ b/patches/source/libXfont/slack-desc/libXfont @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXfont: libXfont (library for legacy X11 font system) +libXfont: +libXfont: libXfont provides the core of the legacy X11 font system, handling the +libXfont: index files (fonts.dir, fonts.alias, fonts.scale), the various font +libXfont: file formats, and rasterizing them. It is used by the X servers, the +libXfont: X Font Server (xfs), and some font utilities (bdftopcf for instance), +libXfont: but should not be used by normal X11 clients. X11 clients access fonts +libXfont: via either the new API's in libXft, or the legacy API's in libX11. +libXfont: +libXfont: +libXfont: diff --git a/patches/source/libXfont/x11-build-script.sh b/patches/source/libXfont/x11-build-script.sh new file mode 100755 index 000000000..6da53346f --- /dev/null +++ b/patches/source/libXfont/x11-build-script.sh @@ -0,0 +1,374 @@ +#!/bin/sh +# Copyright 2007-2013 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# This is default. To not upgrade, pass UPGRADE_PACKAGES=no (or anything else). +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXi/arch.use.flags b/patches/source/libXi/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXi/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXi/build/libXi b/patches/source/libXi/build/libXi new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXi/build/libXi @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXi/configure/configure b/patches/source/libXi/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXi/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXi/libXi.SlackBuild b/patches/source/libXi/libXi.SlackBuild new file mode 100755 index 000000000..eea1be6d5 --- /dev/null +++ b/patches/source/libXi/libXi.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXi +mv /tmp/x11-build/libXi*txz /tmp diff --git a/patches/source/libXi/modularize b/patches/source/libXi/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXi/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXi/noarch b/patches/source/libXi/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXi/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXi/package-blacklist b/patches/source/libXi/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXi/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXi/slack-desc/libXi b/patches/source/libXi/slack-desc/libXi new file mode 100644 index 000000000..4585f82e1 --- /dev/null +++ b/patches/source/libXi/slack-desc/libXi @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXi: libXi (library for the X Input Extension) +libXi: +libXi: libXi is part of X11. +libXi: +libXi: For more information about the X.Org Foundation (the providers of the +libXi: X.Org implementation of the X Window System), see their website: +libXi: +libXi: http://www.x.org +libXi: +libXi: +libXi: diff --git a/patches/source/libXi/slack-desc/libXinerama b/patches/source/libXi/slack-desc/libXinerama new file mode 100644 index 000000000..3b16b81f7 --- /dev/null +++ b/patches/source/libXi/slack-desc/libXinerama @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXinerama: libXinerama (library for Xinerama extension to X11 Protocol) +libXinerama: +libXinerama: libXinerama is part of X11. +libXinerama: +libXinerama: For more information about the X.Org Foundation (the providers of the +libXinerama: X.Org implementation of the X Window System), see their website: +libXinerama: +libXinerama: http://www.x.org +libXinerama: +libXinerama: +libXinerama: diff --git a/patches/source/libXi/x11.SlackBuild b/patches/source/libXi/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXi/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXrandr/arch.use.flags b/patches/source/libXrandr/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXrandr/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXrandr/build/libXrandr b/patches/source/libXrandr/build/libXrandr new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXrandr/build/libXrandr @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXrandr/configure/configure b/patches/source/libXrandr/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXrandr/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXrandr/libXrandr.SlackBuild b/patches/source/libXrandr/libXrandr.SlackBuild new file mode 100755 index 000000000..8bc75df35 --- /dev/null +++ b/patches/source/libXrandr/libXrandr.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXrandr +mv /tmp/x11-build/libXrandr*txz /tmp diff --git a/patches/source/libXrandr/modularize b/patches/source/libXrandr/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXrandr/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXrandr/noarch b/patches/source/libXrandr/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXrandr/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXrandr/package-blacklist b/patches/source/libXrandr/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXrandr/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXrandr/slack-desc/libXrandr b/patches/source/libXrandr/slack-desc/libXrandr new file mode 100644 index 000000000..ad2e243b8 --- /dev/null +++ b/patches/source/libXrandr/slack-desc/libXrandr @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXrandr: libXrandr (X Resize, Rotate and Reflection extension library) +libXrandr: +libXrandr: libXrandr is part of X11. +libXrandr: +libXrandr: For more information about the X.Org Foundation (the providers of the +libXrandr: X.Org implementation of the X Window System), see their website: +libXrandr: +libXrandr: http://www.x.org +libXrandr: +libXrandr: +libXrandr: diff --git a/patches/source/libXrandr/x11.SlackBuild b/patches/source/libXrandr/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXrandr/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXrender/arch.use.flags b/patches/source/libXrender/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXrender/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXrender/build/libXrender b/patches/source/libXrender/build/libXrender new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXrender/build/libXrender @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXrender/configure/configure b/patches/source/libXrender/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXrender/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXrender/libXrender.SlackBuild b/patches/source/libXrender/libXrender.SlackBuild new file mode 100755 index 000000000..b18aef0ea --- /dev/null +++ b/patches/source/libXrender/libXrender.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXrender +mv /tmp/x11-build/libXrender*txz /tmp diff --git a/patches/source/libXrender/modularize b/patches/source/libXrender/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXrender/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXrender/noarch b/patches/source/libXrender/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXrender/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXrender/package-blacklist b/patches/source/libXrender/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXrender/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXrender/slack-desc/libXrender b/patches/source/libXrender/slack-desc/libXrender new file mode 100644 index 000000000..c5fe72697 --- /dev/null +++ b/patches/source/libXrender/slack-desc/libXrender @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXrender: libXrender (library for the Render Extension to the X11 protocol) +libXrender: +libXrender: libXrender is part of X11. +libXrender: +libXrender: For more information about the X.Org Foundation (the providers of the +libXrender: X.Org implementation of the X Window System), see their website: +libXrender: +libXrender: http://www.x.org +libXrender: +libXrender: +libXrender: diff --git a/patches/source/libXrender/x11.SlackBuild b/patches/source/libXrender/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXrender/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXres/arch.use.flags b/patches/source/libXres/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXres/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXres/build/libXres b/patches/source/libXres/build/libXres new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXres/build/libXres @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXres/configure/configure b/patches/source/libXres/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXres/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXres/libXres.SlackBuild b/patches/source/libXres/libXres.SlackBuild new file mode 100755 index 000000000..e0207968f --- /dev/null +++ b/patches/source/libXres/libXres.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXres +mv /tmp/x11-build/libXres*txz /tmp diff --git a/patches/source/libXres/modularize b/patches/source/libXres/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXres/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXres/noarch b/patches/source/libXres/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXres/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXres/package-blacklist b/patches/source/libXres/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXres/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXres/slack-desc/libXres b/patches/source/libXres/slack-desc/libXres new file mode 100644 index 000000000..4582cd5f9 --- /dev/null +++ b/patches/source/libXres/slack-desc/libXres @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXres: libXres (X-Resource extension client library) +libXres: +libXres: libXres is part of X11. +libXres: +libXres: For more information about the X.Org Foundation (the providers of the +libXres: X.Org implementation of the X Window System), see their website: +libXres: +libXres: http://www.x.org +libXres: +libXres: +libXres: diff --git a/patches/source/libXres/x11.SlackBuild b/patches/source/libXres/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXres/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXtst/arch.use.flags b/patches/source/libXtst/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXtst/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXtst/build/libXtst b/patches/source/libXtst/build/libXtst new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXtst/build/libXtst @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXtst/configure/configure b/patches/source/libXtst/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXtst/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXtst/libXtst.SlackBuild b/patches/source/libXtst/libXtst.SlackBuild new file mode 100755 index 000000000..0a4bb9400 --- /dev/null +++ b/patches/source/libXtst/libXtst.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXtst +mv /tmp/x11-build/libXtst*txz /tmp diff --git a/patches/source/libXtst/modularize b/patches/source/libXtst/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXtst/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXtst/noarch b/patches/source/libXtst/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXtst/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXtst/package-blacklist b/patches/source/libXtst/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXtst/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXtst/slack-desc/libXtst b/patches/source/libXtst/slack-desc/libXtst new file mode 100644 index 000000000..63b93c019 --- /dev/null +++ b/patches/source/libXtst/slack-desc/libXtst @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXtst: libXtst (client library for the XTEST & RECORD extensions) +libXtst: +libXtst: libXtst is part of X11. +libXtst: +libXtst: For more information about the X.Org Foundation (the providers of the +libXtst: X.Org implementation of the X Window System), see their website: +libXtst: +libXtst: http://www.x.org +libXtst: +libXtst: +libXtst: diff --git a/patches/source/libXtst/x11.SlackBuild b/patches/source/libXtst/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXtst/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXv/arch.use.flags b/patches/source/libXv/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXv/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXv/build/libXv b/patches/source/libXv/build/libXv new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXv/build/libXv @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXv/configure/configure b/patches/source/libXv/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXv/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXv/libXv.SlackBuild b/patches/source/libXv/libXv.SlackBuild new file mode 100755 index 000000000..b4a99f6c8 --- /dev/null +++ b/patches/source/libXv/libXv.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXv +mv /tmp/x11-build/libXv*txz /tmp diff --git a/patches/source/libXv/modularize b/patches/source/libXv/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXv/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXv/noarch b/patches/source/libXv/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXv/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXv/package-blacklist b/patches/source/libXv/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXv/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXv/slack-desc/libXv b/patches/source/libXv/slack-desc/libXv new file mode 100644 index 000000000..d72865bf0 --- /dev/null +++ b/patches/source/libXv/slack-desc/libXv @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXv: libXv (library for the X Video (Xv) extension to the X Window System) +libXv: +libXv: libXv is part of X11. +libXv: +libXv: For more information about the X.Org Foundation (the providers of the +libXv: X.Org implementation of the X Window System), see their website: +libXv: +libXv: http://www.x.org +libXv: +libXv: +libXv: diff --git a/patches/source/libXv/slack-desc/libXvMC b/patches/source/libXv/slack-desc/libXvMC new file mode 100644 index 000000000..aecd7f3aa --- /dev/null +++ b/patches/source/libXv/slack-desc/libXvMC @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXvMC: libXvMC (X.Org X11 libXvMC runtime library) +libXvMC: +libXvMC: libXvMC is part of X11. +libXvMC: +libXvMC: For more information about the X.Org Foundation (the providers of the +libXvMC: X.Org implementation of the X Window System), see their website: +libXvMC: +libXvMC: http://www.x.org +libXvMC: +libXvMC: +libXvMC: diff --git a/patches/source/libXv/x11.SlackBuild b/patches/source/libXv/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXv/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libXvMC/arch.use.flags b/patches/source/libXvMC/arch.use.flags new file mode 100644 index 000000000..11087c884 --- /dev/null +++ b/patches/source/libXvMC/arch.use.flags @@ -0,0 +1,9 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/libXvMC/build/libXvMC b/patches/source/libXvMC/build/libXvMC new file mode 100644 index 000000000..1074c5613 --- /dev/null +++ b/patches/source/libXvMC/build/libXvMC @@ -0,0 +1 @@ +1_slack14.2 diff --git a/patches/source/libXvMC/configure/configure b/patches/source/libXvMC/configure/configure new file mode 100644 index 000000000..dcb1109bd --- /dev/null +++ b/patches/source/libXvMC/configure/configure @@ -0,0 +1,13 @@ +CFLAGS=$SLKCFLAGS \ +CXXFLAGS=$SLKCFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} \ + --with-udev-rules-dir=/lib/udev/rules.d \ + --disable-static \ + --build=$ARCH-slackware-linux diff --git a/patches/source/libXvMC/libXvMC.SlackBuild b/patches/source/libXvMC/libXvMC.SlackBuild new file mode 100755 index 000000000..2b6579726 --- /dev/null +++ b/patches/source/libXvMC/libXvMC.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild lib libXvMC +mv /tmp/x11-build/libXvMC*txz /tmp diff --git a/patches/source/libXvMC/modularize b/patches/source/libXvMC/modularize new file mode 100644 index 000000000..8a28ed93e --- /dev/null +++ b/patches/source/libXvMC/modularize @@ -0,0 +1,279 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +dri3proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glamor-egl +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXpresent +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +libxshmfence +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +presentproto +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +transset +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-cursor +xcb-util-errors +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcm +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-keyboard +xf86-input-mouse +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-amdgpu +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-omap +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86-video-xgixp +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/libXvMC/noarch b/patches/source/libXvMC/noarch new file mode 100644 index 000000000..8785ee527 --- /dev/null +++ b/patches/source/libXvMC/noarch @@ -0,0 +1,75 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-docs +xproto +xtrans diff --git a/patches/source/libXvMC/package-blacklist b/patches/source/libXvMC/package-blacklist new file mode 100644 index 000000000..603b8c31f --- /dev/null +++ b/patches/source/libXvMC/package-blacklist @@ -0,0 +1,44 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# ARM only packages: +# They also say in the README for this one that it is not yet ready: +xf86-video-omap + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx +xf86-video-modesetting + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/libXvMC/slack-desc/libXvMC b/patches/source/libXvMC/slack-desc/libXvMC new file mode 100644 index 000000000..aecd7f3aa --- /dev/null +++ b/patches/source/libXvMC/slack-desc/libXvMC @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libXvMC: libXvMC (X.Org X11 libXvMC runtime library) +libXvMC: +libXvMC: libXvMC is part of X11. +libXvMC: +libXvMC: For more information about the X.Org Foundation (the providers of the +libXvMC: X.Org implementation of the X Window System), see their website: +libXvMC: +libXvMC: http://www.x.org +libXvMC: +libXvMC: +libXvMC: diff --git a/patches/source/libXvMC/x11.SlackBuild b/patches/source/libXvMC/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/libXvMC/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/libcgroup/doinst.sh b/patches/source/libcgroup/doinst.sh new file mode 100644 index 000000000..0799f0d9b --- /dev/null +++ b/patches/source/libcgroup/doinst.sh @@ -0,0 +1,43 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Leave any new rc files with the same permissions as the old ones: +if [ -e etc/rc.d/rc.cgconfig ]; then + if [ -x etc/rc.d/rc.cgconfig ]; then + chmod 755 etc/rc.d/rc.cgconfig.new + else + chmod 644 etc/rc.d/rc.cgconfig.new + fi +fi +if [ -e etc/rc.d/rc.cgred ]; then + if [ -x etc/rc.d/rc.cgred ]; then + chmod 755 etc/rc.d/rc.cgred.new + else + chmod 644 etc/rc.d/rc.cgred.new + fi +fi + +# Then config() them: +config etc/rc.d/rc.cgconfig.new +config etc/rc.d/rc.cgred.new + +# config() the other configuration files: +config etc/cgconfig.conf.new +config etc/cgred.conf.new +config etc/cgrules.conf.new +config etc/cgsnapshot_blacklist.conf.new + +# If there are already installed config files, get rid of the .new ones. +# There will still be fresh samples in the docs. +rm -f etc/cgconfig.conf.new etc/cgred.conf.new etc/cgrules.conf.new etc/cgsnapshot_blacklist.conf.new + diff --git a/patches/source/libcgroup/libcgroup.SlackBuild b/patches/source/libcgroup/libcgroup.SlackBuild new file mode 100755 index 000000000..61d27b333 --- /dev/null +++ b/patches/source/libcgroup/libcgroup.SlackBuild @@ -0,0 +1,171 @@ +#!/bin/sh + +# Copyright 2011, 2014, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=libcgroup +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION + +# Remove Red Hat / LSB init-scriptisms: +zcat $CWD/libcgroup.init.diff.gz | patch -p1 --verbose || exit 1 + +# Slackware does not use /etc/sysconfig: +zcat $CWD/libcgroup.conf.diff.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --disable-pam \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# If this directory is empty, do not include it in the package: +rmdir $PKG/usr/lib${LIBDIRSUFFIX}/security 2> /dev/null + +## COMMENTED OUT FOR 14.2 PACKAGE BUGFIX SINCE IT WOULD REQUIRE A NEW GROUP: +## cgexec doesn't need to be setuid root -- setgid cgred is sufficient: +#chown root:cgred $PKG/usr/bin/cgexec +#chmod 2755 $PKG/usr/bin/cgexec + +# Install init scripts: +mkdir -p $PKG/etc/rc.d +cp -a scripts/init.d/cgconfig $PKG/etc/rc.d/rc.cgconfig.new +cp -a scripts/init.d/cgred $PKG/etc/rc.d/rc.cgred.new +chmod 644 $PKG/etc/rc.d/* +chown -R root:root $PKG/etc/rc.d/* + +# Install sample config files: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION/samples +( cd samples + for conffile in cgconfig.conf cgred.conf cgrules.conf cgsnapshot_blacklist.conf ; do + cp -a $conffile $PKG/etc/${conffile}.new + cp -a $conffile $PKG/usr/doc/${PKGNAM}-$VERSION/samples + done +) + +## DON'T TRY TO USE cgred GROUP, IT DOESN'T EXIST ON 14.2: +sed -i "s/SOCKET_GROUP=\"cgred\"/SOCKET_GROUP=\"\"/g" $PKG/etc/cgred.conf.new + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL NEWS README* THANKS TODO \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libcgroup/libcgroup.conf.diff b/patches/source/libcgroup/libcgroup.conf.diff new file mode 100644 index 000000000..f6e9dd102 --- /dev/null +++ b/patches/source/libcgroup/libcgroup.conf.diff @@ -0,0 +1,8 @@ +--- ./samples/cgred.conf.orig 2011-01-10 14:16:09.750002388 -0600 ++++ ./samples/cgred.conf 2011-01-10 14:16:20.446998061 -0600 +@@ -1,4 +1,4 @@ +-# /etc/sysconfig/cgred.conf - CGroup Rules Engine Daemon configuration file ++# /etc/cgred.conf - CGroup Rules Engine Daemon configuration file + # + # The four options listed below (CONFIG_FILE, LOG_FILE, NODAEMON, LOG) are + # the only valid ones. Defining anything else in this file will cause the diff --git a/patches/source/libcgroup/libcgroup.init.diff b/patches/source/libcgroup/libcgroup.init.diff new file mode 100644 index 000000000..1d1be2cc0 --- /dev/null +++ b/patches/source/libcgroup/libcgroup.init.diff @@ -0,0 +1,136 @@ +--- ./scripts/init.d/cgred.in.orig 2014-01-13 08:05:56.000000000 -0600 ++++ ./scripts/init.d/cgred.in 2017-02-28 12:41:11.307424565 -0600 +@@ -39,13 +39,12 @@ + # Sanity checks + [ -x $CGRED_BIN ] || exit 1 + +-# Source function library & LSB routines ++# Source function library + . /etc/rc.d/init.d/functions +-. /lib/lsb/init-functions + + # Read in configuration options. +-if [ -f "/etc/sysconfig/cgred.conf" ] ; then +- . /etc/sysconfig/cgred.conf ++if [ -f /etc/cgred.conf ] ; then ++ . /etc/cgred.conf + OPTIONS="$NODAEMON $LOG" + if [ -n "$LOG_FILE" ]; then + OPTIONS="$OPTIONS --logfile=$LOG_FILE" +@@ -70,13 +69,13 @@ + { + echo -n $"Starting CGroup Rules Engine Daemon: " + if [ -f "$lockfile" ]; then +- log_failure_msg "$servicename is already running with PID `cat ${pidfile}`" ++ echo "$servicename is already running with PID `cat ${pidfile}`" + return 0 + fi + num=`grep "cgroup" /proc/mounts | awk '$3=="cgroup"' | wc -l` + if [ $num -eq 0 ]; then + echo +- log_failure_msg $"Cannot find cgroups, is cgconfig service running?" ++ echo $"Cannot find cgroups, is cgconfig service running?" + return 1 + fi + daemon --check $servicename --pidfile $pidfile $CGRED_BIN $OPTIONS +@@ -97,7 +96,7 @@ + { + echo -n $"Stopping CGroup Rules Engine Daemon..." + if [ ! -f $pidfile ]; then +- log_success_msg ++ #log_success_msg + return 0 + fi + killproc -p $pidfile -TERM "$processname" +@@ -143,13 +142,13 @@ + echo $"Reloading rules configuration..." + kill -s 12 `cat ${pidfile}` + RETVAL=$? +- if [ $RETVAL -eq 0 ] ; then +- log_success_msg +- else +- log_failure_msg +- fi ++ #if [ $RETVAL -eq 0 ] ; then ++ # log_success_msg ++ #else ++ # log_failure_msg ++ #fi + else +- log_failure_msg "$servicename is not running." ++ echo "$servicename is not running." + fi + ;; + *) +--- ./scripts/init.d/cgconfig.in.orig 2014-01-13 08:05:56.000000000 -0600 ++++ ./scripts/init.d/cgconfig.in 2017-02-28 12:42:13.278423245 -0600 +@@ -36,11 +36,6 @@ + servicename=cgconfig + lockfile=/var/lock/subsys/$servicename + +-# +-# Source LSB routines +-# +-. /lib/lsb/init-functions +- + # read the config + CREATE_DEFAULT=yes + if [ -e /etc/sysconfig/cgconfig ]; then +@@ -54,8 +49,8 @@ + read user ctrl defaultcgroup <<< \ + $(grep -m1 '^\*[[:space:]]\+' /etc/cgrules.conf) + if [ -n "$defaultcgroup" -a "$defaultcgroup" = "*" ]; then +- log_warning_msg "/etc/cgrules.conf incorrect" +- log_warning_msg "Overriding it" ++ echo "/etc/cgrules.conf incorrect" ++ echo "Overriding it" + defaultcgroup= + fi + fi +@@ -98,20 +93,20 @@ + start() { + echo -n "Starting cgconfig service: " + if [ -f "$lockfile" ]; then +- log_warning_msg "lock file already exists" ++ echo "lock file already exists" + return 0 + fi + + if [ $? -eq 0 ]; then + if [ ! -s $CONFIG_FILE ]; then +- log_failure_msg $CONFIG_FILE "is not configured" ++ echo $CONFIG_FILE "is not configured" + return 6 + fi + + $CGCONFIGPARSER_BIN -l $CONFIG_FILE + retval=$? + if [ $retval -ne 0 ]; then +- log_failure_msg "Failed to parse " $CONFIG_FILE ++ echo "Failed to parse " $CONFIG_FILE + return 1 + fi + fi +@@ -123,18 +118,18 @@ + touch "$lockfile" + retval=$? + if [ $retval -ne 0 ]; then +- log_failure_msg "Failed to touch $lockfile" ++ echo "Failed to touch $lockfile" + return 1 + fi +- log_success_msg ++ #log_success_msg + return 0 + } + + stop() { + echo -n "Stopping cgconfig service: " +- cgclear ++ /usr/sbin/cgclear -l /etc/cgconfig.conf + rm -f "$lockfile" +- log_success_msg ++ #log_success_msg + return 0 + } + diff --git a/patches/source/libcgroup/slack-desc b/patches/source/libcgroup/slack-desc new file mode 100644 index 000000000..30a43ebed --- /dev/null +++ b/patches/source/libcgroup/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler-------------------------------------------------------| +libcgroup: libcgroup (library and utilities for kernel control groups) +libcgroup: +libcgroup: Control Groups provide a mechanism for aggregating/partitioning sets of +libcgroup: tasks, and all their future children, into hierarchical groups with +libcgroup: specialized behaviour. It makes use of a filesystem interface. +libcgroup: This package contains a library for developing applications that use +libcgroup: control groups, as well as some basic userspace tools for controlling +libcgroup: and monitoring control groups. +libcgroup: +libcgroup: Homepage: http://libcg.sourceforge.net/ +libcgroup: diff --git a/patches/source/libgcrypt/libgcrypt.SlackBuild b/patches/source/libgcrypt/libgcrypt.SlackBuild new file mode 100755 index 000000000..aced611f2 --- /dev/null +++ b/patches/source/libgcrypt/libgcrypt.SlackBuild @@ -0,0 +1,127 @@ +#!/bin/sh + +# Copyright 2006-2009 Robby Workman, Northport, AL, USA +# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=libgcrypt +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1 +cd $PKGNAM-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/libgcrypt-$VERSION \ + --enable-shared=yes \ + --enable-static=no \ + --program-prefix="" \ + --program-suffix="" \ + --build=$ARCH-slackware-linux \ + --host=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +# Move the shared library to $PKG/lib${LIBDIRSUFFIX}: +mkdir -p $PKG/lib${LIBDIRSUFFIX} +( cd $PKG/usr/lib${LIBDIRSUFFIX} + for file in lib*.so.??.* ; do + mv $file ../../lib${LIBDIRSUFFIX} + ln -sf ../../lib${LIBDIRSUFFIX}/$file . + done + cp -a lib*.so.?? ../../lib${LIBDIRSUFFIX} +) + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +find $PKG/usr/man -type f -exec gzip -9 {} \; + +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS BUGS COPYING* ChangeLog INSTALL NEWS \ + README* THANKS TODO VERSION \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libgcrypt/slack-desc b/patches/source/libgcrypt/slack-desc new file mode 100644 index 000000000..365fab642 --- /dev/null +++ b/patches/source/libgcrypt/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libgcrypt: libgcrypt (General purpose crypto library) +libgcrypt: +libgcrypt: Libgcrypt is a general purpose crypto library based on the code +libgcrypt: used in GnuPG. +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: +libgcrypt: diff --git a/patches/source/libidn/libidn.SlackBuild b/patches/source/libidn/libidn.SlackBuild new file mode 100755 index 000000000..2187060ef --- /dev/null +++ b/patches/source/libidn/libidn.SlackBuild @@ -0,0 +1,137 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=libidn +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +TMP=${TMP:-/tmp} +PKG=$TMP/package-libidn + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf libidn-$VERSION +tar xvf $CWD/libidn-$VERSION.tar.?z || exit 1 +cd libidn-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Compress info pages and purge "dir" file from the package: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +mkdir -p $PKG/usr/doc/libidn-$VERSION +cp -a \ + ABOUT-NLS AUTHORS COPYING* FAQ INSTALL NEWS README* THANKS TODO \ + contrib \ + libidn/libidn.html \ + $PKG/usr/doc/libidn-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/libidn-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libidn/slack-desc b/patches/source/libidn/slack-desc new file mode 100644 index 000000000..a10cfe7b5 --- /dev/null +++ b/patches/source/libidn/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libidn: libidn (GNU Internationalized Domain Name library) +libidn: +libidn: GNU Libidn is an implementation of the Stringprep, Punycode and IDNA +libidn: specifications defined by the IETF Internationalized Domain Names +libidn: (IDN) working group, used for internationalized domain names. +libidn: +libidn: +libidn: +libidn: +libidn: +libidn: diff --git a/patches/source/libpcap/libpcap.SlackBuild b/patches/source/libpcap/libpcap.SlackBuild new file mode 100755 index 000000000..c1261200c --- /dev/null +++ b/patches/source/libpcap/libpcap.SlackBuild @@ -0,0 +1,128 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=libpcap +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.gz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-libpcap + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf libpcap-$VERSION +tar xvf $CWD/libpcap-$VERSION.tar.gz || exit 1 +cd libpcap-$VERSION || exit 1 + +find . -type d -name CVS -depth -exec rm -rf {} \; +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$(getconf LFS_CFLAGS)" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --docdir=/usr/doc/libpcap-$VERSION \ + --enable-ipv6 \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make shared $NUMJOBS || make || exit 1 + +mkdir -p $PKG/usr/bin # otherwise it errors out on install +make install DESTDIR=$PKG || exit 1 + +strip --strip-debug libpcap.so.1.?.? + +mkdir -p $PKG/usr/doc/libpcap-$VERSION +cp -a \ + CHANGES CREDITS INSTALL.txt LICENSE README* TODO VERSION \ + $PKG/usr/doc/libpcap-$VERSION + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Use symbolic links in the man pages: +( cd $PKG/usr/man/man3 + ln -sf pcap_datalink_val_to_name.3pcap pcap_datalink_val_to_description.3pcap + ln -sf pcap_dump_open.3pcap pcap_dump_fopen.3pcap + ln -sf pcap_geterr.3pcap pcap_perror.3pcap + ln -sf pcap_inject.3pcap pcap_sendpacket.3pcap + ln -sf pcap_loop.3pcap pcap_dispatch.3pcap + ln -sf pcap_major_version.3pcap pcap_minor_version.3pcap + ln -sf pcap_next_ex.3pcap pcap_next.3pcap + ln -sf pcap_open_offline.3pcap pcap_fopen_offline.3pcap + ln -sf pcap_setnonblock.3pcap pcap_getnonblock.3pcap + ln -sf pcap_findalldevs.3pcap pcap_freealldevs.3pcap + ln -sf pcap_free_tstamp_types.3pcap pcap_list_tstamp_types.3pcap + ln -sf pcap_free_datalinks.3pcap pcap_list_datalinks.3pcap +) + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + gzip -9 *.?pcap + ) + done + ) +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libpcap/slack-desc b/patches/source/libpcap/slack-desc new file mode 100644 index 000000000..63fb98760 --- /dev/null +++ b/patches/source/libpcap/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libpcap: libpcap (packet capture library) +libpcap: +libpcap: libpcap is a library for user-level packet capture. libpcap provides +libpcap: a portable framework for low-level network monitoring. Applications +libpcap: include network statistics collection, security monitoring, network +libpcap: debugging, etc. The tcpdump utility uses libpcap. +libpcap: +libpcap: Project homepage: http://www.tcpdump.org +libpcap: +libpcap: +libpcap: diff --git a/patches/source/libplist/libplist.SlackBuild b/patches/source/libplist/libplist.SlackBuild new file mode 100755 index 000000000..858b60855 --- /dev/null +++ b/patches/source/libplist/libplist.SlackBuild @@ -0,0 +1,138 @@ +#!/bin/sh + +# Copyright 2011, 2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=libplist +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +if ls /var/log/packages/libplist-* 1> /dev/null 2> /dev/null ; then + echo "libplist is installed. The package should be removed before" + echo "building, or the new python modules might be linked to the" + echo "old library version. This is normally only a problem if the" + echo "major library version gets bumped, but still. :)" + echo + echo "Removing the libplist package in 15 seconds, and then continuing" + echo "with the build." + sleep 15 + removepkg libplist +fi + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1 +cd ${PKGNAM}-$VERSION || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --mandir=/usr/man \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +# Add some docs: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libplist/slack-desc b/patches/source/libplist/slack-desc new file mode 100644 index 000000000..cbe024420 --- /dev/null +++ b/patches/source/libplist/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libplist: libplist (A library for Apple Binary and XML Property Lists) +libplist: +libplist: libplist is a library that attempts to support Apple Binary and XML +libplist: Property Lists. It is used by libgpod. +libplist: +libplist: The libplist homepage: http://www.libimobiledevice.org/ +libplist: +libplist: +libplist: +libplist: +libplist: diff --git a/patches/source/libpng/libpng.SlackBuild b/patches/source/libpng/libpng.SlackBuild new file mode 100755 index 000000000..b2476bc52 --- /dev/null +++ b/patches/source/libpng/libpng.SlackBuild @@ -0,0 +1,142 @@ +#!/bin/sh + +# Copyright 2015 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=libpng +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --includedir=/usr/include \ + --mandir=/usr/man \ + --disable-static \ + --build=$ARCH-slackware-linux + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO \ + libpng*.txt example.c \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r CHANGES ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES + touch -r CHANGES $DOCSDIR/CHANGES +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libpng/libpng.url b/patches/source/libpng/libpng.url new file mode 100644 index 000000000..f50d42755 --- /dev/null +++ b/patches/source/libpng/libpng.url @@ -0,0 +1 @@ +ftp://ftp.simplesystems.org/pub/libpng/png/src/ diff --git a/patches/source/libpng/slack-desc b/patches/source/libpng/slack-desc new file mode 100644 index 000000000..54d1d0f92 --- /dev/null +++ b/patches/source/libpng/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libpng: libpng (Portable Network Graphics library) +libpng: +libpng: PNG (Portable Network Graphics) is an extensible file format for the +libpng: lossless, portable, well-compressed storage of raster images. PNG +libpng: provides a patent-free replacement for GIF and can also replace many +libpng: common uses of TIFF. Indexed-color, grayscale, and truecolor images +libpng: are supported, plus an optional alpha channel. Sample depths range +libpng: from 1 to 16 bits. +libpng: +libpng: +libpng: diff --git a/patches/source/libsoup/libsoup.CVE-2017-2885.diff b/patches/source/libsoup/libsoup.CVE-2017-2885.diff new file mode 100644 index 000000000..e0c318a2a --- /dev/null +++ b/patches/source/libsoup/libsoup.CVE-2017-2885.diff @@ -0,0 +1,43 @@ +--- libsoup-2.58.1/libsoup/soup-filter-input-stream.c 2016-12-03 08:59:41.000000000 -0600 ++++ libsoup-2.58.2/libsoup/soup-filter-input-stream.c 2017-08-10 07:06:09.000000000 -0500 +@@ -198,7 +198,7 @@ + GCancellable *cancellable, + GError **error) + { +- gssize nread; ++ gssize nread, read_length; + guint8 *p, *buf, *end; + gboolean eof = FALSE; + GError *my_error = NULL; +@@ -251,10 +251,11 @@ + } else + buf = fstream->priv->buf->data; + +- /* Scan for the boundary */ +- end = buf + fstream->priv->buf->len; +- if (!eof) +- end -= boundary_length; ++ /* Scan for the boundary within the range we can possibly return. */ ++ if (include_boundary) ++ end = buf + MIN (fstream->priv->buf->len, length) - boundary_length; ++ else ++ end = buf + MIN (fstream->priv->buf->len - boundary_length, length); + for (p = buf; p <= end; p++) { + if (*p == *(guint8*)boundary && + !memcmp (p, boundary, boundary_length)) { +@@ -268,10 +269,9 @@ + if (!*got_boundary && fstream->priv->buf->len < length && !eof) + goto fill_buffer; + +- /* Return everything up to 'p' (which is either just after the boundary if +- * include_boundary is TRUE, just before the boundary if include_boundary is +- * FALSE, @boundary_len - 1 bytes before the end of the buffer, or end-of- +- * file). +- */ +- return read_from_buf (fstream, buffer, p - buf); ++ if (eof && !*got_boundary) ++ read_length = MIN (fstream->priv->buf->len, length); ++ else ++ read_length = p - buf; ++ return read_from_buf (fstream, buffer, read_length); + } diff --git a/patches/source/libsoup/libsoup.SlackBuild b/patches/source/libsoup/libsoup.SlackBuild new file mode 100755 index 000000000..f260a7ef6 --- /dev/null +++ b/patches/source/libsoup/libsoup.SlackBuild @@ -0,0 +1,101 @@ +#!/bin/sh +# +# Slackware build script for libsoup +# +# Copyright 2009-2010 Erik W. Hanson, Minneapolis, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=libsoup +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-3_slack14.2} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +chmod -R u+w,go+r-w,a-s . + +zcat $CWD/libsoup.CVE-2017-2885.diff.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var/lib \ + --disable-static \ + --with-gnome \ + --enable-vala=no \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install-strip DESTDIR=$PKG || exit 1 + +## NOTE: These _should_ go eventually, but for now it causes problems. +## Don't ship .la files: +#rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a COPYING* AUTHORS NEWS README* $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/libsoup/slack-desc b/patches/source/libsoup/slack-desc new file mode 100644 index 000000000..80cd6ef03 --- /dev/null +++ b/patches/source/libsoup/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libsoup: libsoup (an HTTP client/server library) +libsoup: +libsoup: Soup is an HTTP client/server library implementation in C. It uses +libsoup: GObjects and the glib main loop to integrate well with GTK+ +libsoup: applications, and has a synchronous API suitable for use in threaded +libsoup: applications. +libsoup: +libsoup: +libsoup: +libsoup: +libsoup: diff --git a/patches/source/libtiff/libtiff-am-version.patch b/patches/source/libtiff/libtiff-am-version.patch new file mode 100644 index 000000000..c94c2e005 --- /dev/null +++ b/patches/source/libtiff/libtiff-am-version.patch @@ -0,0 +1,31 @@ +Back off the minimum required automake version to 1.11. There isn't +anything in libtiff currently that actually requires 1.12, and changing +this allows the package to be built on pre-F18 machines for easier testing. + +This patch can go away once we no longer care about testing on pre-F18. + + +diff -Naur tiff-4.0.3.orig/Makefile.am tiff-4.0.3/Makefile.am +--- tiff-4.0.3.orig/Makefile.am 2012-09-20 09:22:47.000000000 -0400 ++++ tiff-4.0.3/Makefile.am 2012-10-30 11:33:30.312823564 -0400 +@@ -25,7 +25,7 @@ + + docdir = $(LIBTIFF_DOCDIR) + +-AUTOMAKE_OPTIONS = 1.12 dist-zip foreign ++AUTOMAKE_OPTIONS = 1.11 dist-zip foreign + ACLOCAL_AMFLAGS = -I m4 + + docfiles = \ +diff -Naur tiff-4.0.3.orig/test/Makefile.am tiff-4.0.3/test/Makefile.am +--- tiff-4.0.3.orig/test/Makefile.am 2012-09-20 09:22:28.000000000 -0400 ++++ tiff-4.0.3/test/Makefile.am 2012-10-30 11:33:17.109696812 -0400 +@@ -23,7 +23,7 @@ + + # Process this file with automake to produce Makefile.in. + +-AUTOMAKE_OPTIONS = 1.12 color-tests parallel-tests foreign ++AUTOMAKE_OPTIONS = 1.11 color-tests parallel-tests foreign + + LIBTIFF = $(top_builddir)/libtiff/libtiff.la + diff --git a/patches/source/libtiff/libtiff.SlackBuild b/patches/source/libtiff/libtiff.SlackBuild new file mode 100755 index 000000000..f1c364dfe --- /dev/null +++ b/patches/source/libtiff/libtiff.SlackBuild @@ -0,0 +1,120 @@ +#!/bin/sh + +# Copyright 2005-2013 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +VERSION=${VERSION:-$(echo tiff-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-libtiff + +rm -rf $PKG +mkdir -p $PKG +cd $TMP +rm -rf tiff-$VERSION +tar xvf $CWD/tiff-$VERSION.tar.?z* || exit 1 +cd tiff-$VERSION + +zcat $CWD/libtiff-am-version.patch.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --disable-static \ + --program-prefix="" \ + --program-suffix="" \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 +( cd man ; make install-man DESTDIR=$PKG || exit 1 ) || exit 1 +rm -r $PKG/usr/share +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) +strip -g $PKG/usr/lib${LIBDIRSUFFIX}/lib*.a +chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/libtiff*.so.* +mkdir -p $PKG/usr/doc/libtiff-$VERSION +cp -a \ + COPYRIGHT README RELEASE-DATE TODO VERSION \ + $PKG/usr/doc/libtiff-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mv $PKG/usr/local/man $PKG/usr +rmdir $PKG/usr/local + +# I'd use that shiny new manpage script here but all the +# .3 manpages end with '.3tiff'. +gzip -9 $PKG/usr/man/man?/* + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +makepkg -l y -c n $TMP/libtiff-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libtiff/slack-desc b/patches/source/libtiff/slack-desc new file mode 100644 index 000000000..42c79f47d --- /dev/null +++ b/patches/source/libtiff/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libtiff: libtiff (a library for reading and writing TIFF files) +libtiff: +libtiff: This package provides support for the Tag Image File Format (TIFF), +libtiff: a widely used format for storing image data. Included is the libtiff +libtiff: library (for reading and writing TIFF files), and a collection of +libtiff: tools for working with TIFF images. +libtiff: +libtiff: +libtiff: +libtiff: +libtiff: diff --git a/patches/source/libtirpc/doinst.sh b/patches/source/libtirpc/doinst.sh new file mode 100644 index 000000000..409cfbe78 --- /dev/null +++ b/patches/source/libtirpc/doinst.sh @@ -0,0 +1,13 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/netconfig.new diff --git a/patches/source/libtirpc/libtirpc.SlackBuild b/patches/source/libtirpc/libtirpc.SlackBuild new file mode 100755 index 000000000..511030b28 --- /dev/null +++ b/patches/source/libtirpc/libtirpc.SlackBuild @@ -0,0 +1,164 @@ +#!/bin/sh + +# Copyright 2015 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Thanks to Jan Rafaj for contributing the original reference script. +# Remark: - The GSS support (for secure RPC) is currently not built, as it +# Remark: requires Kerberos 5 libraries. If you need it, install +# Remark: Kerberos 5, remove '--disable-gssapi' from the configure flags +# Remark: below and rebuild. + +PKGNAM=libtirpc +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# To build with GSS support (requires Kerberos 5 libraries), pass any value +# other than "NO" in the environment, or edit the line below: +WITH_GSS=${WITH_GSS:-NO} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Set proper GSS option: +if [ "$WITH_GSS" = "NO" ]; then + GSSAPI="--disable-gssapi" +else + GSSAPI="--enable-gssapi" +fi + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --disable-static \ + $GSSAPI \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Make etc/netconfig file a .new: +mv $PKG/etc/netconfig $PKG/etc/netconfig.new + +# Move library to /lib${LIBDIRSUFFIX} as it might be needed to mount /usr: +mkdir $PKG/lib${LIBDIRSUFFIX} +( cd $PKG/usr/lib${LIBDIRSUFFIX} + for file in lib*.so.?.* ; do + mv $file ../../lib${LIBDIRSUFFIX} + ln -sf ../../lib${LIBDIRSUFFIX}/$file . + done + cp -a lib*.so.? ../../lib${LIBDIRSUFFIX} +) + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* THANKS TODO \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# Don't use .3t man page suffix: +if [ -d $PKG/usr/man/man3 ]; then + ( cd $PKG/usr/man/man3 + for file in *.3t ; do + mv $file $(basename $file .3t).3 + done + ) +fi + +# Compress manual pages: +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do + ln -s $( readlink $i ).gz $i.gz + rm $i +done + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libtirpc/slack-desc b/patches/source/libtirpc/slack-desc new file mode 100644 index 000000000..426c79175 --- /dev/null +++ b/patches/source/libtirpc/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libtirpc: libtirpc (Transport-Independent RPC library) +libtirpc: +libtirpc: Libtirpc is a port of Sun's Transport-Independent RPC library to +libtirpc: Linux. It is being developed by Bull GNU/Linux NFSv4 project. +libtirpc: +libtirpc: You will need this library if you plan to use RPC with a GLIBC +libtirpc: version newer than 2.13, because the RPC stack has been removed +libtirpc: from GLIBC versions newer than 2.13. The library is required +libtirpc: by the 'rpcbind' package. +libtirpc: +libtirpc: http://sourceforge.net/projects/libtirpc/ diff --git a/patches/source/libtool/doinst.sh b/patches/source/libtool/doinst.sh new file mode 100644 index 000000000..38b074dd6 --- /dev/null +++ b/patches/source/libtool/doinst.sh @@ -0,0 +1,18 @@ +# Update the /usr/info/dir info-database, so that we will see the new +# "libtool" item in info root structure, if we type "info". +if [ -x /usr/bin/install-info ] ; then + install-info --info-dir=/usr/info /usr/info/libtool.info.gz 2>/dev/null +elif fgrep "libtoolize" usr/info/dir 1> /dev/null 2> /dev/null ; then + GOOD=yes # It seems to be entered in the /usr/info/dir already +else # add the info to the dir file directly: +cat << EOF >> usr/info/dir + +GNU programming tools +* libtoolize: (libtool)Invoking libtoolize. Adding libtool support. +* Libtool: (libtool). Generic shared library support script. + +Individual utilities +* libtoolize: (libtool)Invoking libtoolize. Adding libtool support. +* Libtool: (libtool). Generic shared library support script. +EOF +fi diff --git a/patches/source/libtool/libtool.SlackBuild b/patches/source/libtool/libtool.SlackBuild new file mode 100755 index 000000000..c61c9ba63 --- /dev/null +++ b/patches/source/libtool/libtool.SlackBuild @@ -0,0 +1,104 @@ +#!/bin/sh + +# Copyright 2008, 2013, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +VERSION=${VERSION:-$(echo libtool-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-5_slack14.2} + +NUMJOBS=${NUMJOBS:--j6} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-libtool + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf libtool-$VERSION + +tar xvf $CWD/libtool-$VERSION.tar.xz || exit 1 + +cd libtool-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/libtool.no.moved.warning.diff.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --docdir=/usr/doc/libtool-$VERSION \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +gzip -9 $PKG/usr/man/man?/*.? + +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* + +mkdir -p $PKG/usr/doc/libtool-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* THANKS TODO \ + $PKG/usr/doc/libtool-$VERSION + +mkdir $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/libtool-${VERSION}-$ARCH-$BUILD.txz + diff --git a/patches/source/libtool/libtool.no.moved.warning.diff b/patches/source/libtool/libtool.no.moved.warning.diff new file mode 100644 index 000000000..783c97af3 --- /dev/null +++ b/patches/source/libtool/libtool.no.moved.warning.diff @@ -0,0 +1,42 @@ +diff -Nur libtool-2.4.3.orig/build-aux/ltmain.in libtool-2.4.3/build-aux/ltmain.in +--- libtool-2.4.3.orig/build-aux/ltmain.in 2014-10-27 12:20:51.000000000 -0500 ++++ libtool-2.4.3/build-aux/ltmain.in 2014-10-28 11:01:00.731257807 -0500 +@@ -5978,7 +5978,7 @@ + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then +- func_warning "library '$lib' was moved." ++ #func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir +@@ -6546,7 +6546,7 @@ + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ +- func_warning "'$deplib' seems to be moved" ++ #func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi +diff -Nur libtool-2.4.3.orig/build-aux/ltmain.sh libtool-2.4.3/build-aux/ltmain.sh +--- libtool-2.4.3.orig/build-aux/ltmain.sh 2014-10-27 13:04:31.000000000 -0500 ++++ libtool-2.4.3/build-aux/ltmain.sh 2014-10-28 11:01:14.196484821 -0500 +@@ -7890,7 +7890,7 @@ + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then +- func_warning "library '$lib' was moved." ++ #func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir +@@ -8458,7 +8458,7 @@ + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ +- func_warning "'$deplib' seems to be moved" ++ #func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi diff --git a/patches/source/libtool/slack-desc b/patches/source/libtool/slack-desc new file mode 100644 index 000000000..7bf0e8d32 --- /dev/null +++ b/patches/source/libtool/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libtool: libtool (a generic library support script) +libtool: +libtool: This is GNU Libtool, a generic library support script. Libtool hides +libtool: the complexity of using shared libraries behind a consistent, portable +libtool: interface. To use libtool, add the new generic library building +libtool: commands to your Makefile, Makefile.in, or Makefile.am. See the +libtool: documentation for details. +libtool: +libtool: You must install the "m4" package to be able to use libtool. +libtool: +libtool: diff --git a/patches/source/libvorbis/libvorbis.SlackBuild b/patches/source/libvorbis/libvorbis.SlackBuild new file mode 100755 index 000000000..882d6473d --- /dev/null +++ b/patches/source/libvorbis/libvorbis.SlackBuild @@ -0,0 +1,102 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo libvorbis-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-libvorbis + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf libvorbis-$VERSION +tar xvf $CWD/libvorbis-$VERSION.tar.?z* || exit 1 +cd libvorbis-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --disable-static \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mv $PKG/usr/share/doc $PKG/usr +cp -a \ + AUTHORS COPYING HACKING README \ + $PKG/usr/doc/libvorbis-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/libvorbis-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libvorbis/slack-desc b/patches/source/libvorbis/slack-desc new file mode 100644 index 000000000..2a3bb8f78 --- /dev/null +++ b/patches/source/libvorbis/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libvorbis: libvorbis (Ogg Vorbis library) +libvorbis: +libvorbis: This library supports the Vorbis General Audio Compression Codec +libvorbis: (commonly known as Ogg Vorbis). Ogg Vorbis is a fully open, +libvorbis: non-proprietary, patent-and-royalty-free, general-purpose compressed +libvorbis: audio format for audio and music at fixed and variable bitrates. +libvorbis: +libvorbis: The libvorbis library requires libao and libogg. You'll find some +libvorbis: basic tools for creating and using Ogg Vorbis files in the +libvorbis: vorbis-tools package. +libvorbis: diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch new file mode 100644 index 000000000..581e4e091 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch @@ -0,0 +1,17 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_png.c 2004-11-11 14:02:37.407589824 -0500 ++++ libwmf-0.2.8.4/src/extra/gd/gd_png.c 2004-11-11 14:04:29.672522960 -0500 +@@ -188,6 +188,14 @@ + + png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, + &interlace_type, NULL, NULL); ++ if (overflow2(sizeof (int), width)) ++ { ++ return NULL; ++ } ++ if (overflow2(sizeof (int) * width, height)) ++ { ++ return NULL; ++ } + if ((color_type == PNG_COLOR_TYPE_RGB) || + (color_type == PNG_COLOR_TYPE_RGB_ALPHA)) + { diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch new file mode 100644 index 000000000..507fe6622 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch @@ -0,0 +1,27 @@ +--- libwmf-0.2.8.4.orig/src/player.c 2002-12-10 19:30:26.000000000 +0000 ++++ libwmf-0.2.8.4/src/player.c 2006-07-12 15:12:52.000000000 +0100 +@@ -42,6 +42,7 @@ + #include "player/defaults.h" /* Provides: default settings */ + #include "player/record.h" /* Provides: parameter mechanism */ + #include "player/meta.h" /* Provides: record interpreters */ ++#include + + /** + * @internal +@@ -132,8 +134,14 @@ + } + } + +-/* P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API)-3) * 2 * sizeof (unsigned char)); +- */ P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char)); ++ if (MAX_REC_SIZE(API) > UINT32_MAX / 2) ++ { ++ API->err = wmf_E_InsMem; ++ WMF_DEBUG (API,"bailing..."); ++ return (API->err); ++ } ++ ++ P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char)); + + if (ERR (API)) + { WMF_DEBUG (API,"bailing..."); diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch new file mode 100644 index 000000000..0cc5abc71 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch @@ -0,0 +1,11 @@ +--- libwmf-0.2.8.4/src/extra/gd/gdft.c 2010-12-06 11:18:26.000000000 +0000 ++++ libwmf-0.2.8.4/src/extra/gd/gdft.c 2010-12-06 11:21:09.000000000 +0000 +@@ -811,7 +811,7 @@ + { + ch = c & 0xFF; /* don't extend sign */ + } +- next++; ++ if (*next) next++; + } + else + { diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch new file mode 100644 index 000000000..eba8fac25 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch @@ -0,0 +1,16 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_png.c 1 Apr 2007 20:41:01 -0000 1.21.2.1 ++++ libwmf-0.2.8.4/src/extra/gd/gd_png.c 16 May 2007 19:06:11 -0000 +@@ -78,8 +78,11 @@ + gdPngReadData (png_structp png_ptr, + png_bytep data, png_size_t length) + { +- gdGetBuf (data, length, (gdIOCtx *) +- png_get_io_ptr (png_ptr)); ++ int check; ++ check = gdGetBuf (data, length, (gdIOCtx *) png_get_io_ptr (png_ptr)); ++ if (check != length) { ++ png_error(png_ptr, "Read Error: truncated data"); ++ } + } + + static void diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch new file mode 100644 index 000000000..ac1ead5a8 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch @@ -0,0 +1,61 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd.c ++++ libwmf-0.2.8.4/src/extra/gd/gd.c +@@ -106,6 +106,18 @@ + gdImagePtr im; + unsigned long cpa_size; + ++ if (overflow2(sx, sy)) { ++ return NULL; ++ } ++ ++ if (overflow2(sizeof (int *), sy)) { ++ return NULL; ++ } ++ ++ if (overflow2(sizeof(int), sx)) { ++ return NULL; ++ } ++ + im = (gdImage *) gdMalloc (sizeof (gdImage)); + if (im == 0) return 0; + memset (im, 0, sizeof (gdImage)); +--- libwmf-0.2.8.4/src/extra/gd/gdhelpers.c 2010-12-06 11:47:31.000000000 +0000 ++++ libwmf-0.2.8.4/src/extra/gd/gdhelpers.c 2010-12-06 11:48:04.000000000 +0000 +@@ -2,6 +2,7 @@ + #include "gdhelpers.h" + #include + #include ++#include + + /* TBB: gd_strtok_r is not portable; provide an implementation */ + +@@ -94,3 +95,18 @@ + { + free (ptr); + } ++ ++int overflow2(int a, int b) ++{ ++ if(a < 0 || b < 0) { ++ fprintf(stderr, "gd warning: one parameter to a memory allocation multiplication is negative, failing operation gracefully\n"); ++ return 1; ++ } ++ if(b == 0) ++ return 0; ++ if(a > INT_MAX / b) { ++ fprintf(stderr, "gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n"); ++ return 1; ++ } ++ return 0; ++} +--- libwmf-0.2.8.4/src/extra/gd/gdhelpers.h 2010-12-06 11:47:17.000000000 +0000 ++++ libwmf-0.2.8.4/src/extra/gd/gdhelpers.h 2010-12-06 11:48:36.000000000 +0000 +@@ -15,6 +15,8 @@ + void *gdMalloc(size_t size); + void *gdRealloc(void *ptr, size_t size); + ++int overflow2(int a, int b); ++ + #pragma GCC visibility pop + + #endif /* GDHELPERS_H */ diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch new file mode 100644 index 000000000..590189969 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch @@ -0,0 +1,13 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd.c ++++ libwmf-0.2.8.4/src/extra/gd/gd.c +@@ -2483,6 +2483,10 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm (FILE * fd) + } + bytes = (w * h / 8) + 1; + im = gdImageCreate (w, h); ++ if (!im) { ++ return 0; ++ } ++ + gdImageColorAllocate (im, 255, 255, 255); + gdImageColorAllocate (im, 0, 0, 0); + x = 0; diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch new file mode 100644 index 000000000..81ac03853 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch @@ -0,0 +1,38 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd.c ++++ libwmf-0.2.8.4/src/extra/gd/gd.c +@@ -1335,10 +1335,31 @@ + int w2, h2; + w2 = w / 2; + h2 = h / 2; +- while (e < s) +- { +- e += 360; +- } ++ ++ if ((s % 360) == (e % 360)) { ++ s = 0; e = 360; ++ } else { ++ if (s > 360) { ++ s = s % 360; ++ } ++ ++ if (e > 360) { ++ e = e % 360; ++ } ++ ++ while (s < 0) { ++ s += 360; ++ } ++ ++ while (e < s) { ++ e += 360; ++ } ++ ++ if (s == e) { ++ s = 0; e = 360; ++ } ++ } ++ + for (i = s; (i <= e); i++) + { + int x, y; diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch new file mode 100644 index 000000000..d718976ad --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch @@ -0,0 +1,13 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_gd.c 2010-12-06 14:56:06.000000000 +0000 ++++ libwmf-0.2.8.4/src/extra/gd/gd_gd.c 2010-12-06 14:57:04.000000000 +0000 +@@ -42,6 +42,10 @@ + { + goto fail1; + } ++ if (&im->colorsTotal > gdMaxColors) ++ { ++ goto fail1; ++ } + } + /* Int to accommodate truecolor single-color transparency */ + if (!gdGetInt (&im->transparent, in)) diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch new file mode 100644 index 000000000..e8ba8db1e --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch @@ -0,0 +1,118 @@ +--- libwmf-0.2.8.4/src/ipa/ipa/bmp.h 2015-06-08 14:46:24.591876404 +0100 ++++ libwmf-0.2.8.4/src/ipa/ipa/bmp.h 2015-06-08 14:46:35.345993247 +0100 +@@ -859,7 +859,7 @@ + % + % + */ +-static void DecodeImage (wmfAPI* API,wmfBMP* bmp,BMPSource* src,unsigned int compression,unsigned char* pixels) ++static int DecodeImage (wmfAPI* API,wmfBMP* bmp,BMPSource* src,unsigned int compression,unsigned char* pixels) + { int byte; + int count; + int i; +@@ -870,12 +870,14 @@ + U32 u; + + unsigned char* q; ++ unsigned char* end; + + for (u = 0; u < ((U32) bmp->width * (U32) bmp->height); u++) pixels[u] = 0; + + byte = 0; + x = 0; + q = pixels; ++ end = pixels + bmp->width * bmp->height; + + for (y = 0; y < bmp->height; ) + { count = ReadBlobByte (src); +@@ -884,7 +886,10 @@ + { /* Encoded mode. */ + byte = ReadBlobByte (src); + for (i = 0; i < count; i++) +- { if (compression == 1) ++ { ++ if (q == end) ++ return 0; ++ if (compression == 1) + { (*(q++)) = (unsigned char) byte; + } + else +@@ -896,13 +901,15 @@ + else + { /* Escape mode. */ + count = ReadBlobByte (src); +- if (count == 0x01) return; ++ if (count == 0x01) return 1; + switch (count) + { + case 0x00: + { /* End of line. */ + x = 0; + y++; ++ if (y >= bmp->height) ++ return 0; + q = pixels + y * bmp->width; + break; + } +@@ -910,13 +917,20 @@ + { /* Delta mode. */ + x += ReadBlobByte (src); + y += ReadBlobByte (src); ++ if (y >= bmp->height) ++ return 0; ++ if (x >= bmp->width) ++ return 0; + q = pixels + y * bmp->width + x; + break; + } + default: + { /* Absolute mode. */ + for (i = 0; i < count; i++) +- { if (compression == 1) ++ { ++ if (q == end) ++ return 0; ++ if (compression == 1) + { (*(q++)) = ReadBlobByte (src); + } + else +@@ -943,7 +957,7 @@ + byte = ReadBlobByte (src); /* end of line */ + byte = ReadBlobByte (src); + +- return; ++ return 1; + } + + /* +@@ -1143,8 +1157,18 @@ + } + } + else +- { /* Convert run-length encoded raster pixels. */ +- DecodeImage (API,bmp,src,(unsigned int) bmp_info.compression,data->image); ++ { ++ if (bmp_info.bits_per_pixel == 8) /* Convert run-length encoded raster pixels. */ ++ { ++ if (!DecodeImage (API,bmp,src,(unsigned int) bmp_info.compression,data->image)) ++ { WMF_ERROR (API,"corrupt bmp"); ++ API->err = wmf_E_BadFormat; ++ } ++ } ++ else ++ { WMF_ERROR (API,"Unexpected pixel depth"); ++ API->err = wmf_E_BadFormat; ++ } + } + + if (ERR (API)) +--- libwmf-0.2.8.4/src/ipa/ipa.h 2015-06-08 14:46:24.590876393 +0100 ++++ libwmf-0.2.8.4/src/ipa/ipa.h 2015-06-08 14:46:35.345993247 +0100 +@@ -48,7 +48,7 @@ + static unsigned short ReadBlobLSBShort (BMPSource*); + static unsigned long ReadBlobLSBLong (BMPSource*); + static long TellBlob (BMPSource*); +-static void DecodeImage (wmfAPI*,wmfBMP*,BMPSource*,unsigned int,unsigned char*); ++static int DecodeImage (wmfAPI*,wmfBMP*,BMPSource*,unsigned int,unsigned char*); + static void ReadBMPImage (wmfAPI*,wmfBMP*,BMPSource*); + static int ExtractColor (wmfAPI*,wmfBMP*,wmfRGB*,unsigned int,unsigned int); + static void SetColor (wmfAPI*,wmfBMP*,wmfRGB*,unsigned char,unsigned int,unsigned int); diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch new file mode 100644 index 000000000..b6d499da9 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch @@ -0,0 +1,56 @@ +--- libwmf-0.2.8.4/src/player/meta.h ++++ libwmf-0.2.8.4/src/player/meta.h +@@ -1565,7 +1565,7 @@ static int meta_rgn_create (wmfAPI* API, + objects = P->objects; + + i = 0; +- while (objects[i].type && (i < NUM_OBJECTS (API))) i++; ++ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++; + + if (i == NUM_OBJECTS (API)) + { WMF_ERROR (API,"Object out of range!"); +@@ -2142,7 +2142,7 @@ static int meta_dib_brush (wmfAPI* API,w + objects = P->objects; + + i = 0; +- while (objects[i].type && (i < NUM_OBJECTS (API))) i++; ++ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++; + + if (i == NUM_OBJECTS (API)) + { WMF_ERROR (API,"Object out of range!"); +@@ -3067,7 +3067,7 @@ static int meta_pen_create (wmfAPI* API, + objects = P->objects; + + i = 0; +- while (objects[i].type && (i < NUM_OBJECTS (API))) i++; ++ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++; + + if (i == NUM_OBJECTS (API)) + { WMF_ERROR (API,"Object out of range!"); +@@ -3181,7 +3181,7 @@ static int meta_brush_create (wmfAPI* AP + objects = P->objects; + + i = 0; +- while (objects[i].type && (i < NUM_OBJECTS (API))) i++; ++ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++; + + if (i == NUM_OBJECTS (API)) + { WMF_ERROR (API,"Object out of range!"); +@@ -3288,7 +3288,7 @@ static int meta_font_create (wmfAPI* API + objects = P->objects; + + i = 0; +- while (objects[i].type && (i < NUM_OBJECTS (API))) i++; ++ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++; + + if (i == NUM_OBJECTS (API)) + { WMF_ERROR (API,"Object out of range!"); +@@ -3396,7 +3396,7 @@ static int meta_palette_create (wmfAPI* + objects = P->objects; + + i = 0; +- while (objects[i].type && (i < NUM_OBJECTS (API))) i++; ++ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++; + + if (i == NUM_OBJECTS (API)) + { WMF_ERROR (API,"Object out of range!"); diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch new file mode 100644 index 000000000..331284125 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch @@ -0,0 +1,23 @@ +--- libwmf-0.2.8.4/src/player/meta.h ++++ libwmf-0.2.8.4/src/player/meta.h +@@ -2585,6 +2585,8 @@ + polyrect.BR[i] = clip->rects[i].BR; + } + ++ if (FR->region_clip) FR->region_clip (API,&polyrect); ++ + wmf_free (API,polyrect.TL); + wmf_free (API,polyrect.BR); + } +@@ -2593,9 +2595,10 @@ + polyrect.BR = 0; + + polyrect.count = 0; ++ ++ if (FR->region_clip) FR->region_clip (API,&polyrect); + } + +- if (FR->region_clip) FR->region_clip (API,&polyrect); + + return (changed); + } diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10167.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10167.patch new file mode 100644 index 000000000..5e2819743 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10167.patch @@ -0,0 +1,30 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_gd2.c ++++ libwmf-0.2.8.4/src/extra/gd/gd_gd2.c +@@ -362,10 +362,9 @@ + { + if (!gdGetInt (&im->tpixels[y][x], in)) + { +- /*printf("EOF while reading\n"); */ +- /*gdImageDestroy(im); */ +- /*return 0; */ +- im->tpixels[y][x] = 0; ++ fprintf(stderr, "gd2: EOF while reading\n"); ++ gdImageDestroy(im); ++ return NULL; + } + } + else +@@ -373,10 +372,9 @@ + int ch; + if (!gdGetByte (&ch, in)) + { +- /*printf("EOF while reading\n"); */ +- /*gdImageDestroy(im); */ +- /*return 0; */ +- ch = 0; ++ fprintf(stderr, "gd2: EOF while reading\n"); ++ gdImageDestroy(im); ++ return NULL; + } + im->pixels[y][x] = ch; + } diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10168.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10168.patch new file mode 100644 index 000000000..f08b1f1e5 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10168.patch @@ -0,0 +1,14 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_gd2.c ++++ libwmf-0.2.8.4/src/extra/gd/gd_gd2.c +@@ -145,6 +145,11 @@ + + if ((*fmt) == GD2_FMT_COMPRESSED) + { ++ if (*ncx <= 0 || *ncy <= 0 || *ncx > INT_MAX / *ncy) { ++ GD2_DBG(printf ("Illegal chunk counts: %d * %d\n", *ncx, *ncy)); ++ goto fail1; ++ } ++ + nc = (*ncx) * (*ncy); + GD2_DBG (printf ("Reading %d chunk index entries\n", nc)); + sidx = sizeof (t_chunk_info) * nc; diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch new file mode 100644 index 000000000..c6bd017c2 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch @@ -0,0 +1,36 @@ +--- libwmf-0.2.8.4/src/player.c ++++ libwmf-0.2.8.4/src/player.c +@@ -139,8 +139,31 @@ + WMF_DEBUG (API,"bailing..."); + return (API->err); + } +- +- P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char)); ++ ++ U32 nMaxRecordSize = (MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char); ++ if (nMaxRecordSize) ++ { ++ //before allocating memory do a sanity check on size by seeking ++ //to claimed end to see if its possible. We're constrained here ++ //by the api and existing implementations to not simply seeking ++ //to SEEK_END. So use what we have to skip to the last byte and ++ //try and read it. ++ const long nPos = WMF_TELL (API); ++ WMF_SEEK (API, nPos + nMaxRecordSize - 1); ++ if (ERR (API)) ++ { WMF_DEBUG (API,"bailing..."); ++ return (API->err); ++ } ++ int byte = WMF_READ (API); ++ if (byte == (-1)) ++ { WMF_ERROR (API,"Unexpected EOF!"); ++ API->err = wmf_E_EOF; ++ return (API->err); ++ } ++ WMF_SEEK (API, nPos); ++ } ++ ++ P->Parameters = (unsigned char*) wmf_malloc (API, nMaxRecordSize); + + if (ERR (API)) + { WMF_DEBUG (API,"bailing..."); diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch new file mode 100644 index 000000000..cf57734ed --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch @@ -0,0 +1,21 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd.c ++++ libwmf-0.2.8.4/src/extra/gd/gd.c +@@ -65,6 +65,18 @@ + { + int i; + gdImagePtr im; ++ ++ if (overflow2(sx, sy)) { ++ return NULL; ++ } ++ ++ if (overflow2(sizeof (unsigned char *), sy)) { ++ return NULL; ++ } ++ if (overflow2(sizeof (unsigned char), sx)) { ++ return NULL; ++ } ++ + im = (gdImage *) gdMalloc (sizeof (gdImage)); + memset (im, 0, sizeof (gdImage)); + /* Row-major ever since gd 1.3 */ diff --git a/patches/source/libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch new file mode 100644 index 000000000..2ad180d97 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch @@ -0,0 +1,32 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_png.c ++++ libwmf-0.2.8.4/src/extra/gd/gd_png.c +@@ -435,17 +435,6 @@ + out->free (out); + } + +-void * +-gdImagePngPtr (gdImagePtr im, int *size) +-{ +- void *rv; +- gdIOCtx *out = gdNewDynamicCtx (2048, NULL); +- gdImagePngCtx (im, out); +- rv = gdDPExtractData (out, size); +- out->free (out); +- return rv; +-} +- + /* This routine is based in part on code from Dale Lutz (Safe Software Inc.) + * and in part on demo code from Chapter 15 of "PNG: The Definitive Guide" + * (http://www.cdrom.com/pub/png/pngbook.html). +--- libwmf-0.2.8.4/src/extra/gd/gd.h ++++ libwmf-0.2.8.4/src/extra/gd/gd.h +@@ -373,9 +373,6 @@ + void gdImageGd2(gdImagePtr im, FILE *out, int cs, int fmt); + + /* Best to free this memory with gdFree(), not free() */ +-void* gdImagePngPtr(gdImagePtr im, int *size); +- +-/* Best to free this memory with gdFree(), not free() */ + void* gdImageGdPtr(gdImagePtr im, int *size); + + /* Best to free this memory with gdFree(), not free() */ diff --git a/patches/source/libwmf/libwmf-0.2.8.4-fallbackfont.patch b/patches/source/libwmf/libwmf-0.2.8.4-fallbackfont.patch new file mode 100644 index 000000000..83383138a --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-fallbackfont.patch @@ -0,0 +1,18 @@ +diff -ru libwmf-0.2.8.4.orig/src/font.c libwmf-0.2.8.4/src/font.c +--- libwmf-0.2.8.4.orig/src/font.c 2005-07-27 21:35:06.000000000 +0100 ++++ libwmf-0.2.8.4/src/font.c 2006-01-03 12:53:38.000000000 +0000 +@@ -1429,11 +1429,9 @@ + if (GS->len == 0) return (0); + + name = font->lfFaceName; +- if (name == 0) +- { WMF_DEBUG (API,"No font name?"); +- API->err = wmf_E_Glitch; +- return (0); +- } ++ ++ if (name == 0 || name[0] == 0) ++ name = "Times"; + + /* Find first white-space character or eol + */ diff --git a/patches/source/libwmf/libwmf-0.2.8.4-pixbufloaderdir.patch b/patches/source/libwmf/libwmf-0.2.8.4-pixbufloaderdir.patch new file mode 100644 index 000000000..a03578581 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-pixbufloaderdir.patch @@ -0,0 +1,14 @@ +diff -up libwmf-0.2.8.4/configure.in.pixbufloaderdir libwmf-0.2.8.4/configure.in +--- libwmf-0.2.8.4/configure.in.pixbufloaderdir 2010-06-28 23:35:06.227167269 -0400 ++++ libwmf-0.2.8.4/configure.in 2010-06-28 23:36:00.948420306 -0400 +@@ -741,8 +741,8 @@ + + if test $LIBWMF_BUILDSTYLE != lite; then + PKG_CHECK_MODULES(GDK_PIXBUF,gdk-pixbuf-2.0 >= 2.1.2,[ +- GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` +- GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" ++ GDK_PIXBUF_VERSION=`$PKG_CONFIG --variable=gdk_pixbuf_binary_version gdk-pixbuf-2.0` ++ GDK_PIXBUF_DIR="gdk-pixbuf-2.0/$GDK_PIXBUF_VERSION/loaders" + wmf_gdk_pixbuf=yes + ],[ wmf_gdk_pixbuf=no + ]) diff --git a/patches/source/libwmf/libwmf-0.2.8.4-reducesymbols.patch b/patches/source/libwmf/libwmf-0.2.8.4-reducesymbols.patch new file mode 100644 index 000000000..45d82b327 --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-reducesymbols.patch @@ -0,0 +1,520 @@ +diff -ru libwmf-0.2.8.4/src/extra/gd/gd.c libwmf-0.2.8.4.symbols/src/extra/gd/gd.c +--- libwmf-0.2.8.4/src/extra/gd/gd.c 2005-07-27 21:35:05.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd.c 2006-11-16 12:27:05.000000000 +0000 +@@ -249,6 +249,7 @@ + } + HWBType; + ++#if 0 + static HWBType * + RGB_to_HWB (RGBType RGB, HWBType * HWB) + { +@@ -308,7 +309,6 @@ + return diff; + } + +-#if 0 + /* + * This is not actually used, but is here for completeness, in case someone wants to + * use the HWB stuff for anything else... +@@ -355,6 +355,7 @@ + } + #endif + ++#if 0 + int + gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b) + { +@@ -384,6 +385,7 @@ + } + return ct; + } ++#endif + + int + gdImageColorExact (gdImagePtr im, int r, int g, int b) +@@ -677,7 +679,7 @@ + } + } + +-int ++static int + gdImageGetTrueColorPixel (gdImagePtr im, int x, int y) + { + int p = gdImageGetPixel (im, x, y); +@@ -1286,11 +1288,11 @@ + return len; + } + +-#ifndef HAVE_LSQRT ++#if 0 + /* If you don't have a nice square root function for longs, you can use + ** this hack + */ +-long ++static long + lsqrt (long n) + { + long result = (long) sqrt ((double) n); +@@ -2250,7 +2252,7 @@ + } + } + +-int gdCompareInt (const void *a, const void *b); ++static int gdCompareInt (const void *a, const void *b); + + /* THANKS to Kirsten Schulz for the polygon fixes! */ + +diff -ru libwmf-0.2.8.4/src/extra/gd/gdcache.h libwmf-0.2.8.4.symbols/src/extra/gd/gdcache.h +--- libwmf-0.2.8.4/src/extra/gd/gdcache.h 2001-08-21 15:40:33.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdcache.h 2006-11-16 12:13:40.000000000 +0000 +@@ -41,6 +41,9 @@ + /*********************************************************/ + + /* #include */ ++ ++#pragma GCC visibility push(hidden) ++ + #ifndef NULL + #define NULL (void *)0 + #endif +@@ -81,3 +84,5 @@ + + void * + gdCacheGet( gdCache_head_t *head, void *keydata ); ++ ++#pragma GCC visibility pop +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_clip.h libwmf-0.2.8.4.symbols/src/extra/gd/gd_clip.h +--- libwmf-0.2.8.4/src/extra/gd/gd_clip.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_clip.h 2006-11-16 12:11:49.000000000 +0000 +@@ -1,6 +1,8 @@ + #ifndef GD_CLIP_H + #define GD_CLIP_H 1 + ++#pragma GCC visibility push(hidden) ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -23,4 +25,6 @@ + } + #endif + ++#pragma GCC visibility pop ++ + #endif /* GD_CLIP_H */ +diff -ru libwmf-0.2.8.4/src/extra/gd/gdfontg.h libwmf-0.2.8.4.symbols/src/extra/gd/gdfontg.h +--- libwmf-0.2.8.4/src/extra/gd/gdfontg.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdfontg.h 2006-11-16 12:12:03.000000000 +0000 +@@ -2,6 +2,8 @@ + #ifndef _GDFONTG_H_ + #define _GDFONTG_H_ 1 + ++#pragma GCC visibility push(hidden) ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -25,5 +27,7 @@ + } + #endif + ++#pragma GCC visibility pop ++ + #endif + +diff -ru libwmf-0.2.8.4/src/extra/gd/gdfontl.h libwmf-0.2.8.4.symbols/src/extra/gd/gdfontl.h +--- libwmf-0.2.8.4/src/extra/gd/gdfontl.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdfontl.h 2006-11-16 12:12:11.000000000 +0000 +@@ -2,6 +2,8 @@ + #ifndef _GDFONTL_H_ + #define _GDFONTL_H_ 1 + ++#pragma GCC visibility push(hidden) ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -26,5 +28,7 @@ + } + #endif + ++#pragma GCC visibility pop ++ + #endif + +diff -ru libwmf-0.2.8.4/src/extra/gd/gdfontmb.h libwmf-0.2.8.4.symbols/src/extra/gd/gdfontmb.h +--- libwmf-0.2.8.4/src/extra/gd/gdfontmb.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdfontmb.h 2006-11-16 12:12:19.000000000 +0000 +@@ -2,6 +2,8 @@ + #ifndef _GDFONTMB_H_ + #define _GDFONTMB_H_ 1 + ++#pragma GCC visibility push(hidden) ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -24,5 +26,7 @@ + } + #endif + ++#pragma GCC visibility pop ++ + #endif + +diff -ru libwmf-0.2.8.4/src/extra/gd/gdfonts.h libwmf-0.2.8.4.symbols/src/extra/gd/gdfonts.h +--- libwmf-0.2.8.4/src/extra/gd/gdfonts.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdfonts.h 2006-11-16 12:12:28.000000000 +0000 +@@ -2,6 +2,8 @@ + #ifndef _GDFONTS_H_ + #define _GDFONTS_H_ 1 + ++#pragma GCC visibility push(hidden) ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -24,5 +26,7 @@ + } + #endif + ++#pragma GCC visibility pop ++ + #endif + +diff -ru libwmf-0.2.8.4/src/extra/gd/gdfontt.h libwmf-0.2.8.4.symbols/src/extra/gd/gdfontt.h +--- libwmf-0.2.8.4/src/extra/gd/gdfontt.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdfontt.h 2006-11-16 12:12:36.000000000 +0000 +@@ -2,6 +2,8 @@ + #ifndef _GDFONTT_H_ + #define _GDFONTT_H_ 1 + ++#pragma GCC visibility push(hidden) ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -25,5 +27,7 @@ + } + #endif + ++#pragma GCC visibility pop ++ + #endif + +diff -ru libwmf-0.2.8.4/src/extra/gd/gdft.c libwmf-0.2.8.4.symbols/src/extra/gd/gdft.c +--- libwmf-0.2.8.4/src/extra/gd/gdft.c 2005-07-27 21:35:05.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdft.c 2006-11-16 12:24:50.000000000 +0000 +@@ -533,7 +533,7 @@ + } + + /* draw_bitmap - transfers glyph bitmap to GD image */ +-/* static */ char * ++static char * + gdft_draw_bitmap (gdImage * im, int fg, FT_Bitmap bitmap, int pen_x, int pen_y) + { + unsigned char *pixel = 0; +@@ -643,7 +643,7 @@ + return (char *) NULL; + } + +-int ++static int + gdroundupdown (FT_F26Dot6 v1, int updown) + { + return (!updown) +@@ -651,7 +651,9 @@ + : (v1 > 0 ? ((v1 + 63) >> 6) : v1 >> 6); + } + ++#pragma GCC visibility push(hidden) + extern int any2eucjp (char *, char *, unsigned int); ++#pragma GCC visibility pop + + /********************************************************************/ + /* gdImageStringFT - render a utf8 string onto a gd image */ +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_gd2.c libwmf-0.2.8.4.symbols/src/extra/gd/gd_gd2.c +--- libwmf-0.2.8.4/src/extra/gd/gd_gd2.c 2005-07-27 21:35:05.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_gd2.c 2006-11-16 12:21:28.000000000 +0000 +@@ -34,8 +34,10 @@ + } + t_chunk_info; + ++#pragma GCC visibility push(hidden) + extern int _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag); + extern void _gdPutColors (gdImagePtr im, gdIOCtx * out); ++#pragma GCC visibility pop + + /* */ + /* Read the extra info in the gd2 header. */ +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_gd.c libwmf-0.2.8.4.symbols/src/extra/gd/gd_gd.c +--- libwmf-0.2.8.4/src/extra/gd/gd_gd.c 2005-07-27 21:35:05.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_gd.c 2006-11-16 12:21:43.000000000 +0000 +@@ -11,6 +11,11 @@ + /* Exported functions: */ + extern void gdImageGd (gdImagePtr im, FILE * out); + ++#pragma GCC visibility push(hidden) ++int _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag); ++void _gdPutColors (gdImagePtr im, gdIOCtx * out); ++#pragma GCC visibility pop ++ + + /* Use this for commenting out debug-print statements. */ + /* Just use the first '#define' to allow all the prints... */ +diff -ru libwmf-0.2.8.4/src/extra/gd/gd.h libwmf-0.2.8.4.symbols/src/extra/gd/gd.h +--- libwmf-0.2.8.4/src/extra/gd/gd.h 2002-12-05 20:09:11.000000000 +0000 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd.h 2006-11-16 12:14:11.000000000 +0000 +@@ -25,6 +25,8 @@ + #include + #include + ++#pragma GCC visibility push(hidden) ++ + /* The maximum number of palette entries in palette-based images. + In the wonderful new world of gd 2.0, you can of course have + many more colors when using truecolor mode. */ +@@ -497,6 +499,8 @@ + /* resolution affects ttf font rendering, particularly hinting */ + #define GD_RESOLUTION 96 /* pixels per inch */ + ++#pragma GCC visibility pop ++ + #ifdef __cplusplus + } + #endif +diff -ru libwmf-0.2.8.4/src/extra/gd/gdhelpers.h libwmf-0.2.8.4.symbols/src/extra/gd/gdhelpers.h +--- libwmf-0.2.8.4/src/extra/gd/gdhelpers.h 2001-03-28 10:37:31.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdhelpers.h 2006-11-16 12:12:55.000000000 +0000 +@@ -1,6 +1,8 @@ + #ifndef GDHELPERS_H + #define GDHELPERS_H 1 + ++#pragma GCC visibility push(hidden) ++ + /* TBB: strtok_r is not universal; provide an implementation of it. */ + + extern char *gd_strtok_r(char *s, char *sep, char **state); +@@ -13,5 +15,7 @@ + void *gdMalloc(size_t size); + void *gdRealloc(void *ptr, size_t size); + ++#pragma GCC visibility pop ++ + #endif /* GDHELPERS_H */ + +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_io.h libwmf-0.2.8.4.symbols/src/extra/gd/gd_io.h +--- libwmf-0.2.8.4/src/extra/gd/gd_io.h 2001-03-28 10:37:30.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_io.h 2006-11-16 12:13:08.000000000 +0000 +@@ -2,6 +2,8 @@ + #define GD_IO_H 1 + + #include ++ ++#pragma GCC visibility push(hidden) + + typedef struct gdIOCtx { + int (*getC)(struct gdIOCtx*); +@@ -36,4 +38,6 @@ + int gdSeek(gdIOCtx *ctx, const int); + long gdTell(gdIOCtx *ctx); + ++#pragma GCC visibility pop ++ + #endif +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_jpeg.c libwmf-0.2.8.4.symbols/src/extra/gd/gd_jpeg.c +--- libwmf-0.2.8.4/src/extra/gd/gd_jpeg.c 2005-07-27 21:35:06.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_jpeg.c 2006-11-16 12:28:13.000000000 +0000 +@@ -99,7 +99,7 @@ + return rv; + } + +-void jpeg_gdIOCtx_dest (j_compress_ptr cinfo, gdIOCtx * outfile); ++static void jpeg_gdIOCtx_dest (j_compress_ptr cinfo, gdIOCtx * outfile); + + void + gdImageJpegCtx (gdImagePtr im, gdIOCtx * outfile, int quality) +@@ -266,7 +266,7 @@ + return im; + } + +-void ++static void + jpeg_gdIOCtx_src (j_decompress_ptr cinfo, + gdIOCtx * infile); + +@@ -511,7 +511,7 @@ + * before any data is actually read. + */ + +-void ++static void + init_source (j_decompress_ptr cinfo) + { + my_src_ptr src = (my_src_ptr) cinfo->src; +@@ -559,7 +559,7 @@ + + #define END_JPEG_SEQUENCE "\r\n[*]--:END JPEG:--[*]\r\n" + +-safeboolean ++static safeboolean + fill_input_buffer (j_decompress_ptr cinfo) + { + my_src_ptr src = (my_src_ptr) cinfo->src; +@@ -627,7 +627,7 @@ + * buffer is the application writer's problem. + */ + +-void ++static void + skip_input_data (j_decompress_ptr cinfo, long num_bytes) + { + my_src_ptr src = (my_src_ptr) cinfo->src; +@@ -669,7 +669,7 @@ + * for error exit. + */ + +-void ++static void + term_source (j_decompress_ptr cinfo) + { + +@@ -742,7 +742,7 @@ + * before any data is actually written. + */ + +-void ++static void + init_destination (j_compress_ptr cinfo) + { + my_dest_ptr dest = (my_dest_ptr) cinfo->dest; +@@ -780,7 +780,7 @@ + * write it out when emptying the buffer externally. + */ + +-safeboolean ++static safeboolean + empty_output_buffer (j_compress_ptr cinfo) + { + my_dest_ptr dest = (my_dest_ptr) cinfo->dest; +@@ -805,7 +805,7 @@ + * for error exit. + */ + +-void ++static void + term_destination (j_compress_ptr cinfo) + { + my_dest_ptr dest = (my_dest_ptr) cinfo->dest; +diff -ru libwmf-0.2.8.4/src/extra/gd/gdkanji.c libwmf-0.2.8.4.symbols/src/extra/gd/gdkanji.c +--- libwmf-0.2.8.4/src/extra/gd/gdkanji.c 2001-05-19 14:09:34.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdkanji.c 2006-11-16 12:29:42.000000000 +0000 +@@ -555,6 +555,11 @@ + return kanji; + } + ++#pragma GCC visibility push(hidden) ++int ++any2eucjp (unsigned char *dest, unsigned char *src, unsigned int dest_max); ++#pragma GCC visibility pop ++ + int + any2eucjp (unsigned char *dest, unsigned char *src, unsigned int dest_max) + { +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_topal.c libwmf-0.2.8.4.symbols/src/extra/gd/gd_topal.c +--- libwmf-0.2.8.4/src/extra/gd/gd_topal.c 2005-07-27 21:35:06.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_topal.c 2006-11-16 12:25:45.000000000 +0000 +@@ -1129,7 +1129,7 @@ + * Map some rows of pixels to the output colormapped representation. + */ + +-void ++static void + pass2_no_dither (gdImagePtr im, my_cquantize_ptr cquantize) + /* This version performs no dithering */ + { +@@ -1217,7 +1217,7 @@ + #endif + + +-void ++static void + pass2_fs_dither (gdImagePtr im, my_cquantize_ptr cquantize) + + /* This version performs Floyd-Steinberg dithering */ +diff -ru libwmf-0.2.8.4/src/extra/gd/gd_wbmp.c libwmf-0.2.8.4.symbols/src/extra/gd/gd_wbmp.c +--- libwmf-0.2.8.4/src/extra/gd/gd_wbmp.c 2001-05-19 14:09:34.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gd_wbmp.c 2006-11-16 12:28:33.000000000 +0000 +@@ -67,7 +67,7 @@ + ** Wrapper around gdPutC for use with writewbmp + ** + */ +-void ++static void + gd_putout (int i, void *out) + { + gdPutC (i, (gdIOCtx *) out); +@@ -79,7 +79,7 @@ + ** Wrapper around gdGetC for use with readwbmp + ** + */ +-int ++static int + gd_getin (void *in) + { + return (gdGetC ((gdIOCtx *) in)); +diff -ru libwmf-0.2.8.4/src/extra/gd/gdxpm.c libwmf-0.2.8.4.symbols/src/extra/gd/gdxpm.c +--- libwmf-0.2.8.4/src/extra/gd/gdxpm.c 2001-05-19 14:09:34.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/gdxpm.c 2006-11-16 12:18:29.000000000 +0000 +@@ -10,6 +10,7 @@ + #include "gd.h" + #include "gdhelpers.h" + ++#if 0 + #ifndef HAVE_XPM + gdImagePtr + gdImageCreateFromXpm (char *filename) +@@ -146,3 +147,4 @@ + return (im); + } + #endif ++#endif +diff -ru libwmf-0.2.8.4/src/extra/gd/jisx0208.h libwmf-0.2.8.4.symbols/src/extra/gd/jisx0208.h +--- libwmf-0.2.8.4/src/extra/gd/jisx0208.h 2001-03-28 10:37:35.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/jisx0208.h 2006-11-16 12:13:19.000000000 +0000 +@@ -1,5 +1,8 @@ + #ifndef JISX0208_H + #define JISX0208_H ++ ++#pragma GCC visibility push(hidden) ++ + /* This file was derived from "src/VF_Ftype.c" in VFlib2-2.24.2 + by Dr. Kakugawa */ + +@@ -1202,4 +1205,6 @@ + 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02}}; + ++#pragma GCC visibility pop ++ + #endif /* JISX0208_H */ +diff -ru libwmf-0.2.8.4/src/extra/gd/wbmp.h libwmf-0.2.8.4.symbols/src/extra/gd/wbmp.h +--- libwmf-0.2.8.4/src/extra/gd/wbmp.h 2001-03-28 10:37:37.000000000 +0100 ++++ libwmf-0.2.8.4.symbols/src/extra/gd/wbmp.h 2006-11-16 12:14:19.000000000 +0000 +@@ -12,6 +12,8 @@ + #ifndef __WBMP_H + #define __WBMP_H 1 + ++#pragma GCC visibility push(hidden) ++ + + /* WBMP struct + ** ----------- +@@ -44,4 +46,6 @@ + void freewbmp( Wbmp *wbmp ); + void printwbmp( Wbmp *wbmp ); + ++#pragma GCC visibility pop ++ + #endif diff --git a/patches/source/libwmf/libwmf-0.2.8.4-useafterfree.patch b/patches/source/libwmf/libwmf-0.2.8.4-useafterfree.patch new file mode 100644 index 000000000..328c5411f --- /dev/null +++ b/patches/source/libwmf/libwmf-0.2.8.4-useafterfree.patch @@ -0,0 +1,10 @@ +--- libwmf-0.2.8.4/src/extra/gd/gd_clip.c.CVE-2009-1364-im-clip-list 2009-04-24 04:06:44.000000000 -0400 ++++ libwmf-0.2.8.4/src/extra/gd/gd_clip.c 2009-04-24 04:08:30.000000000 -0400 +@@ -70,6 +70,7 @@ void gdClipSetAdd(gdImagePtr im,gdClipRe + { more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle)); + if (more == 0) return; + im->clip->max += 8; ++ im->clip->list = more; + } + im->clip->list[im->clip->count] = (*rect); + im->clip->count++; diff --git a/patches/source/libwmf/libwmf.SlackBuild b/patches/source/libwmf/libwmf.SlackBuild new file mode 100755 index 000000000..4fd24029b --- /dev/null +++ b/patches/source/libwmf/libwmf.SlackBuild @@ -0,0 +1,142 @@ +#!/bin/bash + +# Copyright 2008, 2009, 2010, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=libwmf +VERSION=0.2.8.4 +BUILD=${BUILD:-7_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} +TMP=${TMP:-/tmp} + +PKG=$TMP/package-libwmf + +rm -rf $PKG +mkdir -p $PKG + +cd $TMP +rm -rf libwmf-$VERSION +tar xvf $CWD/libwmf-$VERSION.tar.?z* || exit 1 +cd libwmf-$VERSION || exit 1 + +zcat $CWD/libwmf.png14.diff.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Miscellaneous patches from Fedora: +zcat $CWD/libwmf-0.2.8.4-fallbackfont.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-pixbufloaderdir.patch.gz | patch -p1 --verbose || exit 1 + +# Don't export the modified embedded GD library symbols, to avoid conflicts with +# the system libgd: +zcat $CWD/libwmf-0.2.8.4-reducesymbols.patch.gz | patch -p1 --verbose || exit 1 + +# Patch security issues: +zcat $CWD/libwmf-0.2.8.4-useafterfree.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2006-3376.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2004-0941.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2007-0455.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2007-2756.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2007-3472.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2007-3473.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2007-3477.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2009-3546.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2015-4695.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2015-4696.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2016-10167.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2016-10168.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2016-9011.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2016-9317.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/libwmf-0.2.8.4-CVE-2017-6362.patch.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --enable-static=no \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc +mv $PKG/usr/share/doc/libwmf $PKG/usr/doc/libwmf-$VERSION +rmdir $PKG/usr/share/doc +cp -a \ + AUTHORS BUILDING COPYING CREDITS NEWS README TODO \ + $PKG/usr/doc/libwmf-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/libwmf-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/libwmf/libwmf.png14.diff b/patches/source/libwmf/libwmf.png14.diff new file mode 100644 index 000000000..c55b143c8 --- /dev/null +++ b/patches/source/libwmf/libwmf.png14.diff @@ -0,0 +1,11 @@ +--- ./src/extra/gd/gd_png.c.orig 2005-07-27 15:35:06.000000000 -0500 ++++ ./src/extra/gd/gd_png.c 2010-02-14 18:24:19.000000000 -0600 +@@ -136,7 +136,7 @@ + /* first do a quick check that the file really is a PNG image; could + * have used slightly more general png_sig_cmp() function instead */ + gdGetBuf (sig, 8, infile); +- if (!png_check_sig (sig, 8)) ++ if (!(png_sig_cmp(sig, 0, 8) == 0)) + return NULL; /* bad signature */ + + #ifndef PNG_SETJMP_NOT_SUPPORTED diff --git a/patches/source/libwmf/slack-desc b/patches/source/libwmf/slack-desc new file mode 100644 index 000000000..19f99a7de --- /dev/null +++ b/patches/source/libwmf/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libwmf: libwmf (WMF graphics format library) +libwmf: +libwmf: libwmf is a library for interpreting metafile images and either +libwmf: displaying them using X or converting them to standard formats such +libwmf: as PNG, JPEG, PS, EPS and SVG. +libwmf: +libwmf: +libwmf: +libwmf: +libwmf: +libwmf: diff --git a/patches/source/libxml2/libxml2.SlackBuild b/patches/source/libxml2/libxml2.SlackBuild new file mode 100755 index 000000000..5a4c810de --- /dev/null +++ b/patches/source/libxml2/libxml2.SlackBuild @@ -0,0 +1,112 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=libxml2 +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-libxml2 +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf libxml2-$VERSION +tar xvf $CWD/libxml2-$VERSION.tar.?z* || exit 1 +cd libxml2-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/libxml2.do-not-check-crc.diff.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --disable-static \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +#echo +#echo "Only the python bindings in /usr/lib/python__/site-packages/ should" +#echo "be kept... toss the other stuff" +#echo + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mv $PKG/usr/share/doc $PKG/usr +mv $PKG/usr/doc/libxml2-python-$VERSION $PKG/usr/doc/libxml2-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL NEWS README \ + $PKG/usr/doc/libxml2-$VERSION +find $PKG/usr/doc/libxml2-$VERSION -type f | xargs chmod 644 + +gzip -9 $PKG/usr/man/man?/*.? + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +# Be sure to clobber any .pyc files that might have been generated so that +# the new .py files will be used instead of the already compiled copies +cat << EOF > $PKG/install/doinst.sh +rm -f /usr/lib${LIBDIRSUFFIX}/python2.7/site-packages/libxml2.pyc +rm -f /usr/lib${LIBDIRSUFFIX}/python2.7/site-packages/drv_libxml2.pyc +EOF + +cd $PKG +/sbin/makepkg -l y -c n $TMP/libxml2-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libxml2/libxml2.do-not-check-crc.diff b/patches/source/libxml2/libxml2.do-not-check-crc.diff new file mode 100644 index 000000000..3e6507764 --- /dev/null +++ b/patches/source/libxml2/libxml2.do-not-check-crc.diff @@ -0,0 +1,35 @@ +diff -up libxml2-2.9.0/xzlib.c.do-not-check-crc libxml2-2.9.0/xzlib.c +--- libxml2-2.9.0/xzlib.c.do-not-check-crc 2012-09-11 05:52:46.000000000 +0200 ++++ libxml2-2.9.0/xzlib.c 2012-11-19 19:28:42.431700534 +0100 +@@ -552,17 +552,20 @@ xz_decomp(xz_statep state) + #ifdef HAVE_ZLIB_H + if (state->how == GZIP) { + if (gz_next4(state, &crc) == -1 || gz_next4(state, &len) == -1) { +- xz_error(state, LZMA_DATA_ERROR, "unexpected end of file"); +- return -1; +- } +- if (crc != state->zstrm.adler) { +- xz_error(state, LZMA_DATA_ERROR, "incorrect data check"); +- return -1; +- } +- if (len != (state->zstrm.total_out & 0xffffffffL)) { +- xz_error(state, LZMA_DATA_ERROR, "incorrect length check"); +- return -1; +- } ++ /* ++ xz_error(state, LZMA_DATA_ERROR, "unexpected end of file"); ++ return -1; ++ */ ++ } else { ++ if (crc != state->zstrm.adler) { ++ xz_error(state, LZMA_DATA_ERROR, "incorrect data check"); ++ return -1; ++ } ++ if (len != (state->zstrm.total_out & 0xffffffffL)) { ++ xz_error(state, LZMA_DATA_ERROR, "incorrect length check"); ++ return -1; ++ } ++ } + state->strm.avail_in = 0; + state->strm.next_in = NULL; + state->strm.avail_out = 0; diff --git a/patches/source/libxml2/slack-desc b/patches/source/libxml2/slack-desc new file mode 100644 index 000000000..dfbc38dc3 --- /dev/null +++ b/patches/source/libxml2/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libxml2: libxml2 (XML parser library) +libxml2: +libxml2: Libxml2 is the XML C parser library and toolkit. XML itself is a +libxml2: metalanguage to design markup languages -- i.e. a text language where +libxml2: structures are added to the content using extra "markup" information +libxml2: enclosed between angle brackets. HTML is the most well-known markup +libxml2: language. Though the library is written in C, a variety of language +libxml2: bindings make it available in other environments. +libxml2: +libxml2: +libxml2: diff --git a/patches/source/libzip/libzip.CVE-2017-14107.diff b/patches/source/libzip/libzip.CVE-2017-14107.diff new file mode 100644 index 000000000..b9999f31a --- /dev/null +++ b/patches/source/libzip/libzip.CVE-2017-14107.diff @@ -0,0 +1,14 @@ +--- ./lib/zip_open.c.orig 2017-09-12 15:55:04.378188022 -0500 ++++ ./lib/zip_open.c 2017-09-12 15:57:11.813198577 -0500 +@@ -687,6 +687,11 @@ + return NULL; + } + ++ if (offset+size > buf_offset + eocd_offset) { ++ /* cdir spans past EOCD record */ ++ zip_error_set(error, ZIP_ER_INCONS, 0); ++ return NULL; ++ } + if ((flags & ZIP_CHECKCONS) && offset+size != buf_offset + eocd_offset) { + zip_error_set(error, ZIP_ER_INCONS, 0); + return NULL; diff --git a/patches/source/libzip/libzip.SlackBuild b/patches/source/libzip/libzip.SlackBuild new file mode 100755 index 000000000..6a67648c6 --- /dev/null +++ b/patches/source/libzip/libzip.SlackBuild @@ -0,0 +1,140 @@ +#!/bin/sh + +# Copyright 2007, 2013, 2015 Heinz Wiesinger, Amsterdam, The Netherlands +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified by Robby Workman + + +PKGNAM=libzip +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-3_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:--j6} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-libzip + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf libzip-$VERSION +tar xvf $CWD/libzip-$VERSION.tar.?z* || exit 1 +cd libzip-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/libzip.CVE-2017-14107.diff.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --includedir=/usr/include \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +# Fix symbolic linking for manpages +sed -i "s|\${LN}|\${LN_S}|g" man/Makefile + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# While I perhaps see the motive for putting platform-specific include files +# in a place where they won't collide, the fact is that this breaks anything +# currently using libzip. Adding a link to the standard include directory +# mostly fixes this, but it is still not optimal. It's likely to cause +# problems on multilib systems, for example (but like that whole thing isn't +# an even uglier hack). +( cd $PKG/usr/include ; ln -sf ../lib${LIBDIRSUFFIX}/libzip/include/zipconf.h . ) + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1 | grep -v '\.gz$') ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Now, fix the stupid symbolic manpage links again: +( cd $PKG/usr/man/man3 + find . -type l | while read link ; do + LINKFILE=$(basename $link) + LINKTARGET=$(basename $(readlink $LINKFILE)) + rm $LINKFILE + ln -sf $LINKTARGET $LINKFILE + done +) + +mkdir -p $PKG/usr/doc/libzip-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL NEWS README* THANKS TODO \ + $PKG/usr/doc/libzip-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/libzip-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/libzip/slack-desc b/patches/source/libzip/slack-desc new file mode 100644 index 000000000..b8b4aaabb --- /dev/null +++ b/patches/source/libzip/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +libzip: libzip (A library to read, create, and modify Zip archives) +libzip: +libzip: This is libzip, a C library for reading, creating, and modifying +libzip: zip archives. Files can be added from data buffers, files, or +libzip: compressed data copied directly from other zip archives. Changes +libzip: made without closing the archive can be reverted. +libzip: +libzip: Homepage: http://www.nih.at/libzip/ +libzip: +libzip: +libzip: diff --git a/patches/source/loudmouth/loudmouth.SlackBuild b/patches/source/loudmouth/loudmouth.SlackBuild new file mode 100755 index 000000000..557a2c22c --- /dev/null +++ b/patches/source/loudmouth/loudmouth.SlackBuild @@ -0,0 +1,133 @@ +#!/bin/sh +# Copyright 2009 Eric Hameleers, Eindhoven, NL +# Copyright 2012, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# ----------------------------------------------------------------------------- + +PKGNAM=loudmouth +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + SLKLDFLAGS="" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + SLKLDFLAGS="" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + SLKLDFLAGS="-L/usr/lib64" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + SLKLDFLAGS="" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --with-ssl=gnutls \ + --enable-debug=yes \ + --enable-static=no \ + --disable-gtk-doc \ + --program-prefix= \ + --program-suffix= \ + --build=$ARCH-slackware-linux \ + --host=$ARCH-slackware-linux || exit 1 + +## +## NOTE: For some reason --enable-debug=yes actually _disables_ verbose debug +## messages to the console. Don't mess with it! +## + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +# --enable-static is often ignored +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/lib*.a + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS CONTRIBUTORS COPYING* NEWS README* \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Add a package description: +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz diff --git a/patches/source/loudmouth/slack-desc b/patches/source/loudmouth/slack-desc new file mode 100644 index 000000000..ca3c4b702 --- /dev/null +++ b/patches/source/loudmouth/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +loudmouth: loudmouth (XMPP C programming library) +loudmouth: +loudmouth: Loudmouth is a lightweight and easy-to-use C library for programming +loudmouth: with the Jabber protocol. It is designed to be easy to get started +loudmouth: with, and yet extensible enough to allow you to do anything that the +loudmouth: Jabber protocol allows. +loudmouth: +loudmouth: loudmouth home: https://github.com/mcabber/loudmouth +loudmouth: +loudmouth: +loudmouth: diff --git a/patches/source/lynx/doinst.sh b/patches/source/lynx/doinst.sh new file mode 100644 index 000000000..79c367133 --- /dev/null +++ b/patches/source/lynx/doinst.sh @@ -0,0 +1,13 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/lynx.cfg.new diff --git a/patches/source/lynx/lynx.SlackBuild b/patches/source/lynx/lynx.SlackBuild new file mode 100755 index 000000000..2be59ddf9 --- /dev/null +++ b/patches/source/lynx/lynx.SlackBuild @@ -0,0 +1,155 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012, 2016, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGVER=2.8.8rel.2 +DIRVER=2-8-8 +BUILD=${BUILD:-3_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-lynx + +rm -rf $PKG +mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX}/lynx +cd $TMP +rm -rf lynx$DIRVER +tar xvf $CWD/lynx${PKGVER}.tar.?z* || exit 1 +cd lynx$DIRVER || exit 1 + +find . -name "*~" -exec rm -f {} \; +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Change default colors and STARTFILE setting since the old site is gone: +zcat $CWD/lynx.cfg.diff.gz | patch -p1 --verbose --backup || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX}/lynx \ + --datadir=/usr/share/lynx \ + --mandir=/usr/man \ + --enable-default-colors \ + --with-screen=ncursesw \ + --enable-widec \ + --enable-gzip-help \ + --with-zlib \ + --enable-read-eta \ + --enable-scrollbar \ + --with-ssl \ + --enable-ipv6 \ + --enable-color-style \ + --enable-prettysrc \ + --enable-source-cache \ + --enable-nsl-fork \ + --enable-nls \ + --enable-persistent-cookies \ + --enable-vertrace \ + --disable-full-paths \ + --enable-addrlist-page \ + --enable-charset-choice \ + --enable-cjk \ + --enable-htmlized-cfg \ + --enable-justify-elts \ + --enable-locale-charset \ + --enable-externs \ + --enable-cgi-links \ + --enable-change-exec \ + --enable-exec-links \ + --enable-exec-scripts \ + --enable-internal-links \ + --with-bzlib \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 +make install-help DESTDIR=$PKG || exit 1 +make install-doc DESTDIR=$PKG || exit 1 + +# Make lynx.cfg a preserved config file: +mv $PKG/etc/lynx.cfg $PKG/etc/lynx.cfg.new + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Correct $DESTDIR brokenness: +( cd $PKG/usr/share/lynx/lynx_help + rm -f COPYHEADER COPYING + ln -sf ../lynx_doc/COPYHEADER . + ln -sf ../lynx_doc/COPYING . +) +# Add documentation symlinks: +( mkdir -p $PKG/usr/doc/lynx-$PKGVER + cd $PKG/usr/doc/lynx-$PKGVER + ln -sf /usr/share/lynx/lynx_doc . + ln -sf /usr/share/lynx/lynx_help . +) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r CHANGES ]; then + DOCSDIR=$(echo $PKG/usr/share/lynx/lynx_doc) + cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES + touch -r CHANGES $DOCSDIR/CHANGES +fi + +gzip -9 $PKG/usr/man/man?/*.? + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/lynx-$PKGVER-$ARCH-$BUILD.txz + diff --git a/patches/source/lynx/lynx.cfg.diff b/patches/source/lynx/lynx.cfg.diff new file mode 100644 index 000000000..c2ecefd80 --- /dev/null +++ b/patches/source/lynx/lynx.cfg.diff @@ -0,0 +1,31 @@ +--- ./lynx.cfg.orig 2014-03-09 16:43:10.000000000 -0500 ++++ ./lynx.cfg 2017-05-29 14:35:52.629203408 -0500 +@@ -90,7 +90,7 @@ + # + # Normally we expect you will connect to a remote site, e.g., the Lynx starting + # site: +-STARTFILE:http://lynx.isc.org/ ++STARTFILE:http://lynx.invisible-island.net/ + # + # As an alternative, you may want to use a local URL. A good choice for this is + # the user's home directory: +@@ -2969,8 +2969,18 @@ + #COLOR:4:magenta:white + #COLOR:5:blue:white + #COLOR:6:red:white +-COLOR:6:brightred:black ++#COLOR:6:brightred:black + #COLOR:7:magenta:cyan ++COLOR:0:black:white ++COLOR:1:blue:white ++COLOR:2:yellow:blue ++COLOR:3:green:white ++COLOR:4:magenta:white ++COLOR:5:blue:white ++# This makes links a *lot* more visible. The default settings are like ++# "let's torture the color-blind" :^) ++COLOR:6:brightred:black ++COLOR:7:magenta:cyan + + .h2 COLOR_STYLE + # Also known as "lss" (lynx style-sheet), the color-style file assigns color diff --git a/patches/source/lynx/slack-desc b/patches/source/lynx/slack-desc new file mode 100644 index 000000000..c9209d298 --- /dev/null +++ b/patches/source/lynx/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +lynx: Lynx (text mode browser) +lynx: +lynx: Lynx is a distributed hypertext browser with full World Wide Web +lynx: capabilities. Lynx can be used to access information on the World +lynx: Wide Web, or to build information systems intended primarily for local +lynx: access. For example, Lynx has been used to build several Campus Wide +lynx: Information Systems (CWIS). +lynx: +lynx: Lynx's authors include Lou Montulli, Garrett Blythe, Craig Lavender, +lynx: Michael Grobe, and Charles Rezac. +lynx: diff --git a/patches/source/mariadb/doinst.sh b/patches/source/mariadb/doinst.sh new file mode 100644 index 000000000..0defd2fe1 --- /dev/null +++ b/patches/source/mariadb/doinst.sh @@ -0,0 +1,28 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.mysqld.new: +if [ -e etc/rc.d/rc.mysqld ]; then + cp -a etc/rc.d/rc.mysqld etc/rc.d/rc.mysqld.new.incoming + cat etc/rc.d/rc.mysqld.new > etc/rc.d/rc.mysqld.new.incoming + mv etc/rc.d/rc.mysqld.new.incoming etc/rc.d/rc.mysqld.new +fi + +config etc/rc.d/rc.mysqld.new +config etc/mysqlaccess.conf.new +config etc/my.cnf.new +config etc/my.cnf.d/client.cnf.new +config etc/my.cnf.d/mysql-clients.cnf.new +config etc/my.cnf.d/server.cnf.new +config etc/logrotate.d/mysql.new + diff --git a/patches/source/mariadb/mariadb.SlackBuild b/patches/source/mariadb/mariadb.SlackBuild new file mode 100755 index 000000000..ff4511172 --- /dev/null +++ b/patches/source/mariadb/mariadb.SlackBuild @@ -0,0 +1,199 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012, 2013, 2014 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2011, 2012, 2013, 2014 Heinz Wiesinger, Amsterdam, The Netherlands +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Build and install MySQL on Slackware +# by: David Cantrell +# MariaDB conversion by: Heinz Wiesinger +# Also maintained by: Patrick Volkerding + +PKGNAM=mariadb +VERSION=${VERSION:-$(echo ${PKGNAM}-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# To reduce the package size, the embedded server may be omitted. Currently +# only amarok uses this. To build without embedded support, set this to NO. +EMBEDDED=${EMBEDDED:-YES} + +# Add a description tag to the $BUILD. This is used by +# "build_embedded_package.sh" to mark packages containing the embedded server, +# but can optionally be used with any kind of custom tag desired. +TAG=${TAG:-} + +# Don't keep the large static libraries by default: +KEEPSTATIC=${KEEPSTATIC:-NO} + +# Don't keep the test suite by default: +KEEPTESTS=${KEEPTESTS:-NO} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf ${PKGNAM}-$VERSION +tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1 +cd ${PKGNAM}-$VERSION + +if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then + for patch in $CWD/*.diff.gz ; do + zcat $patch | patch -p1 --verbose || exit 1 + done +fi + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Fix linking with libwrap +sed -i "s|\${CMAKE_REQUIRED_LIBRARIES} wrap|\${CMAKE_REQUIRED_LIBRARIES} wrap nsl|" \ + configure.cmake + +mkdir build +cd build +cmake \ + -DCMAKE_C_FLAGS="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS="$SLKCFLAGS -felide-constructors -fno-exceptions -fno-rtti" \ + -DBUILD_CONFIG=mysql_release \ + -DFEATURE_SET="community" \ + -DINSTALL_LAYOUT="RPM" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DINSTALL_LIBDIR="lib${LIBDIRSUFFIX}" \ + -DINSTALL_SBINDIR=libexec \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_SQLBENCHDIR= \ + -DINSTALL_MYSQLTESTDIR=mysql-test \ + -DINSTALL_MANDIR=man \ + -DINSTALL_PLUGINDIR="lib${LIBDIRSUFFIX}/mysql/plugin" \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DINSTALL_MYSQLDATADIR="/var/lib/mysql" \ + -DINSTALL_DOCREADMEDIR="doc/${PKGNAM}-$VERSION" \ + -DINSTALL_DOCDIR="doc/${PKGNAM}-$VERSION" \ + -DMYSQL_DATADIR="/var/lib/mysql" \ + -DMYSQL_UNIX_ADDR="/var/run/mysql/mysql.sock" \ + -DWITH_EXTRA_CHARSETS=complex \ + -DWITH_INNOBASE_STORAGE_ENGINE=1 \ + -DENABLED_LOCAL_INFILE=ON \ + -DWITH_EMBEDDED_SERVER=${EMBEDDED} \ + -DWITH_READLINE=ON \ + -DWITH_SSL=system \ + -DWITH_ZLIB=system \ + -DWITH_JEMALLOC=system \ + -DUSE_ARIA_FOR_TMP_TABLES=ON \ + .. + +# not building with libwrap. Do we still need tcp_wrappers support? +# -DWITH_LIBWRAP=ON \ + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +# Leave build directory: +cd .. + +if [ "$KEEPSTATIC" = "NO" ]; then + # Remove large static libraries: + rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient.a + rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient_r.a + rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqld.a +fi + +if [ "$KEEPTESTS" = "NO" ]; then + # Do not include the test suite: + rm -rf $PKG/usr/mysql-test +fi + +# The ./configure option to omit this has gone away, so we'll omit it +# the old-fashioned way. It's all in the source tarball if you need it. +rm -rf $PKG/usr/sql-bench + +# This is the directory where databases are stored +mkdir -p $PKG/var/lib/mysql +chown mysql.mysql $PKG/var/lib/mysql +chmod 0750 $PKG/var/lib/mysql + +# This is where the socket is stored +mkdir -p $PKG/var/run/mysql +chown mysql.mysql $PKG/var/run/mysql +chmod 0755 $PKG/var/run/mysql + +# Add init script: +mkdir -p $PKG/etc/rc.d +# This is installed chmod 644 so that the server does not run by default. +zcat $CWD/rc.mysqld.gz > $PKG/etc/rc.d/rc.mysqld.new +rm -rf $PKG/etc/init.d + +# Install mysqlaccess.conf +install -m 644 scripts/mysqlaccess.conf $PKG/etc/mysqlaccess.conf.new + +# Mark config files under /etc as .new +mv $PKG/etc/my.cnf $PKG/etc/my.cnf.new +mv $PKG/etc/logrotate.d/mysql $PKG/etc/logrotate.d/mysql.new +for i in client mysql-clients server; do + mv $PKG/etc/my.cnf.d/$i.cnf $PKG/etc/my.cnf.d/$i.cnf.new +done + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-${BUILD}${TAG}.txz + diff --git a/patches/source/mariadb/mirror.url b/patches/source/mariadb/mirror.url new file mode 100644 index 000000000..173543014 --- /dev/null +++ b/patches/source/mariadb/mirror.url @@ -0,0 +1 @@ +ftp://ftp.osuosl.org/pub/mariadb/ diff --git a/patches/source/mariadb/rc.mysqld b/patches/source/mariadb/rc.mysqld new file mode 100644 index 000000000..e7b7e85e5 --- /dev/null +++ b/patches/source/mariadb/rc.mysqld @@ -0,0 +1,102 @@ +#!/bin/sh +# Start/stop/restart mysqld. +# +# Copyright 2003 Patrick J. Volkerding, Concord, CA +# Copyright 2003 Slackware Linux, Inc., Concord, CA +# Copyright 2008, 2013 Patrick J. Volkerding, Sebeka, MN, USA +# +# This program comes with NO WARRANTY, to the extent permitted by law. +# You may redistribute copies of this program under the terms of the +# GNU General Public License. + +# To start MariaDB automatically at boot, be sure this script is executable: +# chmod 755 /etc/rc.d/rc.mysqld + +# Before you can run MariaDB, you must have a database. To install an initial +# database, do this as root: +# +# mysql_install_db --user=mysql +# +# Note that the mysql user must exist in /etc/passwd, and the created files +# will be owned by this dedicated user. This is important, or else mysql +# (which runs as user "mysql") will not be able to write to the database +# later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql'). +# +# To increase system security, consider using "mysql_secure_installation" +# as well. For more information on this tool, please read: +# man mysql_secure_installation + +# To allow outside connections to the database comment out the next line. +# If you don't need incoming network connections, then leave the line +# uncommented to improve system security. +SKIP="--skip-networking" + +# Uncomment the next line to use Oracle's InnoDB plugin instead of the included XtraDB +#INNODB="--ignore-builtin-innodb --plugin-load=innodb=ha_innodb.so" + +# Uncomment the next line to use TokuDB +#TOKUDB="--plugin-load=ha_tokudb" + +# Start mysqld: +mysqld_start() { + if [ -x /usr/bin/mysqld_safe ]; then + # If there is an old PID file (no mysqld running), clean it up: + if [ -r /var/run/mysql/mysql.pid ]; then + if ! ps axc | grep mysqld 1> /dev/null 2> /dev/null ; then + echo "Cleaning up old /var/run/mysql/mysql.pid." + rm -f /var/run/mysql/mysql.pid + fi + fi + + if ! [ -z "$TOKUDB" ]; then + echo "never" > /sys/kernel/mm/transparent_hugepage/enabled + echo "never" > /sys/kernel/mm/transparent_hugepage/defrag + fi + + /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP $INNODB $TOKUDB & + fi +} + +# Stop mysqld: +mysqld_stop() { + # If there is no PID file, ignore this request... + if [ -r /var/run/mysql/mysql.pid ]; then + killall mysqld + # Wait at least one minute for it to exit, as we don't know how big the DB is... + for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \ + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do + if [ ! -r /var/run/mysql/mysql.pid ]; then + break; + fi + sleep 1 + done + if [ "$second" = "60" ]; then + echo "WARNING: Gave up waiting for mysqld to exit!" + sleep 15 + fi + if ! [ -z "$TOKUDB" ]; then + echo "always" > /sys/kernel/mm/transparent_hugepage/enabled + echo "always" > /sys/kernel/mm/transparent_hugepage/defrag + fi + fi +} + +# Restart mysqld: +mysqld_restart() { + mysqld_stop + mysqld_start +} + +case "$1" in +'start') + mysqld_start + ;; +'stop') + mysqld_stop + ;; +'restart') + mysqld_restart + ;; +*) + echo "usage $0 start|stop|restart" +esac diff --git a/patches/source/mariadb/slack-desc b/patches/source/mariadb/slack-desc new file mode 100644 index 000000000..867765fa4 --- /dev/null +++ b/patches/source/mariadb/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +mariadb: mariadb (Drop-in replacement for the MySQL Database Server) +mariadb: +mariadb: MariaDB is a backward compatible, drop-in replacement branch of the +mariadb: MySQL(R) Database Server. It includes all major open source storage +mariadb: engines, including the Aria storage engine. +mariadb: +mariadb: Homepage: http://mariadb.org/ +mariadb: +mariadb: +mariadb: +mariadb: diff --git a/patches/source/mcabber/mcabber.SlackBuild b/patches/source/mcabber/mcabber.SlackBuild new file mode 100755 index 000000000..ea119e70e --- /dev/null +++ b/patches/source/mcabber/mcabber.SlackBuild @@ -0,0 +1,128 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=mcabber +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1 +cd ${PKGNAM}-$VERSION + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --build=$ARCH-slackware-linux + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) +fi + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* TODO mcabberrc.example \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/mcabber/slack-desc b/patches/source/mcabber/slack-desc new file mode 100644 index 000000000..e8cfe6653 --- /dev/null +++ b/patches/source/mcabber/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +mcabber: mcabber (Jabber console client) +mcabber: +mcabber: mcabber is a small Jabber console client for Linux, maintained by +mcabber: Mikael Berthe. Mcabber includes features such as SSL support, +mcabber: multi-user chat (MUC), history logging, commands completion, and +mcabber: external actions triggers. +mcabber: +mcabber: mcabber project home is: http://www.lilotux.net/~mikael/mcabber/ +mcabber: +mcabber: +mcabber: diff --git a/patches/source/mercurial/doinst.sh b/patches/source/mercurial/doinst.sh new file mode 100644 index 000000000..4cefcc343 --- /dev/null +++ b/patches/source/mercurial/doinst.sh @@ -0,0 +1,13 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/mercurial/hgrc.d/hgk.rc.new +rm -f etc/mercurial/hgrc.d/hgk.rc.new diff --git a/patches/source/mercurial/mercurial.SlackBuild b/patches/source/mercurial/mercurial.SlackBuild new file mode 100755 index 000000000..e7c951165 --- /dev/null +++ b/patches/source/mercurial/mercurial.SlackBuild @@ -0,0 +1,109 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +VERSION=${VERSION:-$(echo mercurial-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-mercurial + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf mercurial-$VERSION +tar xvf $CWD/mercurial-$VERSION.tar.?z* || exit 1 +cd mercurial-$VERSION +chown -R root.root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +python setup.py build install --root=$PKG || exit 1 + +# Ordinarily we will not add stuff that's not installed through the normal +# default installation method, but we've had a lot of requests, and it appears +# that installing at least the hgk extension is the ad-hoc standard. +mkdir -p $PKG/usr/libexec/mercurial +cp -a contrib/hgk $PKG/usr/libexec/mercurial +chmod 0755 $PKG/usr/libexec/mercurial/hgk + +mkdir -p $PKG/etc/mercurial/hgrc.d +cat << EOF > $PKG/etc/mercurial/hgrc.d/hgk.rc.new +[extensions] +# enable hgk extension ('hg help' shows 'view' as a command) +hgk = +[hgk] + +path=/usr/libexec/mercurial/hgk +EOF + +# Bash and zsh completion: +mkdir -p $PKG/usr/share/bash-completion/completions/ +cp -a contrib/bash_completion $PKG/usr/share/bash-completion/completions/hg +chmod 644 $PKG/usr/share/bash-completion/completions/hg +mkdir -p $PKG/usr/share/zsh/site-functions +cp -a contrib/zsh_completion $PKG/usr/share/zsh/site-functions/_mercurial +chmod 644 $PKG/usr/share/zsh/site-functions/_mercurial + +# Emacs Lisp extensions: +mkdir -p $PKG/usr/share/emacs/site-lisp +cp -a contrib/mercurial.el contrib/mq.el $PKG/usr/share/emacs/site-lisp +chmod 644 $PKG/usr/share/emacs/site-lisp/* + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +( cd doc + for dir in 1 5 ; do + mkdir -p $PKG/usr/man/man${dir} + for file in *.${dir} ; do + cat $file | gzip -9c > $PKG/usr/man/man${dir}/${file}.gz + done + done +) + +mkdir -p $PKG/usr/doc/mercurial-$VERSION +cp -a \ + CONTRIBUTORS COPYING* PKG-INFO README* \ + $PKG/usr/doc/mercurial-$VERSION + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/mercurial-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/mercurial/slack-desc b/patches/source/mercurial/slack-desc new file mode 100644 index 000000000..e770f6c31 --- /dev/null +++ b/patches/source/mercurial/slack-desc @@ -0,0 +1,22 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + +# This article is licensed under the GNU Free Documentation License. +# It uses material from the Wikipedia article "Mercurial". + + |-----handy-ruler------------------------------------------------------| +mercurial: mercurial (a distributed source management system) +mercurial: +mercurial: Mercurial is a cross-platform, distributed source management tool for +mercurial: software developers. It is written in Python, with a binary diff +mercurial: implementation written in C. Its major features include high- +mercurial: performance; serverless, fully distributed collaborative development; +mercurial: robust handling of both plain text and binary files; advanced +mercurial: branching and merging capabilities; and full source code available +mercurial: under the terms of the LGPL. +mercurial: +mercurial: Mercurial was written by Matt Mackall and other contributors. diff --git a/patches/source/minicom/config.sub-x86_64.diff b/patches/source/minicom/config.sub-x86_64.diff new file mode 100644 index 000000000..fa89bb3c1 --- /dev/null +++ b/patches/source/minicom/config.sub-x86_64.diff @@ -0,0 +1,20 @@ +--- ./config.sub.orig 1998-04-26 17:20:59.000000000 +0400 ++++ ./config.sub 2007-08-30 09:48:46.000000000 +0400 +@@ -129,7 +129,7 @@ + case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. +- tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm \ ++ tahoe | i[345]86 | x86_64 | i860 | m68k | m68000 | m88k | ns32k | arm \ + | arme[lb] | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ + | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \ +@@ -144,7 +144,7 @@ + exit 1 + ;; + # Recognize the basic CPU types with company name. +- vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \ ++ vax-* | tahoe-* | i[345]86-* | x86_64-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ diff --git a/patches/source/minicom/doinst.sh b/patches/source/minicom/doinst.sh new file mode 100644 index 000000000..5961829bc --- /dev/null +++ b/patches/source/minicom/doinst.sh @@ -0,0 +1,15 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/minicom.users.new +config etc/minirc.dfl.new +rm -f etc/minicom.users.new etc/minirc.dfl.new diff --git a/patches/source/minicom/lrzsz_0.12.21-5.diff b/patches/source/minicom/lrzsz_0.12.21-5.diff new file mode 100644 index 000000000..b2541a91b --- /dev/null +++ b/patches/source/minicom/lrzsz_0.12.21-5.diff @@ -0,0 +1,4194 @@ +--- lrzsz-0.12.21.orig/po/de.po ++++ lrzsz-0.12.21/po/de.po +@@ -28,21 +28,21 @@ + + #: src/lsz.c:422 + msgid "packetlength" +-msgstr "Paketlänge" ++msgstr "Paketl?nge" + + #: src/lsz.c:427 + #, c-format + msgid "packetlength out of range 24..%ld" +-msgstr "Argument der Option L außerhalb des Bereichs 24..%ld" ++msgstr "Argument der Option L au?erhalb des Bereichs 24..%ld" + + #: src/lsz.c:436 + msgid "framelength" +-msgstr "Framelänge" ++msgstr "Framel?nge" + + #: src/lsz.c:441 + #, c-format + msgid "framelength out of range 32..%ld" +-msgstr "Argument der Option l außerhalb des Bereichs 32..%ld" ++msgstr "Argument der Option l au?erhalb des Bereichs 32..%ld" + + #: src/lrz.c:318 src/lsz.c:450 + msgid "min_bps" +@@ -50,7 +50,7 @@ + + #: src/lsz.c:452 + msgid "min_bps must be >= 0" +-msgstr "minimale BPS-Rate muß >= 0 sein" ++msgstr "minimale BPS-Rate mu? >= 0 sein" + + #: src/lrz.c:324 src/lsz.c:458 + msgid "min_bps_time" +@@ -58,7 +58,7 @@ + + #: src/lrz.c:326 src/lsz.c:460 + msgid "min_bps_time must be > 1" +-msgstr "Zeitfenster für minimale BPS-Rate muß > 1 Sekunde sein" ++msgstr "Zeitfenster f?r minimale BPS-Rate mu? > 1 Sekunde sein" + + #: src/lrz.c:342 src/lsz.c:484 + msgid "hour to large (0..23)" +@@ -70,7 +70,7 @@ + + #: src/lrz.c:348 src/lsz.c:490 + msgid "minute to large (0..59)" +-msgstr "Minute zu groß (0..59)" ++msgstr "Minute zu gro? (0..59)" + + #: src/lrz.c:358 src/lrz.c:365 src/lsz.c:500 src/lsz.c:507 + msgid "stop time to small" +@@ -86,15 +86,15 @@ + + #: src/lrz.c:396 src/lsz.c:518 + msgid "timeout out of range 10..1000" +-msgstr "Argument der Option t außerhalb des Bereichs 10..1000" ++msgstr "Argument der Option t au?erhalb des Bereichs 10..1000" + + #: src/lrz.c:412 src/lsz.c:526 + msgid "security violation: can't do that under restricted shell\n" +-msgstr "Sicherheitsverstoß: Ausführung unter eingeschränkter Shell verboten\n" ++msgstr "Sicherheitsversto?: Ausf?hrung unter eingeschr?nkter Shell verboten\n" + + #: src/lrz.c:402 src/lsz.c:533 + msgid "window size" +-msgstr "Fenstergröße" ++msgstr "Fenstergr??e" + + #: src/lrz.c:427 src/lrz.c:434 src/lsz.c:556 src/lsz.c:563 + msgid "cannot turnoff syslog" +@@ -102,7 +102,7 @@ + + #: src/lrz.c:449 src/lsz.c:571 + msgid "startup delay" +-msgstr "Startverzögerung" ++msgstr "Startverz?gerung" + + #: src/lrz.c:465 src/lrz.c:483 src/lrz.c:760 src/lrz.c:1122 src/lrz.c:1244 + #: src/lrz.c:1292 src/lrz.c:1309 src/lrz.c:1324 src/lrz.c:1423 src/lsz.c:580 +@@ -117,11 +117,11 @@ + + #: src/lsz.c:612 src/lsz.c:627 + msgid "need at least one file to send" +-msgstr "es muß mindestens ein Name einer zu sendenden Datei angegeben werden" ++msgstr "es mu? mindestens ein Name einer zu sendenden Datei angegeben werden" + + #: src/lsz.c:629 + msgid "Can't send command in restricted mode\n" +-msgstr "Im eingeschränkten Modus ist das Senden von Kommandos verboten\n" ++msgstr "Im eingeschr?nkten Modus ist das Senden von Kommandos verboten\n" + + #: src/lrz.c:527 src/lsz.c:656 + msgid "hostname too long\n" +@@ -137,21 +137,21 @@ + + #: src/lrz.c:574 src/lsz.c:803 + msgid "Transfer incomplete\n" +-msgstr "Übertragung nicht abgeschlossen\n" ++msgstr "?bertragung nicht abgeschlossen\n" + + #: src/lrz.c:576 src/lsz.c:805 + msgid "Transfer complete\n" +-msgstr "Übertragung abgeschlossen\n" ++msgstr "?bertragung abgeschlossen\n" + + #: src/lsz.c:838 + #, c-format + msgid "send_pseudo %s: cannot open tmpfile %s: %s" +-msgstr "send_pseudo %s: kann temporäre Datei %s nicht öffnen: %s" ++msgstr "send_pseudo %s: kann tempor?re Datei %s nicht ?ffnen: %s" + + #: src/lsz.c:851 + #, c-format + msgid "send_pseudo %s: cannot lstat tmpfile %s: %s" +-msgstr "send_pseudo %s: kann lstat nicht auf temporäre Datei %s anwenden: %s" ++msgstr "send_pseudo %s: kann lstat nicht auf tempor?re Datei %s anwenden: %s" + + #: src/lsz.c:859 + #, c-format +@@ -161,7 +161,7 @@ + #: src/lsz.c:870 + #, c-format + msgid "send_pseudo %s: cannot write to tmpfile %s: %s" +-msgstr "send_pseudo %s: kann nicht in temporäre Datei %s schreiben: %s" ++msgstr "send_pseudo %s: kann nicht in tempor?re Datei %s schreiben: %s" + + #: src/lsz.c:879 + #, c-format +@@ -188,17 +188,17 @@ + + #: src/lsz.c:953 + msgid "Can't open any requested files." +-msgstr "Kann keine der angeforderten Dateien öffnen" ++msgstr "Kann keine der angeforderten Dateien ?ffnen" + + #: src/lsz.c:1009 + #, c-format + msgid "security violation: not allowed to upload from %s" +-msgstr "Sicherheitsverstoß: Ausführung unter eingeschränkter Shell verboten" ++msgstr "Sicherheitsversto?: Ausf?hrung unter eingeschr?nkter Shell verboten" + + #: src/lrz.c:1384 src/lsz.c:1027 + #, c-format + msgid "cannot open %s" +-msgstr "kann %s nicht öffnen" ++msgstr "kann %s nicht ?ffnen" + + #: src/lsz.c:1082 + #, c-format +@@ -213,12 +213,12 @@ + #: src/lsz.c:1119 + #, c-format + msgid "skipped: %s" +-msgstr "übersprungen: %s" ++msgstr "?bersprungen: %s" + + #: src/lsz.c:1122 + #, c-format + msgid "%s/%s: skipped" +-msgstr "%s/%s: übersprungen" ++msgstr "%s/%s: ?bersprungen" + + #: src/lsz.c:1149 + #, c-format +@@ -228,7 +228,7 @@ + #: src/lsz.c:1178 + #, c-format + msgid "Sending %s, %ld blocks: " +-msgstr "Sende %s, %ld Blöcke:" ++msgstr "Sende %s, %ld Bl?cke:" + + #: src/lsz.c:1181 + msgid "Give your local XMODEM receive command now." +@@ -245,11 +245,11 @@ + + #: src/lsz.c:1314 + msgid "Receiver Cancelled" +-msgstr "Empfänger brach ab" ++msgstr "Empf?nger brach ab" + + #: src/lsz.c:1340 + msgid "No ACK on EOT" +-msgstr "Keine Bestätigung für Übertragungsende erhalten" ++msgstr "Keine Best?tigung f?r ?bertragungsende erhalten" + + #: src/lsz.c:1361 + #, c-format +@@ -267,11 +267,11 @@ + + #: src/lsz.c:1399 + msgid "Timeout on sector ACK" +-msgstr "Timeout bei Sektorbestätigung" ++msgstr "Timeout bei Sektorbest?tigung" + + #: src/lsz.c:1404 + msgid "NAK on sector" +-msgstr "Sektor nicht bestätigt" ++msgstr "Sektor nicht best?tigt" + + #: src/lsz.c:1410 + msgid "Got burst for sector ACK" +@@ -280,11 +280,11 @@ + #: src/lsz.c:1412 + #, c-format + msgid "Got %02x for sector ACK" +-msgstr "Erhielt %02x als Sektorbestätigung" ++msgstr "Erhielt %02x als Sektorbest?tigung" + + #: src/lsz.c:1424 + msgid "Retry Count Exceeded" +-msgstr "Maximale Wiederholungsanzahl überschritten" ++msgstr "Maximale Wiederholungsanzahl ?berschritten" + + #: src/lrz.c:596 src/lsz.c:1502 + #, c-format +@@ -308,7 +308,7 @@ + + #: src/lsz.c:1513 + msgid "Send file(s) with ZMODEM/YMODEM/XMODEM protocol\n" +-msgstr "Dateien mit ZMODEM/YMODEM/XMODEM übertragen\n" ++msgstr "Dateien mit ZMODEM/YMODEM/XMODEM ?bertragen\n" + + # src/lrz.c:475 src/lsz.c:1330 xx + #: src/lrz.c:607 src/lsz.c:1515 +@@ -317,9 +317,9 @@ + " (Y) = option applies to YMODEM only\n" + " (Z) = option applies to ZMODEM only\n" + msgstr "" +-" (X) = Option gilt nur für XMODEM\n" +-" (Y) = Option gilt nur für YMODEM\n" +-" (Z) = Option gilt nur für ZMODEM\n" ++" (X) = Option gilt nur f?r XMODEM\n" ++" (Y) = Option gilt nur f?r YMODEM\n" ++" (Z) = Option gilt nur f?r ZMODEM\n" + + #: src/lsz.c:1521 + msgid "" +@@ -347,32 +347,32 @@ + " -m, --min-bps N stop transmission if BPS below N\n" + " -M, --min-bps-time N for at least N seconds (default: 120)\n" + msgstr "" +-" -+, --append an existierende Dateien anhängen (Z)\n" ++" -+, --append an existierende Dateien anh?ngen (Z)\n" + " -2, --twostop zwei Stopbits verwenden\n" +-" -4, --try-4k bis zu 4K Blockgröße verwenden\n" +-" --start-4k mit 4K Blockgröße starten (versucht nicht 8)\n" +-" -8, --try-8k bis zu 8K Blockgröße verwenden\n" +-" --start-8k mit 8K Blockgröße starten\n" ++" -4, --try-4k bis zu 4K Blockgr??e verwenden\n" ++" --start-4k mit 4K Blockgr??e starten (versucht nicht 8)\n" ++" -8, --try-8k bis zu 8K Blockgr??e verwenden\n" ++" --start-8k mit 8K Blockgr??e starten\n" + " -a, --ascii ASCII: NL nach CR/LF wandeln\n" +-" -b, --binary Binärübertragung erzwingen\n" ++" -b, --binary Bin?r?bertragung erzwingen\n" + " -B, --bufsize N N Bytes puffern (auto: ganze Datei puffern)\n" +-" -c, --command COMMAND Kommando KOMMANDO auf Gegenseite ausführen " ++" -c, --command COMMAND Kommando KOMMANDO auf Gegenseite ausf?hren " + "(Z)\n" +-" -C, --command-tries N N mal Kommandoausführung versuchen (Z)\n" ++" -C, --command-tries N N mal Kommandoausf?hrung versuchen (Z)\n" + " -d, --dot-to-slash C '.' in Dateinamen nach '/' wandeln (Y/Z)\n" + " --delay-startup N Bei Programmstart N Sek. schlafen (Debugging)\n" + " -e, --escape alle Steuerzeichen escapen (Z)\n" +-" -E, --rename Empfänger soll Datei umbenennen falls\n" ++" -E, --rename Empf?nger soll Datei umbenennen falls\n" + " Zieldatei schon existiert\n" + " -f, --full-path Dateien mit vollen Pfaden senden (Y/Z)\n" +-" -i, --immediate-command CMD wie `c', aber sofort zurückkehren (Z)\n" ++" -i, --immediate-command CMD wie `c', aber sofort zur?ckkehren (Z)\n" + " -h, --help diesen Hilfetext ausgeben\n" + " -k, --1k 1024 Bytes Pakete senden (Y)\n" +-" -L, --packetlen N Unterpaketlänge auf N Bytes beschränken (Z)\n" +-" -l, --framelen N Rahmenlänge auf N Bytes beschränken (l>=L) " ++" -L, --packetlen N Unterpaketl?nge auf N Bytes beschr?nken (Z)\n" ++" -l, --framelen N Rahmenl?nge auf N Bytes beschr?nken (l>=L) " + "(Z)\n" +-" -m, --min-bps N Übertragung abbrechen bei weniger als N BPS\n" +-" -M, --min-bps-time N für mindestens N Sekunden (Default: 120)\n" ++" -m, --min-bps N ?bertragung abbrechen bei weniger als N BPS\n" ++" -M, --min-bps-time N f?r mindestens N Sekunden (Default: 120)\n" + + #: src/lsz.c:1546 + msgid "" +@@ -400,28 +400,28 @@ + "short options use the same arguments as the long ones\n" + msgstr "" + " -n, --newer Datei senden wenn sie neuer ist (Z)\n" +-" -N, --newer-or-longer Datei senden wenn neuer oder länger (Z)\n" ++" -N, --newer-or-longer Datei senden wenn neuer oder l?nger (Z)\n" + " -o, --16-bit-crc 16Bit CRC statt 32Bit CRC verwenden (Z)\n" + " -O, --disable-timeouts Timeoutbehandlung abschalten\n" +-" -p, --protect existierende Dateien nicht verändern\n" +-" -r, --resume unterbrochene Übertragungen fortsetzen (Z)\n" +-" -R, --restricted eingeschränkter, sichererer Modus\n" ++" -p, --protect existierende Dateien nicht ver?ndern\n" ++" -r, --resume unterbrochene ?bertragungen fortsetzen (Z)\n" ++" -R, --restricted eingeschr?nkter, sichererer Modus\n" + " -q, --quiet leise, keine Ausgaben machen\n" +-" -s, --stop-at {HH:MM|+N} Übertragung um HH:MM oder in N Sek. abbrechen\n" +-" --tcp-server Socket öffnen und auf Verbindung warten\n" +-" --tcp-client ADDR:PORT Socket öffnen und verbindung mit ...\n" +-" -u, --unlink Datei nach Übertragung löschen\n" +-" -U, --unrestrict eingeschränkten Modus aufheben (falls " ++" -s, --stop-at {HH:MM|+N} ?bertragung um HH:MM oder in N Sek. abbrechen\n" ++" --tcp-server Socket ?ffnen und auf Verbindung warten\n" ++" --tcp-client ADDR:PORT Socket ?ffnen und verbindung mit ...\n" ++" -u, --unlink Datei nach ?bertragung l?schen\n" ++" -U, --unrestrict eingeschr?nkten Modus aufheben (falls " + "erlaubt)\n" + " -v, --verbose mehr ausgeben\n" +-" -w, --windowsize N Fenstergröße auf N Bytes setzen (Z)\n" ++" -w, --windowsize N Fenstergr??e auf N Bytes setzen (Z)\n" + " -X --xmodem XMODEM-Protokoll benutzen\n" +-" -y, --overwrite existierende Dateien überschreiben\n" +-" -Y, --overwrite-or-skip wie `y', aber nicht existierende überspringen\n" ++" -y, --overwrite existierende Dateien ?berschreiben\n" ++" -Y, --overwrite-or-skip wie `y', aber nicht existierende ?berspringen\n" + " --ymodem YMODEM-Protokoll benutzen\n" + " -Z, --zmodem ZMODEM-Protokoll benutzen\n" + "\n" +-"Kurze Optionen benötigen dieselben Argumente wie Lange.\n" ++"Kurze Optionen ben?tigen dieselben Argumente wie Lange.\n" + + #: src/lsz.c:1768 + msgid "got ZRQINIT" +@@ -434,7 +434,7 @@ + #: src/lsz.c:1991 + #, c-format + msgid "blklen now %d\n" +-msgstr "Blockgröße nun %d\n" ++msgstr "Blockgr??e nun %d\n" + + #: src/lsz.c:2053 + #, c-format +@@ -453,7 +453,7 @@ + #: src/lsz.c:2223 + #, c-format + msgid "calc_blklen: reduced to %d due to error\n" +-msgstr "calc_blklen: Blockgrösse auf %d reduziert wegen Fehler\n" ++msgstr "calc_blklen: Blockgr?sse auf %d reduziert wegen Fehler\n" + + #: src/lsz.c:2256 + #, c-format +@@ -473,7 +473,7 @@ + #: src/lsz.c:2278 + #, c-format + msgid "calc_blklen: blklen %d, ok %ld, failed %ld -> %lu\n" +-msgstr "calc_blklen: Blocklänge %d, ok %ld, fehlgeschlagen %ld -> %lu\n" ++msgstr "calc_blklen: Blockl?nge %d, ok %ld, fehlgeschlagen %ld -> %lu\n" + + #: src/lsz.c:2290 + #, c-format +@@ -512,7 +512,7 @@ + + #: src/zm.c:712 + msgid "Garbage count exceeded" +-msgstr "Maximale Wiederholungsanzahl überschritten" ++msgstr "Maximale Wiederholungsanzahl ?berschritten" + + #: src/zm.c:773 + #, c-format +@@ -526,11 +526,11 @@ + + #: src/lrz.c:382 + msgid "don't have settimeofday, will not set time\n" +-msgstr "Zeitsynchronisation nicht ausführbar, settimeofday() fehlt\n" ++msgstr "Zeitsynchronisation nicht ausf?hrbar, settimeofday() fehlt\n" + + #: src/lrz.c:386 + msgid "not running as root (this is good!), can not set time\n" +-msgstr "Zeitsynchronisation mangels Superuserrechten nicht ausführbar\n" ++msgstr "Zeitsynchronisation mangels Superuserrechten nicht ausf?hrbar\n" + + #: src/lrz.c:441 + msgid "bytes_per_error" +@@ -542,16 +542,16 @@ + + #: src/lrz.c:455 + msgid "O_SYNC not supported by the kernel" +-msgstr "O_SYNC vom Kernel nicht unterstützt" ++msgstr "O_SYNC vom Kernel nicht unterst?tzt" + + #: src/lrz.c:497 src/lrz.c:499 + msgid "garbage on commandline" +-msgstr "Müll auf der Kommandozeile" ++msgstr "M?ll auf der Kommandozeile" + + #: src/lrz.c:604 + #, c-format + msgid "Usage: %s [options] [filename.if.xmodem]\n" +-msgstr "Benutzung: %s [Optionen] [Dateiname.für.xmodem]\n" ++msgstr "Benutzung: %s [Optionen] [Dateiname.f?r.xmodem]\n" + + #: src/lrz.c:605 + msgid "Receive files with ZMODEM/YMODEM/XMODEM protocol\n" +@@ -596,44 +596,44 @@ + "\n" + "short options use the same arguments as the long ones\n" + msgstr "" +-" -+, --append an existierende Dateien anhängen\n" +-" -a, --ascii ASCII-Übertragung (CR/LF nach LF wandeln)\n" +-" -b, --binary Binärübertragung (keine Umwandlungen)\n" ++" -+, --append an existierende Dateien anh?ngen\n" ++" -a, --ascii ASCII-?bertragung (CR/LF nach LF wandeln)\n" ++" -b, --binary Bin?r?bertragung (keine Umwandlungen)\n" + " -B, --bufsize N N Bytes puffern (auto: ganze Datei puffern)\n" +-" -c, --with-crc 16bit CRC statt Prüfsumme verwenden (X)\n" +-" -C, --allow-remote-commands Ausführung von Kommandos erlauben (Z)\n" ++" -c, --with-crc 16bit CRC statt Pr?fsumme verwenden (X)\n" ++" -C, --allow-remote-commands Ausf?hrung von Kommandos erlauben (Z)\n" + " -D, --null empfangene Daten nach /dev/null schreiben\n" + " --delay-startup N Bei Programmstart N Sek. schlafen (Debugging)\n" + " -e, --escape Alle Steuerzeichen escapen (Z)\n" +-" -E, --rename Empfänger soll Datei umbenennen falls\n" ++" -E, --rename Empf?nger soll Datei umbenennen falls\n" + " Zieldatei schon existiert\n" + " --errors N Einen CRC-Fehler alle N Bytes erzeugen\n" + " -h, --help Diesen Hilfstext ausgeben\n" +-" -m, --min-bps N Übertragung abbrechen bei weniger als N BPS\n" +-" -M, --min-bps-time N für mindestens N Sekunden (Default: 120)\n" ++" -m, --min-bps N ?bertragung abbrechen bei weniger als N BPS\n" ++" -M, --min-bps-time N f?r mindestens N Sekunden (Default: 120)\n" + " -O, --disable-timeouts Timeoutbehandlung abschalten\n" + " --o-sync Ausgabedatei(en) im synchron schreiben\n" +-" -p, --protect existierende Dateien nicht verändern\n" ++" -p, --protect existierende Dateien nicht ver?ndern\n" + " -q, --quiet leise, keine Ausgaben machen\n" +-" -r, --resume unterbrochene Übertragungen fortsetzen (Z)\n" +-" -R, --restricted eingeschränkter, sichererer Modus\n" +-" -s, --stop-at {HH:MM|+N} Übertragung um HH:MM oder in N Sek. abbrechen\n" ++" -r, --resume unterbrochene ?bertragungen fortsetzen (Z)\n" ++" -R, --restricted eingeschr?nkter, sichererer Modus\n" ++" -s, --stop-at {HH:MM|+N} ?bertragung um HH:MM oder in N Sek. abbrechen\n" + " -S, --timesync Zeit anfordern (doppelt: lokale Zeit setzen)\n" +-" --syslog[=off] syslog an- oder ausschalten, wenn möglich\n" ++" --syslog[=off] syslog an- oder ausschalten, wenn m?glich\n" + " -t, --timeout N Timeout auf N Zehntelsekungen setzen\n" +-" --tcp-server Socket öffnen und auf Verbindung warten\n" +-" --tcp-client ADDR:PORT Socket öffnen und verbindung mit ...\n" ++" --tcp-server Socket ?ffnen und auf Verbindung warten\n" ++" --tcp-client ADDR:PORT Socket ?ffnen und verbindung mit ...\n" + " -u, --keep-uppercase GROSS geschrieben Dateinamen beibehalten\n" +-" -U, --unrestrict eingeschränkten Modus aufheben (falls " ++" -U, --unrestrict eingeschr?nkten Modus aufheben (falls " + "erlaubt)\n" + " -v, --verbose mehr ausgeben\n" +-" -w, --windowsize N Fenstergröße auf N Bytes setzen (Z)\n" ++" -w, --windowsize N Fenstergr??e auf N Bytes setzen (Z)\n" + " -X --xmodem XMODEM-Protokoll benutzen\n" +-" -y, --overwrite existierende Dateien überschreiben\n" ++" -y, --overwrite existierende Dateien ?berschreiben\n" + " --ymodem YMODEM-Protokoll benutzen\n" + " -Z, --zmodem ZMODEM-Protokoll benutzen\n" + "\n" +-"Kurze Optionen benötigen dieselben Argumente wie Lange.\n" ++"Kurze Optionen ben?tigen dieselben Argumente wie Lange.\n" + + #: src/lrz.c:676 + #, c-format +@@ -662,11 +662,11 @@ + "%s: %s removed.\r\n" + msgstr "" + "\r\n" +-"%s: %s gelöscht\r\n" ++"%s: %s gel?scht\r\n" + + #: src/lrz.c:856 + msgid "Pathname fetch returned EOT" +-msgstr "Ende der Übertragung beim Warten auf Dateinamen" ++msgstr "Ende der ?bertragung beim Warten auf Dateinamen" + + #: src/lrz.c:903 + msgid "Received dup Sector" +@@ -682,7 +682,7 @@ + + #: src/lrz.c:976 + msgid "Checksum" +-msgstr "Prüfsummenfehler" ++msgstr "Pr?fsummenfehler" + + #: src/lrz.c:979 + msgid "Sector number garbled" +@@ -695,12 +695,12 @@ + #: src/lrz.c:1005 + #, c-format + msgid "Got 0%o sector header" +-msgstr "Erhielt %02x als Sektorbestätigung" ++msgstr "Erhielt %02x als Sektorbest?tigung" + + #: src/lrz.c:1113 + #, c-format + msgid "file name ends with a /, skipped: %s\n" +-msgstr "Dateiname endet mit /, übersprungen: %s\n" ++msgstr "Dateiname endet mit /, ?bersprungen: %s\n" + + #: src/lrz.c:1127 + #, c-format +@@ -715,7 +715,7 @@ + #: src/lrz.c:1192 src/lrz.c:1226 + #, c-format + msgid "file exists, skipped: %s\n" +-msgstr "Datei existiert, übersprungen: %s\n" ++msgstr "Datei existiert, ?bersprungen: %s\n" + + #: src/lrz.c:1267 + #, c-format +@@ -739,7 +739,7 @@ + #: src/lrz.c:1545 + #, c-format + msgid "Blocks received: %d" +-msgstr "Blöcke empfangen: %d" ++msgstr "Bl?cke empfangen: %d" + + #: src/lrz.c:1599 + #, c-format +@@ -749,15 +749,15 @@ + #: src/lrz.c:1612 src/lrz.c:1620 + #, c-format + msgid "%s:\tSecurity Violation" +-msgstr "%s:\tSicherheitsverstoß" ++msgstr "%s:\tSicherheitsversto?" + + #: src/lrz.c:1730 + msgid "remote command execution requested" +-msgstr "Gegenseite versucht Kommandoausführung" ++msgstr "Gegenseite versucht Kommandoausf?hrung" + + #: src/lrz.c:1737 + msgid "not executed" +-msgstr "nicht ausgeführt" ++msgstr "nicht ausgef?hrt" + + #: src/lrz.c:1768 + msgid "got ZRINIT" +@@ -765,7 +765,7 @@ + + #: src/lrz.c:1817 + msgid "Skipped" +-msgstr "Übersprungen" ++msgstr "?bersprungen" + + #. too bad + #: src/lrz.c:2049 +@@ -785,7 +785,7 @@ + + #: src/lrz.c:2215 + msgid "file close error" +-msgstr "Fehler beim Schließen der Datei" ++msgstr "Fehler beim Schlie?en der Datei" + + #~ msgid "tcp protocol init failed\n" + #~ msgstr "TCP Protokoll Initialisierung fehlgeschlagen\n" +@@ -797,7 +797,7 @@ + #~ msgstr "fgets() bei tcp Protokoll Synchronisation fehlgeschlagen: " + + #~ msgid "Transfer complete." +-#~ msgstr "Übertragung abgeschlossen" ++#~ msgstr "?bertragung abgeschlossen" + + #~ msgid "at" + #~ msgstr "um" +@@ -809,4 +809,4 @@ + #~ msgstr "Zeitsynchronisation: ok\n" + + #~ msgid "Falldown to %ld blklen" +-#~ msgstr "Blockgröße auf %ld gesenkt" ++#~ msgstr "Blockgr??e auf %ld gesenkt" +--- lrzsz-0.12.21.orig/debian/copyright ++++ lrzsz-0.12.21/debian/copyright +@@ -0,0 +1,31 @@ ++This is the lrzsz Debian GNU/Linux package. It was first maintained by ++Michael Alan Dorman , with help of Martin Mitchell ++and current upstream maintainer, Uwe Ohse . ++ ++Current maintainer is Josip Rodin ++ ++Original source was downloaded from: ftp://tirka.ohse.de/uwe/ ++ ++Copyright (C) until 1988 Chuck Forsberg (Omen Technology INC) ++Copyright (C) 1994 Matt Porter, Michael D. Black ++Copyright (C) 1996, 1997 Uwe Ohse ++ ++Please note that credit should be given to Chuck Forsberg (rzsz) and ++Stephen Satchell/Satchell Evaluations (crc routines) for this package. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; version 2 dated June, 1991. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, ++ MA 02110-1301, USA. ++ ++On Debian systems, the complete text of the GNU General Public License ++can be found in /usr/share/common-licenses/GPL file. +--- lrzsz-0.12.21.orig/debian/control ++++ lrzsz-0.12.21/debian/control +@@ -0,0 +1,18 @@ ++Source: lrzsz ++Section: comm ++Priority: optional ++Maintainer: Martin A. Godisch ++Standards-Version: 3.8.3 ++Build-Depends: autotools-dev, gettext ++ ++Package: lrzsz ++Architecture: any ++Depends: ${shlibs:Depends} ++Suggests: minicom ++Description: Tools for zmodem/xmodem/ymodem file transfer ++ Lrzsz is a cosmetically modified zmodem/ymodem/xmodem package built ++ from the public-domain version of Chuck Forsberg's rzsz package. ++ . ++ These programs use error correcting protocols ({z,x,y}modem) to send ++ (sz, sx, sb) and receive (rz, rx, rb) files over a dial-in serial port ++ from a variety of programs running under various operating systems. +--- lrzsz-0.12.21.orig/debian/changelog ++++ lrzsz-0.12.21/debian/changelog +@@ -0,0 +1,104 @@ ++lrzsz (0.12.21-5) unstable; urgency=low ++ ++ * New maintainer upload, closes: #556238. ++ Thanks to Josip Rodin for his work. ++ * Removed build-dependency on debhelper. ++ * Added build-dependency on autotools-dev. ++ * Cut Debian diff.gz into pieces. ++ * Updated FSF address in copyright file. ++ * Updated German po file, added build-dependency on gettext. ++ Closes: #313992, thanks to Jens Seidel and Tobias Toedter. ++ * Fixed missing includes (compiler warnings). ++ * Fixed typo in sz manpage. ++ * Fixed linking to libnsl. ++ * Removed changelog emacs settings. ++ * Updated standards version. ++ ++ -- Martin A. Godisch Sun, 22 Nov 2009 09:35:13 +0100 ++ ++lrzsz (0.12.21-4.1) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Rebuilt with current debhelper, finishing the /usr/doc transition. ++ Closes: #322762 ++ * Rebuilt with a current toolchain, now it's prelinkable. ++ Closes: #288084 ++ * Appled man page typo fix patch from A Costa. Closes: #311459 ++ ++ -- Joey Hess Tue, 10 Jan 2006 01:35:00 -0500 ++ ++lrzsz (0.12.21-4) unstable; urgency=low ++ ++ * Updated for Standards-Version: 3.5.2. ++ * Added touch stamp-h.in before make invocation in order to stop ++ autoheader from running. ++ ++ -- Josip Rodin Sun, 25 Mar 2001 19:48:18 +0200 ++ ++lrzsz (0.12.21-3) unstable; urgency=low ++ ++ * Newish upstream version, (990823 in CVS). ++ * Updated for Policy 3.x. ++ * Misc. fixes for debian/*. ++ ++ -- Josip Rodin Sun, 19 Sep 1999 17:55:38 +0200 ++ ++lrzsz (0.12.21-2) unstable; urgency=low ++ ++ * Removed definition of strstr, advised by upstream maintainer, to ++ get it to compile on glibc2.1, as John Goerzen and Bart Warmerdam ++ noticed (fixes: #39429 #39812). ++ ++ -- Josip Rodin Sun, 20 Jun 1999 21:38:07 +0200 ++ ++lrzsz (0.12.21-1) unstable; urgency=low ++ ++ * New upstream version (990604 in CVS). ++ * Cleaned up the diff by removing unneeded .deps/ files and not changing ++ aclocal et al. ++ ++ -- Josip Rodin Sun, 6 Jun 1999 21:01:50 +0200 ++ ++lrzsz (0.12.20-2) unstable; urgency=low ++ ++ * Don't install ansi2knr.1 manpage, closing bug #33121 ++ ++ -- Josip Rodin Sun, 7 Feb 1999 01:32:31 +0100 ++ ++lrzsz (0.12.20-1) unstable; urgency=low ++ ++ * New maintainer. ++ * Althought version number doesn't indicate that, this version is ++ today's CVS snapshot from ftp://tirka.ohse.de/uwe/cvs-trees ++ * This release fixes following bugs: #8373 #11208 #16170 #16744 #17210. ++ * Package is lintian clean. ++ ++ -- Josip Rodin Sun, 7 Feb 1999 01:32:31 +0100 ++ ++lrzsz (0.12.17) unstable; urgency=low ++ ++ * sorry, see ../ChangeLog. automagically generated debian/changelog ++ ++ -- Uwe Ohse Mon, 02 Jun 1997 10:06:05 +0200 ++ ++lrzsz (0.12.16) unstable; urgency=low ++ ++ * sorry, see ../ChangeLog. changelog is here just to make ++ dpkg happy. ++ * initial release ++ ++ -- Uwe Ohse Sun, 2 Jun 1997 21:00:00 +0200 ++ ++lrzsz (0.12b-1.1) unstable; urgency=low ++ ++ * Non-maintainer release. ++ * Libc6 compile. ++ ++ -- Martin Mitchell Sat, 18 Oct 1997 01:58:54 +1000 ++ ++lrzsz (0.12b-1) unstable; urgency=low ++ ++ * Converted to new source packaging format. ++ * New upstream version. ++ ++ -- Michael Alan Dorman Tue, 17 Sep 1996 13:39:23 -0400 +--- lrzsz-0.12.21.orig/debian/rules ++++ lrzsz-0.12.21/debian/rules +@@ -0,0 +1,80 @@ ++#!/usr/bin/make -f ++ ++testdir = test -f src/lrz.c && test -f debian/rules ++testroot = test x`whoami` = xroot ++ ++# FOR AUTOCONF 2.13 ONLY ++ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) ++ confflags += $(DEB_HOST_GNU_TYPE) ++else ++ $(error Cannot cross-compile this package out-of-the-box) ++endif ++ ++CFLAGS = -Wall -g ++ifneq "$(findstring noopt,$(DEB_BUILD_OPTIONS))" "" ++ CFLAGS += -O0 ++else ++ CFLAGS += -O2 ++endif ++export CFLAGS ++ ++build: build-stamp ++build-stamp: ++ $(testdir) ++ cp -f /usr/share/misc/config.guess /usr/share/misc/config.sub . ++ -cat debian/patches/*.diff | patch -Ntp1 -r debian/rejected --no-backup-if-mismatch ++ ./configure $(CONFFLAGS) --prefix=/usr --mandir='$${prefix}/share/man' --program-transform-name=s/l// ++ touch stamp-h.in # to stop autoheader from running ++ touch -d yesterday aclocal.m4 # to stop automake from running ++ $(MAKE) ++ touch $@ ++ ++clean: ++ $(testdir) ++ $(testroot) ++ cp -f /usr/share/misc/config.guess /usr/share/misc/config.sub . ++ touch stamp-h.in # to stop autoheader from running ++ touch -d yesterday aclocal.m4 # to stop automake from running ++ [ ! -f Makefile ] || $(MAKE) distclean ++ -cat `ls -r debian/patches/*.diff` /dev/null | patch -RNtp1 -r debian/rejected --no-backup-if-mismatch ++ rm -rf debian/tmp ++ rm -f build-stamp config.guess config.sub po/lrzsz.pot po/*.gmo debian/files debian/rejected debian/substvars ++ ++binary: binary-arch ++ ++binary-indep: ++ ++binary-arch: build ++ $(testdir) ++ $(testroot) ++ rm -rf debian/tmp ++ ++ $(MAKE) prefix=$(CURDIR)/debian/tmp/usr install ++ ++ifeq "$(findstring nostrip,$(DEB_BUILD_OPTIONS))" "" ++ strip -R .comment -R .note debian/tmp/usr/bin/* ++endif ++ ++ install -d -m 0755 debian/tmp/usr/share/doc/lrzsz ++ install -p -m 0644 NEWS README README.cvs README.isdn4linux TODO debian/copyright debian/tmp/usr/share/doc/lrzsz ++ install -p -m 0644 -D ChangeLog debian/tmp/usr/share/doc/lrzsz/changelog ++ install -p -m 0644 -D debian/changelog debian/tmp/usr/share/doc/lrzsz/changelog.Debian ++ ++ find debian/tmp/usr/share/man -type f -print0 | xargs -0 gzip -9 ++ find debian/tmp/usr/share/doc -type f ! -name copyright ! -name '*.html' \ ++ \( -name 'changelog*' -o -size +8 \) -print0 | xargs -0 gzip -9 ++ ++ ln -s rz.1.gz debian/tmp/usr/share/man/man1/rb.1.gz ++ ln -s rz.1.gz debian/tmp/usr/share/man/man1/rx.1.gz ++ ln -s sz.1.gz debian/tmp/usr/share/man/man1/sb.1.gz ++ ln -s sz.1.gz debian/tmp/usr/share/man/man1/sx.1.gz ++ ++ install -d -m 0755 debian/tmp/DEBIAN ++ install -p -m 0644 debian/control debian/tmp/DEBIAN ++ cd debian/tmp && find usr -type f -print0 | xargs -0 md5sum > DEBIAN/md5sums ++ ++ dpkg-shlibdeps debian/tmp/usr/bin/* ++ dpkg-gencontrol -isp -plrzsz ++ dpkg --build debian/tmp .. ++ ++.PHONY: build clean binary binary-indep binary-arch +--- lrzsz-0.12.21.orig/debian/patches/206648_dszlog.diff.unchecked ++++ lrzsz-0.12.21/debian/patches/206648_dszlog.diff.unchecked +@@ -0,0 +1,311 @@ ++diff -ur lrzsz-0.12.21/src/lrz.c newlrzsz/src/lrz.c ++--- lrzsz-0.12.21/src/lrz.c 2003-08-21 16:22:01.000000000 -0500 +++++ newlrzsz/src/lrz.c 2003-08-21 17:05:53.000000000 -0500 ++@@ -68,6 +68,7 @@ ++ unsigned Baudrate = 2400; ++ ++ FILE *fout; +++char *dszlogpath; ++ ++ ++ int Lastrx; ++@@ -192,6 +193,9 @@ ++ zmputs(Attn); ++ canit(STDOUT_FILENO); ++ io_mode(0,0); +++ if (dszlogpath) { +++ dszlog(dszlogpath, 'L', 0, 0, 0, errors, 0, 0); +++ } ++ error(128+n,0,_("caught signal %d; exiting"), n); ++ } ++ ++@@ -265,6 +269,13 @@ ++ if ((cp=getenv("ZMODEM_RESTRICTED"))!=NULL) ++ Restricted=2; ++ +++ dszlogpath = getenv("DSZLOG"); +++ if (access(dszlogpath, F_OK) == 0) { +++ if (unlink(dszlogpath) != 0) { +++ perror("unlink dszlog"); +++ } +++ } +++ ++ /* make temporary and unfinished files */ ++ umask(0077); ++ ++@@ -559,6 +570,7 @@ ++ signal(SIGINT, bibi); ++ signal(SIGTERM, bibi); ++ signal(SIGPIPE, bibi); +++ signal(SIGHUP, bibi); ++ if (wcreceive(npats, patts)==ERROR) { ++ exitcode=0200; ++ canit(STDOUT_FILENO); ++@@ -685,9 +697,9 @@ ++ #endif ++ if (c) ++ goto fubar; ++- } else { +++ } else { /* Not Xmodem, not Zmodem, so Ymodem */ ++ for (;;) { ++- if (Verbose > 1 +++ if (Verbose > 1 || dszlogpath ++ #ifdef ENABLE_SYSLOG ++ || enable_syslog ++ #endif ++@@ -712,7 +724,7 @@ ++ if (wcrx(&zi)==ERROR) ++ goto fubar; ++ ++- if (Verbose > 1 +++ if (Verbose > 1 || dszlogpath ++ #ifdef ENABLE_SYSLOG ++ || enable_syslog ++ #endif ++@@ -734,16 +746,19 @@ ++ lsyslog(LOG_INFO,"%s/%s: %ld Bytes, %ld BPS", ++ shortname,protname(),zi.bytes_received, bps); ++ #endif +++ if (dszlogpath) dszlog(dszlogpath, 'R', +++ zi.bytes_received, zi.fname, +++ bps, errors, 0, 0); ++ } ++ } ++ } ++- } else { +++ } else { /* Xmodem */ ++ char dummy[128]; ++ dummy[0]='\0'; /* pre-ANSI HPUX cc demands this */ ++ dummy[1]='\0'; /* procheader uses name + 1 + strlen(name) */ ++ zi.bytes_total = DEFBYTL; ++ ++- if (Verbose > 1 +++ if (Verbose > 1 || dszlogpath ++ #ifdef ENABLE_SYSLOG ++ || enable_syslog ++ #endif ++@@ -782,7 +797,7 @@ ++ if (wcrx(&zi)==ERROR) { ++ goto fubar; ++ } ++- if (Verbose > 1 +++ if (Verbose > 1 || dszlogpath ++ #ifdef ENABLE_SYSLOG ++ || enable_syslog ++ #endif ++@@ -803,6 +818,10 @@ ++ lsyslog(LOG_INFO,"%s/%s: %ld Bytes, %ld BPS", ++ shortname,protname(),zi.bytes_received, bps); ++ #endif +++ if (dszlogpath) dszlog(dszlogpath, 'R', +++ zi.bytes_received, zi.fname, +++ bps, errors, 0, 0); +++ ++ } ++ } ++ return OK; ++@@ -812,6 +831,13 @@ ++ lsyslog(LOG_ERR,"%s/%s: got error", ++ shortname ? shortname : "no.name", protname()); ++ #endif +++ if (dszlogpath) { +++ double d = timing(0,NULL); +++ dszlog(dszlogpath, 'E', zi.bytes_received, zi.fname, +++ (zi.bytes_received-zi.bytes_skipped)/((d) ? d : 0.5), +++ errors, 0, 0); +++ } +++ ++ canit(STDOUT_FILENO); ++ if (Topipe && fout) { ++ pclose(fout); return ERROR; ++@@ -1783,10 +1809,18 @@ ++ rzfiles(struct zm_fileinfo *zi) ++ { ++ register int c; +++ long bps; ++ ++ for (;;) { ++ timing(1,NULL); ++ c = rzfile(zi); +++ { +++ double d; +++ d=timing(0,NULL); +++ if (d==0) +++ d=0.5; /* can happen if timing uses time() */ +++ bps=(zi->bytes_received-zi->bytes_skipped)/d; +++ } ++ switch (c) { ++ case ZEOF: ++ if (Verbose > 1 ++@@ -1794,12 +1828,6 @@ ++ || enable_syslog ++ #endif ++ ) { ++- double d; ++- long bps; ++- d=timing(0,NULL); ++- if (d==0) ++- d=0.5; /* can happen if timing uses time() */ ++- bps=(zi->bytes_received-zi->bytes_skipped)/d; ++ if (Verbose > 1) { ++ vstringf( ++ _("\rBytes received: %7ld/%7ld BPS:%-6ld \r\n"), ++@@ -1807,6 +1835,8 @@ ++ } ++ DO_SYSLOG_FNAME((LOG_INFO, "%s/%s: %ld Bytes, %ld BPS",shortname, ++ protname(), (long) zi->bytes_total,bps)); +++ if (dszlogpath) dszlog(dszlogpath, 'z', zi->bytes_received, +++ zi->fname, bps, errors, 0, 0); ++ } ++ /* FALL THROUGH */ ++ case ZSKIP: ++@@ -1815,6 +1845,8 @@ ++ if (Verbose) ++ vstringf(_("Skipped")); ++ DO_SYSLOG_FNAME((LOG_INFO, "%s/%s: skipped",shortname,protname())); +++ if (dszlogpath) dszlog(dszlogpath, 'E', zi->bytes_received, +++ zi->fname, bps, errors, 0, 0); ++ } ++ switch (tryz()) { ++ case ZCOMPL: ++@@ -1829,6 +1861,8 @@ ++ return c; ++ case ERROR: ++ DO_SYSLOG_FNAME((LOG_INFO, "%s/%s: error",shortname,protname())); +++ if (dszlogpath) dszlog(dszlogpath, 'E', zi->bytes_received, +++ zi->fname, bps, errors, 0, 0); ++ return ERROR; ++ } ++ } ++diff -ur lrzsz-0.12.21/src/lsyslog.c newlrzsz/src/lsyslog.c ++--- lrzsz-0.12.21/src/lsyslog.c 1998-12-29 11:27:55.000000000 -0600 +++++ newlrzsz/src/lsyslog.c 2003-08-21 16:47:53.000000000 -0500 ++@@ -26,6 +26,8 @@ ++ #include ++ #endif ++ +++#include +++ ++ #if __STDC__ ++ # include ++ # define VA_START(args, lastarg) va_start(args, lastarg) ++@@ -79,3 +81,23 @@ ++ #endif ++ } ++ +++void dszlog(char *logname, char status, unsigned long num_bytes, char *fname, +++ int cps, int retry_events, int flow_events, int blocksize) { +++ +++ FILE *mylog; +++ if ((mylog = fopen(logname, "a"))) { +++ fprintf(mylog, "%c %6ld %5ld bps %4ld cps %3d errors %5u %4d %s %ld\r\n", +++ status, +++ num_bytes, +++ cps*8, /* XXX where to get DTE from? */ +++ cps, +++ retry_events, +++ flow_events, /* XXX where is flow_control? */ +++ blocksize, +++ fname, +++ -1 /* serial number */ +++ ); +++ fclose(mylog); +++ } +++} +++ ++diff -ur lrzsz-0.12.21/src/lsz.c newlrzsz/src/lsz.c ++--- lrzsz-0.12.21/src/lsz.c 2003-08-21 16:22:01.000000000 -0500 +++++ newlrzsz/src/lsz.c 2003-08-21 17:02:18.000000000 -0500 ++@@ -59,6 +59,8 @@ ++ extern int errno; ++ #endif ++ +++char *dszlogpath; +++ ++ unsigned Baudrate=2400; /* Default, should be set by first mode() call */ ++ unsigned Txwindow; /* Control the size of the transmitted window */ ++ unsigned Txwspac; /* Spacing between zcrcq requests */ ++@@ -223,6 +225,9 @@ ++ canit(STDOUT_FILENO); ++ fflush (stdout); ++ io_mode (io_mode_fd,0); +++ if (dszlogpath) { +++ dszlog(dszlogpath, 'L', 0, 0, 0, errors, 0, 0); +++ } ++ if (n == 99) ++ error (0, 0, _ ("io_mode(,2) in rbsb.c not implemented\n")); ++ else ++@@ -332,6 +337,14 @@ ++ } ++ if ((cp=getenv("ZMODEM_RESTRICTED"))!=NULL) ++ Restricted=1; +++ +++ dszlogpath = getenv("DSZLOG"); +++ if (access(dszlogpath, F_OK) == 0) { +++ if (unlink(dszlogpath) != 0) { +++ perror("unlink dszlog"); +++ } +++ } +++ ++ from_cu(); ++ chkinvok(argv[0]); ++ ++@@ -1113,6 +1126,12 @@ ++ if (enable_syslog) ++ lsyslog(LOG_INFO, _("%s/%s: error occured"),protname(),shortname); ++ #endif +++ if (dszlogpath) { +++ double d = timing(0,NULL); +++ dszlog(dszlogpath, 'E', zi.bytes_sent, zi.fname, +++ zi.bytes_sent/((d) ? d : 0.5), +++ errors, 0, blklen); +++ } ++ return ERROR; ++ case ZSKIP: ++ error(0,0, _("skipped: %s"),name); ++@@ -1120,6 +1139,13 @@ ++ if (enable_syslog) ++ lsyslog(LOG_INFO, _("%s/%s: skipped"),protname(),shortname); ++ #endif +++ if (dszlogpath) { +++ double d = timing(0,NULL); +++ /* XXX is Zmodem skip really deserving a 'E' ? */ +++ dszlog(dszlogpath, 'E', zi.bytes_sent, zi.fname, +++ zi.bytes_sent/((d) ? d : 0.5), +++ errors, 0, blklen); +++ } ++ return OK; ++ } ++ if (!zmodem_requested && wctx(&zi)==ERROR) ++@@ -1128,12 +1154,18 @@ ++ if (enable_syslog) ++ lsyslog(LOG_INFO, _("%s/%s: error occured"),protname(),shortname); ++ #endif +++ if (dszlogpath) { +++ double d = timing(0,NULL); +++ dszlog(dszlogpath, 'E', zi.bytes_sent, zi.fname, +++ zi.bytes_sent/((d) ? d : 0.5), +++ errors, 0, blklen); +++ } ++ return ERROR; ++ } ++ if (Unlinkafter) ++ unlink(oname); ++ ++- if (Verbose > 1 +++ if (Verbose > 1 || dszlogpath ++ #ifdef ENABLE_SYSLOG ++ || enable_syslog ++ #endif ++@@ -1152,6 +1184,11 @@ ++ lsyslog(LOG_INFO, "%s/%s: %ld Bytes, %ld BPS",shortname, ++ protname(), (long) zi.bytes_sent,bps); ++ #endif +++ if (dszlogpath) { +++ char whichprot = (protocol==ZM_ZMODEM)? 'Z' : 'S'; +++ dszlog(dszlogpath, whichprot, zi.bytes_sent, +++ zi.fname, bps, errors, 0, blklen); +++ } ++ } ++ return 0; ++ } +--- lrzsz-0.12.21.orig/debian/patches/include.diff ++++ lrzsz-0.12.21/debian/patches/include.diff +@@ -0,0 +1,20 @@ ++--- lrzsz-0.12.21.orig/lib/long-options.c +++++ lrzsz-0.12.21/lib/long-options.c ++@@ -22,6 +22,7 @@ ++ #endif ++ ++ #include +++#include ++ #include ++ #include "long-options.h" ++ ++--- lrzsz-0.12.21.orig/src/lsyslog.c +++++ lrzsz-0.12.21/src/lsyslog.c ++@@ -22,6 +22,7 @@ ++ #ifdef ENABLE_SYSLOG ++ #include "zglobal.h" ++ #include +++#include ++ #include ++ #include ++ #endif +--- lrzsz-0.12.21.orig/debian/patches/mantypos.diff ++++ lrzsz-0.12.21/debian/patches/mantypos.diff +@@ -0,0 +1,49 @@ ++--- lrzsz-0.12.21.orig/man/lsz.1 +++++ lrzsz-0.12.21/man/lsz.1 ++@@ -247,7 +247,7 @@ ++ Escape all control characters; ++ normally XON, XOFF, DLE, CR-@-CR, and Ctrl-X are escaped. ++ .TP ++-.B"-E, --rename" +++.B "-E, --rename" ++ Force the sender to rename the new file if a file with the same ++ name already exists. ++ .TP ++@@ -265,7 +265,7 @@ ++ .TP ++ .B "-i COMMAND, --immediate-command COMMAND" ++ Send COMMAND to the receiver for execution, return immediately ++-upon the receiving program's successful recption of the command. +++upon the receiving program's successful reception of the command. ++ .TP ++ .B "-k, --1k" ++ (XMODEM/YMODEM) Send files using 1024 byte blocks ++@@ -509,7 +509,7 @@ ++ .RB ( \-a ) ++ to end of line conventions appropriate to the receiving environment. ++ With ZMODEM AutoDownload enabled, Professional-YAM and ZCOMM ++-will automatically recieve +++will automatically receive ++ the files after performing a security check. ++ ++ .br ++@@ -592,8 +592,8 @@ ++ the source file. ++ .SH "VMS VERSION" ++ The VMS version does not support wild cards. ++-Because of VMS DCL, upper case option letters muse be represented ++-by \\ proceding the letter. +++Because of VMS DCL, upper case option letters must be represented +++by \\ preceding the letter. ++ ++ The current VMS version does not support XMODEM, XMODEM-1k, or YMODEM. ++ ++@@ -682,7 +682,7 @@ ++ The test mode leaves a zero length file on the receiving system. ++ ++ A few high speed modems have a firmware bug that drops characters when the ++-direction of high speed transmissson is reversed. +++direction of high speed transmission is reversed. ++ The environment variable ZNULLS may be used to specify the number of nulls to ++ send before a ZDATA frame. ++ Values of 101 for a 4.77 mHz PC and 124 for an AT are typical. +--- lrzsz-0.12.21.orig/debian/patches/strstr.diff ++++ lrzsz-0.12.21/debian/patches/strstr.diff +@@ -0,0 +1,20 @@ ++--- lrzsz-0.12.21.orig/src/lrz.c +++++ lrzsz-0.12.21/src/lrz.c ++@@ -44,7 +44,6 @@ ++ #ifndef STRICT_PROTOTYPES ++ extern time_t time(); ++ extern char *strerror(); ++-extern char *strstr(); ++ #endif ++ ++ #ifndef HAVE_ERRNO_DECLARATION ++--- lrzsz-0.12.21.orig/src/lsz.c +++++ lrzsz-0.12.21/src/lsz.c ++@@ -53,7 +53,6 @@ ++ #ifndef STRICT_PROTOTYPES ++ extern time_t time(); ++ extern char *strerror(); ++-extern char *strstr(); ++ #endif ++ ++ #ifndef HAVE_ERRNO_DECLARATION +--- lrzsz-0.12.21.orig/debian/patches/build.diff ++++ lrzsz-0.12.21/debian/patches/build.diff +@@ -0,0 +1,2115 @@ ++--- lrzsz-0.12.21.orig/Makefile.in +++++ lrzsz-0.12.21/Makefile.in ++@@ -1,4 +1,4 @@ ++-# Makefile.in generated automatically by automake 1.4a from Makefile.am +++# Makefile.in generated automatically by automake 1.4 from Makefile.am ++ ++ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++ # This Makefile.in is free software; the Free Software Foundation ++@@ -46,10 +46,9 @@ ++ AUTOHEADER = @AUTOHEADER@ ++ ++ INSTALL = @INSTALL@ ++-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ++ INSTALL_DATA = @INSTALL_DATA@ ++ INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++-INSTALL_STRIP_FLAG = ++ transform = @program_transform_name@ ++ ++ NORMAL_INSTALL = : ++@@ -106,13 +105,13 @@ ++ ++ DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ ++ INSTALL Makefile.am Makefile.in NEWS Specfile.in THANKS TODO acconfig.h \ ++-acinclude.m4 aclocal.m4 config.guess config.h.in configure configure.in \ ++-install-sh missing mkinstalldirs systype.in +++acinclude.m4 aclocal.m4 config.guess config.h.in config.sub configure \ +++configure.in install-sh missing mkinstalldirs systype.in ++ ++ ++ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ++ ++-TAR = gtar +++TAR = tar ++ GZIP_ENV = --best ++ all: all-redirect ++ .SUFFIXES: ++@@ -298,7 +297,7 @@ ++ @for file in $(DISTFILES); do \ ++ d=$(srcdir); \ ++ if test -d $$d/$$file; then \ ++- cp -pr $$d/$$file $(distdir)/$$file; \ +++ cp -pr $$/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++@@ -340,7 +339,7 @@ ++ all-am: Makefile $(SCRIPTS) config.h ++ all-redirect: all-recursive-am ++ install-strip: ++- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install +++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++ installdirs: installdirs-recursive ++ installdirs-am: ++ ++--- lrzsz-0.12.21.orig/aclocal.m4 +++++ lrzsz-0.12.21/aclocal.m4 ++@@ -1,4 +1,4 @@ ++-dnl aclocal.m4 generated automatically by aclocal 1.4a +++dnl aclocal.m4 generated automatically by aclocal 1.4 ++ ++ dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++ dnl This file is free software; the Free Software Foundation ++@@ -117,8 +117,6 @@ ++ ++ AC_DEFUN(AM_INIT_AUTOMAKE, ++ [AC_REQUIRE([AC_PROG_INSTALL]) ++-dnl We require 2.13 because we rely on SHELL being computed by configure. ++-AC_PREREQ([2.13]) ++ PACKAGE=[$1] ++ AC_SUBST(PACKAGE) ++ VERSION=[$2] ++--- lrzsz-0.12.21.orig/configure +++++ lrzsz-0.12.21/configure ++@@ -703,7 +703,6 @@ ++ fi ++ ++ ++- ++ PACKAGE=lrzsz ++ ++ VERSION=0.12.21rc ++@@ -723,7 +722,7 @@ ++ ++ missing_dir=`cd $ac_aux_dir && pwd` ++ echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ++-echo "configure:727: checking for working aclocal" >&5 +++echo "configure:726: checking for working aclocal" >&5 ++ # Run test in a subshell; some versions of sh will print an error if ++ # an executable is not found, even if stderr is redirected. ++ # Redirect stdin to placate older versions of autoconf. Sigh. ++@@ -736,7 +735,7 @@ ++ fi ++ ++ echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ++-echo "configure:740: checking for working autoconf" >&5 +++echo "configure:739: checking for working autoconf" >&5 ++ # Run test in a subshell; some versions of sh will print an error if ++ # an executable is not found, even if stderr is redirected. ++ # Redirect stdin to placate older versions of autoconf. Sigh. ++@@ -749,7 +748,7 @@ ++ fi ++ ++ echo $ac_n "checking for working automake""... $ac_c" 1>&6 ++-echo "configure:753: checking for working automake" >&5 +++echo "configure:752: checking for working automake" >&5 ++ # Run test in a subshell; some versions of sh will print an error if ++ # an executable is not found, even if stderr is redirected. ++ # Redirect stdin to placate older versions of autoconf. Sigh. ++@@ -762,7 +761,7 @@ ++ fi ++ ++ echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ++-echo "configure:766: checking for working autoheader" >&5 +++echo "configure:765: checking for working autoheader" >&5 ++ # Run test in a subshell; some versions of sh will print an error if ++ # an executable is not found, even if stderr is redirected. ++ # Redirect stdin to placate older versions of autoconf. Sigh. ++@@ -775,7 +774,7 @@ ++ fi ++ ++ echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ++-echo "configure:779: checking for working makeinfo" >&5 +++echo "configure:778: checking for working makeinfo" >&5 ++ # Run test in a subshell; some versions of sh will print an error if ++ # an executable is not found, even if stderr is redirected. ++ # Redirect stdin to placate older versions of autoconf. Sigh. ++@@ -926,7 +925,7 @@ ++ # Extract the first word of "gcc", so it can be a program name with args. ++ set dummy gcc; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:930: checking for $ac_word" >&5 +++echo "configure:929: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -956,7 +955,7 @@ ++ # Extract the first word of "cc", so it can be a program name with args. ++ set dummy cc; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:960: checking for $ac_word" >&5 +++echo "configure:959: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -1007,7 +1006,7 @@ ++ # Extract the first word of "cl", so it can be a program name with args. ++ set dummy cl; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:1011: checking for $ac_word" >&5 +++echo "configure:1010: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -1039,7 +1038,7 @@ ++ fi ++ ++ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ++-echo "configure:1043: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +++echo "configure:1042: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ++ ++ ac_ext=c ++ # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ++@@ -1050,12 +1049,12 @@ ++ ++ cat > conftest.$ac_ext << EOF ++ ++-#line 1054 "configure" +++#line 1053 "configure" ++ #include "confdefs.h" ++ ++ main(){return(0);} ++ EOF ++-if { (eval echo configure:1059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:1058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ ac_cv_prog_cc_works=yes ++ # If we can't run a trivial program, we are probably using a cross compiler. ++ if (./conftest; exit) 2>/dev/null; then ++@@ -1081,12 +1080,12 @@ ++ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } ++ fi ++ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ++-echo "configure:1085: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +++echo "configure:1084: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 ++ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 ++ cross_compiling=$ac_cv_prog_cc_cross ++ ++ echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ++-echo "configure:1090: checking whether we are using GNU C" >&5 +++echo "configure:1089: checking whether we are using GNU C" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -1095,7 +1094,7 @@ ++ yes; ++ #endif ++ EOF ++-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ++ ac_cv_prog_gcc=yes ++ else ++ ac_cv_prog_gcc=no ++@@ -1114,7 +1113,7 @@ ++ ac_save_CFLAGS="$CFLAGS" ++ CFLAGS= ++ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ++-echo "configure:1118: checking whether ${CC-cc} accepts -g" >&5 +++echo "configure:1117: checking whether ${CC-cc} accepts -g" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -1146,7 +1145,7 @@ ++ fi ++ ++ echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ++-echo "configure:1150: checking how to run the C preprocessor" >&5 +++echo "configure:1149: checking how to run the C preprocessor" >&5 ++ # On Suns, sometimes $CPP names a directory. ++ if test -n "$CPP" && test -d "$CPP"; then ++ CPP= ++@@ -1161,13 +1160,13 @@ ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. ++ cat > conftest.$ac_ext < ++ Syntax Error ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ : ++@@ -1178,13 +1177,13 @@ ++ rm -rf conftest* ++ CPP="${CC-cc} -E -traditional-cpp" ++ cat > conftest.$ac_ext < ++ Syntax Error ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ : ++@@ -1195,13 +1194,13 @@ ++ rm -rf conftest* ++ CPP="${CC-cc} -nologo -E" ++ cat > conftest.$ac_ext < ++ Syntax Error ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ : ++@@ -1235,13 +1234,13 @@ ++ fi ++ if test $ac_cv_prog_gcc = yes; then ++ echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 ++-echo "configure:1239: checking whether ${CC-cc} needs -traditional" >&5 +++echo "configure:1238: checking whether ${CC-cc} needs -traditional" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ ac_pattern="Autoconf.*'x'" ++ cat > conftest.$ac_ext < ++ Autoconf TIOCGETP ++@@ -1259,7 +1258,7 @@ ++ ++ if test $ac_cv_prog_gcc_traditional = no; then ++ cat > conftest.$ac_ext < ++ Autoconf TCGETA ++@@ -1283,7 +1282,7 @@ ++ # Extract the first word of "ranlib", so it can be a program name with args. ++ set dummy ranlib; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:1287: checking for $ac_word" >&5 +++echo "configure:1286: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -1311,7 +1310,7 @@ ++ fi ++ ++ echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 ++-echo "configure:1315: checking for POSIXized ISC" >&5 +++echo "configure:1314: checking for POSIXized ISC" >&5 ++ if test -d /etc/conf/kconfig.d && ++ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 ++ then ++@@ -1332,9 +1331,9 @@ ++ fi ++ ++ echo $ac_n "checking for AIX""... $ac_c" 1>&6 ++-echo "configure:1336: checking for AIX" >&5 +++echo "configure:1335: checking for AIX" >&5 ++ cat > conftest.$ac_ext <&6 ++-echo "configure:1361: checking for minix/config.h" >&5 +++echo "configure:1360: checking for minix/config.h" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -1408,7 +1407,7 @@ ++ ++ ++ echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 ++-echo "configure:1412: checking for ${CC-cc} option to accept ANSI C" >&5 +++echo "configure:1411: checking for ${CC-cc} option to accept ANSI C" >&5 ++ if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -1424,7 +1423,7 @@ ++ do ++ CC="$ac_save_CC $ac_arg" ++ cat > conftest.$ac_ext < ++ #include ++@@ -1461,7 +1460,7 @@ ++ ++ ; return 0; } ++ EOF ++-if { (eval echo configure:1465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:1464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ am_cv_prog_cc_stdc="$ac_arg"; break ++ else ++@@ -1487,7 +1486,7 @@ ++ ++ ++ echo $ac_n "checking for function prototypes""... $ac_c" 1>&6 ++-echo "configure:1491: checking for function prototypes" >&5 +++echo "configure:1490: checking for function prototypes" >&5 ++ if test "$am_cv_prog_cc_stdc" != no; then ++ echo "$ac_t""yes" 1>&6 ++ cat >> confdefs.h <<\EOF ++@@ -1500,12 +1499,12 @@ ++ U=_ ANSI2KNR=./ansi2knr ++ # Ensure some checks needed by ansi2knr itself. ++ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ++-echo "configure:1504: checking for ANSI C header files" >&5 +++echo "configure:1503: checking for ANSI C header files" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -1513,7 +1512,7 @@ ++ #include ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -1530,7 +1529,7 @@ ++ if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat > conftest.$ac_ext < ++ EOF ++@@ -1548,7 +1547,7 @@ ++ if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat > conftest.$ac_ext < ++ EOF ++@@ -1569,7 +1568,7 @@ ++ : ++ else ++ cat > conftest.$ac_ext < ++ #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++@@ -1580,7 +1579,7 @@ ++ exit (0); } ++ ++ EOF ++-if { (eval echo configure:1584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +++if { (eval echo configure:1583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ++ then ++ : ++ else ++@@ -1607,17 +1606,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:1611: checking for $ac_hdr" >&5 +++echo "configure:1610: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1621: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -1646,12 +1645,12 @@ ++ fi ++ ++ echo $ac_n "checking for working const""... $ac_c" 1>&6 ++-echo "configure:1650: checking for working const" >&5 +++echo "configure:1649: checking for working const" >&5 ++ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:1703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_c_const=yes ++ else ++@@ -1721,21 +1720,21 @@ ++ fi ++ ++ echo $ac_n "checking for inline""... $ac_c" 1>&6 ++-echo "configure:1725: checking for inline" >&5 +++echo "configure:1724: checking for inline" >&5 ++ if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ ac_cv_c_inline=no ++ for ac_kw in inline __inline__ __inline; do ++ cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:1738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_c_inline=$ac_kw; break ++ else ++@@ -1786,7 +1785,7 @@ ++ esac ++ ++ echo $ac_n "checking for syslog in -lsocket""... $ac_c" 1>&6 ++-echo "configure:1790: checking for syslog in -lsocket" >&5 +++echo "configure:1789: checking for syslog in -lsocket" >&5 ++ ac_lib_var=`echo socket'_'syslog | sed 'y%./+-%__p_%'` ++ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++@@ -1794,7 +1793,7 @@ ++ ac_save_LIBS="$LIBS" ++ LIBS="-lsocket $LIBS" ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:1808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++ else ++@@ -1832,108 +1831,14 @@ ++ echo "$ac_t""no" 1>&6 ++ fi ++ ++-echo $ac_n "checking for syslog in -lbe""... $ac_c" 1>&6 ++-echo "configure:1837: checking for syslog in -lbe" >&5 ++-ac_lib_var=`echo be'_'syslog | sed 'y%./+-%__p_%'` ++-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++- echo $ac_n "(cached) $ac_c" 1>&6 ++-else ++- ac_save_LIBS="$LIBS" ++-LIBS="-lbe $LIBS" ++-cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++- rm -rf conftest* ++- eval "ac_cv_lib_$ac_lib_var=yes" ++-else ++- echo "configure: failed program was:" >&5 ++- cat conftest.$ac_ext >&5 ++- rm -rf conftest* ++- eval "ac_cv_lib_$ac_lib_var=no" ++-fi ++-rm -f conftest* ++-LIBS="$ac_save_LIBS" ++- ++-fi ++-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++- echo "$ac_t""yes" 1>&6 ++- ac_tr_lib=HAVE_LIB`echo be | sed -e 's/[^a-zA-Z0-9_]/_/g' \ ++- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` ++- cat >> confdefs.h <&6 ++-fi ++- ++-echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 ++-echo "configure:1884: checking for gethostbyname in -lnsl" >&5 ++-ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` ++-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++- echo $ac_n "(cached) $ac_c" 1>&6 ++-else ++- ac_save_LIBS="$LIBS" ++-LIBS="-lnsl $LIBS" ++-cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++- rm -rf conftest* ++- eval "ac_cv_lib_$ac_lib_var=yes" ++-else ++- echo "configure: failed program was:" >&5 ++- cat conftest.$ac_ext >&5 ++- rm -rf conftest* ++- eval "ac_cv_lib_$ac_lib_var=no" ++-fi ++-rm -f conftest* ++-LIBS="$ac_save_LIBS" ++- ++-fi ++-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++- echo "$ac_t""yes" 1>&6 ++- ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \ ++- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` ++- cat >> confdefs.h <&6 ++-fi ++- ++ ++ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ++-echo "configure:1932: checking for ANSI C header files" >&5 +++echo "configure:1931: checking for ANSI C header files" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -1941,7 +1846,7 @@ ++ #include ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:1944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -1958,7 +1863,7 @@ ++ if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat > conftest.$ac_ext < ++ EOF ++@@ -1976,7 +1881,7 @@ ++ if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat > conftest.$ac_ext < ++ EOF ++@@ -1997,7 +1902,7 @@ ++ : ++ else ++ cat > conftest.$ac_ext < ++ #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++@@ -2008,7 +1913,7 @@ ++ exit (0); } ++ ++ EOF ++-if { (eval echo configure:2012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +++if { (eval echo configure:2011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ++ then ++ : ++ else ++@@ -2035,17 +1940,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:2039: checking for $ac_hdr" >&5 +++echo "configure:2038: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:2049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:2048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -2076,17 +1981,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:2080: checking for $ac_hdr" >&5 +++echo "configure:2079: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:2090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:2089: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -2116,17 +2021,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:2120: checking for $ac_hdr" >&5 +++echo "configure:2119: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:2130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:2129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -2156,17 +2061,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:2160: checking for $ac_hdr" >&5 +++echo "configure:2159: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:2170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:2169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -2196,17 +2101,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:2200: checking for $ac_hdr" >&5 +++echo "configure:2199: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:2210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:2209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -2234,12 +2139,12 @@ ++ ++ ++ echo $ac_n "checking for size_t""... $ac_c" 1>&6 ++-echo "configure:2238: checking for size_t" >&5 +++echo "configure:2237: checking for size_t" >&5 ++ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #if STDC_HEADERS ++@@ -2267,12 +2172,12 @@ ++ fi ++ ++ echo $ac_n "checking for mode_t""... $ac_c" 1>&6 ++-echo "configure:2271: checking for mode_t" >&5 +++echo "configure:2270: checking for mode_t" >&5 ++ if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #if STDC_HEADERS ++@@ -2300,12 +2205,12 @@ ++ fi ++ ++ echo $ac_n "checking for off_t""... $ac_c" 1>&6 ++-echo "configure:2304: checking for off_t" >&5 +++echo "configure:2303: checking for off_t" >&5 ++ if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #if STDC_HEADERS ++@@ -2334,12 +2239,12 @@ ++ ++ ++ echo $ac_n "checking for speed_t""... $ac_c" 1>&6 ++-echo "configure:2338: checking for speed_t" >&5 +++echo "configure:2337: checking for speed_t" >&5 ++ if eval "test \"`echo '$''{'ac_cv_type_speed_t'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #if STDC_HEADERS ++@@ -2389,12 +2294,12 @@ ++ fi ++ ++ echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6 ++-echo "configure:2393: checking for st_rdev in struct stat" >&5 +++echo "configure:2392: checking for st_rdev in struct stat" >&5 ++ if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -2402,7 +2307,7 @@ ++ struct stat s; s.st_rdev; ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_struct_st_rdev=yes ++ else ++@@ -2423,12 +2328,12 @@ ++ fi ++ ++ echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 ++-echo "configure:2427: checking whether time.h and sys/time.h may both be included" >&5 +++echo "configure:2426: checking whether time.h and sys/time.h may both be included" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -2437,7 +2342,7 @@ ++ struct tm *tp; ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_header_time=yes ++ else ++@@ -2459,12 +2364,12 @@ ++ ++ ++ echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 ++-echo "configure:2463: checking for socklen_t" >&5 +++echo "configure:2462: checking for socklen_t" >&5 ++ if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_type_socklen_t=yes ++ else ++@@ -2505,12 +2410,12 @@ ++ fi ++ ++ echo $ac_n "checking whether sys/time.h and sys/select.h may both be included""... $ac_c" 1>&6 ++-echo "configure:2509: checking whether sys/time.h and sys/select.h may both be included" >&5 +++echo "configure:2508: checking whether sys/time.h and sys/select.h may both be included" >&5 ++ if eval "test \"`echo '$''{'lrzsz_cv_header_sys_select'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -2519,7 +2424,7 @@ ++ struct tm *tp; ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ lrzsz_cv_header_sys_select=yes ++ else ++@@ -2540,12 +2445,12 @@ ++ fi ++ ++ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 ++-echo "configure:2544: checking whether struct tm is in sys/time.h or time.h" >&5 +++echo "configure:2543: checking whether struct tm is in sys/time.h or time.h" >&5 ++ if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -2553,7 +2458,7 @@ ++ struct tm *tp; tp->tm_sec; ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_struct_tm=time.h ++ else ++@@ -2575,19 +2480,19 @@ ++ ++ ++ echo $ac_n "checking for errno declaration""... $ac_c" 1>&6 ++-echo "configure:2579: checking for errno declaration" >&5 +++echo "configure:2578: checking for errno declaration" >&5 ++ if eval "test \"`echo '$''{'lrzsz_cv_decl_errno'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ int main() { ++ int i = errno; errno = 1; ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ lrzsz_cv_decl_errno=yes ++ else ++@@ -2610,7 +2515,7 @@ ++ ++ if test $cross_compiling = no ; then ++ echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6 ++-echo "configure:2614: checking whether setvbuf arguments are reversed" >&5 +++echo "configure:2613: checking whether setvbuf arguments are reversed" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -2618,7 +2523,7 @@ ++ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } ++ else ++ cat > conftest.$ac_ext < ++ /* If setvbuf has the reversed format, exit 0. */ ++@@ -2632,7 +2537,7 @@ ++ exit(0); /* Non-reversed systems segv here. */ ++ } ++ EOF ++-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +++if { (eval echo configure:2635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ++ then ++ ac_cv_func_setvbuf_reversed=yes ++ else ++@@ -2657,12 +2562,12 @@ ++ ++ fi ++ echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 ++-echo "configure:2661: checking return type of signal handlers" >&5 +++echo "configure:2660: checking return type of signal handlers" >&5 ++ if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ #include ++@@ -2679,7 +2584,7 @@ ++ int i; ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +++if { (eval echo configure:2682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ rm -rf conftest* ++ ac_cv_type_signal=void ++ else ++@@ -2701,17 +2606,17 @@ ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++-echo "configure:2705: checking for $ac_hdr" >&5 +++echo "configure:2704: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:2715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -2740,12 +2645,12 @@ ++ for ac_func in getpagesize ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:2744: checking for $ac_func" >&5 +++echo "configure:2743: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:2771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -2793,7 +2698,7 @@ ++ done ++ ++ echo $ac_n "checking for working mmap""... $ac_c" 1>&6 ++-echo "configure:2797: checking for working mmap" >&5 +++echo "configure:2796: checking for working mmap" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -2801,7 +2706,7 @@ ++ ac_cv_func_mmap_fixed_mapped=no ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +++if { (eval echo configure:2944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ++ then ++ ac_cv_func_mmap_fixed_mapped=yes ++ else ++@@ -2966,19 +2871,19 @@ ++ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works ++ # for constant arguments. Useless! ++ echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ++-echo "configure:2970: checking for working alloca.h" >&5 +++echo "configure:2969: checking for working alloca.h" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ int main() { ++ char *p = alloca(2 * sizeof(int)); ++ ; return 0; } ++ EOF ++-if { (eval echo configure:2982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:2981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ ac_cv_header_alloca_h=yes ++ else ++@@ -2999,12 +2904,12 @@ ++ fi ++ ++ echo $ac_n "checking for alloca""... $ac_c" 1>&6 ++-echo "configure:3003: checking for alloca" >&5 +++echo "configure:3002: checking for alloca" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ ac_cv_func_alloca_works=yes ++ else ++@@ -3064,12 +2969,12 @@ ++ ++ ++ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 ++-echo "configure:3068: checking whether alloca needs Cray hooks" >&5 +++echo "configure:3067: checking whether alloca needs Cray hooks" >&5 ++ if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&6 ++-echo "configure:3098: checking for $ac_func" >&5 +++echo "configure:3097: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3149,7 +3054,7 @@ ++ fi ++ ++ echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ++-echo "configure:3153: checking stack direction for C alloca" >&5 +++echo "configure:3152: checking stack direction for C alloca" >&5 ++ if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -3157,7 +3062,7 @@ ++ ac_cv_c_stack_direction=0 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +++if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ++ then ++ ac_cv_c_stack_direction=1 ++ else ++@@ -3198,7 +3103,7 @@ ++ fi ++ ++ cat > conftest.$ac_ext < ++ EOF ++@@ -3216,12 +3121,12 @@ ++ for ac_func in gettimeofday settimeofday ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3220: checking for $ac_func" >&5 +++echo "configure:3219: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3271,12 +3176,12 @@ ++ for ac_func in strchr memcpy select vprintf ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3275: checking for $ac_func" >&5 +++echo "configure:3274: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3326,12 +3231,12 @@ ++ for ac_func in times rdchk utime syslog siginterrupt ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3330: checking for $ac_func" >&5 +++echo "configure:3329: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3381,12 +3286,12 @@ ++ for ac_func in mkdir mktime strerror strstr strdup strtoul strtol strpbrk ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3385: checking for $ac_func" >&5 +++echo "configure:3384: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3438,12 +3343,12 @@ ++ for ac_func in stpcpy strftime vasprintf ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3442: checking for $ac_func" >&5 +++echo "configure:3441: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3494,12 +3399,12 @@ ++ ++ ++ echo $ac_n "checking for getopt_long""... $ac_c" 1>&6 ++-echo "configure:3498: checking for getopt_long" >&5 +++echo "configure:3497: checking for getopt_long" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_getopt_long'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_getopt_long=yes" ++ else ++@@ -3552,12 +3457,12 @@ ++ ++ ++ echo $ac_n "checking for ftime""... $ac_c" 1>&6 ++-echo "configure:3556: checking for ftime" >&5 +++echo "configure:3555: checking for ftime" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_ftime'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_ftime=yes" ++ else ++@@ -3595,7 +3500,7 @@ ++ if eval "test \"`echo '$ac_cv_func_'ftime`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ echo $ac_n "checking that ftime works correctly""... $ac_c" 1>&6 ++-echo "configure:3599: checking that ftime works correctly" >&5 +++echo "configure:3598: checking that ftime works correctly" >&5 ++ if eval "test \"`echo '$''{'lrzsz_cv_sys_ftime_ok'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -3603,7 +3508,7 @@ ++ lrzsz_cv_sys_ftime_ok=runtime ++ else ++ cat > conftest.$ac_ext < ++@@ -3632,7 +3537,7 @@ ++ } ++ ++ EOF ++-if { (eval echo configure:3636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +++if { (eval echo configure:3635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ++ then ++ lrzsz_cv_sys_ftime_ok=yes ++ else ++@@ -3666,20 +3571,20 @@ ++ ++ ++ echo $ac_n "checking for timezone variable""... $ac_c" 1>&6 ++-echo "configure:3670: checking for timezone variable" >&5 +++echo "configure:3669: checking for timezone variable" >&5 ++ if eval "test \"`echo '$''{'libquark_cv_var_timezone'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ ++ cat > conftest.$ac_ext < ++ int main() { ++ return(int)(timezone/2); ++ ; return 0; } ++ EOF ++-if { (eval echo configure:3683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ libquark_cv_var_timezone=yes ++ else ++@@ -3705,13 +3610,13 @@ ++ : ++ else ++ echo $ac_n "checking for $lookup_facility""... $ac_c" 1>&6 ++-echo "configure:3709: checking for $lookup_facility" >&5 +++echo "configure:3708: checking for $lookup_facility" >&5 ++ if eval "test \"`echo '$''{'lrzsz_cv_lookup_facility'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ ++ cat > conftest.$ac_ext <&6 ++-echo "configure:3767: checking for $ac_hdr" >&5 +++echo "configure:3766: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:3777: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:3776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -3803,12 +3708,12 @@ ++ strdup __argz_count __argz_stringify __argz_next ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3807: checking for $ac_func" >&5 +++echo "configure:3806: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3860,12 +3765,12 @@ ++ for ac_func in stpcpy ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:3864: checking for $ac_func" >&5 +++echo "configure:3863: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -3922,19 +3827,19 @@ ++ ++ if test $ac_cv_header_locale_h = yes; then ++ echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 ++-echo "configure:3926: checking for LC_MESSAGES" >&5 +++echo "configure:3925: checking for LC_MESSAGES" >&5 ++ if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ int main() { ++ return LC_MESSAGES ++ ; return 0; } ++ EOF ++-if { (eval echo configure:3938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:3937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ am_cv_val_LC_MESSAGES=yes ++ else ++@@ -3955,7 +3860,7 @@ ++ fi ++ fi ++ echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 ++-echo "configure:3959: checking whether NLS is requested" >&5 +++echo "configure:3958: checking whether NLS is requested" >&5 ++ # Check whether --enable-nls or --disable-nls was given. ++ if test "${enable_nls+set}" = set; then ++ enableval="$enable_nls" ++@@ -3975,7 +3880,7 @@ ++ EOF ++ ++ echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 ++-echo "configure:3979: checking whether included gettext is requested" >&5 +++echo "configure:3978: checking whether included gettext is requested" >&5 ++ # Check whether --with-included-gettext or --without-included-gettext was given. ++ if test "${with_included_gettext+set}" = set; then ++ withval="$with_included_gettext" ++@@ -3994,17 +3899,17 @@ ++ ++ ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 ++-echo "configure:3998: checking for libintl.h" >&5 +++echo "configure:3997: checking for libintl.h" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:4008: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:4007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++@@ -4021,19 +3926,19 @@ ++ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 ++-echo "configure:4025: checking for gettext in libc" >&5 +++echo "configure:4024: checking for gettext in libc" >&5 ++ if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ int main() { ++ return (int) gettext ("") ++ ; return 0; } ++ EOF ++-if { (eval echo configure:4037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ gt_cv_func_gettext_libc=yes ++ else ++@@ -4049,7 +3954,7 @@ ++ ++ if test "$gt_cv_func_gettext_libc" != "yes"; then ++ echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 ++-echo "configure:4053: checking for bindtextdomain in -lintl" >&5 +++echo "configure:4052: checking for bindtextdomain in -lintl" >&5 ++ ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` ++ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++@@ -4057,7 +3962,7 @@ ++ ac_save_LIBS="$LIBS" ++ LIBS="-lintl $LIBS" ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++ else ++@@ -4084,12 +3989,12 @@ ++ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 ++-echo "configure:4088: checking for gettext in libintl" >&5 +++echo "configure:4087: checking for gettext in libintl" >&5 ++ if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 ++-echo "configure:4093: checking for gettext in -lintl" >&5 +++echo "configure:4092: checking for gettext in -lintl" >&5 ++ ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` ++ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++@@ -4097,7 +4002,7 @@ ++ ac_save_LIBS="$LIBS" ++ LIBS="-lintl $LIBS" ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++ else ++@@ -4147,7 +4052,7 @@ ++ # Extract the first word of "msgfmt", so it can be a program name with args. ++ set dummy msgfmt; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4151: checking for $ac_word" >&5 +++echo "configure:4150: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4181,12 +4086,12 @@ ++ for ac_func in dcgettext ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++-echo "configure:4185: checking for $ac_func" >&5 +++echo "configure:4184: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++@@ -4236,7 +4141,7 @@ ++ # Extract the first word of "gmsgfmt", so it can be a program name with args. ++ set dummy gmsgfmt; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4240: checking for $ac_word" >&5 +++echo "configure:4239: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4272,7 +4177,7 @@ ++ # Extract the first word of "xgettext", so it can be a program name with args. ++ set dummy xgettext; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4276: checking for $ac_word" >&5 +++echo "configure:4275: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4304,7 +4209,7 @@ ++ fi ++ ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ CATOBJEXT=.gmo ++ DATADIRNAME=share ++@@ -4335,7 +4240,7 @@ ++ ++ if test "$CATOBJEXT" = "NONE"; then ++ echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 ++-echo "configure:4339: checking whether catgets can be used" >&5 +++echo "configure:4338: checking whether catgets can be used" >&5 ++ # Check whether --with-catgets or --without-catgets was given. ++ if test "${with_catgets+set}" = set; then ++ withval="$with_catgets" ++@@ -4348,7 +4253,7 @@ ++ ++ if test "$nls_cv_use_catgets" = "yes"; then ++ echo $ac_n "checking for main in -li""... $ac_c" 1>&6 ++-echo "configure:4352: checking for main in -li" >&5 +++echo "configure:4351: checking for main in -li" >&5 ++ ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` ++ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++@@ -4356,14 +4261,14 @@ ++ ac_save_LIBS="$LIBS" ++ LIBS="-li $LIBS" ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++ else ++@@ -4391,12 +4296,12 @@ ++ fi ++ ++ echo $ac_n "checking for catgets""... $ac_c" 1>&6 ++-echo "configure:4395: checking for catgets" >&5 +++echo "configure:4394: checking for catgets" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +++if { (eval echo configure:4422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_catgets=yes" ++ else ++@@ -4441,7 +4346,7 @@ ++ # Extract the first word of "gencat", so it can be a program name with args. ++ set dummy gencat; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4445: checking for $ac_word" >&5 +++echo "configure:4444: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4477,7 +4382,7 @@ ++ # Extract the first word of "gmsgfmt", so it can be a program name with args. ++ set dummy gmsgfmt; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4481: checking for $ac_word" >&5 +++echo "configure:4480: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4514,7 +4419,7 @@ ++ # Extract the first word of "msgfmt", so it can be a program name with args. ++ set dummy msgfmt; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4518: checking for $ac_word" >&5 +++echo "configure:4517: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4549,7 +4454,7 @@ ++ # Extract the first word of "xgettext", so it can be a program name with args. ++ set dummy xgettext; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4553: checking for $ac_word" >&5 +++echo "configure:4552: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4607,7 +4512,7 @@ ++ # Extract the first word of "msgfmt", so it can be a program name with args. ++ set dummy msgfmt; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4611: checking for $ac_word" >&5 +++echo "configure:4610: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4641,7 +4546,7 @@ ++ # Extract the first word of "gmsgfmt", so it can be a program name with args. ++ set dummy gmsgfmt; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4645: checking for $ac_word" >&5 +++echo "configure:4644: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4677,7 +4582,7 @@ ++ # Extract the first word of "xgettext", so it can be a program name with args. ++ set dummy xgettext; ac_word=$2 ++ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ++-echo "configure:4681: checking for $ac_word" >&5 +++echo "configure:4680: checking for $ac_word" >&5 ++ if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++@@ -4770,7 +4675,7 @@ ++ LINGUAS= ++ else ++ echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 ++-echo "configure:4774: checking for catalogs to be installed" >&5 +++echo "configure:4773: checking for catalogs to be installed" >&5 ++ NEW_LINGUAS= ++ for lang in ${LINGUAS=$ALL_LINGUAS}; do ++ case "$ALL_LINGUAS" in ++@@ -4798,17 +4703,17 @@ ++ if test "$CATOBJEXT" = ".cat"; then ++ ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 ++-echo "configure:4802: checking for linux/version.h" >&5 +++echo "configure:4801: checking for linux/version.h" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++-{ (eval echo configure:4812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +++{ (eval echo configure:4811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++--- lrzsz-0.12.21.orig/lib/Makefile.in +++++ lrzsz-0.12.21/lib/Makefile.in ++@@ -1,4 +1,4 @@ ++-# Makefile.in generated automatically by automake 1.4a from Makefile.am +++# Makefile.in generated automatically by automake 1.4 from Makefile.am ++ ++ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++ # This Makefile.in is free software; the Free Software Foundation ++@@ -46,10 +46,9 @@ ++ AUTOHEADER = @AUTOHEADER@ ++ ++ INSTALL = @INSTALL@ ++-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ++ INSTALL_DATA = @INSTALL_DATA@ ++ INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++-INSTALL_STRIP_FLAG = ++ transform = @program_transform_name@ ++ ++ NORMAL_INSTALL = : ++@@ -127,7 +126,7 @@ ++ ++ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ++ ++-TAR = gtar +++TAR = tar ++ GZIP_ENV = --best ++ DEP_FILES = .deps/alloca.P .deps/error.P .deps/getopt.P .deps/getopt1.P \ ++ .deps/long-options.P .deps/mkdir.P .deps/mktime.P .deps/stpcpy.P \ ++@@ -282,7 +281,7 @@ ++ @for file in $(DISTFILES); do \ ++ d=$(srcdir); \ ++ if test -d $$d/$$file; then \ ++- cp -pr $$d/$$file $(distdir)/$$file; \ +++ cp -pr $$/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++@@ -343,7 +342,7 @@ ++ all-am: Makefile $(ANSI2KNR) $(LIBRARIES) $(HEADERS) ++ all-redirect: all-am ++ install-strip: ++- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install +++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++ installdirs: ++ ++ ++--- lrzsz-0.12.21.orig/man/Makefile.in +++++ lrzsz-0.12.21/man/Makefile.in ++@@ -1,4 +1,4 @@ ++-# Makefile.in generated automatically by automake 1.4a from Makefile.am +++# Makefile.in generated automatically by automake 1.4 from Makefile.am ++ ++ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++ # This Makefile.in is free software; the Free Software Foundation ++@@ -46,10 +46,9 @@ ++ AUTOHEADER = @AUTOHEADER@ ++ ++ INSTALL = @INSTALL@ ++-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ++ INSTALL_DATA = @INSTALL_DATA@ ++ INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++-INSTALL_STRIP_FLAG = ++ transform = @program_transform_name@ ++ ++ NORMAL_INSTALL = : ++@@ -106,7 +105,7 @@ ++ ++ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ++ ++-TAR = gtar +++TAR = tar ++ GZIP_ENV = --best ++ all: all-redirect ++ .SUFFIXES: ++@@ -173,7 +172,7 @@ ++ @for file in $(DISTFILES); do \ ++ d=$(srcdir); \ ++ if test -d $$d/$$file; then \ ++- cp -pr $$d/$$file $(distdir)/$$file; \ +++ cp -pr $$/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++@@ -202,7 +201,7 @@ ++ all-am: Makefile $(MANS) ++ all-redirect: all-am ++ install-strip: ++- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install +++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++ installdirs: ++ $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 ++ ++--- lrzsz-0.12.21.orig/src/Makefile.in +++++ lrzsz-0.12.21/src/Makefile.in ++@@ -1,4 +1,4 @@ ++-# Makefile.in generated automatically by automake 1.4a from Makefile.am +++# Makefile.in generated automatically by automake 1.4 from Makefile.am ++ ++ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++ # This Makefile.in is free software; the Free Software Foundation ++@@ -45,10 +45,9 @@ ++ AUTOHEADER = @AUTOHEADER@ ++ ++ INSTALL = @INSTALL@ ++-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ++ INSTALL_DATA = @INSTALL_DATA@ ++ INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++-INSTALL_STRIP_FLAG = ++ transform = @program_transform_name@ ++ ++ NORMAL_INSTALL = : ++@@ -132,7 +131,7 @@ ++ ++ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ++ ++-TAR = gtar +++TAR = tar ++ GZIP_ENV = --best ++ DEP_FILES = .deps/canit.P .deps/crctab.P .deps/lrz.P .deps/lsyslog.P \ ++ .deps/lsz.P .deps/protname.P .deps/rbsb.P .deps/tcp.P .deps/timing.P \ ++@@ -167,8 +166,8 @@ ++ $(mkinstalldirs) $(DESTDIR)$(bindir) ++ @list='$(bin_PROGRAMS)'; for p in $$list; do \ ++ if test -f $$p; then \ ++- echo " $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ ++- $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ +++ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ +++ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ ++ else :; fi; \ ++ done ++ ++@@ -292,7 +291,7 @@ ++ @for file in $(DISTFILES); do \ ++ d=$(srcdir); \ ++ if test -d $$d/$$file; then \ ++- cp -pr $$d/$$file $(distdir)/$$file; \ +++ cp -pr $$/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++@@ -353,7 +352,7 @@ ++ all-am: Makefile $(ANSI2KNR) $(PROGRAMS) $(HEADERS) ++ all-redirect: all-am ++ install-strip: ++- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install +++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++ installdirs: ++ $(mkinstalldirs) $(DESTDIR)$(bindir) ++ ++--- lrzsz-0.12.21.orig/testsuite/Makefile.in +++++ lrzsz-0.12.21/testsuite/Makefile.in ++@@ -1,4 +1,4 @@ ++-# Makefile.in generated automatically by automake 1.4a from Makefile.am +++# Makefile.in generated automatically by automake 1.4 from Makefile.am ++ ++ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++ # This Makefile.in is free software; the Free Software Foundation ++@@ -46,10 +46,9 @@ ++ AUTOHEADER = @AUTOHEADER@ ++ ++ INSTALL = @INSTALL@ ++-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ++ INSTALL_DATA = @INSTALL_DATA@ ++ INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++-INSTALL_STRIP_FLAG = ++ transform = @program_transform_name@ ++ ++ NORMAL_INSTALL = : ++@@ -103,7 +102,7 @@ ++ DIST_COMMON = Makefile.am Makefile.in ++ ++ ++-TAR = gtar +++TAR = tar ++ GZIP_ENV = --best ++ EXPECT = expect ++ RUNTEST = runtest ++@@ -133,7 +132,7 @@ ++ @for file in $(DISTFILES); do \ ++ d=$(srcdir); \ ++ if test -d $$d/$$file; then \ ++- cp -pr $$d/$$file $(distdir)/$$file; \ +++ cp -pr $$/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++@@ -192,7 +191,7 @@ ++ all-am: Makefile ++ all-redirect: all-am ++ install-strip: ++- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install +++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++ installdirs: ++ ++ +--- lrzsz-0.12.21.orig/debian/patches/cat-id-tbl.diff ++++ lrzsz-0.12.21/debian/patches/cat-id-tbl.diff +@@ -0,0 +1,118 @@ ++--- lrzsz-0.12.21.orig/po/cat-id-tbl.c +++++ lrzsz-0.12.21/po/cat-id-tbl.c ++@@ -141,22 +141,23 @@ ++ {"\ ++ \n\ ++ countem: Total %d %ld\n", 84}, ++- {"Bad escape sequence %x", 85}, ++- {"Sender Canceled", 86}, ++- {"TIMEOUT", 87}, ++- {"Bad data subpacket", 88}, ++- {"Data subpacket too long", 89}, ++- {"Garbage count exceeded", 90}, ++- {"Got %s", 91}, ++- {"Retry %d: ", 92}, ++- {"don't have settimeofday, will not set time\n", 93}, ++- {"not running as root (this is good!), can not set time\n", 94}, ++- {"bytes_per_error", 95}, ++- {"bytes-per-error should be >100", 96}, ++- {"O_SYNC not supported by the kernel", 97}, ++- {"garbage on commandline", 98}, ++- {"Usage: %s [options] [filename.if.xmodem]\n", 99}, ++- {"Receive files with ZMODEM/YMODEM/XMODEM protocol\n", 100}, +++ {"Bad CRC", 85}, +++ {"Bad escape sequence %x", 86}, +++ {"Sender Canceled", 87}, +++ {"TIMEOUT", 88}, +++ {"Bad data subpacket", 89}, +++ {"Data subpacket too long", 90}, +++ {"Garbage count exceeded", 91}, +++ {"Got %s", 92}, +++ {"Retry %d: ", 93}, +++ {"don't have settimeofday, will not set time\n", 94}, +++ {"not running as root (this is good!), can not set time\n", 95}, +++ {"bytes_per_error", 96}, +++ {"bytes-per-error should be >100", 97}, +++ {"O_SYNC not supported by the kernel", 98}, +++ {"garbage on commandline", 99}, +++ {"Usage: %s [options] [filename.if.xmodem]\n", 100}, +++ {"Receive files with ZMODEM/YMODEM/XMODEM protocol\n", 101}, ++ {"\ ++ -+, --append append to existing files\n\ ++ -a, --ascii ASCII transfer (change CR/LF to LF)\n\ ++@@ -193,41 +194,41 @@ ++ --ymodem use YMODEM protocol\n\ ++ -Z, --zmodem use ZMODEM protocol\n\ ++ \n\ ++-short options use the same arguments as the long ones\n", 101}, ++- {"%s waiting to receive.", 102}, ++- {"\rBytes received: %7ld/%7ld BPS:%-6ld \r\n", 103}, ++- {"%s: ready to receive %s", 104}, ++- {"\rBytes received: %7ld BPS:%-6ld \r\n", 105}, +++short options use the same arguments as the long ones\n", 102}, +++ {"%s waiting to receive.", 103}, +++ {"\rBytes received: %7ld/%7ld BPS:%-6ld \r\n", 104}, +++ {"%s: ready to receive %s", 105}, +++ {"\rBytes received: %7ld BPS:%-6ld \r\n", 106}, ++ {"\ ++ \r\n\ ++-%s: %s removed.\r\n", 106}, ++- {"Pathname fetch returned EOT", 107}, ++- {"Received dup Sector", 108}, ++- {"Sync Error", 109}, ++- {"CRC", 110}, ++- {"Checksum", 111}, ++- {"Sector number garbled", 112}, ++- {"Sender Cancelled", 113}, ++- {"Got 0%o sector header", 114}, ++- {"file name ends with a /, skipped: %s\n", 115}, ++- {"zmanag=%d, Lzmanag=%d\n", 116}, ++- {"zconv=%d\n", 117}, ++- {"file exists, skipped: %s\n", 118}, ++- {"TIMESYNC: here %ld, remote %ld, diff %ld seconds\n", 119}, ++- {"TIMESYNC: cannot set time: %s\n", 120}, ++- {"Topipe", 121}, ++- {"Receiving: %s\n", 122}, ++- {"Blocks received: %d", 123}, ++- {"%s: %s exists\n", 124}, ++- {"%s:\tSecurity Violation", 125}, ++- {"remote command execution requested", 126}, ++- {"not executed", 127}, ++- {"got ZRINIT", 128}, ++- {"Skipped", 129}, ++- {"rzfile: bps rate %ld below min %ld", 130}, ++- {"rzfile: reached stop time", 131}, ++- {"\rBytes received: %7ld/%7ld BPS:%-6ld ETA %02d:%02d ", 132}, ++- {"file close error", 133}, +++%s: %s removed.\r\n", 107}, +++ {"Pathname fetch returned EOT", 108}, +++ {"Received dup Sector", 109}, +++ {"Sync Error", 110}, +++ {"CRC", 111}, +++ {"Checksum", 112}, +++ {"Sector number garbled", 113}, +++ {"Sender Cancelled", 114}, +++ {"Got 0%o sector header", 115}, +++ {"file name ends with a /, skipped: %s\n", 116}, +++ {"zmanag=%d, Lzmanag=%d\n", 117}, +++ {"zconv=%d\n", 118}, +++ {"file exists, skipped: %s\n", 119}, +++ {"TIMESYNC: here %ld, remote %ld, diff %ld seconds\n", 120}, +++ {"TIMESYNC: cannot set time: %s\n", 121}, +++ {"Topipe", 122}, +++ {"Receiving: %s\n", 123}, +++ {"Blocks received: %d", 124}, +++ {"%s: %s exists\n", 125}, +++ {"%s:\tSecurity Violation", 126}, +++ {"remote command execution requested", 127}, +++ {"not executed", 128}, +++ {"got ZRINIT", 129}, +++ {"Skipped", 130}, +++ {"rzfile: bps rate %ld below min %ld", 131}, +++ {"rzfile: reached stop time", 132}, +++ {"\rBytes received: %7ld/%7ld BPS:%-6ld ETA %02d:%02d ", 133}, +++ {"file close error", 134}, ++ }; ++ ++-int _msg_tbl_length = 133; +++int _msg_tbl_length = 134; +--- lrzsz-0.12.21.orig/debian/patches/206499_ymodemg.diff.unchecked ++++ lrzsz-0.12.21/debian/patches/206499_ymodemg.diff.unchecked +@@ -0,0 +1,70 @@ ++--- org/lrz.c 1998-12-29 23:49:24.000000000 -0800 +++++ lrz.c 2003-08-21 15:15:15.000000000 -0700 ++@@ -73,6 +73,7 @@ ++ ++ int Lastrx; ++ int Crcflg; +++int Optiong; ++ int Firstsec; ++ int errors; ++ int Restricted=1; /* restricted; no /.. or ../ in filenames */ ++@@ -211,6 +212,7 @@ ++ {"allow-remote-commands", no_argument, NULL, 'C'}, ++ {"escape", no_argument, NULL, 'e'}, ++ {"rename", no_argument, NULL, 'E'}, +++ {"go", no_argument, NULL, 'g'}, ++ {"help", no_argument, NULL, 'h'}, ++ {"crc-check", no_argument, NULL, 'H'}, ++ {"junk-path", no_argument, NULL, 'j'}, ++@@ -288,7 +290,7 @@ ++ parse_long_options (argc, argv, show_version, usage1); ++ ++ while ((c = getopt_long (argc, argv, ++- "a+bB:cCDeEhm:M:OprRqs:St:uUvw:XZy", +++ "a+bB:cCDeEghm:M:OprRqs:St:uUvw:XZy", ++ long_options, (int *) 0)) != EOF) ++ { ++ unsigned long int tmp; ++@@ -313,6 +315,7 @@ ++ case 'D': Nflag = TRUE; break; ++ case 'E': Lzmanag = ZF1_ZMCHNG; break; ++ case 'e': Zctlesc = 1; break; +++ case 'g': Optiong = 1; break; ++ case 'h': usage(0,NULL); break; ++ case 'H': Lzmanag= ZF1_ZMCRC; break; ++ case 'j': junk_path=TRUE; break; ++@@ -617,6 +620,7 @@ ++ " -e, --escape Escape control characters (Z)\n" ++ " -E, --rename rename any files already existing\n" ++ " --errors N generate CRC error every N bytes (debugging)\n" +++" -g, --go use X/YMODEM-g protocol (with CRC)\n" ++ " -h, --help Help, print this usage message\n" ++ " -m, --min-bps N stop transmission if BPS below N\n" ++ " -M, --min-bps-time N for at least N seconds (default: 120)\n" ++@@ -843,7 +847,7 @@ ++ et_tu: ++ Firstsec=TRUE; ++ zi->eof_seen=FALSE; ++- sendline(Crcflg?WANTCRC:NAK); +++ sendline(Optiong?WANTG:(Crcflg?WANTCRC:NAK)); ++ flushmo(); ++ purgeline(0); /* Do read next time ... */ ++ while ((c = wcgetsec(&Blklen, rpn, 100)) != 0) { ++@@ -875,7 +879,7 @@ ++ ++ Firstsec=TRUE;sectnum=0; ++ zi->eof_seen=FALSE; ++- sendchar=Crcflg?WANTCRC:NAK; +++ sendchar=(Optiong?WANTG:(Crcflg?WANTCRC:NAK)); ++ ++ for (;;) { ++ sendline(sendchar); /* send it now, we're ready! */ ++@@ -1007,7 +1011,7 @@ ++ ; ++ } ++ if (Firstsec) { ++- sendline(Crcflg?WANTCRC:NAK); +++ sendline(Optiong?WANTG:(Crcflg?WANTCRC:NAK)); ++ flushmo(); ++ purgeline(0); /* Do read next time ... */ ++ } else { +--- lrzsz-0.12.21.orig/debian/patches/313992_de_po.diff ++++ lrzsz-0.12.21/debian/patches/313992_de_po.diff +@@ -0,0 +1,650 @@ ++--- lrzsz-0.12.21.orig/po/de.po +++++ lrzsz-0.12.21/po/de.po ++@@ -1,17 +1,18 @@ ++-# german translation of lrzsz output ++-# Copyright (C) 1997 Uwe Ohse ++-# Uwe Ohse , 1997. +++# German translation of lrzsz +++# Copyright (C) Uwe Ohse , 1997. +++# Copyright (C) Tobias Toedter , 2005, 2006. ++ # ++ msgid "" ++ msgstr "" ++-"Project-Id-Version: PACKAGE VERSION\n" +++"Project-Id-Version: lrzsz 0.12.21\n" ++ "POT-Creation-Date: 1999-08-22 21:00+0200\n" ++-"PO-Revision-Date: 1997-06-01 19:00+0200\n" ++-"Last-Translator: FULL NAME \n" ++-"Language-Team: none. try \n" +++"PO-Revision-Date: 2006-01-12 10:23+0100\n" +++"Last-Translator: Tobias Toedter \n" +++"Language-Team: German \n" ++ "MIME-Version: 1.0\n" ++-"Content-Type: text/plain; charset=iso-8859-1\n" +++"Content-Type: text/plain; charset=UTF-8\n" ++ "Content-Transfer-Encoding: 8bit\n" +++"X-Generator: KBabel 1.10.2\n" ++ ++ #: src/lsz.c:228 ++ msgid "io_mode(,2) in rbsb.c not implemented\n" ++@@ -28,21 +29,21 @@ ++ ++ #: src/lsz.c:422 ++ msgid "packetlength" ++-msgstr "Paketl?nge" +++msgstr "Paketlänge" ++ ++ #: src/lsz.c:427 ++ #, c-format ++ msgid "packetlength out of range 24..%ld" ++-msgstr "Argument der Option L au?erhalb des Bereichs 24..%ld" +++msgstr "Argument der Option L außerhalb des Bereichs 24..%ld" ++ ++ #: src/lsz.c:436 ++ msgid "framelength" ++-msgstr "Framel?nge" +++msgstr "Framelänge" ++ ++ #: src/lsz.c:441 ++ #, c-format ++ msgid "framelength out of range 32..%ld" ++-msgstr "Argument der Option l au?erhalb des Bereichs 32..%ld" +++msgstr "Argument der Option l außerhalb des Bereichs 32..%ld" ++ ++ #: src/lrz.c:318 src/lsz.c:450 ++ msgid "min_bps" ++@@ -50,27 +51,27 @@ ++ ++ #: src/lsz.c:452 ++ msgid "min_bps must be >= 0" ++-msgstr "minimale BPS-Rate mu? >= 0 sein" +++msgstr "minimale BPS-Rate muss >= 0 sein" ++ ++ #: src/lrz.c:324 src/lsz.c:458 ++ msgid "min_bps_time" ++-msgstr "" +++msgstr "Zeitfenster für minimale BPS-Rate" ++ ++ #: src/lrz.c:326 src/lsz.c:460 ++ msgid "min_bps_time must be > 1" ++-msgstr "Zeitfenster f?r minimale BPS-Rate mu? > 1 Sekunde sein" +++msgstr "Zeitfenster für minimale BPS-Rate muss > 1 Sekunde sein" ++ ++ #: src/lrz.c:342 src/lsz.c:484 ++ msgid "hour to large (0..23)" ++-msgstr "Stunde zu gross (0..23)" +++msgstr "Stunde zu groß (0..23)" ++ ++ #: src/lrz.c:344 src/lsz.c:486 ++ msgid "unparsable stop time\n" ++-msgstr "unparsbare Endzeit\n" +++msgstr "Endzeit nicht auszuwerten\n" ++ ++ #: src/lrz.c:348 src/lsz.c:490 ++ msgid "minute to large (0..59)" ++-msgstr "Minute zu gro? (0..59)" +++msgstr "Minute zu groß (0..59)" ++ ++ #: src/lrz.c:358 src/lrz.c:365 src/lsz.c:500 src/lsz.c:507 ++ msgid "stop time to small" ++@@ -78,7 +79,7 @@ ++ ++ #: src/lrz.c:363 src/lsz.c:505 ++ msgid "stop-at" ++-msgstr "" +++msgstr "Stopp um" ++ ++ #: src/lrz.c:394 src/lsz.c:516 ++ msgid "timeout" ++@@ -86,15 +87,15 @@ ++ ++ #: src/lrz.c:396 src/lsz.c:518 ++ msgid "timeout out of range 10..1000" ++-msgstr "Argument der Option t au?erhalb des Bereichs 10..1000" +++msgstr "Argument der Option t außerhalb des Bereichs 10..1000" ++ ++ #: src/lrz.c:412 src/lsz.c:526 ++ msgid "security violation: can't do that under restricted shell\n" ++-msgstr "Sicherheitsversto?: Ausf?hrung unter eingeschr?nkter Shell verboten\n" +++msgstr "Sicherheitsverstoß: Ausführung unter eingeschränkter Shell verboten\n" ++ ++ #: src/lrz.c:402 src/lsz.c:533 ++ msgid "window size" ++-msgstr "Fenstergr??e" +++msgstr "Fenstergröße" ++ ++ #: src/lrz.c:427 src/lrz.c:434 src/lsz.c:556 src/lsz.c:563 ++ msgid "cannot turnoff syslog" ++@@ -102,7 +103,7 @@ ++ ++ #: src/lrz.c:449 src/lsz.c:571 ++ msgid "startup delay" ++-msgstr "Startverz?gerung" +++msgstr "Startverzögerung" ++ ++ #: src/lrz.c:465 src/lrz.c:483 src/lrz.c:760 src/lrz.c:1122 src/lrz.c:1244 ++ #: src/lrz.c:1292 src/lrz.c:1309 src/lrz.c:1324 src/lrz.c:1423 src/lsz.c:580 ++@@ -117,11 +118,11 @@ ++ ++ #: src/lsz.c:612 src/lsz.c:627 ++ msgid "need at least one file to send" ++-msgstr "es mu? mindestens ein Name einer zu sendenden Datei angegeben werden" +++msgstr "es muss mindestens ein Name einer zu sendenden Datei angegeben werden" ++ ++ #: src/lsz.c:629 ++ msgid "Can't send command in restricted mode\n" ++-msgstr "Im eingeschr?nkten Modus ist das Senden von Kommandos verboten\n" +++msgstr "Im eingeschränkten Modus ist das Senden von Kommandos verboten\n" ++ ++ #: src/lrz.c:527 src/lsz.c:656 ++ msgid "hostname too long\n" ++@@ -129,7 +130,7 @@ ++ ++ #: src/lrz.c:542 src/lsz.c:671 ++ msgid "illegal server address\n" ++-msgstr "Illegale Serveraddresse\n" +++msgstr "Illegale Serveradresse\n" ++ ++ #: src/lsz.c:710 ++ msgid "can read only one file from stdin" ++@@ -137,21 +138,21 @@ ++ ++ #: src/lrz.c:574 src/lsz.c:803 ++ msgid "Transfer incomplete\n" ++-msgstr "?bertragung nicht abgeschlossen\n" +++msgstr "Ãœbertragung nicht abgeschlossen\n" ++ ++ #: src/lrz.c:576 src/lsz.c:805 ++ msgid "Transfer complete\n" ++-msgstr "?bertragung abgeschlossen\n" +++msgstr "Ãœbertragung abgeschlossen\n" ++ ++ #: src/lsz.c:838 ++ #, c-format ++ msgid "send_pseudo %s: cannot open tmpfile %s: %s" ++-msgstr "send_pseudo %s: kann tempor?re Datei %s nicht ?ffnen: %s" +++msgstr "send_pseudo %s: kann temporäre Datei %s nicht öffnen: %s" ++ ++ #: src/lsz.c:851 ++ #, c-format ++ msgid "send_pseudo %s: cannot lstat tmpfile %s: %s" ++-msgstr "send_pseudo %s: kann lstat nicht auf tempor?re Datei %s anwenden: %s" +++msgstr "send_pseudo %s: kann lstat nicht auf temporäre Datei %s anwenden: %s" ++ ++ #: src/lsz.c:859 ++ #, c-format ++@@ -161,7 +162,7 @@ ++ #: src/lsz.c:870 ++ #, c-format ++ msgid "send_pseudo %s: cannot write to tmpfile %s: %s" ++-msgstr "send_pseudo %s: kann nicht in tempor?re Datei %s schreiben: %s" +++msgstr "send_pseudo %s: kann nicht in temporäre Datei %s schreiben: %s" ++ ++ #: src/lsz.c:879 ++ #, c-format ++@@ -188,17 +189,17 @@ ++ ++ #: src/lsz.c:953 ++ msgid "Can't open any requested files." ++-msgstr "Kann keine der angeforderten Dateien ?ffnen" +++msgstr "Kann keine der angeforderten Dateien öffnen" ++ ++ #: src/lsz.c:1009 ++ #, c-format ++ msgid "security violation: not allowed to upload from %s" ++-msgstr "Sicherheitsversto?: Ausf?hrung unter eingeschr?nkter Shell verboten" +++msgstr "Sicherheitsverstoß: Hochladen von %s nicht erlaubt" ++ ++ #: src/lrz.c:1384 src/lsz.c:1027 ++ #, c-format ++ msgid "cannot open %s" ++-msgstr "kann %s nicht ?ffnen" +++msgstr "kann %s nicht öffnen" ++ ++ #: src/lsz.c:1082 ++ #, c-format ++@@ -213,12 +214,12 @@ ++ #: src/lsz.c:1119 ++ #, c-format ++ msgid "skipped: %s" ++-msgstr "?bersprungen: %s" +++msgstr "übersprungen: %s" ++ ++ #: src/lsz.c:1122 ++ #, c-format ++ msgid "%s/%s: skipped" ++-msgstr "%s/%s: ?bersprungen" +++msgstr "%s/%s: übersprungen" ++ ++ #: src/lsz.c:1149 ++ #, c-format ++@@ -228,7 +229,7 @@ ++ #: src/lsz.c:1178 ++ #, c-format ++ msgid "Sending %s, %ld blocks: " ++-msgstr "Sende %s, %ld Bl?cke:" +++msgstr "Sende %s, %ld Blöcke:" ++ ++ #: src/lsz.c:1181 ++ msgid "Give your local XMODEM receive command now." ++@@ -245,11 +246,11 @@ ++ ++ #: src/lsz.c:1314 ++ msgid "Receiver Cancelled" ++-msgstr "Empf?nger brach ab" +++msgstr "Empfänger brach ab" ++ ++ #: src/lsz.c:1340 ++ msgid "No ACK on EOT" ++-msgstr "Keine Best?tigung f?r ?bertragungsende erhalten" +++msgstr "Keine Bestätigung für Ãœbertragungsende erhalten" ++ ++ #: src/lsz.c:1361 ++ #, c-format ++@@ -267,24 +268,24 @@ ++ ++ #: src/lsz.c:1399 ++ msgid "Timeout on sector ACK" ++-msgstr "Timeout bei Sektorbest?tigung" +++msgstr "Timeout bei Sektorbestätigung" ++ ++ #: src/lsz.c:1404 ++ msgid "NAK on sector" ++-msgstr "Sektor nicht best?tigt" +++msgstr "Sektor nicht bestätigt" ++ ++ #: src/lsz.c:1410 ++ msgid "Got burst for sector ACK" ++-msgstr "" +++msgstr "Erhielt Bruch als Sektorbestätigung" ++ ++ #: src/lsz.c:1412 ++ #, c-format ++ msgid "Got %02x for sector ACK" ++-msgstr "Erhielt %02x als Sektorbest?tigung" +++msgstr "Erhielt %02x als Sektorbestätigung" ++ ++ #: src/lsz.c:1424 ++ msgid "Retry Count Exceeded" ++-msgstr "Maximale Wiederholungsanzahl ?berschritten" +++msgstr "Maximale Wiederholungsanzahl überschritten" ++ ++ #: src/lrz.c:596 src/lsz.c:1502 ++ #, c-format ++@@ -304,11 +305,11 @@ ++ #: src/lsz.c:1512 ++ #, c-format ++ msgid " or: %s [options] -{c|i} COMMAND\n" ++-msgstr " oder: %s [Optionen] -{c|i} KOMMANDO\n" +++msgstr " oder: %s [-2Ceqv] -{c|i} KOMMANDO\n" ++ ++ #: src/lsz.c:1513 ++ msgid "Send file(s) with ZMODEM/YMODEM/XMODEM protocol\n" ++-msgstr "Dateien mit ZMODEM/YMODEM/XMODEM ?bertragen\n" +++msgstr "Dateien mit ZMODEM/YMODEM/XMODEM übertragen\n" ++ ++ # src/lrz.c:475 src/lsz.c:1330 xx ++ #: src/lrz.c:607 src/lsz.c:1515 ++@@ -317,9 +318,9 @@ ++ " (Y) = option applies to YMODEM only\n" ++ " (Z) = option applies to ZMODEM only\n" ++ msgstr "" ++-" (X) = Option gilt nur f?r XMODEM\n" ++-" (Y) = Option gilt nur f?r YMODEM\n" ++-" (Z) = Option gilt nur f?r ZMODEM\n" +++" (X) = Option gilt nur für XMODEM\n" +++" (Y) = Option gilt nur für YMODEM\n" +++" (Z) = Option gilt nur für ZMODEM\n" ++ ++ #: src/lsz.c:1521 ++ msgid "" ++@@ -347,32 +348,32 @@ ++ " -m, --min-bps N stop transmission if BPS below N\n" ++ " -M, --min-bps-time N for at least N seconds (default: 120)\n" ++ msgstr "" ++-" -+, --append an existierende Dateien anh?ngen (Z)\n" +++" -+, --append an existierende Dateien anhängen (Z)\n" ++ " -2, --twostop zwei Stopbits verwenden\n" ++-" -4, --try-4k bis zu 4K Blockgr??e verwenden\n" ++-" --start-4k mit 4K Blockgr??e starten (versucht nicht 8)\n" ++-" -8, --try-8k bis zu 8K Blockgr??e verwenden\n" ++-" --start-8k mit 8K Blockgr??e starten\n" +++" -4, --try-4k bis zu 4K Blockgröße verwenden\n" +++" --start-4k mit 4K Blockgröße starten (versucht nicht 8)\n" +++" -8, --try-8k bis zu 8K Blockgröße verwenden\n" +++" --start-8k mit 8K Blockgröße starten\n" ++ " -a, --ascii ASCII: NL nach CR/LF wandeln\n" ++-" -b, --binary Bin?r?bertragung erzwingen\n" +++" -b, --binary Binärübertragung erzwingen\n" ++ " -B, --bufsize N N Bytes puffern (auto: ganze Datei puffern)\n" ++-" -c, --command COMMAND Kommando KOMMANDO auf Gegenseite ausf?hren " +++" -c, --command COMMAND Kommando KOMMANDO auf Gegenseite ausführen " ++ "(Z)\n" ++-" -C, --command-tries N N mal Kommandoausf?hrung versuchen (Z)\n" +++" -C, --command-tries N N mal Kommandoausführung versuchen (Z)\n" ++ " -d, --dot-to-slash C '.' in Dateinamen nach '/' wandeln (Y/Z)\n" ++ " --delay-startup N Bei Programmstart N Sek. schlafen (Debugging)\n" ++ " -e, --escape alle Steuerzeichen escapen (Z)\n" ++-" -E, --rename Empf?nger soll Datei umbenennen falls\n" +++" -E, --rename Empfänger soll Datei umbenennen falls\n" ++ " Zieldatei schon existiert\n" ++ " -f, --full-path Dateien mit vollen Pfaden senden (Y/Z)\n" ++-" -i, --immediate-command CMD wie `c', aber sofort zur?ckkehren (Z)\n" +++" -i, --immediate-command CMD wie `c', aber sofort zurückkehren (Z)\n" ++ " -h, --help diesen Hilfetext ausgeben\n" ++ " -k, --1k 1024 Bytes Pakete senden (Y)\n" ++-" -L, --packetlen N Unterpaketl?nge auf N Bytes beschr?nken (Z)\n" ++-" -l, --framelen N Rahmenl?nge auf N Bytes beschr?nken (l>=L) " +++" -L, --packetlen N Unterpaketlänge auf N Bytes beschränken (Z)\n" +++" -l, --framelen N Rahmenlänge auf N Bytes beschränken (l>=L) " ++ "(Z)\n" ++-" -m, --min-bps N ?bertragung abbrechen bei weniger als N BPS\n" ++-" -M, --min-bps-time N f?r mindestens N Sekunden (Default: 120)\n" +++" -m, --min-bps N Ãœbertragung abbrechen bei weniger als N BPS\n" +++" -M, --min-bps-time N für mindestens N Sekunden (Default: 120)\n" ++ ++ #: src/lsz.c:1546 ++ msgid "" ++@@ -400,28 +401,28 @@ ++ "short options use the same arguments as the long ones\n" ++ msgstr "" ++ " -n, --newer Datei senden wenn sie neuer ist (Z)\n" ++-" -N, --newer-or-longer Datei senden wenn neuer oder l?nger (Z)\n" +++" -N, --newer-or-longer Datei senden wenn neuer oder länger (Z)\n" ++ " -o, --16-bit-crc 16Bit CRC statt 32Bit CRC verwenden (Z)\n" ++ " -O, --disable-timeouts Timeoutbehandlung abschalten\n" ++-" -p, --protect existierende Dateien nicht ver?ndern\n" ++-" -r, --resume unterbrochene ?bertragungen fortsetzen (Z)\n" ++-" -R, --restricted eingeschr?nkter, sichererer Modus\n" +++" -p, --protect existierende Dateien nicht verändern\n" +++" -r, --resume unterbrochene Ãœbertragungen fortsetzen (Z)\n" +++" -R, --restricted eingeschränkter, sichererer Modus\n" ++ " -q, --quiet leise, keine Ausgaben machen\n" ++-" -s, --stop-at {HH:MM|+N} ?bertragung um HH:MM oder in N Sek. abbrechen\n" ++-" --tcp-server Socket ?ffnen und auf Verbindung warten\n" ++-" --tcp-client ADDR:PORT Socket ?ffnen und verbindung mit ...\n" ++-" -u, --unlink Datei nach ?bertragung l?schen\n" ++-" -U, --unrestrict eingeschr?nkten Modus aufheben (falls " +++" -s, --stop-at {HH:MM|+N} Ãœbertragung um HH:MM oder in N Sek. abbrechen\n" +++" --tcp-server Socket öffnen, Verbindung abwarten (Z)\n" +++" --tcp-client ADDR:PORT Socket öffnen, verbinden mit ... (Z)\n" +++" -u, --unlink Datei nach Ãœbertragung löschen\n" +++" -U, --unrestrict eingeschränkten Modus aufheben (falls " ++ "erlaubt)\n" ++ " -v, --verbose mehr ausgeben\n" ++-" -w, --windowsize N Fenstergr??e auf N Bytes setzen (Z)\n" +++" -w, --windowsize N Fenstergröße auf N Bytes setzen (Z)\n" ++ " -X --xmodem XMODEM-Protokoll benutzen\n" ++-" -y, --overwrite existierende Dateien ?berschreiben\n" ++-" -Y, --overwrite-or-skip wie `y', aber nicht existierende ?berspringen\n" +++" -y, --overwrite existierende Dateien überschreiben\n" +++" -Y, --overwrite-or-skip wie `y', aber nicht existierende überspringen\n" ++ " --ymodem YMODEM-Protokoll benutzen\n" ++ " -Z, --zmodem ZMODEM-Protokoll benutzen\n" ++ "\n" ++-"Kurze Optionen ben?tigen dieselben Argumente wie Lange.\n" +++"Kurze Optionen benötigen dieselben Argumente wie die langen.\n" ++ ++ #: src/lsz.c:1768 ++ msgid "got ZRQINIT" ++@@ -434,7 +435,7 @@ ++ #: src/lsz.c:1991 ++ #, c-format ++ msgid "blklen now %d\n" ++-msgstr "Blockgr??e nun %d\n" +++msgstr "Blockgröße nun %d\n" ++ ++ #: src/lsz.c:2053 ++ #, c-format ++@@ -453,7 +454,7 @@ ++ #: src/lsz.c:2223 ++ #, c-format ++ msgid "calc_blklen: reduced to %d due to error\n" ++-msgstr "calc_blklen: Blockgr?sse auf %d reduziert wegen Fehler\n" +++msgstr "calc_blklen: Blockgröße auf %d reduziert wegen Fehler\n" ++ ++ #: src/lsz.c:2256 ++ #, c-format ++@@ -468,12 +469,12 @@ ++ #: src/lsz.c:2267 ++ #, c-format ++ msgid "calc_blklen: calc total_bytes=%ld, bpe=%ld, ec=%ld\n" ++-msgstr "calc_blklen: kalkuliere gesamt_bytes=%ld, bpe=%le, ec=%ld\n" +++msgstr "calc_blklen: kalkuliere gesamt_bytes=%ld, bpe=%ld, ec=%ld\n" ++ ++ #: src/lsz.c:2278 ++ #, c-format ++ msgid "calc_blklen: blklen %d, ok %ld, failed %ld -> %lu\n" ++-msgstr "calc_blklen: Blockl?nge %d, ok %ld, fehlgeschlagen %ld -> %lu\n" +++msgstr "calc_blklen: Blocklänge %d, ok %ld, fehlgeschlagen %ld -> %lu\n" ++ ++ #: src/lsz.c:2290 ++ #, c-format ++@@ -512,7 +513,7 @@ ++ ++ #: src/zm.c:712 ++ msgid "Garbage count exceeded" ++-msgstr "Maximale Wiederholungsanzahl ?berschritten" +++msgstr "Maximale Wiederholungsanzahl überschritten" ++ ++ #: src/zm.c:773 ++ #, c-format ++@@ -526,11 +527,11 @@ ++ ++ #: src/lrz.c:382 ++ msgid "don't have settimeofday, will not set time\n" ++-msgstr "Zeitsynchronisation nicht ausf?hrbar, settimeofday() fehlt\n" +++msgstr "Zeitsynchronisation nicht ausführbar, settimeofday() fehlt\n" ++ ++ #: src/lrz.c:386 ++ msgid "not running as root (this is good!), can not set time\n" ++-msgstr "Zeitsynchronisation mangels Superuserrechten nicht ausf?hrbar\n" +++msgstr "Zeitsynchronisation mangels Superuserrechten nicht ausführbar\n" ++ ++ #: src/lrz.c:441 ++ msgid "bytes_per_error" ++@@ -542,16 +543,16 @@ ++ ++ #: src/lrz.c:455 ++ msgid "O_SYNC not supported by the kernel" ++-msgstr "O_SYNC vom Kernel nicht unterst?tzt" +++msgstr "O_SYNC vom Kernel nicht unterstützt" ++ ++ #: src/lrz.c:497 src/lrz.c:499 ++ msgid "garbage on commandline" ++-msgstr "M?ll auf der Kommandozeile" +++msgstr "Müll auf der Kommandozeile" ++ ++ #: src/lrz.c:604 ++ #, c-format ++ msgid "Usage: %s [options] [filename.if.xmodem]\n" ++-msgstr "Benutzung: %s [Optionen] [Dateiname.f?r.xmodem]\n" +++msgstr "Benutzung: %s [Optionen] [Dateiname.für.xmodem]\n" ++ ++ #: src/lrz.c:605 ++ msgid "Receive files with ZMODEM/YMODEM/XMODEM protocol\n" ++@@ -596,44 +597,44 @@ ++ "\n" ++ "short options use the same arguments as the long ones\n" ++ msgstr "" ++-" -+, --append an existierende Dateien anh?ngen\n" ++-" -a, --ascii ASCII-?bertragung (CR/LF nach LF wandeln)\n" ++-" -b, --binary Bin?r?bertragung (keine Umwandlungen)\n" +++" -+, --append an existierende Dateien anhängen\n" +++" -a, --ascii ASCII-Ãœbertragung (CR/LF nach LF wandeln)\n" +++" -b, --binary Binärübertragung (keine Umwandlungen)\n" ++ " -B, --bufsize N N Bytes puffern (auto: ganze Datei puffern)\n" ++-" -c, --with-crc 16bit CRC statt Pr?fsumme verwenden (X)\n" ++-" -C, --allow-remote-commands Ausf?hrung von Kommandos erlauben (Z)\n" +++" -c, --with-crc 16bit CRC statt Prüfsumme verwenden (X)\n" +++" -C, --allow-remote-commands Ausführung von Kommandos erlauben (Z)\n" ++ " -D, --null empfangene Daten nach /dev/null schreiben\n" ++ " --delay-startup N Bei Programmstart N Sek. schlafen (Debugging)\n" ++ " -e, --escape Alle Steuerzeichen escapen (Z)\n" ++-" -E, --rename Empf?nger soll Datei umbenennen falls\n" +++" -E, --rename Empfänger soll Datei umbenennen, falls\n" ++ " Zieldatei schon existiert\n" ++ " --errors N Einen CRC-Fehler alle N Bytes erzeugen\n" ++ " -h, --help Diesen Hilfstext ausgeben\n" ++-" -m, --min-bps N ?bertragung abbrechen bei weniger als N BPS\n" ++-" -M, --min-bps-time N f?r mindestens N Sekunden (Default: 120)\n" +++" -m, --min-bps N Ãœbertragung abbrechen bei weniger als N BPS\n" +++" -M, --min-bps-time N für mindestens N Sekunden (Default: 120)\n" ++ " -O, --disable-timeouts Timeoutbehandlung abschalten\n" ++ " --o-sync Ausgabedatei(en) im synchron schreiben\n" ++-" -p, --protect existierende Dateien nicht ver?ndern\n" +++" -p, --protect existierende Dateien nicht verändern\n" ++ " -q, --quiet leise, keine Ausgaben machen\n" ++-" -r, --resume unterbrochene ?bertragungen fortsetzen (Z)\n" ++-" -R, --restricted eingeschr?nkter, sichererer Modus\n" ++-" -s, --stop-at {HH:MM|+N} ?bertragung um HH:MM oder in N Sek. abbrechen\n" +++" -r, --resume unterbrochene Ãœbertragungen fortsetzen (Z)\n" +++" -R, --restricted eingeschränkter, sichererer Modus\n" +++" -s, --stop-at {HH:MM|+N} Ãœbertragung um HH:MM oder in N Sek. abbrechen\n" ++ " -S, --timesync Zeit anfordern (doppelt: lokale Zeit setzen)\n" ++-" --syslog[=off] syslog an- oder ausschalten, wenn m?glich\n" ++-" -t, --timeout N Timeout auf N Zehntelsekungen setzen\n" ++-" --tcp-server Socket ?ffnen und auf Verbindung warten\n" ++-" --tcp-client ADDR:PORT Socket ?ffnen und verbindung mit ...\n" +++" --syslog[=off] syslog an- oder ausschalten, wenn möglich\n" +++" -t, --timeout N Timeout auf N Zehntelsekunden setzen\n" +++" --tcp-server Socket öffnen, Verbindung abwarten (Z)\n" +++" --tcp-client ADDR:PORT Socket öffnen, verbinden mit ... (Z)\n" ++ " -u, --keep-uppercase GROSS geschrieben Dateinamen beibehalten\n" ++-" -U, --unrestrict eingeschr?nkten Modus aufheben (falls " +++" -U, --unrestrict eingeschränkten Modus aufheben (falls " ++ "erlaubt)\n" ++ " -v, --verbose mehr ausgeben\n" ++-" -w, --windowsize N Fenstergr??e auf N Bytes setzen (Z)\n" +++" -w, --windowsize N Fenstergröße auf N Bytes setzen (Z)\n" ++ " -X --xmodem XMODEM-Protokoll benutzen\n" ++-" -y, --overwrite existierende Dateien ?berschreiben\n" +++" -y, --overwrite existierende Dateien überschreiben\n" ++ " --ymodem YMODEM-Protokoll benutzen\n" ++ " -Z, --zmodem ZMODEM-Protokoll benutzen\n" ++ "\n" ++-"Kurze Optionen ben?tigen dieselben Argumente wie Lange.\n" +++"Kurze Optionen benötigen dieselben Argumente wie die langen.\n" ++ ++ #: src/lrz.c:676 ++ #, c-format ++@@ -662,11 +663,11 @@ ++ "%s: %s removed.\r\n" ++ msgstr "" ++ "\r\n" ++-"%s: %s gel?scht\r\n" +++"%s: %s gelöscht\r\n" ++ ++ #: src/lrz.c:856 ++ msgid "Pathname fetch returned EOT" ++-msgstr "Ende der ?bertragung beim Warten auf Dateinamen" +++msgstr "Ende der Ãœbertragung beim Warten auf Dateinamen" ++ ++ #: src/lrz.c:903 ++ msgid "Received dup Sector" ++@@ -682,7 +683,7 @@ ++ ++ #: src/lrz.c:976 ++ msgid "Checksum" ++-msgstr "Pr?fsummenfehler" +++msgstr "Prüfsummenfehler" ++ ++ #: src/lrz.c:979 ++ msgid "Sector number garbled" ++@@ -695,27 +696,27 @@ ++ #: src/lrz.c:1005 ++ #, c-format ++ msgid "Got 0%o sector header" ++-msgstr "Erhielt %02x als Sektorbest?tigung" +++msgstr "Erhielt %02x als Sektorbestätigung" ++ ++ #: src/lrz.c:1113 ++ #, c-format ++ msgid "file name ends with a /, skipped: %s\n" ++-msgstr "Dateiname endet mit /, ?bersprungen: %s\n" +++msgstr "Dateiname endet mit /, übersprungen: %s\n" ++ ++ #: src/lrz.c:1127 ++ #, c-format ++ msgid "zmanag=%d, Lzmanag=%d\n" ++-msgstr "" +++msgstr "zmanag=%d, Lzmanag=%d\n" ++ ++ #: src/lrz.c:1128 ++ #, c-format ++ msgid "zconv=%d\n" ++-msgstr "" +++msgstr "zconv=%d\n" ++ ++ #: src/lrz.c:1192 src/lrz.c:1226 ++ #, c-format ++ msgid "file exists, skipped: %s\n" ++-msgstr "Datei existiert, ?bersprungen: %s\n" +++msgstr "Datei existiert, übersprungen: %s\n" ++ ++ #: src/lrz.c:1267 ++ #, c-format ++@@ -739,7 +740,7 @@ ++ #: src/lrz.c:1545 ++ #, c-format ++ msgid "Blocks received: %d" ++-msgstr "Bl?cke empfangen: %d" +++msgstr "Blöcke empfangen: %d" ++ ++ #: src/lrz.c:1599 ++ #, c-format ++@@ -749,15 +750,15 @@ ++ #: src/lrz.c:1612 src/lrz.c:1620 ++ #, c-format ++ msgid "%s:\tSecurity Violation" ++-msgstr "%s:\tSicherheitsversto?" +++msgstr "%s:\tSicherheitsverstoß" ++ ++ #: src/lrz.c:1730 ++ msgid "remote command execution requested" ++-msgstr "Gegenseite versucht Kommandoausf?hrung" +++msgstr "Gegenseite versucht Kommandoausführung" ++ ++ #: src/lrz.c:1737 ++ msgid "not executed" ++-msgstr "nicht ausgef?hrt" +++msgstr "nicht ausgeführt" ++ ++ #: src/lrz.c:1768 ++ msgid "got ZRINIT" ++@@ -765,7 +766,7 @@ ++ ++ #: src/lrz.c:1817 ++ msgid "Skipped" ++-msgstr "?bersprungen" +++msgstr "Ãœbersprungen" ++ ++ #. too bad ++ #: src/lrz.c:2049 ++@@ -785,7 +786,7 @@ ++ ++ #: src/lrz.c:2215 ++ msgid "file close error" ++-msgstr "Fehler beim Schlie?en der Datei" +++msgstr "Fehler beim Schließen der Datei" ++ ++ #~ msgid "tcp protocol init failed\n" ++ #~ msgstr "TCP Protokoll Initialisierung fehlgeschlagen\n" ++@@ -796,17 +797,3 @@ ++ #~ msgid "fgets for tcp protocol synchronization failed: " ++ #~ msgstr "fgets() bei tcp Protokoll Synchronisation fehlgeschlagen: " ++ ++-#~ msgid "Transfer complete." ++-#~ msgstr "?bertragung abgeschlossen" ++- ++-#~ msgid "at" ++-#~ msgstr "um" ++- ++-#~ msgid "TIMESYNC: failed\n" ++-#~ msgstr "Zeitsynchronisation: fehlgeschlagen\n" ++- ++-#~ msgid "TIMESYNC: ok\n" ++-#~ msgstr "Zeitsynchronisation: ok\n" ++- ++-#~ msgid "Falldown to %ld blklen" ++-#~ msgstr "Blockgr??e auf %ld gesenkt" diff --git a/patches/source/minicom/minicom.SlackBuild b/patches/source/minicom/minicom.SlackBuild new file mode 100755 index 000000000..c245ed9fc --- /dev/null +++ b/patches/source/minicom/minicom.SlackBuild @@ -0,0 +1,160 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=2.7.1 +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:--j6} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-minicom + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG + +# minicom +cd $TMP +rm -rf minicom-$VERSION +tar xvf $CWD/minicom-$VERSION.tar.xz || exit 1 +cd minicom-$VERSION + +# The following command renames the internal implementation of getline +# to g_getline as newer versions of Glibc provide an incompatible version: +#sed -i -e "s/getline/g_&/" $(grep -lr getline *) + +chown -R root:root . +find . -perm 777 -exec chmod 755 {} \; +find . -perm 664 -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/etc +zcat $CWD/minicom.users.gz > $PKG/etc/minicom.users.new +printf "# Machine-generated file - use \"minicom -s\" to change parameters.\n" \ + > $PKG/etc/minirc.dfl.new + +mkdir -p $PKG/usr/doc/minicom-$VERSION +cp -a \ + AUTHORS COPYING* ChangeLog FILE_ID.DIZ INSTALL NEWS README* TODO doc \ + $PKG/usr/doc/minicom-$VERSION +rm -f $PKG/usr/doc/minicom-$VERSION/doc/{ChangeLog.old,Makefile*} + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# lzrz + +cd $TMP +rm -rf lrzsz-990823 +tar xvf $CWD/lrzsz_0.12.21.orig.tar.gz || exit 1 +cd lrzsz-990823 +chown -R root:root . + +# Make x86_64 a valid machine type (thanks to Fred Emmott) +zcat $CWD/config.sub-x86_64.diff.gz | patch -p1 --verbose || exit 1 + +# Apply some of the debian patches +zcat $CWD/lrzsz_0.12.21-5.diff.gz | patch -p1 --verbose || exit 1 +rm -f debian/patches/{206499_ymodemg.diff.unchecked,206648_dszlog.diff.unchecked} +for i in debian/patches/* ; do patch -p1 < $i || exit 1 ; done + +./configure \ + --prefix=/usr \ + --mandir=/usr/man \ + --build=$ARCH-slackware-linux + +touch stamp-h.in # to stop autoheader from running +touch -d yesterday aclocal.m4 # to stop automake from running + +make $NUMJOBS || make || exit 1 + +cp src/lrz src/lsz $PKG/usr/bin +chmod 0755 $PKG/usr/bin/{lrz,lsz} + +cp man/{lrz,lsz}.1 $PKG/usr/man/man1 +echo '.so man1/lrz.1' > $PKG/usr/man/man1/rz.1 +echo '.so man1/lsz.1' > $PKG/usr/man/man1/sz.1 + +mkdir -p $PKG/usr/share/locale/de/LC_MESSAGES +cat po/de.gmo > $PKG/usr/share/locale/de/LC_MESSAGES/lrzsz.mo + +mkdir -p $PKG/usr/doc/lrzsz-0.12.21 +cp -a \ + AUTHORS COMPATABILITY COPYING* INSTALL NEWS README* THANKS TODO \ + $PKG/usr/doc/lrzsz-0.12.21 + +( cd $PKG/usr/bin + for i in lrb lrx rz ; do ln -s lrz $i ; done + for i in lsb lsx sz ; do ln -s lsz $i ; done + for i in rx rb ; do ln -s rz $i ; done + for i in sb sx ; do ln -s sz $i ; done +) + +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +find $PKG/usr/man -type f -exec gzip -9 {} \; + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/minicom-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/minicom/minicom.users b/patches/source/minicom/minicom.users new file mode 100644 index 000000000..509d86f41 --- /dev/null +++ b/patches/source/minicom/minicom.users @@ -0,0 +1,36 @@ +# $Id: minicom.users,v 1.1.1.1 1999/12/18 11:18:51 misiek Exp $ +# Minicom.users Access file for the minicom program. +# +# Format: Either just one username per line, or +# a username followed by one or more +# configuration-names. The name of the +# default configuration is "dfl". The maximum +# significant line length is 70 characters. +# +# Location: The minicom library directory, probably +# /etc or /var/lib/minicom or whatever. +# +# Notes: If you don't install this file in the +# specified location, everybody will have +# access to minicom. +# +# This doesn't matter if minicom isn't installed +# setuid root since access will then be based +# on the permissions set on the serial port. +# + +# +# Who may use minicom? +# +# User [line] [..line] +# + +# Everyone has access to all configurations. +ALL + +## The rest are examples. +## # Erik only has access to the default configuration +## erik dfl +## +## # minicom has access to the default configuration, and configuration 'tty5'. +## minicom dfl tty5 diff --git a/patches/source/minicom/slack-desc b/patches/source/minicom/slack-desc new file mode 100644 index 000000000..4aa6302bd --- /dev/null +++ b/patches/source/minicom/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +minicom: minicom (communications package) +minicom: +minicom: Minicom - a full featured menu-driven communications package similar +minicom: to the DOS program 'Telix'. Also includes sz/rz - utilities used to +minicom: upload and download files using the Zmodem protocol. +minicom: +minicom: Homepage: http://alioth.debian.org/projects/minicom +minicom: +minicom: +minicom: +minicom: diff --git a/patches/source/mkinitrd/README.initrd b/patches/source/mkinitrd/README.initrd new file mode 100644 index 000000000..c10bb6306 --- /dev/null +++ b/patches/source/mkinitrd/README.initrd @@ -0,0 +1,99 @@ + +Slackware initrd mini HOWTO +by Patrick Volkerding, volkerdi@slackware.com +@DATE@ + +This document describes how to create and install an initrd, which may be +required to use some features of the kernel. Also see "man mkinitrd". + +1. What is an initrd? +2. Why to I need an initrd? +3. How do I build the initrd? +4. Now that I've built an initrd, how do I use it? + + +1. What is an initrd? + +Initrd stands for "initial ramdisk". An initial ramdisk is a very small +Linux filesystem that is loaded into RAM and mounted as the kernel boots, +and before the main root filesystem is mounted. + +2. Why do I need an initrd? + +The usual reason to use an initrd is because you need to load kernel +modules before mounting the root partition. Usually these modules are +required to support the filesystem used by the root partition (ext3, +reiserfs, xfs), or perhaps the controller that the hard drive is attached +to (SCSI, RAID, etc). Essentially, there are so many different options +available in modern Linux kernels that it isn't practical to try to ship +many different kernels to try to cover everyone's needs. It's a lot more +flexible to ship a generic kernel and a set of kernel modules for it. + +3. How do I build the initrd? + +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 @KERNEL_VERSION@ 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-@KERNEL_VERSION@-@ARCH@-@BUILD@.tgz + installpkg kernel-modules-@KERNEL_VERSION@-@ARCH@-@BUILD@.tgz + installpkg mkinitrd-@MKINITRD_VERSION@-@ARCH@-@BUILD@.tgz + +Change into the /boot directory: + + cd /boot + +Now you'll want to run "mkinitrd". I'm using ext4 for my root +filesystem, and since mkinitrd should figure out any other modules +it requires, I shouldn't need to specify any others: + + mkinitrd -c -k @KERNEL_VERSION@ -m ext4 + +This should do two things. First, it will create a directory +/boot/initrd-tree containing the initrd's filesystem. Then it will +create an initrd (/boot/initrd.gz) from this tree. If you wanted to, +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 @KERNEL_VERSION@ +kernel modules for a system with an ext3 root partition on /dev/sdb3: + + mkinitrd -c -k @KERNEL_VERSION@ -m ext3 -f ext3 -r /dev/sdb3 + + +4. Now that I've built an initrd, how do I use it? + +Now that you've got an initrd (/boot/initrd.gz), you'll want to load +it along with the kernel at boot time. If you use LILO for your boot +loader you'll need to edit /etc/lilo.conf and add a line to load the +initrd. Here's an example section of lilo.conf showing how this is +done: + +# Linux bootable partition config begins +image = /boot/vmlinuz-generic-@KERNEL_VERSION@ + initrd = /boot/initrd.gz + root = /dev/sda6 + label = @LILO_KERNEL_NAME@ + read-only +# Linux bootable partition config ends + +The initrd is loaded by the "initrd = /boot/initrd.gz" line. +Just add the line right below the line for the kernel image you use. +Save the file, and then run LILO again ('lilo' at the command line). +You'll need to run lilo every time you edit lilo.conf or rebuild the +initrd. + +Other bootloaders such as syslinux also support the use of an initrd. +See the documentation for those programs for details on using an +initrd with them. + + +--------- + +Have fun! diff --git a/patches/source/mkinitrd/busybox-dot-config b/patches/source/mkinitrd/busybox-dot-config new file mode 120000 index 000000000..09ac6817e --- /dev/null +++ b/patches/source/mkinitrd/busybox-dot-config @@ -0,0 +1 @@ +busybox-dot-config.1.20.x \ No newline at end of file diff --git a/patches/source/mkinitrd/busybox-dot-config.1.20.x b/patches/source/mkinitrd/busybox-dot-config.1.20.x new file mode 100644 index 000000000..93a4ea8d9 --- /dev/null +++ b/patches/source/mkinitrd/busybox-dot-config.1.20.x @@ -0,0 +1,1024 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.20.2 +# Wed Jun 8 14:48:15 2016 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Busybox Settings +# + +# +# General Configuration +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_PLATFORM_LINUX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +CONFIG_FEATURE_COMPRESS_USAGE=y +CONFIG_FEATURE_INSTALLER=y +CONFIG_INSTALL_NO_USR=y +CONFIG_LOCALE_SUPPORT=y +CONFIG_UNICODE_SUPPORT=y +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=63 +CONFIG_LAST_SUPPORTED_WCHAR=767 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +CONFIG_LONG_OPTS=y +CONFIG_FEATURE_DEVPTS=y +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +CONFIG_FEATURE_PIDFILE=y +CONFIG_FEATURE_SUID=y +CONFIG_FEATURE_SUID_CONFIG=y +CONFIG_FEATURE_SUID_CONFIG_QUIET=y +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +CONFIG_FEATURE_SYSLOG=y +CONFIG_FEATURE_HAVE_RPC=y + +# +# Build Options +# +# CONFIG_STATIC is not set +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_LFS=y +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="/tmp/package-mkinitrd/usr/share/mkinitrd/initrd-tree" + +# +# Busybox Library Tuning +# +# CONFIG_FEATURE_SYSTEMD is not set +CONFIG_FEATURE_RTMINMAX=y +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_USE_TERMIOS=y +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=64 +# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +# CONFIG_FEATURE_REVERSE_SEARCH is not set +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +CONFIG_FEATURE_EDITING_ASK_TERMINAL=y +# CONFIG_FEATURE_NON_POSIX_CP is not set +CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y +CONFIG_FEATURE_COPYBUF_KB=4 +# CONFIG_FEATURE_SKIP_ROOTFS is not set +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +# CONFIG_FEATURE_HWIB is not set + +# +# Applets +# + +# +# Archival Utilities +# +CONFIG_FEATURE_SEAMLESS_XZ=y +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +CONFIG_FEATURE_SEAMLESS_BZ2=y +CONFIG_FEATURE_SEAMLESS_GZ=y +CONFIG_FEATURE_SEAMLESS_Z=y +CONFIG_AR=y +CONFIG_FEATURE_AR_LONG_FILENAMES=y +# CONFIG_FEATURE_AR_CREATE is not set +CONFIG_BUNZIP2=y +CONFIG_BZIP2=y +CONFIG_CPIO=y +CONFIG_FEATURE_CPIO_O=y +CONFIG_FEATURE_CPIO_P=y +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set +CONFIG_GUNZIP=y +CONFIG_GZIP=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y +CONFIG_GZIP_FAST=0 +CONFIG_LZOP=y +CONFIG_LZOP_COMPR_HIGH=y +CONFIG_RPM2CPIO=y +# CONFIG_RPM is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_CREATE=y +CONFIG_FEATURE_TAR_AUTODETECT=y +CONFIG_FEATURE_TAR_FROM=y +CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +# CONFIG_FEATURE_TAR_TO_COMMAND is not set +CONFIG_FEATURE_TAR_UNAME_GNAME=y +CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNCOMPRESS=y +CONFIG_UNLZMA=y +CONFIG_FEATURE_LZMA_FAST=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZ=y +CONFIG_UNZIP=y + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +# CONFIG_FEATURE_DATE_COMPAT is not set +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_TEST=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_BASE64=y +CONFIG_WHO=y +CONFIG_USERS=y +CONFIG_CAL=y +CONFIG_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +CONFIG_COMM=y +CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y +CONFIG_CUT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_DF=y +CONFIG_FEATURE_DF_FANCY=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +CONFIG_FEATURE_ENV_LONG_OPTIONS=y +CONFIG_EXPAND=y +CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FALSE=y +CONFIG_FOLD=y +CONFIG_FSYNC=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_MKDIR=y +CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MV=y +CONFIG_FEATURE_MV_LONG_OPTIONS=y +CONFIG_NICE=y +CONFIG_NOHUP=y +CONFIG_OD=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set +CONFIG_SEQ=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +# CONFIG_FEATURE_FLOAT_SLEEP is not set +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +CONFIG_SPLIT=y +CONFIG_FEATURE_SPLIT_FANCY=y +CONFIG_STAT=y +CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_STTY=y +CONFIG_SUM=y +CONFIG_SYNC=y +CONFIG_TAC=y +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TRUE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNEXPAND=y +CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y +CONFIG_UNIQ=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_UUENCODE=y +CONFIG_WC=y +CONFIG_FEATURE_WC_LARGE=y +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for ls, more and telnet +# +CONFIG_FEATURE_AUTOWIDTH=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_FGCONSOLE=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +CONFIG_KBD_MODE=y +CONFIG_LOADFONT=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y +CONFIG_SETFONT=y +CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y +CONFIG_DEFAULT_SETFONT_DIR="/usr/share/kbd/consolefonts" +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +CONFIG_SHOWKEY=y + +# +# Common options for loadfont and setfont +# +# CONFIG_FEATURE_LOADFONT_PSF2 is not set +CONFIG_FEATURE_LOADFONT_RAW=y + +# +# Debian Utilities +# +CONFIG_MKTEMP=y +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_WHICH=y + +# +# Editors +# +CONFIG_PATCH=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=1024 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y +CONFIG_AWK=y +CONFIG_FEATURE_AWK_LIBM=y +CONFIG_CMP=y +CONFIG_DIFF=y +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_FEATURE_DIFF_DIR=y +CONFIG_ED=y +CONFIG_SED=y +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +CONFIG_FEATURE_FIND_INUM=y +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +# CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +CONFIG_FEATURE_FIND_LINKS=y +CONFIG_GREP=y +CONFIG_FEATURE_GREP_EGREP_ALIAS=y +CONFIG_FEATURE_GREP_FGREP_ALIAS=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=10 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_EXTRA_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +# CONFIG_FEATURE_INITRD is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y + +# +# Login/Password Management Utilities +# +CONFIG_ADD_SHELL=y +CONFIG_REMOVE_SHELL=y +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +CONFIG_USE_BB_CRYPT_SHA=y +CONFIG_ADDUSER=y +# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set +CONFIG_FEATURE_CHECK_NAMES=y +CONFIG_FIRST_SYSTEM_ID=1000 +CONFIG_LAST_SYSTEM_ID=12000 +CONFIG_ADDGROUP=y +CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y +CONFIG_FEATURE_ADDUSER_TO_GROUP=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +CONFIG_FEATURE_DEL_USER_FROM_GROUP=y +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_PAM is not set +CONFIG_LOGIN_SCRIPTS=y +CONFIG_FEATURE_NOLOGIN=y +# CONFIG_FEATURE_SECURETTY is not set +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_CRYPTPW=y +CONFIG_CHPASSWD=y +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="s" +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +CONFIG_TUNE2FS=y + +# +# Linux Module Utilities +# +CONFIG_MODINFO=y +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +CONFIG_INSMOD=y +CONFIG_RMMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +CONFIG_MODPROBE=y +CONFIG_FEATURE_MODPROBE_BLACKLIST=y +CONFIG_DEPMOD=y + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +CONFIG_BLOCKDEV=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +CONFIG_FEATURE_MDEV_RENAME_REGEXP=y +CONFIG_FEATURE_MDEV_EXEC=y +CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y +CONFIG_REV=y +CONFIG_ACPID=y +CONFIG_FEATURE_ACPID_COMPAT=y +CONFIG_BLKID=y +CONFIG_FEATURE_BLKID_TYPE=y +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFLUSH=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +CONFIG_FEATURE_OSF_LABEL=y +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +CONFIG_FINDFS=y +# CONFIG_FLOCK is not set +CONFIG_FREERAMDISK=y +CONFIG_FSCK_MINIX=y +# CONFIG_MKFS_EXT2 is not set +CONFIG_MKFS_MINIX=y +CONFIG_FEATURE_MINIX2=y +# CONFIG_MKFS_REISER is not set +CONFIG_MKFS_VFAT=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +CONFIG_FEATURE_HEXDUMP_REVERSE=y +CONFIG_HD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MKSWAP=y +CONFIG_FEATURE_MKSWAP_UUID=y +CONFIG_MORE=y +CONFIG_MOUNT=y +CONFIG_FEATURE_MOUNT_FAKE=y +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +CONFIG_FEATURE_MOUNT_HELPERS=y +CONFIG_FEATURE_MOUNT_LABEL=y +CONFIG_FEATURE_MOUNT_NFS=y +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +CONFIG_RDEV=y +CONFIG_READPROFILE=y +CONFIG_RTCWAKE=y +CONFIG_SCRIPT=y +CONFIG_SCRIPTREPLAY=y +CONFIG_SETARCH=y +CONFIG_SWAPONOFF=y +CONFIG_FEATURE_SWAPON_PRI=y +CONFIG_SWITCH_ROOT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +CONFIG_FEATURE_MTAB_SUPPORT=y +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +CONFIG_FEATURE_VOLUMEID_EXT=y +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +CONFIG_FEATURE_VOLUMEID_REISERFS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +CONFIG_FEATURE_VOLUMEID_HFS=y +CONFIG_FEATURE_VOLUMEID_JFS=y +CONFIG_FEATURE_VOLUMEID_XFS=y +CONFIG_FEATURE_VOLUMEID_NTFS=y +CONFIG_FEATURE_VOLUMEID_ISO9660=y +CONFIG_FEATURE_VOLUMEID_UDF=y +CONFIG_FEATURE_VOLUMEID_LUKS=y +CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y +CONFIG_FEATURE_VOLUMEID_CRAMFS=y +CONFIG_FEATURE_VOLUMEID_ROMFS=y +CONFIG_FEATURE_VOLUMEID_SYSV=y +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +CONFIG_FEATURE_VOLUMEID_LINUXRAID=y + +# +# Miscellaneous Utilities +# +# CONFIG_CONSPY is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_MARKS=y +CONFIG_FEATURE_LESS_REGEXP=y +CONFIG_FEATURE_LESS_WINCH=y +CONFIG_FEATURE_LESS_ASK_TERMINAL=y +CONFIG_FEATURE_LESS_DASHCMD=y +CONFIG_FEATURE_LESS_LINENUMS=y +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_SETSERIAL=y +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +CONFIG_ADJTIMEX=y +CONFIG_BBCONFIG=y +CONFIG_FEATURE_COMPRESS_BBCONFIG=y +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=4000 +CONFIG_FEATURE_BEEP_LENGTH_MS=30 +CONFIG_CHAT=y +CONFIG_FEATURE_CHAT_NOFAIL=y +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +CONFIG_FEATURE_CHAT_IMPLICIT_CR=y +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +CONFIG_CHRT=y +CONFIG_CROND=y +CONFIG_FEATURE_CROND_D=y +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=y +CONFIG_DC=y +CONFIG_FEATURE_DC_LIBM=y +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +CONFIG_EJECT=y +CONFIG_FEATURE_EJECT_SCSI=y +CONFIG_FBSPLASH=y +# CONFIG_FLASHCP is not set +CONFIG_FLASH_LOCK=y +CONFIG_FLASH_UNLOCK=y +CONFIG_FLASH_ERASEALL=y +CONFIG_IONICE=y +CONFIG_INOTIFYD=y +CONFIG_LAST=y +CONFIG_FEATURE_LAST_SMALL=y +# CONFIG_FEATURE_LAST_FANCY is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y +CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MAN is not set +# CONFIG_MICROCOM is not set +CONFIG_MOUNTPOINT=y +CONFIG_MT=y +CONFIG_RAIDAUTORUN=y +CONFIG_READAHEAD=y +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +CONFIG_RX=y +CONFIG_SETSID=y +CONFIG_STRINGS=y +CONFIG_TASKSET=y +CONFIG_FEATURE_TASKSET_FANCY=y +CONFIG_TIME=y +CONFIG_TIMEOUT=y +CONFIG_TTYSIZE=y +CONFIG_VOLNAME=y +# CONFIG_WALL is not set +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +CONFIG_NBDCLIENT=y +CONFIG_NC=y +CONFIG_NC_SERVER=y +CONFIG_NC_EXTRA=y +# CONFIG_NC_110_COMPAT is not set +CONFIG_PING=y +CONFIG_PING6=y +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_WHOIS is not set +CONFIG_FEATURE_IPV6=y +CONFIG_FEATURE_UNIX_LOCAL=y +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +CONFIG_ARP=y +CONFIG_ARPING=y +CONFIG_BRCTL=y +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +CONFIG_FAKEIDENTD=y +CONFIG_FTPD=y +CONFIG_FEATURE_FTP_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y +CONFIG_FTPGET=y +CONFIG_FTPPUT=y +CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y +CONFIG_HOSTNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +CONFIG_IFENSLAVE=y +CONFIG_IFPLUGD=y +CONFIG_IFUPDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y +# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_SHORT_FORMS=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPCALC=y +CONFIG_FEATURE_IPCALC_FANCY=y +CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +CONFIG_FEATURE_NETSTAT_PRG=y +CONFIG_NSLOOKUP=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +CONFIG_PSCAN=y +CONFIG_ROUTE=y +CONFIG_SLATTACH=y +CONFIG_TCPSVD=y +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_TELNETD=y +CONFIG_FEATURE_TELNETD_STANDALONE=y +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_TFTPD is not set + +# +# Common options for tftp/tftpd +# +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +CONFIG_FEATURE_TFTP_PROGRESS_BAR=y +CONFIG_TFTP_DEBUG=y +CONFIG_TRACEROUTE=y +CONFIG_TRACEROUTE6=y +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +CONFIG_TUNCTL=y +CONFIG_FEATURE_TUNCTL_UG=y +CONFIG_UDHCPC6=y +# CONFIG_UDHCPD is not set +# CONFIG_DHCPRELAY is not set +# CONFIG_DUMPLEASES is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_UDHCPC is not set +# CONFIG_FEATURE_UDHCPC_ARPING is not set +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +# CONFIG_FEATURE_UDHCP_8021Q is not set +CONFIG_UDHCPC_DEFAULT_SCRIPT="" +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0 +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" +CONFIG_UDPSVD=y +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_TIMEOUT=y +CONFIG_ZCIP=y + +# +# Print Utilities +# +# CONFIG_LPD is not set +CONFIG_LPR=y +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +CONFIG_MAKEMIME=y +CONFIG_FEATURE_MIME_CHARSET="us-ascii" +CONFIG_POPMAILDIR=y +CONFIG_FEATURE_POPMAILDIR_DELIVERY=y +CONFIG_REFORMIME=y +CONFIG_FEATURE_REFORMIME_COMPAT=y +# CONFIG_SENDMAIL is not set + +# +# Process Utilities +# +CONFIG_IOSTAT=y +CONFIG_LSOF=y +CONFIG_MPSTAT=y +CONFIG_NMETER=y +CONFIG_PMAP=y +CONFIG_POWERTOP=y +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_PGREP=y +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +CONFIG_PKILL=y +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +CONFIG_FEATURE_PS_TIME=y +CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +CONFIG_RENICE=y +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +CONFIG_FEATURE_TOP_SMP_CPU=y +CONFIG_FEATURE_TOP_DECIMALS=y +CONFIG_FEATURE_TOP_SMP_PROCESS=y +CONFIG_FEATURE_TOPMEM=y +CONFIG_FEATURE_SHOW_THREADS=y +CONFIG_WATCH=y + +# +# Runit Utilities +# +CONFIG_RUNSV=y +CONFIG_RUNSVDIR=y +CONFIG_FEATURE_RUNSVDIR_LOG=y +CONFIG_SV=y +CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service" +CONFIG_SVLOGD=y +CONFIG_CHPST=y +CONFIG_SETUIDGID=y +CONFIG_ENVUIDGID=y +CONFIG_ENVDIR=y +CONFIG_SOFTLIMIT=y +# CONFIG_CHCON is not set +# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RESTORECON is not set +# CONFIG_RUNCON is not set +# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_SETSEBOOL is not set +# CONFIG_SESTATUS is not set + +# +# Shells +# +CONFIG_ASH=y +CONFIG_ASH_BASH_COMPAT=y +# CONFIG_ASH_IDLE_TIMEOUT is not set +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_BUILTIN_ECHO=y +CONFIG_ASH_BUILTIN_PRINTF=y +CONFIG_ASH_BUILTIN_TEST=y +CONFIG_ASH_CMDCMD=y +CONFIG_ASH_MAIL=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_CTTYHACK=y +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_MSH is not set +CONFIG_FEATURE_SH_IS_ASH=y +# CONFIG_FEATURE_SH_IS_HUSH is not set +# CONFIG_FEATURE_SH_IS_NONE is not set +# CONFIG_FEATURE_BASH_IS_ASH is not set +# CONFIG_FEATURE_BASH_IS_HUSH is not set +CONFIG_FEATURE_BASH_IS_NONE=y +CONFIG_SH_MATH_SUPPORT=y +CONFIG_SH_MATH_SUPPORT_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_HISTFILESIZE=y + +# +# System Logging Utilities +# +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +CONFIG_FEATURE_IPC_SYSLOG=y +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y diff --git a/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-kernel_ver.patch b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-kernel_ver.patch new file mode 100644 index 000000000..456fb08e1 --- /dev/null +++ b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-kernel_ver.patch @@ -0,0 +1,25 @@ +--- busybox-1.20.2/libbb/kernel_version.c ++++ busybox-1.20.2-kernel_ver/libbb/kernel_version.c +@@ -20,18 +20,15 @@ + int FAST_FUNC get_linux_version_code(void) + { + struct utsname name; +- char *s; ++ char *s, *t; + int i, r; + +- if (uname(&name) == -1) { +- bb_perror_msg("can't get system information"); +- return 0; +- } +- ++ uname(&name); /* never fails */ + s = name.release; + r = 0; + for (i = 0; i < 3; i++) { +- r = r * 256 + atoi(strtok(s, ".")); ++ t = strtok(s, "."); ++ r = r * 256 + (t ? atoi(t) : 0); + s = NULL; + } + return r; diff --git a/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-ntpd.patch b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-ntpd.patch new file mode 100644 index 000000000..17fc0b1c4 --- /dev/null +++ b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-ntpd.patch @@ -0,0 +1,11 @@ +--- busybox-1.20.2/networking/ntpd.c ++++ busybox-1.20.2-ntpd/networking/ntpd.c +@@ -1840,7 +1840,7 @@ recv_and_process_client_pkt(void /*int f + + /* Build a reply packet */ + memset(&msg, 0, sizeof(msg)); +- msg.m_status = G.stratum < MAXSTRAT ? G.ntp_status : LI_ALARM; ++ msg.m_status = G.stratum < MAXSTRAT ? (G.ntp_status & LI_MASK) : LI_ALARM; + msg.m_status |= (query_status & VERSION_MASK); + msg.m_status |= ((query_status & MODE_MASK) == MODE_CLIENT) ? + MODE_SERVER : MODE_SYM_PAS; diff --git a/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-pkg-config-selinux.patch b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-pkg-config-selinux.patch new file mode 100644 index 000000000..f39250c85 --- /dev/null +++ b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-pkg-config-selinux.patch @@ -0,0 +1,67 @@ +From b1cec5003b73080a8aa7ea277621bf1c71c3e8d6 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Sat, 20 Oct 2012 15:01:26 -0400 +Subject: [PATCH] build system: use pkg-config to look up selinux libs + +Newer versions of libselinux has started linking against more libs. +Rather than continuing hardcoding things, switch to using pkg-config +to query for its dependencies. + +Signed-off-by: Mike Frysinger +--- + Makefile | 1 + + Makefile.flags | 12 +++++++++++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index fccde4a..3a0a5e1 100644 +--- a/Makefile ++++ b/Makefile +@@ -297,6 +297,7 @@ NM = $(CROSS_COMPILE)nm + STRIP = $(CROSS_COMPILE)strip + OBJCOPY = $(CROSS_COMPILE)objcopy + OBJDUMP = $(CROSS_COMPILE)objdump ++PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config + AWK = awk + GENKSYMS = scripts/genksyms/genksyms + DEPMOD = /sbin/depmod +diff --git a/Makefile.flags b/Makefile.flags +index c43c8dc..15dcc1f 100644 +--- a/Makefile.flags ++++ b/Makefile.flags +@@ -74,6 +74,12 @@ ARCH_FPIC ?= -fpic + ARCH_FPIE ?= -fpie + ARCH_PIE ?= -pie + ++# Usage: $(eval $(call pkg_check_modules,VARIABLE-PREFIX,MODULES)) ++define pkg_check_modules ++$(1)_CFLAGS := $(shell $(PKG_CONFIG) $(PKG_CONFIG_FLAGS) --cflags $(2)) ++$(1)_LIBS := $(shell $(PKG_CONFIG) $(PKG_CONFIG_FLAGS) --libs $(2)) ++endef ++ + ifeq ($(CONFIG_BUILD_LIBBUSYBOX),y) + # on i386: 14% smaller libbusybox.so + # (code itself is 9% bigger, we save on relocs/PLT/GOT) +@@ -85,6 +91,7 @@ endif + + ifeq ($(CONFIG_STATIC),y) + CFLAGS_busybox += -static ++PKG_CONFIG_FLAGS += --static + endif + + ifeq ($(CONFIG_PIE),y) +@@ -127,7 +134,10 @@ LDLIBS += pam pam_misc pthread + endif + + ifeq ($(CONFIG_SELINUX),y) +-LDLIBS += selinux sepol ++SELINUX_PC_MODULES = libselinux libsepol ++$(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES))) ++CPPFLAGS += $(SELINUX_CFLAGS) ++LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%)) + endif + + ifeq ($(CONFIG_EFENCE),y) +-- +1.7.12 + diff --git a/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-sys-resource.patch b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-sys-resource.patch new file mode 100644 index 000000000..7b1850084 --- /dev/null +++ b/patches/source/mkinitrd/fixes-1.20.2/busybox-1.20.2-sys-resource.patch @@ -0,0 +1,123 @@ +From 5a5dfcad6ba96d12d68bd7b39279215a8fee70d3 Mon Sep 17 00:00:00 2001 +From: Tias Guns +Date: Sun, 10 Jun 2012 14:19:01 +0200 +Subject: [PATCH] inetd: fix build failure in Android + +Signed-off-by: Tias Guns +Signed-off-by: Denys Vlasenko +(cherry picked from commit 64f763b42a43cbf36e401690ff6767c25575e520) +--- + networking/inetd.c | 1 + + 1 file changed, 1 insertion(+) +-- +1.7.12 + +From 246ea72843d5b7e9d4cd902dc5e9d71359196303 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Thu, 5 Jul 2012 23:19:09 -0400 +Subject: [PATCH] include sys/resource.h where needed + +We use functions from sys/resource.h in misc applets, but don't include +the header. This breaks building with newer glibc versions, so add the +include where needed. + +Signed-off-by: Mike Frysinger +(cherry picked from commit c5fe9f7b723f949457263ef8e22ab807d5b549ce) +--- + loginutils/passwd.c | 1 + + miscutils/time.c | 1 + + networking/inetd.c | 1 + + networking/ntpd.c | 1 + + networking/ntpd_simple.c | 1 + + runit/chpst.c | 1 + + shell/shell_common.c | 1 + + 7 files changed, 7 insertions(+) + +diff --git a/loginutils/passwd.c b/loginutils/passwd.c +index b83db00..a7006f0 100644 +--- a/loginutils/passwd.c ++++ b/loginutils/passwd.c +@@ -15,6 +15,7 @@ + + #include "libbb.h" + #include ++#include /* setrlimit */ + + static void nuke_str(char *str) + { +diff --git a/miscutils/time.c b/miscutils/time.c +index 945f15f..ffed386 100644 +--- a/miscutils/time.c ++++ b/miscutils/time.c +@@ -16,6 +16,7 @@ + //usage: "\n -v Verbose" + + #include "libbb.h" ++#include /* getrusage */ + + /* Information on the resources used by a child process. */ + typedef struct { +diff --git a/networking/inetd.c b/networking/inetd.c +index 1308d74..00baf69 100644 +--- a/networking/inetd.c ++++ b/networking/inetd.c +@@ -165,6 +165,8 @@ + //usage: "\n (default: 0 - disabled)" + + #include ++#include /* setrlimit */ ++#include /* un.h may need this */ + #include + + #include "libbb.h" +diff --git a/networking/ntpd.c b/networking/ntpd.c +index 603801e..b885215 100644 +--- a/networking/ntpd.c ++++ b/networking/ntpd.c +@@ -46,6 +46,7 @@ + #include "libbb.h" + #include + #include /* For IPTOS_LOWDELAY definition */ ++#include /* setpriority */ + #include + #ifndef IPTOS_LOWDELAY + # define IPTOS_LOWDELAY 0x10 +diff --git a/networking/ntpd_simple.c b/networking/ntpd_simple.c +index 4ad44e4..1b7c66b 100644 +--- a/networking/ntpd_simple.c ++++ b/networking/ntpd_simple.c +@@ -7,6 +7,7 @@ + */ + #include "libbb.h" + #include /* For IPTOS_LOWDELAY definition */ ++#include /* setpriority */ + #ifndef IPTOS_LOWDELAY + # define IPTOS_LOWDELAY 0x10 + #endif +diff --git a/runit/chpst.c b/runit/chpst.c +index ac296ba..ed72c8b 100644 +--- a/runit/chpst.c ++++ b/runit/chpst.c +@@ -91,6 +91,7 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //usage: "\n a SIGXCPU after N seconds" + + #include "libbb.h" ++#include /* getrlimit */ + + /* + Five applets here: chpst, envdir, envuidgid, setuidgid, softlimit. +diff --git a/shell/shell_common.c b/shell/shell_common.c +index 51c92d6..780e27e 100644 +--- a/shell/shell_common.c ++++ b/shell/shell_common.c +@@ -18,6 +18,7 @@ + */ + #include "libbb.h" + #include "shell_common.h" ++#include /* getrlimit */ + + const char defifsvar[] ALIGN1 = "IFS= \t\n"; + +-- +1.7.12 + diff --git a/patches/source/mkinitrd/init b/patches/source/mkinitrd/init new file mode 100755 index 000000000..7122dbc3d --- /dev/null +++ b/patches/source/mkinitrd/init @@ -0,0 +1,350 @@ +#!/bin/ash +# +# /init: init script to load kernel modules from an initramfs +# This requires that your kernel supports initramfs!!! +# +# Copyright 2004 Slackware Linux, Inc., Concord, CA, USA +# Copyright 2007, 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +################################################################################## +# With a generic kernel, you need to load the modules needed to mount the +# root partition. This might mean a SCSI, RAID, or other drive controller +# module, as well as the module to support the root filesystem. Once the +# root partition is mounted all the other modules will be available so you +# don't need to load them here. +# +# Config files used by this script: +# +# /rootdev Contains the name of the root device, such as: /dev/hda1 +# +# /rootfs Contains the root filesystem type, such as: xfs +# +# /initrd-name Contains the name of the initrd file. +# +# /resumedev Contains the name of the device to resume from hibernation. +# +# /luksdev Contains colon separated list of luks encrypted devices to +# be unlocked. +# +# /lukstrim Contains colon separated list of luks encrypted devices to +# pass '--allow-discards' when unlocking +# +# /lukskey Contains the path to a LUKS key-file for automatic unlock +# Format: LABEL=:/path/to/file +# UUID=:/path/to/file +# +# /wait-for-root Contains a number - the init script will wait this amount +# of seconds before creating device nodes. +# +# /keymap Contains the name for a custom keyboard map +# +# Optional: +# +# /load_kernel_modules +# A script that uses modprobe to load the desired modules. +# +# There's an example in here. To actually use it, you'll +# need to make it executable: +# +# chmod 755 load_kernel_modules +################################################################################## +# Changelog +# 10-Dec-2012 +# * Added support for the official Kernel parameters to select root filesystem +# type ('rootfstype') and pause before attempting to mount the root filesystem +# ('rootdelay'). The original parameters may continue to be used. +################################################################################## + +INITRD=$(cat /initrd-name) +ROOTDEV=$(cat /rootdev) +ROOTFS=$(cat /rootfs) +LUKSDEV=$(cat /luksdev) +LUKSTRIM=$(cat /lukstrim 2>/dev/null) +LUKSKEY=$(cat /lukskey) +RESUMEDEV=$(cat /resumedev) +WAIT=$(cat /wait-for-root) +KEYMAP=$(cat /keymap) +INIT=/sbin/init + +PATH="/sbin:/bin:/usr/sbin:/usr/bin" + +# Mount /proc and /sys: +mount -n proc /proc -t proc +mount -n sysfs /sys -t sysfs +mount -n tmpfs /run -t tmpfs -o mode=0755,size=32M,nodev,nosuid,noexec + +if grep devtmpfs /proc/filesystems 1>/dev/null 2>/dev/null ; then + DEVTMPFS=1 + mount -n devtmpfs /dev -t devtmpfs -o size=8M +fi + +# Parse command line +for ARG in $(cat /proc/cmdline); do + case $ARG in + 0|1|2|3|4|5|6|S|s|single) + RUNLEVEL=$ARG + ;; + init=*) + INIT=$(echo $ARG | cut -f2 -d=) + ;; + luksdev=/dev/*) + LUKSDEV=$(echo $ARG | cut -f2 -d=) + ;; + lukskey=*) + LUKSKEY=$(echo $ARG | cut -f2- -d=) + ;; + rescue) + RESCUE=1 + ;; + resume=*) + RESUMEDEV=$(echo $ARG | cut -f2- -d=) + ;; + root=/dev/*) + ROOTDEV=$(echo $ARG | cut -f2 -d=) + ;; + root=LABEL=*) + ROOTDEV=$(echo $ARG | cut -f2- -d=) + ;; + root=UUID=*) + ROOTDEV=$(echo $ARG | cut -f2- -d=) + ;; + rootfs=*|rootfstype=*) + ROOTFS=$(echo $ARG | cut -f2 -d=) + ;; + waitforroot=*|rootdelay=*) + WAIT=$(echo $ARG | cut -f2 -d=) + ;; + esac +done + +# If udevd is available, use it to generate block devices +# else use mdev to read sysfs and generate the needed devices +if [ -x /sbin/udevd -a -x /sbin/udevadm ]; then + /sbin/udevd --daemon --resolve-names=never + /sbin/udevadm trigger --subsystem-match=block --action=add + /sbin/udevadm settle --timeout=10 +else + [ "$DEVTMPFS" != "1" ] && mdev -s +fi + +# Load kernel modules (ideally this was already done by udev): +if [ ! -d /lib/modules/$(uname -r) ]; then + echo "No kernel modules found for Linux $(uname -r)." +elif [ -x ./load_kernel_modules ]; then # use load_kernel_modules script: + echo "${INITRD}: Loading kernel modules from initrd image:" + . ./load_kernel_modules +else # load modules (if any) in order: + if ls /lib/modules/$(uname -r)/*.*o 1> /dev/null 2> /dev/null ; then + echo "${INITRD}: Loading kernel modules from initrd image:" + for module in /lib/modules/$(uname -r)/*.*o ; do + /sbin/modprobe $module + done + unset module + fi +fi + +# Sometimes the devices need extra time to be available. +# A root filesystem on USB is a good example of that. +sleep $WAIT + +# Load a custom keyboard mapping: +if [ -n "$KEYMAP" ]; then + echo "${INITRD}: Loading '$KEYMAP' keyboard mapping:" + tar xzOf /etc/keymaps.tar.gz ${KEYMAP}.bmap | loadkmap +fi + +if [ "$RESCUE" = "" ]; then + # Initialize RAID: + if [ -x /sbin/mdadm ]; then + # If /etc/mdadm.conf is present, udev should DTRT on its own; + # If not, we'll make one and go from there: + if [ ! -r /etc/mdadm.conf ]; then + /sbin/mdadm -E -s >/etc/mdadm.conf + /sbin/mdadm -S -s + /sbin/mdadm -A -s + # This seems to make the kernel see partitions more reliably: + fdisk -l /dev/md* 1> /dev/null 2> /dev/null + fi + fi + + # Unlock any encrypted partitions necessary to access the + # root filesystem, such as encrypted LVM Physical volumes, disk + # partitions or mdadm arrays. + # Unavailable devices such as LVM Logical Volumes will need to be + # deferred until they become available after the vgscan. + + if [ -x /sbin/cryptsetup ]; then + + # Determine if we have to use a LUKS keyfile: + if [ ! -z "$LUKSKEY" ]; then + mkdir /mountkey + KEYPART=$(echo $LUKSKEY |cut -f1 -d:) + KEYNAME=$(echo $KEYPART |cut -f2 -d=) + LUKSPATH="/mountkey$(echo $LUKSKEY |cut -f2 -d:)" + # Catch possible mount failure: + if blkid |grep "TYPE=\"vfat\"" |grep $KEYNAME 1>/dev/null 2>&1 ; then + MOUNTOPTS="-t vfat -o shortname=mixed" + else + MOUNTOPTS="-t auto" + fi + mount $MOUNTOPTS $(findfs $KEYPART) /mountkey 2>/dev/null + # Check if we can actually use this file: + if [ ! -f $LUKSPATH ]; then + LUKSKEY="" + else + echo ">>> Using LUKS key file: '$LUKSKEY'" + LUKSKEY="-d $LUKSPATH" + fi + fi + + LUKSLIST_DEFERRED="" + LUKSLIST=$(echo $LUKSDEV | tr -s ':' ' ') + for LUKSDEV in $LUKSLIST ; do + if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then + if echo $ROOTDEV | grep -q "LABEL=" || echo $ROOTDEV | grep -q "UUID=" ; then + CRYPTDEV="luks$(basename $LUKSDEV)" + elif [ "x$ROOTDEV" = "x$(basename $ROOTDEV)" ]; then + CRYPTDEV="$ROOTDEV" + else + CRYPTDEV="luks$(basename $LUKSDEV)" + fi + if echo $LUKSTRIM | grep -wq $LUKSDEV 2>/dev/null ; then + LUKSOPTS="--allow-discards" + else + LUKSOPTS="" + fi + if [ -z "${LUKSOPTS}" ]; then + echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV':" + else + echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV' with '$LUKSOPTS':" + fi + /sbin/cryptsetup ${LUKSOPTS} ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} /dev/tty0 2>&1 + if [ "$ROOTDEV" = "$LUKSDEV" -o "$ROOTDEV" = "$CRYPTDEV" ] ; then + ROOTDEV="/dev/mapper/$CRYPTDEV" + fi + else + LUKSLIST_DEFERRED="${LUKSLIST_DEFERRED} ${LUKSDEV}" + fi + done + fi + + # Initialize LVM: + if [ -x /sbin/vgchange ]; then + mkdir -p /var/lock/lvm # this avoids useless warnings + /sbin/vgchange -ay --ignorelockingfailure 2>/dev/null + /sbin/udevadm settle --timeout=10 + fi + + # Unlock any LUKS encrypted devices that were deferred above but have now + # become available due to the vgscan (i.e. filesystems on LVM Logical Volumes) + + if [ -x /sbin/cryptsetup -a -n "${LUKSLIST_DEFERRED}" ]; then + for LUKSDEV in ${LUKSLIST_DEFERRED} ; do + if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then + if echo $ROOTDEV | grep -q "LABEL=" || echo $ROOTDEV | grep -q "UUID=" ; then + CRYPTDEV="luks$(basename $LUKSDEV)" + elif [ "x$ROOTDEV" = "x$(basename $ROOTDEV)" ]; then + CRYPTDEV="$ROOTDEV" + else + CRYPTDEV="luks$(basename $LUKSDEV)" + fi + echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV':" + /sbin/cryptsetup ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} /dev/tty0 2>&1 + if [ "$ROOTDEV" = "$LUKSDEV" -o "$ROOTDEV" = "$CRYPTDEV" ] ; then + ROOTDEV="/dev/mapper/$CRYPTDEV" + fi + else + echo "LUKS device '${LUKSDEV}' unavailable for unlocking!" + fi + done + /sbin/udevadm settle --timeout=10 + fi + + # Scan for btrfs multi-device filesystems: + if [ -x /sbin/btrfs ]; then + /sbin/btrfs device scan + fi + + # Find root device if a label or UUID was given: + if echo $ROOTDEV | grep -q "LABEL=" || \ + echo $ROOTDEV | grep -q "UUID=" ; then + ROOTDEV=$(findfs $ROOTDEV) + fi + + # Clean up after LUKS unlock using a keyfile: + if grep -q mountkey /proc/mounts 2>/dev/null ; then + umount -l /mountkey + rmdir /mountkey 2>/dev/null + fi + + # Resume state from swap + if [ "$RESUMEDEV" != "" ]; then + # Find resume device if a label or UUID was given: + if echo $RESUMEDEV | grep -q "LABEL=" || \ + echo $RESUMEDEV | grep -q "UUID=" ; then + RESUMEDEV=$(findfs $RESUMEDEV) + elif ls -l $RESUMEDEV | grep -q "^l" ; then + RESUMEDEV=$(readlink -f $RESUMEDEV) + fi + echo "Trying to resume from $RESUMEDEV" + RESMAJMIN=$(ls -l $RESUMEDEV | tr , : | awk '{ print $5$6 }') + echo $RESMAJMIN > /sys/power/resume + fi + + # Switch to real root partition: + /sbin/udevadm settle --timeout=10 + echo 0x0100 > /proc/sys/kernel/real-root-dev + mount -o ro -t $ROOTFS $ROOTDEV /mnt + + if [ ! -r /mnt/sbin/init ]; then + echo "ERROR: No /sbin/init found on rootdev (or not mounted). Trouble ahead." + echo " You can try to fix it. Type 'exit' when things are done." + echo + /bin/sh + fi +else + echo + echo "RESCUE mode" + echo + echo " You can try to fix or rescue your system now. If you want" + echo " to boot into your fixed system, mount your root filesystem" + echo " read-only under /mnt:" + echo + echo " # mount -o ro -t filesystem root_device /mnt" + echo + echo " Type 'exit' when things are done." + echo + /bin/sh +fi + +# Need to make sure OPTIONS+="db_persist" exists for all dm devices +# That should be handled in /sbin/mkinitrd now +/sbin/udevadm info --cleanup-db +/sbin/udevadm control --exit + +unset ERR +mount -o move /proc /mnt/proc +mount -o move /sys /mnt/sys +mount -o move /run /mnt/run + +[ "$DEVTMPFS" = "1" ] && mount -o move /dev /mnt/dev +echo "${INITRD}: exiting" +exec switch_root /mnt $INIT $RUNLEVEL diff --git a/patches/source/mkinitrd/mkinitrd b/patches/source/mkinitrd/mkinitrd new file mode 100644 index 000000000..ed8f3247b --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd @@ -0,0 +1,740 @@ +#!/bin/sh +# Copyright 2004 Slackware Linux, Inc., Concord, CA, USA +# Copyright 2004 Patrick J. Volkerding, Concord, CA, USA +# Copyright 2007, 2008, 2009, 2010, 2011, 2015, 2016, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified by Robby Workman 26 November 2007 +# to add support for mkinitrd.conf - No additional license terms added +# Modified by Alan Hicks 27 November 2007 to enable +# passing arguments to kernel modules - No additional license terms added +# volkerdi - feel free to remove these :) +# Modified by Eric Hameleers 3 April 2008 +# to add support custom keymaps - No additional license terms added +# Modified by Patrick Volkerding 17 Dec 2008 +# Added support to bail out if kernel modules are requested for a kernel +# version that is not installed (thanks to Eric Hameleers), be more +# verbose about showing modules added to the initrd (thanks to +# Ellington Santos), and if "mount" returns /dev/root as the root device, +# use readlink to resolve the device pointed to by the /dev/root +# symlink, changed modprobe to use --ignore-install to avoid catching +# custom "install" lines and causing /sbin/modprobe to be copied to the +# initrd (thanks to Ken Milmore). +# Of course, license terms remain unchanged. +# Modified by Eric Hameleers 3 March 2010 +# Add lukskey option (-K). Automatically add kernel modules listed in +# load-kernel-modules if that file is executable. +# Yada yada yada. +# Modified by Patrick Volkerding 21 August 2012 +# Add Btrfs multi-device filesystem support option (-B). +# Modified by Robby Workman 08 March 2017 +# to add support for TRIM on LUKS root devs +# Modified by Patrick Volkerding 29 June 2017 +# Add support for prepending a microcode update archive (-P). + +MKINITRD_VERSION=1.4.10 + +# Don't include these things from /lib/udev/ in the initrd image +LIBUDEV_BLACKLIST="\ + ipod-set-info \ + iphone-set-info \ + check-mtp-device \ + check-ptp-camera \ + udev-configure-printer \ + rules.d/60-openobex.rules \ + rules.d/85-regulatory.rules \ + " + +print_usage() { + cat << EOF +Usage: mkinitrd [OPTION] + +mkinitrd creates an initial ramdisk (actually an initramfs cpio+gzip +archive) used to load kernel modules that are needed to mount the +root filesystem, or other modules that might be needed before the +root filesystem is available. Other binaries may be added to the +initrd, and the script is easy to modify. Be creative. :-) + + -F Use the contents of /etc/mkinitrd.conf (optional) + If this is used in conjunction with any other options passed + on the command line, the command-line options will override + the config file options. See mkinitrd.conf(5) for details. + -c Clear the existing initrd tree first + -f Filesystem to use for root partition (must be used with -r) + --help Display this message + -h Device to resume from hibernation. Needs to be the name of + the swap partition holding the hibernation image. + -k Kernel version to use + -l Custom keymap to load. Like, 'nl' or 'de-latin1-nodeadkeys' + -m A colon (:) delimited list of kernel modules to load. + Additional options may be added to use when loading the + kernel modules (but in this case the entire list must be + wrapped with double quotes). Any dependencies of requested + modules will also be added to the initrd. + -o Output image (default /boot/initrd.gz) + -r Root partition device (must be used with -f) + -s Initrd source tree (default /boot/initrd-tree/) + -u Include udev in the initrd + -w Time to wait until all disks are detected + -C A colon (:) delimited list of luks encrypted block devices to be + unlocked by the initrd using cryptsetup. All devices that must + be unlocked in order to access the root filesystem must be + specified. (Use with '-r' parameter). + -T A colon (:) delimited list of luks encrypted block devices to be + passed the "--allow-discards" option when unlocked by the initrd + using cryptsetup. This has the effect of allowing TRIM on SSD drives. + Be sure your SSD supports this feature (correctly) before enabling + it. See fstrim(8) for more information. + -L Add support for LVM partitions + -K Use a USB key (fat-formatted) to unlock the root LUKS volume + The parameter value is filename of a keyfile, as well as the label + (or uuid) of the partition this file is on. This way, you can unlock + your computer automatically if you have a USB stick with your LUKS + key inserted at boot. A passphrase will still be asked if the LUKS + key can not be found. + For example, if your USB thumb drive has a FAT partition with label + "TRAVELSTICK" and the actual keyfile is called "/keys/alien.luks", + then you need to pass: -K LABEL=TRAVELSTICK:/keys/alien.luks + -B Add /sbin/btrfs to enable scanning for a root filesystem that is + part of a Btrfs multi-device filesystem. + -M Add the files in /etc/modprobe.d/ and /lib/modprobe.d/ to the initrd + -P Prepend the output image with the microcode CPIO archive given in arguments. + -R Add support for RAID partitions + -V Display version number + +A simple example: Build an initrd for a reiserfs root partition: + + mkinitrd -c -m reiserfs + +Another example: Build an initrd image using Linux 2.6.35.4-smp kernel +modules for a system with an ext4 root partition on /dev/sdb3: + + mkinitrd -c -k 2.6.35.4-smp -m mbcache:jbd:ext4 -f ext4 -r /dev/sdb3 + +Note that if you are already logged in with /dev/sdb3 as your / +partition, and it is running ext4, this command works just the same: + + mkinitrd -c -m ext4 + +If run without options, mkinitrd will rebuild an initrd image using +the contents of the $SOURCE_TREE directory, or, if that directory +does not exist it will be created and populated, and then mkinitrd +will exit. + +EOF +} + +create_new_source_tree() { + mkdir -p $SOURCE_TREE + # Make sure a kernel module directory exists: + mkdir -p $SOURCE_TREE/lib/modules/${KERNEL_VERSION} + # Add the initrd-tree skeleton: + ( cd $SOURCE_TREE ; tar xzf /usr/share/mkinitrd/initrd-tree.tar.gz ) + # Make sure we have any block devices that might be needed: + + SLOPPY_DEV_LIST=$(cat /proc/partitions) + for device in $SLOPPY_DEV_LIST ; do + if [ ! -r $SOURCE_TREE/dev/$device ]; then + if [ -b /dev/$device ]; then + if [ -L /dev/$device ]; then + cp -a --parents $(readlink -e /dev/$device) $SOURCE_TREE + fi + cp -a --parents /dev/$device $SOURCE_TREE + fi + fi + done +} + +clear_source_tree() { + if [ -d "$SOURCE_TREE" ]; then + rm -rf $SOURCE_TREE + fi +} + +build_initrd_image() { + # Make sure we have any block devices that might be needed: + SLOPPY_DEV_LIST=$(cat /proc/partitions) + for device in $SLOPPY_DEV_LIST ; do + if [ ! -r $SOURCE_TREE/dev/$device ]; then + if [ -b /dev/$device ]; then + if [ -L /dev/$device ]; then + cp -a --parents $(readlink -e /dev/$device) $SOURCE_TREE + fi + cp -a --parents /dev/$device $SOURCE_TREE + fi + fi + done + # Use the output image name written in the initrd-tree if present: + if [ ! -z "$(cat $SOURCE_TREE/initrd-name)" ]; then + OUTPUT_IMAGE=$(cat $SOURCE_TREE/initrd-name) + if [ "$OUTPUT_IMAGE" = "$(basename $OUTPUT_IMAGE)" ]; then + OUTPUT_IMAGE=/boot/$OUTPUT_IMAGE + fi + mkdir -p $(dirname $OUTPUT_IMAGE) + fi + # Wrap the initrd as an initramfs image and move it into place: + ( cd $SOURCE_TREE + rm -f $OUTPUT_IMAGE + find . | cpio -o -H newc | gzip -9c > $OUTPUT_IMAGE + ) + + if [ ! -z "${MICROCODE_ARCH}" ] ; then + cat ${MICROCODE_ARCH} ${OUTPUT_IMAGE} > ${OUTPUT_IMAGE}.2 + mv ${OUTPUT_IMAGE}.2 ${OUTPUT_IMAGE} + fi + echo "$OUTPUT_IMAGE created." + echo "Be sure to run lilo again if you use it." +} + +badconf_file() { + # This won't really help with what's *wrong* with the file, + # but it will at least give them a clue that there's a problem + echo "/etc/mkinitrd.conf is bad or does not exist." + echo "If the file does not exist, do not pass -F to mkinitrd." + exit 1 +} + + +unify_libs() { + awk '/=. \// { print $3 }' | sort -u +} + +copy_libs() { + # First copy the essential glibc files: + find /lib /lib64 -name "ld-*so*" -o -name "libnss_files*so*" -o -name "libnss_compat*so*" 2> /dev/null | xargs -I'{}' cp -P --parents '{}' $SOURCE_TREE/ + + # Then copy all remaining libs our initrd files link against: + COUNT=1 + PRFX=$(tempfile --prefix ldd-) + TMPFILE=${PRFX}${COUNT} + + find $SOURCE_TREE -type f -exec ldd {} 2>/dev/null \; | unify_libs > $TMPFILE + while [ "$COUNT" != "0" ]; do + COUNT=$((COUNT+1)) + for i in $(cat ${TMPFILE}) ; do + ldd $i 2>/dev/null + done | unify_libs > ${PRFX}${COUNT} + if [ $(cat $TMPFILE ${PRFX}${COUNT} | sort |uniq -u | wc -l) -eq 0 ]; then + COUNT=0 + else + TMPFILE=${PRFX}${COUNT} + fi + # emergency eject lever: + if [ "$COUNT" = "42" ]; then + COUNT=0 + fi + done + + for i in $(cat ${PRFX}* | sort -u) ; do + cp -P --parents ${i}* $SOURCE_TREE + done + + ( + cd $SOURCE_TREE + for i in $(find -L . -type l -exec readlink -m /{} \; 2>/dev/null ) ; do + cp -P --parents ${i} $SOURCE_TREE + done + ) + + rm ${PRFX}* +} + +copy_modconf() { + mkdir -p $SOURCE_TREE/etc $SOURCE_TREE/lib + cp -a /etc/modprobe.d $SOURCE_TREE/etc + cp -a /lib/modprobe.d $SOURCE_TREE/lib/ +} + +# If --help is given, print_usage and exit: +if echo $* | grep -wq '\--help' ; then + print_usage + exit 0 +fi + +# If -V given, print version and exit: +if echo $* | grep -wq '\-V' ; then + echo "mkinitrd version $MKINITRD_VERSION" + exit 0 +fi + +# Default values if these aren't previously set. +# Might be set from config file or by -s and -o options too. +SOURCE_TREE=${SOURCE_TREE:-/boot/initrd-tree} +OUTPUT_IMAGE=${OUTPUT_IMAGE:-""} +KERNEL_VERSION=${KERNEL_VERSION:-"$(uname -r)"} +# The initrd requires udev to function correctly: +UDEV=1 + +# Default actions without options: +if [ -z "$1" ]; then + # We need a sensible default for this special case: + OUTPUT_IMAGE=${OUTPUT_IMAGE:-/boot/initrd.gz} + # If the output tree doesn't exist, create it and then exit: + if [ ! -d $SOURCE_TREE ]; then + echo "Nothing found at location $SOURCE_TREE, so we will create an" + echo -n "initrd directory structure there... " + create_new_source_tree + echo "done." + echo + echo "Now cd to $SOURCE_TREE and install some modules in your" + echo "module directory (lib/modules/${KERNEL_VERSION}). Then see init" + echo "for more information (there are a few other files to edit)." + echo "Finally, run mkinitrd again once the initrd-tree is ready," + echo "and $OUTPUT_IMAGE will be created from it." + echo + exit 0 + else + # If the source tree does exist, the default is to build the initrd + # image from it and then exit: + build_initrd_image + exit 0 + fi +fi # default no-option actions + +# Parse for the use config file option first or else the other command +# line options can not override /etc/mkinitrd.conf. +for opt in "$@"; do + if [ "$opt" = "-F" ]; then + if [ -e /etc/mkinitrd.conf ]; then + . /etc/mkinitrd.conf || badconf_file + else + badconf_file + fi + fi +done + +# Parse options: +while [ ! -z "$1" ]; do + case $1 in + -c) + CLEAR_TREE=1 + shift + ;; + -f) + ROOTFS="$2" + shift 2 + ;; + -h) + RESUMEDEV="$2" + shift 2 + ;; + -k) + KERNEL_VERSION="$2" + shift 2 + ;; + -l) + KEYMAP="$2" + shift 2 + ;; + -m) + MODULE_LIST="$2" + shift 2 + ;; + -o) + # canonicalize filename: + OUTPUT_IMAGE="$(readlink -m $2)" + shift 2 + ;; + -r) + ROOTDEV="$2" + shift 2 + ;; + -s) + # canonicalize filename: + SOURCE_TREE="$(readlink -m $2)" + shift 2 + ;; + -u) + UDEV=1 + shift + ;; + -w) + WAIT="$2" + shift 2 + ;; + -C) + CRYPT=1 + LUKSDEV="$2" + shift 2 + ;; + -K) + LUKSKEY="$2" + shift 2 + ;; + -T) + LUKSTRIM="$2" + shift 2 + ;; + -L) + LVM=1 + shift + ;; + -B) + BTRFS=1 + shift + ;; + -M) + MODCONF=1 + shift + ;; + -P) + # canonicalize filename: + MICROCODE_ARCH="$(readlink -m $2)" + if [ ! -e "${MICROCODE_ARCH}" ] ; then + echo "Error, the microcode cpio archive ${MICROCODE_ARCH} does not exist." + exit 1 + fi + shift 2 + ;; + + -R) + RAID=1 + shift + ;; + *) # unknown, prevent infinite loop + shift + ;; + esac +done + +# If kernel modules are needed but the kernel version is absent, exit now: +if [ ! -d /lib/modules/$KERNEL_VERSION ]; then + echo "ERROR: No /lib/modules/$KERNEL_VERSION kernel modules tree found for kernel \"$KERNEL_VERSION\"" + exit 1 +fi + +# If clearing source tree was requested, do that first +if [ "$CLEAR_TREE" = "1" ]; then + clear_source_tree +fi + +# If there's no $SOURCE_TREE, make one now: +if [ ! -d "$SOURCE_TREE" ]; then + create_new_source_tree +fi + +# If $ROOTDEV and $ROOTFS are not set, assume we want the +# values for the currently mounted / +# (unless we find that values are already set in the initrd-tree): +if [ -z "$ROOTDEV" -a -z "$(cat $SOURCE_TREE/rootdev 2>/dev/null)" ]; then + ROOTDEV=$(mount | grep ' on / ' | cut -f 1 -d ' ') + if [ "$ROOTDEV" = "/dev/root" ]; then # find real root device + ROOTDEV="/dev/$(readlink /dev/root)" + fi +fi +if [ -z "$ROOTFS" -a -z "$(cat $SOURCE_TREE/rootfs 2>/dev/null)" ]; then + ROOTFS=$(mount | grep ' on / ' | cut -f 5 -d ' ') +fi +# If needed, write them in the initrd-tree: +if [ ! -z "$ROOTDEV" ]; then + echo $ROOTDEV > $SOURCE_TREE/rootdev +fi +if [ ! -z "$ROOTFS" ]; then + echo $ROOTFS > $SOURCE_TREE/rootfs +fi + +# If $WAIT is not set, assume we need only one second +# to have all devices done +# (unless we find that value is already set in the initrd-tree): +if [ -z "$WAIT" -a -z "$(cat $SOURCE_TREE/wait-for-root)" ]; then + WAIT=1 + # ARM devices need even more time: + case "$( uname -m )" in + arm*) WAIT=4;; + esac +fi +if [ ! -z "$WAIT" ]; then + echo $WAIT > $SOURCE_TREE/wait-for-root +fi + +# If no OUTPUT_IMAGE was specified, read it from the SOURCE_TREE if possible: +OUTPUT_IMAGE=${OUTPUT_IMAGE:-"$(cat $SOURCE_TREE/initrd-name)"} +# If we still have no value, apply the default: +OUTPUT_IMAGE=${OUTPUT_IMAGE:-"/boot/initrd.gz"} +# Finally, write the image name into the SOURCE_TREE: +echo "$OUTPUT_IMAGE" > $SOURCE_TREE/initrd-name + +# Fill /resumedev with the swap partition holding the hibernation image +if [ ! -z "$RESUMEDEV" ]; then + echo $RESUMEDEV > $SOURCE_TREE/resumedev +fi + +# Add custom keymap support if one was given +if [ ! -z "$KEYMAP" ]; then + echo $KEYMAP > $SOURCE_TREE/keymap + cp /usr/share/mkinitrd/keymaps.tar.gz $SOURCE_TREE/etc/ +fi + +# If LUKSDEV was set in the config file, then we need to set CRYPT=1 +if [ ! -z "$LUKSDEV" ]; then + CRYPT=1 +fi + +# Check for LUKSTRIM +if [ ! -z "$LUKSTRIM" ]; then + echo $LUKSTRIM > $SOURCE_TREE/lukstrim +fi + +# If LUKSKEY was set in the config file, then give it a warm welcome: +if [ ! -z "$LUKSKEY" ]; then + # $SOURCE_TREE/wait-for-root may have been configured earlier in the script, + # but we require at least 5 seconds for the USB stick to settle + # after insertion : + if [ ! -s $SOURCE_TREE/wait-for-root ] || [ $(cat $SOURCE_TREE/wait-for-root) -lt 5 ]; then + echo 5 > $SOURCE_TREE/wait-for-root + fi + + # Several extra modules are needed to support a vfat formatted USB stick... + # assuming here we are using a western codepage. + # This possibly adds doublures, but we clean up the MODULE_LIST further down! + MODULE_LIST="${MODULE_LIST}:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:ohci-hcd:ehci-hcd:uhci-hcd:usb-storage:hid:usbhid:fat:nls_cp437:nls_iso8859-1:msdos:vfat" + + # Finally, write the lukskey to the initrd-tree: + echo $LUKSKEY > $SOURCE_TREE/lukskey +fi + +# Include RAID support in initrd +if [ ! -z "$RAID" ]; then + if [ -r /sbin/mdadm -a -r /sbin/mdmon ]; then + mkdir -p $SOURCE_TREE/sbin + cp /sbin/mdadm $SOURCE_TREE/sbin/mdadm + cp /sbin/mdmon $SOURCE_TREE/sbin/mdmon + chmod 0755 $SOURCE_TREE/sbin/mdadm + chmod 0755 $SOURCE_TREE/sbin/mdmon + mkdir -p $SOURCE_TREE/lib/udev/rules.d + echo 'KERNEL=="dm-[0-9]*", OPTIONS+="db_persist"' > \ + $SOURCE_TREE/lib/udev/rules.d/95-dm-initrd.rules + if [ -r /etc/mdadm.conf ] ; then + cp /etc/mdadm.conf $SOURCE_TREE/etc + fi + else + echo "ERROR: mdadm and/or mdmon binary is missing, RAID support not installed" + fi +fi + +# Include Btrfs support in initrd +if [ ! -z "$BTRFS" ]; then + if [ -r /sbin/btrfs ]; then + mkdir -p $SOURCE_TREE/sbin + cp /sbin/btrfs $SOURCE_TREE/sbin/btrfs + chmod 0755 $SOURCE_TREE/sbin/btrfs + else + echo "ERROR: btrfs binary is missing, Btrfs support not installed" + fi +fi + +# Include udev in initrd +if [ ! -z "$UDEV" ]; then + cp /sbin/udev* $SOURCE_TREE/sbin/ + cp -a /lib/udev $SOURCE_TREE/lib/ + # But we don't want all of /lib/udev + for file in $(echo $LIBUDEV_BLACKLIST) ; do + # Replace with a null script (avoids error spew): + cat << EOF > $SOURCE_TREE/lib/udev/$file +#!/bin/ash +# This space is intentionally left blank +EOF + done +fi + +# Include LVM support in initrd +if [ ! -z "$LVM" ]; then + if [ -f /sbin/lvm ]; then + mkdir -p $SOURCE_TREE/sbin + cp /sbin/lvm $SOURCE_TREE/sbin/lvm + ( cd $SOURCE_TREE/sbin + ln -s lvm vgchange 2>/dev/null + ln -s lvm vgscan 2>/dev/null ) + else + echo "LVM binary is missing, LVM support isn't installed" + LVM="" + fi +fi + +# Include cryptsetup (LUKS) support in initrd +if [ ! -z "$CRYPT" ]; then + if [ -e /usr/sbin/cryptsetup ]; then + mkdir -p $SOURCE_TREE/sbin + cp /usr/sbin/cryptsetup $SOURCE_TREE/sbin/cryptsetup + if [ ! -e $SOURCE_TREE/sbin/udevadm ]; then + cat << EOF > $SOURCE_TREE/sbin/udevadm +#!/bin/sh +sleep 3 +EOF + chmod 0755 $SOURCE_TREE/sbin/udevadm + fi + + # Write the underlying luks device to the initrd-tree: + echo $LUKSDEV > $SOURCE_TREE/luksdev + else + echo "Cryptsetup binary is missing, CRYPT support isn't installed" + CRYPT="" + fi +fi + +# Include device mapper in initrd (needed for LUKS and LVM) +if [ ! -z "$CRYPT" -o ! -z "$LVM" ]; then + cp /sbin/dmsetup $SOURCE_TREE/sbin/dmsetup + find /lib /lib64 -name "libdevmapper*so*" 2> /dev/null | xargs -I'{}' cp -P --parents '{}' $SOURCE_TREE/ + if [ -z "${MODULE_LIST}" ] ; then + MODULE_LIST="dm-mod" + elif ! echo ${MODULE_LIST} | grep -q dm-mod ; then + MODULE_LIST="$MODULE_LIST:dm-mod" + fi + mkdir -p $SOURCE_TREE/lib/udev/rules.d + echo 'KERNEL=="dm-[0-9]*", OPTIONS+="db_persist"' > \ + $SOURCE_TREE/lib/udev/rules.d/95-dm-initrd.rules +fi + +# Make module directory: +if [ ! -d $SOURCE_TREE/lib/modules/$KERNEL_VERSION ]; then + mkdir -p $SOURCE_TREE/lib/modules/$KERNEL_VERSION +fi + +# Copy kmod/modprobe stuff to initrd: +for i in kmod depmod insmod lsmod modinfo modprobe rmmod ; do + rm -f $SOURCE_TREE/sbin/$i ; + cp -a /sbin/$i $SOURCE_TREE/sbin ; +done + +# Make sure modules.builtin and modules.order are there (for kmod): +cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} \ + $SOURCE_TREE/lib/modules/$KERNEL_VERSION + +# If an executable $SOURCE_TREE/load_kernel_modules already exists, then +# we assume you will want to load the kernel modules mentioned in there. +# This means, you do not have to explicitly add those on the commandline: +if [ -x $SOURCE_TREE/load_kernel_modules ]; then + MODULE_LIST="${MODULE_LIST}:$(cat $SOURCE_TREE/load_kernel_modules |grep "^modprobe" |rev |cut -d/ -f1 |rev |cut -d. -f1)" +fi + +# If the module list is not empty, copy the modules into place: +if [ ! -z "$MODULE_LIST" ]; then + if grep -q "#modprobe reiserfs" $SOURCE_TREE/load_kernel_modules ; then + rm -f $SOURCE_TREE/load_kernel_modules + touch $SOURCE_TREE/load_kernel_modules + chmod 755 $SOURCE_TREE/load_kernel_modules + echo "# This is a script used to load the kernel modules." >> $SOURCE_TREE/load_kernel_modules + echo "# To use it, chmod it 755, and then add the insmod" >> $SOURCE_TREE/load_kernel_modules + echo "# lines needed to load your modules, like this:" >> $SOURCE_TREE/load_kernel_modules + echo >> $SOURCE_TREE/load_kernel_modules + fi + + # Sanitize the modules list first, before any further processing. + # The awk command eliminates doubles without changing the order: + MODULE_LIST=$(echo $MODULE_LIST |tr -s ':' '\n' |awk '!x[$0]++' |tr '\n' ':') + MODULE_LIST=$(echo ${MODULE_LIST%:}) # Weed out a trailing ':' + + # Count number of modules + # This INDEX number gives us an easy way to find individual + # modules and their arguments, as well as tells us how many + # times to run through the list + if ! echo $MODULE_LIST | grep ':' > /dev/null ; then # only 1 module specified + INDEX=1 + else + # Trim excess ':' which will screw this routine: + MODULE_LIST=$(echo $MODULE_LIST | tr -s ':') + INDEX=1 + while [ ! "$(echo "$MODULE_LIST" | cut -f $INDEX -d ':' )" = "" ]; do + INDEX=$(expr $INDEX + 1) + done + INDEX=$(expr $INDEX - 1) # Don't include the null value + fi + + # Wrap everything in a while loop + i=0 + while [ $i -ne $INDEX ]; do + i=$(( $i + 1 )) + + # FULL_MOD is the module plus any arguments (if any) + # MODULE is the module name + # ARGS is any optional arguments to be passed to the kernel + FULL_MOD="$(echo "$MODULE_LIST" | cut -d ':' -f $i)" + MODULE="$(echo "$FULL_MOD" | cut -d ' ' -f 1 )" + # Test for arguments + if echo "$FULL_MOD" | grep ' ' > /dev/null; then + ARGS=" $(echo "$FULL_MOD" | cut -d ' ' -f 2- )" + else + unset ARGS + fi + + # Get MODULE deps and prepare modprobe lines + /sbin/modprobe --set-version $KERNEL_VERSION --show-depends --ignore-install $MODULE 2>/dev/null \ + | grep "^insmod " | cut -f 2 -d ' ' | while read SRCMOD; do + + if ! grep -Eq " $(basename $SRCMOD .ko)(\.| |$)" $SOURCE_TREE/load_kernel_modules 2>/dev/null ; then + LINE="$(echo "modprobe -v $(basename ${SRCMOD%%.gz} .ko)" )" + + # Test to see if arguments should be passed + # Over-ride the previously defined LINE variable if so + if [ "$(basename $SRCMOD .ko)" = "$MODULE" ]; then + # SRCMOD and MODULE are same, ARGS can be passed + LINE="$LINE$ARGS" + fi + + fi + + if ! grep -qx "$LINE" $SOURCE_TREE/load_kernel_modules ; then + echo "$LINE" >> $SOURCE_TREE/load_kernel_modules + fi + + # Try to add the module to the initrd-tree. This should be done + # even if it exists there already as we may have changed compilers + # or otherwise caused the modules in the initrd-tree to need + # replacement. + if cp -a --parents $SRCMOD $SOURCE_TREE 2>/dev/null; then + echo "OK: $SRCMOD added." + # If a module needs firmware, copy that too + /sbin/modinfo -F firmware "$SRCMOD" | sed 's/^/\/lib\/firmware\//' | + while read SRCFW; do + if cp -a --parents "$SRCFW" $SOURCE_TREE 2>/dev/null; then + echo "OK: $SRCFW added." + else + echo "WARNING: Could not find firmware \"$SRCFW\"" + fi + done + else + echo "WARNING: Could not find module \"$SRCMOD\"" + fi + + done + done + + # Pregenerate the module dependency information + depmod -a -b $SOURCE_TREE ${KERNEL_VERSION} + + # Copy /{etc,lib}/modprobe.d/* if desired + if [ ! -z $MODCONF ]; then + copy_modconf + fi + +fi + +# Copy needed libraries +copy_libs + +# Make sure all libraries have symlinks: +/sbin/ldconfig $(readlink -f $SOURCE_TREE)/lib/ 2> /dev/null +/sbin/ldconfig $(readlink -f $SOURCE_TREE)/lib64/ 2> /dev/null +/sbin/ldconfig + +# And finally, build the initrd: +build_initrd_image + diff --git a/patches/source/mkinitrd/mkinitrd.8 b/patches/source/mkinitrd/mkinitrd.8 new file mode 100644 index 000000000..64dad3f43 --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd.8 @@ -0,0 +1,279 @@ +.\" -*- nroff -*- +.ds g \" empty +.ds G \" empty +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH MKINITRD 8 "27 March 2010" "Slackware Version 13.1" +.SH NAME +mkinitrd \- create or rebuilt an initrd (initial ramdisk) using initramfs (simple cpio+gzip). +.SH SYNOPSIS +.B mkinitrd +[ +.B \-F +] +[ +.B \-c +] +[ +.B \-f filesystem +] +[ +.B \-h hibernate_partition +] +[ +.B \-k kernel_version +] +[ +.B \-m module1:module2:module3... +] +[ +.B \-o output_file +] +[ +.B \-r root_device +] +[ +.B \-s source_tree +] +[ +.B \-u +] +[ +.B \-w wait_time +] +[ +.B \-C device1:device2:device3... +] +[ +.B \-K luks_keyfile +] +[ +.B \-P microcode_archive +] +[ +.B \-B +] +[ +.B \-L +] +[ +.B \-R +] +[ +.B \-V +] +.SH DESCRIPTION +.B mkinitrd +is used to build an initial ramdisk. An initial ramdisk is a very small +set of files that are loaded into RAM and "mounted" (as initramfs doesn't +actually use a filesystem) as the kernel boots (before the main root +filesystem is mounted). The usual reason to use an initrd is because +you need to load kernel modules before mounting the root partition. +Usually these modules are required to support the filesystem used by the +root partition (ext3, reiserfs, xfs), or perhaps the controller that the +hard drive is attached to (SCSI, RAID, etc). Essentially, there are so many +different options available in modern Linux kernels that it isn't practical +to try to ship many different kernels to try to cover everyone's needs. +It's a lot more flexible to ship a generic kernel and a set of kernel +modules for it. +.SH OPTIONS +.TP +.B \-F +Use the contents of /etc/mkinitrd.conf as options to mkinitrd (optional). +If this is used in conjunction with any other options passed on the command +line, the command-line options will override the config file options. +.br +See mkinitrd.conf(5) for details. +.TP +.B \-c +Clear the existing initrd tree (by default in /boot/initrd-tree/) first. +If this is not done, running mkinitrd will add additional modules to the +existing initrd. +.TP +.B \-f filesystem +Specify the filesystem to use for the root partition. If this isn't given, +mount will usually figure it out. This option must be used together with the +\-r option in order to be beneficial. +.TP +.B \--help +Display a help summary. +.TP +.B \-h hibernate_partition +Specify the swap partition holding the hibernation image. +.TP +.B \-k kernel version +Use kernel modules from the specified kernel version. mkinitrd will look +for them in /lib/modules/(kernel version). +.TP +.B \-l keymap +Load an alternative keyboard mapping. All supported keyboard mappings +can be found in /usr/share/mkinitrd/keymaps.tar.gz +Leave the '.bmap' out when you supply this parameter. E.g. '-l nl' will +add support for dutch keyboard mapping to the initrd. +.TP +.B \-m module list +This is a list of colon-delimited modules to build into the initrd. +Any dependencies of requested modules will also be added to the initrd. +Additional options may be added to use when loading the kernel modules +(but in this case the entire list must be wrapped with double quotes). +.TP +.B \-o output image +The file to write the initrd to. (default: /boot/initrd.gz) +.TP +.B \-r root partition +Specify the device to be used as the root partition. If this isn't given, the +kernel default will be used (which is usually fine). This option must be used +together with the \-f option in order to be beneficial. +.TP +.B \-s source tree +The directory to use as the source for the initrd. (default: /boot/initrd-tree/) +.TP +.B \-u +Include udev in the initrd. +.TP +.B \-w +The -w option specifies how long to wait in seconds before assuming that all the +drives are spun up and ready to go. +.TP +.B \-C device list +A colon (:) delimited list of luks encrypted block devices to be unlocked by +the initrd using cryptsetup. All devices that must be unlocked in order to +access the root filesystem must be specified. e.g. + + -C /dev/sda2:/dev/sda3 + +Each unlocked device will be assigned an automatically generated luks device +name of the form luks where '' will be the basename of the +encrypted device. e.g. + + /dev/mapper/lukssda2 + +As a convenience to users, where -r specifies one of the device names listed +on the -C option it will be automatically adjusted to use the correct luks +device name. i.e. + + "-C /dev/sda2 -r /dev/sda2" and + "-C /dev/sda2 -r /dev/mapper/lukssda2" + +are equivalent. +.br +(Use with '-r' option). +.TP +.B \-K luks_keyfile +When using cryptsetup to encrypt your partition, you can use a keyfile instead +of a passphrase to unlock the LUKS volume. The LUKSKEY variable holds the +filename of a keyfile, as well as the label (or uuid) of the partition this +file is on. This way, you can unlock your computer automatically if you have a +USB stick with your LUKS key inserted at boot. A passphrase will still be asked +if the LUKS key can not be found. +.br +For example, if your USB thumb drive has a FAT partition with label +"TRAVELSTICK" and the actual keyfile is called "/keys/alien.luks", then +you need to set: + + -K LABEL=TRAVELSTICK:/keys/alien.luks +.TP +.B \-T device list +A colon (:) delimited list of luks encrypted block devices to be passed the +"--allow-discards" option when unlocked by the initrd using cryptsetup, e.g. + + -T /dev/sda2:/dev/sda4 + +This has the effect of allowing TRIM on SSD drives. Be sure your SSD supports +this feature (correctly) before enabling it. See fstrim(8) for more information. +.TP +.B \-P microcode_archive +This option specifies a cpio archive containing updated microcode for your CPU. +CPU manufacturers occasionally release such updates to fix bugs in the microcode +currently embedded in the CPU. The microcode archive will be prepended to the +output initrd, where the kernel will find it for early patching: + + -P /boot/intel-ucode.cpio + +.TP +.B \-B +This option adds the btrfs utility to the initrd so that multi-device filesystems +will be picked up by a scan (/sbin/btrfs device scan). This is needed if the +root filesystem is a Btrfs multi-device filesystem. +.TP +.B \-L +This option adds LVM support to the initrd, if the tools are +available on the system. +.TP +.B \-R +This option adds RAID support to the initrd, if a static mdadm binary is +available on the system. +.TP +.B \-V +Display version information and exit. +.SH EXAMPLES +A simple example: Build an initrd for a reiserfs root partition: + + mkinitrd -c -m reiserfs + +Another example: Build an initrd image using Linux 2.6.33.1 kernel +modules for a system with an ext3 root partition on /dev/sdb3: + + mkinitrd -c -k 2.6.33.1 -m ext3 -f ext3 -r /dev/sdb3 + +An example of a single encrypted partition setup: +.br +As a user convenience, the value for the "-r" option may also be specified as +"/dev/sda2" in this example: + + mkinitrd -c -k 2.6.33.1 \\ + -m ext4:ehci-hcd:uhci-hcd:usbhid \\ + -f ext4 -r /dev/mapper/lukssda2 \\ + -C /dev/sda2 \\ + -l uk + +Finally, A more complex example: +.br +This one is for a LVM Volume Group (rootvg) comprising of two LVM Physical +Volumes, each of which is on a LUKS encrypted partition that will need to be +unlocked before the root filesystem (/dev/rootvg/lvroot) can be accessed. + + mkinitrd -c -k 2.6.29.6 \\ + -m ext4:ehci-hcd:uhci-hcd:usbhid \\ + -f ext4 -r /dev/rootvg/lvroot \\ + -L -C /dev/sda2:/dev/sdb2 \\ + -l uk + +If run without options, mkinitrd will rebuild an initrd image using +the contents of the $SOURCE_TREE directory, or, if that directory +does not exist it will be created and populated, and then mkinitrd +will exit. These options are handy for building an initrd mostly +by hand. After creating /boot/initrd-tree/, you can add modules and +edit files by hand, and then rerun mkinitrd to create the initrd. + +Once the initrd is created, you'll need to tell your boot loader +to load it. If you boot with LILO, you will need to add an initrd +line to /etc/lilo.conf. Here's a section of lilo.conf that shows +how to set this up: + + # Linux bootable partition config begins + image = /boot/vmlinuz-generic-2.6.33.1 + initrd = /boot/initrd.gz + root = /dev/sda3 + label = Linux26331 + read-only + # Linux bootable partition config ends + +Note that the line "root = /dev/sda3" is not needed if the root device +has been configured in the initrd image. + +Once you've created the initrd and editing /etc/lilo.conf, you will +need to run 'lilo' to write out the changed boot block. The next +time you reboot the initrd should be loaded along with the kernel. + +Have fun! + +.SH SEE ALSO +mkinitrd.conf (5) + +.SH AUTHOR +Patrick J. Volkerding diff --git a/patches/source/mkinitrd/mkinitrd.SlackBuild b/patches/source/mkinitrd/mkinitrd.SlackBuild new file mode 100755 index 000000000..c7529be11 --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd.SlackBuild @@ -0,0 +1,146 @@ +#!/bin/sh + +# Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-1.4.10} +BB=1.20.2 +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:--j7} +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-mkinitrd + +# Write a warning to stdout if the mkinitrd script has a different version: +eval $( grep "^MKINITRD_VERSION=" $CWD/mkinitrd ) +if [ "$VERSION" != "$MKINITRD_VERSION" ]; then + echo "The version of this package ($VERSION) is not equal to the version of the mkinitrd script ($MKINITRD_VERSION)." + sleep 5 +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf busybox-$BB +tar xvf $CWD/busybox-$BB.tar.?z* || exit 1 +cd busybox-$BB + +if [ -d $CWD/fixes-$BB ]; then + for pfile in $CWD/fixes-$BB/*.patch ; do + patch -p1 < $pfile || exit 1 + done +fi + +chown -R root:root . +sed -e \ + 's#^CONFIG_PREFIX=.*#CONFIG_PREFIX="'$PKG'/usr/share/mkinitrd/initrd-tree"#' \ + $CWD/busybox-dot-config > .config +make oldconfig +make $NUMJOBS || make || exit 1 + +mkdir -p $PKG/usr/share/mkinitrd/initrd-tree/{bin,sbin} +make install || exit 1 +rm -f $PKG/usr/share/mkinitrd/initrd-tree/linuxrc + +# Copying additional files: +cp -a $CWD/mkinitrd_command_generator.sh $PKG/usr/share/mkinitrd +chown root:root $PKG/usr/share/mkinitrd/mkinitrd_command_generator.sh +chmod 755 $PKG/usr/share/mkinitrd/mkinitrd_command_generator.sh +cp -a $CWD/keymaps.tar.gz $PKG/usr/share/mkinitrd +chown root:root $PKG/usr/share/mkinitrd/keymaps.tar.gz +chmod 644 $PKG/usr/share/mkinitrd/keymaps.tar.gz + +# Zip up the initrd-tree: +( cd $PKG/usr/share/mkinitrd/initrd-tree + tar xf $CWD/_initrd-tree.tar.gz + cat $CWD/init > init + + # These are useful for ARM: + mknod -m 644 dev/random c 1 8 + mknod -m 644 dev/urandom c 1 9 + + tar czf ../initrd-tree.tar.gz . +) +rm -rf $PKG/usr/share/mkinitrd/initrd-tree + +# Add busybox docs: +mkdir -p $PKG/usr/doc/busybox-$BB +cp -a AUTHORS COPYING* INSTALL LICENSE README* \ + $PKG/usr/doc/busybox-$BB +cp -a e2fsprogs/README $PKG/usr/doc/busybox-$BB/README.e2fsprogs +cp -a libbb/README $PKG/usr/doc/busybox-$BB/README.libbb +cp -a shell/README $PKG/usr/doc/busybox-$BB/README.shell +cp -a testsuite/README $PKG/usr/doc/busybox-$BB/README.testsuite + +mkdir -p $PKG/sbin +cp -a $CWD/mkinitrd $PKG/sbin/mkinitrd +chown root:root $PKG/sbin/mkinitrd +chmod 755 $PKG/sbin/mkinitrd + +mkdir -p $PKG/usr/man/man{5,8} +cat $CWD/mkinitrd.conf.5 | gzip -9c > $PKG/usr/man/man5/mkinitrd.conf.5.gz +cat $CWD/mkinitrd.8 | gzip -9c > $PKG/usr/man/man8/mkinitrd.8.gz +cat $CWD/mkinitrd_command_generator.8 | gzip -9c > $PKG/usr/man/man8/mkinitrd_command_generator.8.gz + +mkdir -p $PKG/etc +cp -a $CWD/mkinitrd.conf.sample $PKG/etc/mkinitrd.conf.sample +# ARM systems often need more time to find devices: +case "$( uname -m )" in + arm*) sed -e 's@#WAIT="1"@#WAIT="4"@g' \ + -i $PKG/etc/mkinitrd.conf.sample;; +esac +chown root:root $PKG/etc/mkinitrd.conf.sample +chmod 644 $PKG/etc/mkinitrd.conf.sample + +mkdir -p $PKG/usr/doc/mkinitrd-$VERSION +sed $CWD/README.initrd \ + -e "s,@DATE@,$(date),g" \ + -e "s,@KERNEL_VERSION@,$(uname -r),g" \ + -e "s,@PACKAGE_VERSION@,$(uname -r | tr - _),g" \ + -e "s,@LILO_KERNEL_NAME@,$(echo $(uname -r) | tr -d . | tr -d - ),g" \ + -e "s,@MKINITRD_VERSION@,$VERSION,g" \ + -e "s,@ARCH@,$ARCH,g" \ + -e "s,@BUILD@,$BUILD,g" \ + > $PKG/usr/doc/mkinitrd-$VERSION/README.initrd + +mkdir $PKG/boot +ln -sf /usr/doc/mkinitrd-$VERSION/README.initrd $PKG/boot/README.initrd + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/mkinitrd-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/mkinitrd/mkinitrd.conf.5 b/patches/source/mkinitrd/mkinitrd.conf.5 new file mode 100644 index 000000000..65c180185 --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd.conf.5 @@ -0,0 +1,244 @@ +.\" mkinitrd.5 Robby Workman +.\" 28 August 2010 " + +.TH MKINITRD.CONF 5 "27 March 2010" "Slackware 13.1" +.SH NAME +.B mkinitrd.conf(5) +.SH SYNOPSIS +.B mkinitrd.conf - optional configuration file for +.I mkinitrd(8) + +.SH DESCRIPTION +The +.I mkinitrd.conf +file contains options to be passed to +.I mkinitrd(8) +on every run if mkinitrd is executed with the -F flag. +.br +It is intended as a fast and easy way for the system administrator to +pass options to mkinitrd without having to type them on each execution. + +Options passed to +.I mkinitrd(8) +on the command line will override any +values set in the config file. + +.SH OPTIONS AND SYNTAX + +All options are in the format of OPTION="value" +.br +Unset variables have no effect. + +.TP 5 +.I SOURCE_TREE +This is the location for the initrd's source tree. +.br +Defaults to "/boot/initrd-tree" + +.TP 5 +.I CLEAR_TREE +This option specifies whether to clear the initrd source tree prior to +creating the initrd. +.br +This requires a value of either "0" or "1" where 0=no and 1=yes +.br +Examples: +.br +CLEAR_TREE="0" # Do not clear initrd tree first +.br +CLEAR_TREE="1" # Clear initrd tree first + +It is recommended to leave this unset and pass "-c" on the command line +when clearing the tree is desired. Clearing the tree is not desirable +if you wish to build support for more than one kernel into the initrd +image. + +.TP 5 +.I OUTPUT_IMAGE +This is the location for the initrd image that is created. +.br +Defaults to "/boot/initrd.gz" + +.TP 5 +.I KERNEL_VERSION +This is the kernel version for which the initrd should be created. +.br +Defaults to "$(uname -r)" + +.TP 5 +.I KEYMAP +This is the custom keyboard map that should be loaded instead of the +default 'us' keymap. +.br +The file /usr/share/mkinitrd/keymaps.tar.gz contains all possible keymaps +to choose from (omit the '.bmap' extension in the mkinitrd command) +.br +Example: KEYMAP="nl" + +.TP 5 +.I MODULE_LIST +This should be a colon-separated list of modules you wish to be included +in the initrd image. +.br +Example: MODULE_LIST="ext3:mbcache:jbd" + +If you have loadtime options that you need to specify when loading kernel +modules, those can be added here as well. +.br +Example: MODULE_LIST="module1:module2 option=1:module3" + +.TP 5 +.I LUKSDEV +Contains a colon (:) delimited list of luks encrypted block devices to be +unlocked by the initrd using cryptsetup. All devices that must be unlocked +in order to access the root filesystem must be specified. +.br +Example: LUKSDEV="/dev/sda2:/dev/sda3" + +Each unlocked device will be assigned an automatically generated luks device +name of the form luks where '' will be the basename of the +encrypted device. e.g. + + /dev/mapper/lukssda2 + +As a convenience to users, if +.I ROOTDEV +(see below) specifies one of the device names listed in the +.I LUKSDEV +option, then it will be automatically adjusted to use the correct luks +device name. i.e. when specifying +.I "LUKSDEV=/dev/sda2" +then +.I "ROOTDEV=/dev/sda2" +and +.I "ROOTDEV=/dev/mapper/lukssda2" +are equivalent. + +.TP 5 +.I LUKSKEY +When using cryptsetup to encrypt your partition, you can use a keyfile instead +of a passphrase to unlock the LUKS volume. The LUKSKEY variable holds the +filename of a keyfile, as well as the label (or uuid) of the partition this +file is on. This way, you can unlock your computer automatically if you have a +USB stick with your LUKS key inserted at boot. A passphrase will still be asked +if the LUKS key can not be found. +.br +For example, if your USB thumb drive has a FAT partition with label +"TRAVELSTICK" and the actual keyfile is called "/keys/alien.luks", then +you need to set: +.br +LUKSKEY="LABEL=TRAVELSTICK:/keys/alien.luks" + +.TP 5 +.I LUKSTRIM +Contains a colon (:) delimited list of luks encrypted block devices to be +passed the "--allow-discards" option when unlocked by the initrd using +cryptsetup. This has the effect of allowing TRIM on SSD drives. Be sure +your SSD supports this feature (correctly) before enabling it. +.br +See fstrim(8) for more information. +.br +Example: LUKSTRIM="/dev/sda2:/dev/sda4" + +.TP 5 +.I ROOTDEV +The device on which your root filesystem is located. +.br +Example: ROOTDEV="/dev/sda2" + +If you are using cryptsetup and an encrypted root filesystem, be sure to +read the option above for LUKSDEV or Bad Things will happen. + +.TP 5 +.I ROOTFS +The filesystem type of your root filesystem +.br +Example: ROOTFS="ext3" + +.TP 5 +.I RAID +This option adds the mdadm binary to the initrd to support RAID. +Additional modules may be required, depending on your kernel +configuration. If you wish to add LVM support to the initrd, then +set this to 1; otherwise, leave it unset or set it to 0. +.br +Examples: +.br +RAID="0" # Do not add RAID support to initrd +.br +RAID="1" # Add RAID support to initrd + +.TP 5 +.I LVM +This option adds support for LVM partitions into the initrd. +If you wish to add LVM support to the initrd, then set this to 1; +otherwise, leave it unset or set it to 0. +.br +Examples: +.br +LVM="0" # Do not add LVM support to initrd +.br +LVM="1" # Add LVM support to initrd + +.TP 5 +.I UDEV +Use UDEV in the initrd. +.br +Examples: +.br +UDEV="0" # Do not use udev in the initrd +.br +UDEV="1" # Use udev in the initrd (this is the default) + +.TP 5 +.I WAIT +This defines the time to wait, in seconds, until all disks are detected. +.br +This is useful for allowing extra time that might be needed for slow usb disks or systems with large amounts of storage to become ready. +.br +If not defined, the default is 1 second. + +.TP 5 +.I RESUMEDEV +The swap partition holding your hibernation image. +.br +Example: RESUMEDEV="/dev/sda2" + +.TP 5 +.I MODCONF +This option defines whether to copy the module-init-tools config files +from /etc/modprobe.d/ into the initrd. This will not usually be necessary, +but if you need certain modules to be loaded with special options, and you +have this configured in a file in /etc/modprobe.d/, this is one way to +accomplish the desired goal. +.br +Examples: +.br +MODCONF="0" # Do not add /etc/modprobe.d/* to the initrd +.br +MODCONF="1" # Add /etc/modprobe.d/* to the initrd + +.TP 5 +.I MICROCODE_ARCH +This option specifies a cpio archive containing updated microcode for your CPU. +CPU manufacturers occasionally release such updates to fix bugs in the microcode +currently embedded in the CPU. The microcode archive will be prepended to the +output initrd, where the kernel will find it for early patching. +.br +Examples: +.br +MICROCODE_ARCH="/boot/intel-ucode.cpio" + +.SH FILES +.I /etc/mkinitrd.conf +.br +See /etc/mkinitrd.conf.sample + +.SH "SEE ALSO" +.BR mkinitrd "(8)" + +.SH BUGS +None known :-) + +.SH MISCELLANEOUS +Support for mkinitrd.conf was added in mkinitrd-1.3.0 diff --git a/patches/source/mkinitrd/mkinitrd.conf.sample b/patches/source/mkinitrd/mkinitrd.conf.sample new file mode 100644 index 000000000..70256ef38 --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd.conf.sample @@ -0,0 +1,21 @@ +# mkinitrd.conf.sample +# See "man mkinitrd.conf" for details on the syntax of this file +# +#SOURCE_TREE="/boot/initrd-tree" +#CLEAR_TREE="0" +#OUTPUT_IMAGE="/boot/initrd.gz" +#KERNEL_VERSION="$(uname -r)" +#KEYMAP="us" +#MODULE_LIST="ext4" +#LUKSDEV="/dev/sda2" +#LUKSTRIM="/dev/sda2" # verify support with 'hdparm -I $dev | grep TRIM' +#LUKSKEY="LABEL=TRAVELSTICK:/keys/alienbob.luks" +#ROOTDEV="/dev/sda1" +#ROOTFS="ext4" +#RESUMEDEV="/dev/sda2" +#RAID="0" +#LVM="0" +#UDEV="1" +#MODCONF="0" +#MICROCODE_ARCH="/boot/intel-ucode.cpio" +#WAIT="1" diff --git a/patches/source/mkinitrd/mkinitrd_command_generator.8 b/patches/source/mkinitrd/mkinitrd_command_generator.8 new file mode 100644 index 000000000..954fab484 --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd_command_generator.8 @@ -0,0 +1,187 @@ +'\" t +.\" Title: mkinitrd_command_generator +.\" Author: Eric Hameleers +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 2016-02-07 +.\" Manual: Slackware Tools +.\" Source: http://www.slackware.com 1.40 +.\" Language: English +.\" +.TH "MKINITRD_COMMAND_GEN" "8" "2016-02-07" "http://www\&.slackware\&.com" "Slackware Tools" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +mkinitrd_command_generator \- mkinitrd the easy way +.SH "SYNOPSIS" +.sp +.nf +mkinitrd_command_generator\&.sh [ \fIoptions\fR ] [ \fIkernel_filename\fR ] +.fi +.SH "OPTIONS" +.PP +\fB\-a \fR\fB\fIadditional params\fR\fR +.RS 4 +Additional parameters to pass to mkinitrd\&. +.RE +.PP +\fB\-c | \-\-conf\fR +.RS 4 +Show a suitable mkinitrd configuration file\&. +.RE +.PP +\fB\-h | \-\-help\fR +.RS 4 +Show this help\&. +.RE +.PP +\fB\-i | \-\-interactive\fR +.RS 4 +Navigate through menus instead of using commandline arguments\&. +.RE +.PP +\fB\-\-longhelp\fR +.RS 4 +Show more detailed information/examples\&. +.RE +.PP +\fB\-k \fR\fB\fIkernelversion\fR\fR +.RS 4 +Use specific kernel version\&. +.RE +.PP +\fB\-m \fR\fB\fIadditional mods\fR\fR +.RS 4 +Additional modules to pass to mkinitrd, separated by colons (:)\&. +.RE +.PP +\fB\-l | \-\-lilo\fR +.RS 4 +Only show lilo\&.conf section (requires a kernel_filename)\&. +.RE +.PP +\fB\-r | \-\-run\fR +.RS 4 +Only show +\fImkinitrd\fR +command\&. +.RE +.SH "DESCRIPTION" +.sp +This script is useful in situations where you require an initrd image to boot your computer\&. +.sp +For instance, when booting a kernel that does not have support for your storage or root filesystem built in (such as the Slackware \fIgeneric\fR kernels)\&. +.sp +When you run the script without parameters, it will examine your running system, your current kernel version and will output an example of a \fImkinitrd\fR commandline that you can use to generate an initrd image containing enough driver support to boot the computer\&. +.sp +You can make it more specific: when you add the filename of a kernel as parameter to the script, it will determine the kernel version from that kernel, and also give an example of the lines that you should add to your \fI/etc/lilo\&.conf\fR file\&. +.sp +If you want your initrd image to have a custom name instead of the default \fI/boot/initrd\&.gz\fR you can add it as another parameter to the script, as follows: +.sp +mkinitrd_command_generator\&.sh \-a "\-o \fI/boot/custom\&.gz\fR" +.sp +The arguments to the \fI\-a\fR parameter will be used as additional arguments to the \fImkinitrd\fR command\&. +.sp +If you need additional modules in the initrd image, apart from what the script determines, you can pass then to the script using the \fI\-m\fR parameter as follows: +.sp +mkinitrd_command_generator\&.sh \-m "uhci\-hcd:usbhid:hid:hid\-generic" +.sp +The above example adds support for USB keyboards to the initrd \- you may need that if you have encrypted your root partition and need to enter a passphrase using a USB keyboard\&. +.sp +Instead of copying and pasting the script\(cqs output, you can create an initrd by directly executing the output, like in this example: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$(mkinitrd_command_generator\&.sh \-\-run /boot/vmlinuz\-generic\-4\&.4\&.1) +.fi +.if n \{\ +.RE +.\} +.sp +That used the \fI\-r\fR or \fI\-\-run\fR switch to make the script only write the \fImkinitrd\fR commandline to the terminal\&. +.sp +When you want to add a section for a specific kernel to \fI/etc/lilo\&.conf\fR directly, use the \fI\-l\fR or \fI\-\-lilo\fR switch and use a command like in this example: +.sp +mkinitrd_command_generator\&.sh \-\-lilo /boot/vmlinuz\-generic\-smp\-4\&.4\&.1 >>/etc/lilo\&.conf +.sp +That command will result in the following lines being added to your \fI/etc/lilo\&.conf\fR file (example for my hardware): +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fI# Linux bootable partition config begins\fR +\fI# initrd created with \*(Aqmkinitrd \-c \-k 4\&.4\&.1 \-m mbcache:jbd2:ext4 \-f ext4 \-r /dev/sda7 \-u \-o /boot/initrd\&.gz\fR\*(Aq +image = /boot/vmlinuz\-generic\-4\&.4\&.1 +initrd = /boot/initrd\&.gz +root = /dev/sda7 +label = 4\&.4\&.1 +read\-only +\fI# Linux bootable partition config ends\fR +.fi +.if n \{\ +.RE +.\} +.sp +The last two examples show how easy it is to configure your computer for the use of an initrd if you need one\&. The only thing left to do afterwards is running \fIlilo\fR\&. +.SH "EXIT STATUS" +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fB0\fR Success +\fB1\fR Failure +.fi +.if n \{\ +.RE +.\} +.SH "FILES" +.sp +.if n \{\ +.RS 4 +.\} +.nf +/usr/share/mkinitrd/mkinitrd_command_generator\&.sh +.fi +.if n \{\ +.RE +.\} +.SH "BUGS" +.sp +Report bugs to Eric Hameleers +.SH "SEE ALSO" +.sp +.if n \{\ +.RS 4 +.\} +.nf +mkinitrd(1), lilo\&.conf(1) +.fi +.if n \{\ +.RE +.\} +.SH "AUTHOR" +.PP +\fBEric Hameleers\fR +.RS 4 +Author. +.RE diff --git a/patches/source/mkinitrd/mkinitrd_command_generator.sh b/patches/source/mkinitrd/mkinitrd_command_generator.sh new file mode 100644 index 000000000..33d9c9de3 --- /dev/null +++ b/patches/source/mkinitrd/mkinitrd_command_generator.sh @@ -0,0 +1,872 @@ +#!/bin/sh +# $Id: mkinitrd_command_generator.sh,v 1.45 2011/02/17 09:27:05 eha Exp eha $ +# Copyright 2013 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2008, 2009, 2010, 2011 Eric Hameleers, Eindhoven, Netherlands +# Contact: +# Copyright 2008, 2009 PiterPUNK, Sao Paulo, SP, Brazil +# Contact: +# All rights reserved. +# +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# ----------------------------------------------------------------------------- +# +# Create an initrd which fits the system. +# Take into account the use of LVM/LUKS/RAID. +# Find out about any hardware drivers the system may need in an initrd when +# booting from a generic lightweight kernel. +# +# ----------------------------------------------------------------------------- + +# The script's revision number will be displayed in the help text: +REV=$( echo "$Revision: 1.45 $" | cut -d' ' -f2 ) + +# Define some essential parameter values: +USING_LVM="" +USING_LUKS="" +USING_RAID="" +MLIST="" +REALDEV="" # The device that contains the LUKS volume +BASEDEV="" # Lowest level device (raw block device or RAID volume) + +FSTAB=${FSTAB:-"/etc/fstab"} # so we can test with alternate fstab files + +# These are needed by -c and -i options: +SOURCE_TREE=${SOURCE_TREE:-"/boot/initrd-tree"} +CLEAR_TREE=${CLEAR_TREE:-1} +KEYMAP=${KEYMAP:-"us"} +UDEV=${UDEV:-1} +# ARM devices need more time: +case "$( uname -m )" in + arm*) WAIT_DEFAULT=4;; + *) WAIT_DEFAULT=1;; +esac +WAIT=${WAIT:-$WAIT_DEFAULT} + +# A basic explanation of the commandline parameters: +basic_usage() { + cat <<-EOT + + *** $(basename $0) revision $REV *** + Usage: + $(basename $0) [ options ] [ kernel_filename ] + Options: + -a <"additional params"> Additional parameters to pass to mkinitrd. + -c | --conf Show a suitable mkinitrd configuration file. + -h | --help Show this help. + -i | --interactive Navigate through menus instead of using + commandline arguments. + --longhelp Show more detailed information/examples. + -k Use specific kernel version. + -m <"additional mods"> Additional modules to pass to mkinitrd, + separated by colons (:). + -l | --lilo Only show lilo.conf section + (requires a kernel_filename). + -r | --run Only show 'mkinitrd' command. + EOT +} + +# More of a tutorial here: +extended_usage() { + cat <<-EOT + + This script is useful in situations where you require an initrd image + to boot your computer. + For instance, when booting a kernel that does not have support for your + storage or root filesystem built in (such as the Slackware 'generic' + kernels'). + + * When you run the script without parameters, it will examine your + running system, your current kernel version and will output an example + of a 'mkinitrd' commandline that you can use to generate an initrd + image containing enough driver support to boot the computer. + + * You can make it more specific: when you add the filename of a kernel + as parameter to the script, it will determine the kernel version from + that kernel, and also give an example of the lines that you should add + to your '/etc/lilo.conf' file. + + * If you want your initrd image to have a custom name instead of the + default '/boot/initrd.gz' you can add it as another parameter to the + script, as follows: + + $(basename $0) -a "-o /boot/custom.gz" + + The arguments to the '-a' parameter will be used as additional arguments + to the 'mkinitrd' command. + + * If you need additional modules in the initrd image, apart from what + the script determines, you can pass then to the script using the '-m' + parameter as follows: + + $(basename $0) -m "uhci-hcd:usbhid:hid_generic" + + The above example adds support for USB keyboards to the initrd - you + may need that if you have encrypted your root partition and need to + enter a passphrase using a USB keyboard. + + * Instead of copying and pasting the script's output, you can create + an initrd by directly executing the output, like in this example: + + EOT + + echo " \$($(basename $0) --run /boot/vmlinuz-generic-smp-2.6.35.11-smp)" + + cat <<-EOT + + That used the '-r' or '--run' switch to make the script only write + the 'mkinitrd' commandline to the terminal. + + * When you want to add a section for a specific kernel to + '/etc/lilo.conf' directly, use the '-l' or '--lilo' switch and use a + command like in this example: + + EOT + + echo " $(basename $0) --lilo /boot/vmlinuz-generic-smp-2.6.35.11-smp >>/etc/lilo.conf" + + cat <<-EOT + + That command will result in the following lines being added to your + '/etc/lilo.conf' file (example for my hardware): + + # Linux bootable partition config begins + # initrd created with 'mkinitrd -c -k 2.6.35.11-smp -m ata_generic:pata_amd:mbcache:jbd:ext3 -f ext3 -r /dev/hda7' + image = /boot/vmlinuz-generic-smp-2.6.35.11-smp + initrd = /boot/initrd.gz + root = /dev/hda7 + label = 2.6.35.11-smp + read-only + # Linux bootable partition config ends + + The last two examples show how easy it is to configure your computer + for the use of an initrd if you need one. The only thing left to do + afterwards is running 'lilo'. + + EOT +} + +# Find the device that holds the root partition: +get_root_device() { + if [ -e $FSTAB ]; then + RD=$(cat $FSTAB |tr '\t' ' ' |grep -v '^ *#' |tr -s ' ' |grep ' / ' |cut -f1 -d' ') + if [ "$(echo $RD | cut -f1 -d=)" = "LABEL" -o "$(echo $RD | cut -f1 -d=)" = "UUID" ]; then + DKEY=$(echo $RD | cut -f1 -d=) + # The value can be LABEL=foo or LABEL='foo' or LABEL="foo" + DVAL=$(echo $RD | cut -f2 -d= | tr -d "'\042") + RD=$(/sbin/blkid | grep -w $DKEY | grep -w $DVAL | cut -f1 -d:) + fi + else + RD=$(grep -m1 "^/dev/.*[[:blank:]]/[[:blank:]]" /proc/mounts | cut -f1 -d' ') + fi + echo $RD +} + +# Get the root fs information: +get_rootfs_type() { + if $(type blkid 1>/dev/null 2>&1) ; then + blkid -s TYPE -o value $ROOTDEV + elif $(type vol_id 1>/dev/null 2>&1) ; then + vol_id $ROOTDEV | grep ID_FS_TYPE | cut -f2 -d= + else + # As a fallback, use: + cat $FSTAB |tr '\t' ' ' |grep -v '^ *#' |tr -s ' ' |grep ' / ' |cut -f3 -d' ' + fi +} + +# Add the module(s) needed for the root filesystem: +add_rootfs_module() { + local FSMOD + FSMOD=$(/sbin/modprobe --set-version $KVER --show-depends ${ROOTFS} 2>/dev/null | while read LINE; do + echo $(basename $(echo $LINE | cut -d' ' -f2) .ko ) + done) + if [ -n "$FSMOD" ]; then + [ -n "$MLIST" ] && echo "$MLIST:$(echo $FSMOD | tr ' ' ':')" \ + || echo $FSMOD | tr ' ' ':' + fi +} + +# Determine the list of kernel modules needed to support the root device: +determine_blockdev_drivers() { + # Walk the /sys tree to find kernel modules that are + # required for our storage devices. + # Thanks to PiterPUNK for help with this code. + local MLIST + MLIST=$(for i in $(find /sys/block/*/ -name "device" -print0 | xargs -0 -i'{}' readlink -f '{}' | sort -u); do + /sbin/udevadm info --query=all --path=$i --attribute-walk | \ + sed -ne 's/^[[:blank:]]\+DRIVER[S]*=="\([^"]\+\)"$/\1/p' | \ + xargs -I@ /sbin/modprobe --set-version $KVER --show-depends @ \ + 2>/dev/null | grep -v "builtin " | \ + while read LINE ; do + echo $(basename $(echo $LINE | cut -d' ' -f2) .ko ) + done + done) + MLIST=$( echo $MLIST | tr ' ' ':' ) + echo $MLIST +} + +# Search for USB keyboards: +function add_usb_keyboard() { + local USBMOD + if cat /proc/bus/input/devices | sed -e 's/^$/\$/g' | \ + tr "\n$" " \n" | grep -q " Phys=.*usb.* .*Handlers=.*kbd.*B:"; then + USBMOD="xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch" + [ -n "$MLIST" ] && MLIST="$MLIST:$USBMOD" \ + || MLIST="$USBMOD" + fi + echo $MLIST +} + +# Determine what USB Host Controller is in use +function add_usb_hcd() { + local USBMOD + for i in $(ls -Ld /sys/module/*_hcd/drivers/* 2> /dev/null); do + if ls -L $i | grep -q "[0-9a-f]*:" ; then + USBMOD=$( echo $i | cut -f4 -d/ | tr "_" "-") + [ -n "$MLIST" ] && MLIST="$MLIST:$USBMOD" \ + || MLIST="$USBMOD" + fi + done + echo $MLIST +} + +# Is the root partition on a (combination of) LVM/LUKS volume? +check_luks_lvm_raid() { + if $( lvdisplay -c $ROOTDEV 1>/dev/null 2>/dev/null ); then + # Our root partition is on a LV: + USING_LVM=1 + # Search the Physical Volume of our Logical Volume: + MYVG=$( echo $(lvdisplay -c $ROOTDEV 2>/dev/null) | cut -d: -f2 ) + for LINE in $(pvdisplay -c) ; do + VG=$(echo $LINE | cut -d: -f2) + [ "$VG" = "$MYVG" ] && break + done + PV=$(echo $LINE | cut -d: -f1) + # Check if there is a LUKS device underneath: + if $( cryptsetup status $PV 1>/dev/null 2>/dev/null ) ; then + # Our root partition's LV is on a LUKS volume: + USING_LUKS=1 + REALDEV=$( cryptsetup status $PV | grep 'device: ' | tr -d ' ' | cut -d: -f2 ) + BASEDEV=$REALDEV + else + BASEDEV=$PV + fi + elif $( cryptsetup status $ROOTDEV 1>/dev/null 2>/dev/null ) ; then + # Our root device is on a LUKS volume: + USING_LUKS=1 + REALDEV=$( cryptsetup status $ROOTDEV | grep 'device: ' | tr -d ' ' | cut -d: -f2 ) + ROOTDEV=$(basename $ROOTDEV) + # Check for LVM: + for LV in $(lvdisplay -c 2>/dev/null | tr -d ' ' | cut -f1 -d:) ; do + # Note: cryptsetup shows the real device, whereas + # lvdisplay requires the /dev//... symlink to the real device. + if [ "$(readlink $LV)" = "$REALDEV" ]; then + REALDEV=$LV + break + fi + done + if $( lvdisplay -c $REALDEV 1>/dev/null 2>/dev/null ); then + # Our root partition's LUKS device is on a LV: + USING_LVM=1 + # Search the Physical Volume of our Logical Volume: + MYVG=$( echo $(lvdisplay -c $REALDEV 2>/dev/null) | cut -d: -f2 ) + for LINE in $(pvdisplay -c) ; do + VG=$(echo $LINE | cut -d: -f2) + [ "$VG" = "$MYVG" ] && break + done + PV=$(echo $LINE | cut -d: -f1) + BASEDEV=$PV + else + BASEDEV=$REALDEV + fi + else + BASEDEV=$ROOTDEV + fi + + # Finally, we should check if base device is + # a real block device or a RAID volume: + for MD in $(cat /proc/mdstat | grep -w active | cut -d' ' -f1) ; do + if [ "$BASEDEV" = "/dev/$MD" ]; then + USING_RAID=1 + break + fi + done +} + +# Before we start +[ -x /bin/id ] && CMD_ID="/bin/id" || CMD_ID="/usr/bin/id" +if [ "$($CMD_ID -u)" != "0" ]; then + echo "You need to be root to run $(basename $0)." + exit 1 +fi + +# Parse the commandline parameters: +while [ ! -z "$1" ]; do + case $1 in + --longhelp) + basic_usage + extended_usage + exit 0 + ;; + -a) + MKINIT_PARAMS="$2" + shift 2 + ;; + -c|--conf) + [ -n "$EMIT" ] && { echo "Do not mix incompatible parameters!"; exit 1; } + EMIT="conf" + shift + ;; + -h|--help) + basic_usage + exit 0 + ;; + -i|--interactive) + INTERACTIVE=1 + shift + ;; + -k) + KVER=$2 + shift 2 + ;; + -m) + MKINIT_MODS=$2 + shift 2 + ;; + -l|--lilo) + [ -n "$EMIT" ] && { echo "Do not mix incompatible parameters!"; exit 1; } + EMIT="lilo" + shift + ;; + -L|--fromlilo) + FROMLILO=1 + shift + ;; + -r|--run) + [ -n "$EMIT" ] && { echo "Do not mix incompatible parameters!"; exit 1; } + EMIT="run" + shift + ;; + -R|--rootdev) + ROOTDEV=$2 + shift 2 + ;; + -*) + echo "Unsupported parameter '$1'!" + exit 1 + ;; + *) # Everything else but switches (which start with '-') follows: + if [ -f $1 ]; then + KFILE=$1 + # Construction of KFILE's full filename: + KFILEPATH=$(cd $(dirname $KFILE) && pwd) + if [ -L $KFILE ]; then + KFILE=$(readlink $KFILE) + else + KFILE=$(basename $KFILE) + fi + KFILE=${KFILEPATH}/$KFILE + if [ -z "$(file $KFILE | grep -E 'Linux kernel x86 boot|x86 boot sector')" ]; then + echo "File '$KFILE' does not look like it is a kernel file!" + exit 1 + fi + else + echo "File $1 not found!" + exit 1 + fi + shift + ;; + esac +done + +# Determine what to show as output (other options may have set EMIT already) +EMIT=${EMIT:-"all"} + +# An EMIT value of 'lilo' requires a kernel filename as script parameter: +if [ "$EMIT" = "lilo" ]; then + if [ -z "$KFILE" ]; then + echo "A kernel_filename is required with the '-l|--lilo' option!" + exit 1 + fi +fi + +# Determine kernel version to use, +# and check if modules for this kernel are actually present: +if [ -z "$KVER" ]; then + if [ -n "$KFILE" ]; then + KVER="$(strings $KFILE | grep '([^ ]*@[^ ]*) #' | cut -f1 -d' ')" + else + KVER="$(uname -r)" + fi +fi +if [ ! -d /lib/modules/$KVER ]; then + echo "Modules for kernel $KVER aren't installed." + exit 1 +fi + +# Determine whether the user passed an alternate filename for the initrd: +if [ -n "$MKINIT_PARAMS" ]; then + SRCHLIST="$MKINIT_PARAMS" + for ELEM in $MKINIT_PARAMS ; do + SRCHLIST=$(echo $SRCHLIST | cut -d' ' -f2-) # cut ELEM from the list + if [ "$ELEM" = "-o" ]; then + IMGFILE=$(echo $SRCHLIST | cut -d' ' -f1) + break + fi + done +fi +IMGFILE=${IMGFILE:-"/boot/initrd.gz"} + +# Get information about the root device / root filesystem: +ROOTDEV=${ROOTDEV:-$(get_root_device)} +ROOTFS=$(get_rootfs_type) + +# Determine the list of kernel modules needed to support the root device: +MLIST=$(determine_blockdev_drivers) + +# Check if we are running in a kvm guest with virtio block device driver +# (add all virtio modules, we sort out the doubles later): +if echo $MLIST | grep -q "virtio"; then + MLIST="$MLIST:virtio:virtio_balloon:virtio_blk:virtio_ring:virtio_pci:virtio_net" +fi + +# Determine if a USB keyboard is in use and include usbhid and hid_generic +# to module list +MLIST=$(add_usb_keyboard) + +# If we use any USB module, try to determine the Host Controller +if echo $MLIST | grep -q "usb"; then + MLIST=$(add_usb_hcd) +fi + +# Check what combination of LUKS/LVM/RAID we have to support: +# This sets values for USING_LUKS, USING_LVM, USING_RAID, REALDEV and BASEDEV. +check_luks_lvm_raid + +# This is the interactive part: +if [ "$INTERACTIVE" = "1" ]; then + if [ "$FROMLILO" != "1" ]; then + dialog --stdout --title "WELCOME TO MKINITRD COMMAND GENERATOR" --msgbox "\ +The main goal of this utility is to create a good initrd to \ +fit your needs. It can detect what kernel you are running, \ +what is your root device, root filesystem, if you use encryption, \ +LVM, RAID, etc. \ +\n\n\ +Usually the probed values are OK and they will be the \ +defaults in all subsequent dialogs, but maybe you want \ +to change something. \n\ +If in doubt, leave the defaults." 0 0 + + KVER=$( ls -d1 --indicator-style=none /lib/modules/* | \ + awk -F/ -vVER=$KVER '{ + if ( VER == $NF ) { + ONOFF="on" + } else { + ONOFF="off" + } ; printf("%s \"\" %s\n",$NF,ONOFF) }' | \ + xargs dialog --stdout --title "CHOOSE KERNEL VERSION" \ + --default-item $KVER --radiolist "\ +Please, select the kernel version you want to create this initrd for." 0 0 4 ) + [ -z "$KVER" ] && exit 1 + + OLDROOTDEV=$ROOTDEV + ROOTDEV=$( dialog --stdout --title "SELECT ROOT DEVICE" --inputbox "\ +Enter your root device. Root device is the one where your '/' filesystem \ +is mounted." 0 0 "$ROOTDEV" ) + [ -z "$ROOTDEV" ] && exit 1 + + # We need to re-check our defaults in case the user changed the default + # value for ROOTDEV: + [ "$OLDROOTDEV" != "$ROOTDEV" ] && check_luks_lvm_raid + ROOTFS=$(get_rootfs_type) + + ROOTFS=$( dialog --stdout --title "SELECT ROOT FILESYSTEM" --inputbox "\ +Enter the type of your root filesystem." 0 0 "$ROOTFS" ) + [ -z "$ROOTFS" ] && exit 1 + fi + + MLIST=$(add_rootfs_module) + + LLR=$( dialog --stdout --title "LVM/LUKS/RAID" --checklist "\ +Do you use some of those in your root filesystem? \ +If this is the case, please select one or more options." 12 45 3 \ +"LVM" "Logical Volume Manager" $([ "$USING_LVM" = "1" ] && echo on || echo off) \ +"LUKS" "Linux Unified Key Setup" $([ "$USING_LUKS" = "1" ] && echo on || echo off) \ +"RAID" "Linux Software RAID" $([ "$USING_RAID" = "1" ] && echo on || echo off)) + + if [ "$?" != "0" ]; then + exit 1 + fi + + echo $LLR | grep -q LUKS && USING_LUKS="1" + echo $LLR | grep -q LVM && USING_LVM="1" + echo $LLR | grep -q RAID && USING_RAID="1" + + if [ "$USING_LUKS" = "1" ]; then + REALDEV=$( dialog --stdout --title "LUKS ROOT DEVICE" --inputbox "\ +Please, enter your LUKS root device:" 0 0 "$REALDEV" ) + [ -z "$REALDEV" ] && exit 1 + fi +fi + +# Step out of the interactive loop for a moment. The next block needs to be +# executed in all cases. + +# We need to 'undouble' the MLIST array. Some people report that walking the +# /sys tree produces duplicate modules in the list. +# The awk command elimitates doubles without changing the order: +MLIST=$( echo $MLIST | tr ':' '\n' | awk '!x[$0]++' | tr '\n' ' ' ) +MLIST=$( echo $MLIST | tr ' ' ':' ) +MLIST=$(echo ${MLIST%:}) # To weed out a trailing ':' which was reported once. + +# Back to the interactive part: + +if [ "$INTERACTIVE" = "1" ]; then + MLIST=$( dialog --stdout --title "INITRD'S MODULE LIST" --inputbox "\ +The list here shows all modules needed to support your root filesystem \ +and boot from it. But you can change the list to use some alternative \ +or additional modules. If you don't know what to do, the default is safe." \ +0 0 "$MLIST" ) + if [ "$?" != "0" ]; then + exit 1 + fi + + EXTRA=$( dialog --stdout --title "EXTRA CONFIGURATION" --checklist "\ +Now is your chance for some additional configuration. All of these \ +configurations are optional and you can stick to the defaults." 11 72 3 \ +"KEYMAP" "Select keyboard layout (default: US)" \ + $([ $USING_LUKS = 1 ] && echo on || echo off) \ +"RESUMEDEV" "Select device for 'suspend-to-disk' feature" off \ +"UDEV" "Use UDEV in the initrd for device configuration" $(test $UDEV -eq 1 && echo on || echo off) \ +"WAIT" "Add delay to allow detection of slow disks at boot" $(test $WAIT -gt $WAIT_DEFAULT && echo on || echo off) ) + if [ "$?" != "0" ]; then + exit 1 + fi + + if echo $EXTRA | grep -q KEYMAP ; then + KEYMAP=$( dialog --stdout --title "KEYBOARD LAYOUT SELECTION" \ + --cancel-label "Skip" \ + --menu "You may select one of the following keyboard layouts. \ +If you do not select a keyboard map, 'us.map' \ +(the US keyboard layout) is the default. Use the UP/DOWN \ +arrow keys and PageUp/PageDown to scroll \ +through the whole list of choices." \ +22 55 11 \ +"qwerty/us.map" "" \ +"azerty/azerty.map" "" \ +"azerty/be-latin1.map" "" \ +"azerty/fr-latin0.map" "" \ +"azerty/fr-latin1.map" "" \ +"azerty/fr-latin9.map" "" \ +"azerty/fr-old.map" "" \ +"azerty/fr-pc.map" "" \ +"azerty/fr.map" "" \ +"azerty/wangbe.map" "" \ +"azerty/wangbe2.map" "" \ +"dvorak/ANSI-dvorak.map" "" \ +"dvorak/dvorak-l.map" "" \ +"dvorak/dvorak-r.map" "" \ +"dvorak/dvorak.map" "" \ +"dvorak/no-dvorak.map" "" \ +"fgGIod/tr_f-latin5.map" "" \ +"fgGIod/trf-fgGIod.map" "" \ +"olpc/es-olpc.map" "" \ +"olpc/pt-olpc.map" "" \ +"qwerty/bg-cp1251.map" "" \ +"qwerty/bg-cp855.map" "" \ +"qwerty/bg_bds-cp1251.map" "" \ +"qwerty/bg_bds-utf8.map" "" \ +"qwerty/bg_pho-cp1251.map" "" \ +"qwerty/bg_pho-utf8.map" "" \ +"qwerty/br-abnt.map" "" \ +"qwerty/br-abnt2.map" "" \ +"qwerty/br-latin1-abnt2.map" "" \ +"qwerty/br-latin1-us.map" "" \ +"qwerty/by-cp1251.map" "" \ +"qwerty/by.map" "" \ +"qwerty/bywin-cp1251.map" "" \ +"qwerty/cf.map" "" \ +"qwerty/cz-cp1250.map" "" \ +"qwerty/cz-lat2-prog.map" "" \ +"qwerty/cz-lat2.map" "" \ +"qwerty/cz-qwerty.map" "" \ +"qwerty/defkeymap.map" "" \ +"qwerty/defkeymap_V1.0.map" "" \ +"qwerty/dk-latin1.map" "" \ +"qwerty/dk.map" "" \ +"qwerty/emacs.map" "" \ +"qwerty/emacs2.map" "" \ +"qwerty/es-cp850.map" "" \ +"qwerty/es.map" "" \ +"qwerty/et-nodeadkeys.map" "" \ +"qwerty/et.map" "" \ +"qwerty/fi-latin1.map" "" \ +"qwerty/fi-latin9.map" "" \ +"qwerty/fi-old.map" "" \ +"qwerty/fi.map" "" \ +"qwerty/gr-pc.map" "" \ +"qwerty/gr.map" "" \ +"qwerty/hu101.map" "" \ +"qwerty/il-heb.map" "" \ +"qwerty/il-phonetic.map" "" \ +"qwerty/il.map" "" \ +"qwerty/is-latin1-us.map" "" \ +"qwerty/is-latin1.map" "" \ +"qwerty/it-ibm.map" "" \ +"qwerty/it.map" "" \ +"qwerty/it2.map" "" \ +"qwerty/jp106.map" "" \ +"qwerty/kazakh.map" "" \ +"qwerty/kyrgyz.map" "" \ +"qwerty/la-latin1.map" "" \ +"qwerty/lt.baltic.map" "" \ +"qwerty/lt.l4.map" "" \ +"qwerty/lt.map" "" \ +"qwerty/mk-cp1251.map" "" \ +"qwerty/mk-utf.map" "" \ +"qwerty/mk.map" "" \ +"qwerty/mk0.map" "" \ +"qwerty/nl.map" "" \ +"qwerty/nl2.map" "" \ +"qwerty/no-latin1.map" "" \ +"qwerty/no.map" "" \ +"qwerty/pc110.map" "" \ +"qwerty/pl.map" "" \ +"qwerty/pl1.map" "" \ +"qwerty/pl2.map" "" \ +"qwerty/pl3.map" "" \ +"qwerty/pl4.map" "" \ +"qwerty/pt-latin1.map" "" \ +"qwerty/pt-latin9.map" "" \ +"qwerty/pt.map" "" \ +"qwerty/ro.map" "" \ +"qwerty/ro_std.map" "" \ +"qwerty/ru-cp1251.map" "" \ +"qwerty/ru-ms.map" "" \ +"qwerty/ru-yawerty.map" "" \ +"qwerty/ru.map" "" \ +"qwerty/ru1.map" "" \ +"qwerty/ru2.map" "" \ +"qwerty/ru3.map" "" \ +"qwerty/ru4.map" "" \ +"qwerty/ru_win.map" "" \ +"qwerty/ruwin_alt-CP1251.map" "" \ +"qwerty/ruwin_alt-KOI8-R.map" "" \ +"qwerty/ruwin_alt-UTF-8.map" "" \ +"qwerty/ruwin_cplk-CP1251.map" "" \ +"qwerty/ruwin_cplk-KOI8-R.map" "" \ +"qwerty/ruwin_cplk-UTF-8.map" "" \ +"qwerty/ruwin_ct_sh-CP1251.map" "" \ +"qwerty/ruwin_ct_sh-KOI8-R.map" "" \ +"qwerty/ruwin_ct_sh-UTF-8.map" "" \ +"qwerty/ruwin_ctrl-CP1251.map" "" \ +"qwerty/ruwin_ctrl-KOI8-R.map" "" \ +"qwerty/ruwin_ctrl-UTF-8.map" "" \ +"qwerty/se-fi-ir209.map" "" \ +"qwerty/se-fi-lat6.map" "" \ +"qwerty/se-ir209.map" "" \ +"qwerty/se-lat6.map" "" \ +"qwerty/se-latin1.map" "" \ +"qwerty/sk-prog-qwerty.map" "" \ +"qwerty/sk-qwerty.map" "" \ +"qwerty/speakup-jfw.map" "" \ +"qwerty/speakupmap.map" "" \ +"qwerty/sr-cy.map" "" \ +"qwerty/sv-latin1.map" "" \ +"qwerty/tr_q-latin5.map" "" \ +"qwerty/tralt.map" "" \ +"qwerty/trf.map" "" \ +"qwerty/trq.map" "" \ +"qwerty/ttwin_alt-UTF-8.map.gz" "" \ +"qwerty/ttwin_cplk-UTF-8.map.gz" "" \ +"qwerty/ttwin_ct_sh-UTF-8.map.gz" "" \ +"qwerty/ttwin_ctrl-UTF-8.map.gz" "" \ +"qwerty/ua-cp1251.map.gz" "" \ +"qwerty/ua-utf-ws.map" "" \ +"qwerty/ua-utf.map" "" \ +"qwerty/ua-ws.map" "" \ +"qwerty/ua.map" "" \ +"qwerty/uk.map" "" \ +"qwerty/us-acentos.map" "" \ +"qwerty/us.map" "" \ +"qwertz/croat.map" "" \ +"qwertz/cz-us-qwertz.map" "" \ +"qwertz/cz.map" "" \ +"qwertz/de-latin1-nodeadkeys.map" "" \ +"qwertz/de-latin1.map" "" \ +"qwertz/de.map" "" \ +"qwertz/de_CH-latin1.map" "" \ +"qwertz/fr_CH-latin1.map" "" \ +"qwertz/fr_CH.map" "" \ +"qwertz/hu.map" "" \ +"qwertz/sg-latin1-lk450.map" "" \ +"qwertz/sg-latin1.map" "" \ +"qwertz/sg.map" "" \ +"qwertz/sk-prog-qwertz.map" "" \ +"qwertz/sk-qwertz.map" "" \ +"qwertz/slovene.map" "" ) + [ -n "$KEYMAP" ] && KEYMAP=$(basename $KEYMAP .map) + fi + + if echo $EXTRA | grep -q UDEV ; then + UDEV=1 + fi + + if echo $EXTRA | grep -q RESUMEDEV ; then + # Print information about swap partitions: + FREERAM=$(free -k | grep "^Mem:" | tr -s ' ' | cut -d' ' -f2) + SWPINFO="" + for SWPDEV in $(grep -w swap $FSTAB | cut -d' ' -f1) ; do + SWPINFO="$SWPINFO $SWPDEV Linux swap partition $(fdisk -s $SWPDEV) KB \\n" + [ $(fdisk -s $SWPDEV) -gt $FREERAM ] && RESUMEDEV=$SWPDEV + done + FREERAM=$(free -m | grep "^Mem:" | tr -s ' ' | cut -d' ' -f2) + RESUMEDEV=$( dialog --stdout --no-collapse --title "HIBERNATE RESUME DEVICE" --inputbox "\ +When using suspend-to-disk feature (hibernate), your computer's RAM is copied \ +to a swap device when it shuts down. The kernel will resume from that RAM \ +image at boot. This means that the swap partition must not be smaller than \ +the amount of RAM you have ($FREERAM MB). \n\ +$SWPINFO \n\ +Please specify a swap partition to be used for hibernation:" \ +0 0 "$RESUMEDEV") + [ -z "$RESUMEDEV" ] && exit 1 + fi + + if echo $EXTRA | grep -q WAIT ; then + WAIT=$( dialog --stdout --title "WAIT FOR ROOT DEVICE" --inputbox "\ +Some block devices are too slow to be detected properly at boot. USB storage \ +devices and some disk arrays have this 'feature'. To make your machine \ +boot properly, you can add some delay here, to wait until all your disks are \ +probed and detected. The time is in seconds:" 0 0 "$WAIT") + [ -z "$WAIT" ] && exit 1 + fi + + IMGFILE=$( dialog --stdout --title "INITRD IMAGE NAME" --inputbox "\ +Enter your initrd image filename." 0 0 "$IMGFILE" ) + [ -z "$IMGFILE" ] && exit 1 + +else + MLIST=$(add_rootfs_module) +fi + +# Add any modules passed along on the commandline: +if [ -n "$MKINIT_MODS" ]; then + [ -n "$MLIST" ] && MLIST="$MLIST:$(echo $MKINIT_MODS | tr ' ' ':')" \ + || MLIST="$(echo $MKINIT_MODS | tr ' ' ':')" +fi + +# Constructing the mkinitrd command: +MKINIT="mkinitrd -c -k $KVER -f $ROOTFS -r $ROOTDEV" + +# If we have a module list, add them: +if ! [ -z "$MLIST" -o "$MLIST" = ":" ]; then + MKINIT="$MKINIT -m $MLIST" +fi + +# Deal with LUKS/LVM/RAID: +if [ "$USING_LUKS" = "1" ]; then + MKINIT="$MKINIT -C $REALDEV" +fi +if [ "$USING_LVM" = "1" ]; then + MKINIT="$MKINIT -L" +fi +if [ "$USING_RAID" = "1" ]; then + MKINIT="$MKINIT -R" +fi + +if [ -n "$RESUMEDEV" ]; then + # Add hibernation partition: + MKINIT="$MKINIT -h $RESUMEDEV" +fi +if [ -n "$KEYMAP" -a "$KEYMAP" != "us" ]; then + # Add non-us keyboard mapping: + MKINIT="$MKINIT -l $KEYMAP" +fi +if [ $UDEV -eq 1 ]; then + # Add UDEV support: + MKINIT="$MKINIT -u" +fi +if [ -n "$WAIT" -a $WAIT -ne $WAIT_DEFAULT ]; then + # Add non-default wait time: + MKINIT="$MKINIT -w $WAIT" +fi +if ! echo "$MKINIT_PARAMS" | grep -q -- '-o ' ; then + # Add default output filename: + MKINIT="$MKINIT -o $IMGFILE" +fi +if [ -n "$MKINIT_PARAMS" ]; then + # Add user-supplied additional parameters: + MKINIT="$MKINIT $MKINIT_PARAMS" +fi + +# Notify the user: +if [ "$EMIT" = "all" ]; then + cat <<-EOT + # + # $(basename $0) revision $REV + # + # This script will now make a recommendation about the command to use + # in case you require an initrd image to boot a kernel that does not + # have support for your storage or root filesystem built in + # (such as the Slackware 'generic' kernels'). + # A suitable 'mkinitrd' command will be: + + $MKINIT + EOT +elif [ "$EMIT" = "run" ]; then + echo "$MKINIT" +elif [ "$EMIT" = "conf" ]; then + cat <<-EOT + SOURCE_TREE="$SOURCE_TREE" + CLEAR_TREE="$CLEAR_TREE" + OUTPUT_IMAGE="$IMGFILE" + KERNEL_VERSION="$KVER" + KEYMAP="$KEYMAP" + MODULE_LIST="$(echo $MLIST | cut -f2 -d\ )" + LUKSDEV="$REALDEV" + ROOTDEV="$ROOTDEV" + ROOTFS="$ROOTFS" + RESUMEDEV="$RESUMEDEV" + RAID="$USING_RAID" + LVM="$USING_LVM" + UDEV="$UDEV" + WAIT="$WAIT" + EOT +fi + +if [ -n "$KFILE" ]; then + if [ "$EMIT" = "all" ]; then + cat <<-EOT + # An entry in 'etc/lilo.conf' for kernel '$KFILE' would look like this: + EOT + fi + if [ "$EMIT" = "all" -o "$EMIT" = "lilo" ]; then + # Compensate for the syntax used for the LUKS-on-LVM case: + [ "$(basename $ROOTDEV)" = "$ROOTDEV" ] && BASE="/dev/mapper/" || BASE="" + cat <<-EOT + # Linux bootable partition config begins + # initrd created with '$MKINIT' + image = $KFILE + initrd = $IMGFILE + root = $BASE$ROOTDEV + label = $KVER + read-only + # Linux bootable partition config ends + EOT + fi +fi diff --git a/patches/source/mkinitrd/slack-desc b/patches/source/mkinitrd/slack-desc new file mode 100644 index 000000000..49d1a764f --- /dev/null +++ b/patches/source/mkinitrd/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +mkinitrd: mkinitrd (make an initial ramdisk) +mkinitrd: +mkinitrd: mkinitrd is a script to create an initial ramdisk that is loaded at +mkinitrd: the same time as the kernel. The initial ramdisk may be responsible +mkinitrd: for loading kernel modules (such a filesystem or SCSI controller +mkinitrd: module) that are needed to mount the root filesystem. +mkinitrd: +mkinitrd: The "initrd" is implemented as an initramfs. See the kernel +mkinitrd: documentation for more information on this, if you are interested. +mkinitrd: +mkinitrd: diff --git a/patches/source/mozilla-firefox/autoconf/autoconf-2.13-consolidated_fixes-1.patch b/patches/source/mozilla-firefox/autoconf/autoconf-2.13-consolidated_fixes-1.patch new file mode 100644 index 000000000..5e7b23113 --- /dev/null +++ b/patches/source/mozilla-firefox/autoconf/autoconf-2.13-consolidated_fixes-1.patch @@ -0,0 +1,504 @@ +Submitted By: Ken Moffat +Date: 2016-06-11 +Initial Package Version: 2.13 +Upstream Status: Version is historic and unmaintained. +Origin: Found at fedora, plus fixes for LFS. +Description: All of the patches currently used by fedora, except for +the patch which ensures gawk is used in preference to mawk (we do not +install mawk). For LFS: we put mktemp in /usr/bin not /bin, remove +the install-info target because that will overwrite standards.info +with an old version (fedora always use a DESTDIR), and change the +man and info dirs to ${datadir}/ i.e. /usr/share (an empty /usr/info +will otherwise be created). + +diff -Naur a/acgeneral.m4 b/acgeneral.m4 +--- a/acgeneral.m4 1999-01-05 13:27:37.000000000 +0000 ++++ b/acgeneral.m4 2016-06-11 00:18:24.429043947 +0100 +@@ -1817,10 +1817,6 @@ + [cat > conftest.$ac_ext </dev/null +@@ -1988,12 +1984,12 @@ + AC_MSG_CHECKING(size of $1) + AC_CACHE_VAL(AC_CV_NAME, + [AC_TRY_RUN([#include +-main() ++int main() + { + FILE *f=fopen("conftestval", "w"); +- if (!f) exit(1); ++ if (!f) return(1); + fprintf(f, "%d\n", sizeof($1)); +- exit(0); ++ return(0); + }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl + AC_MSG_RESULT($AC_CV_NAME) + AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) +@@ -2160,20 +2156,38 @@ + dnl AC_OUTPUT_MAKE_DEFS() + define(AC_OUTPUT_MAKE_DEFS, + [# Transform confdefs.h into DEFS. +-dnl Using a here document instead of a string reduces the quoting nightmare. + # Protect against shell expansion while executing Makefile rules. + # Protect against Makefile macro expansion. +-cat > conftest.defs <<\EOF ++# ++# If the first sed substitution is executed (which looks for macros that ++# take arguments), then we branch to the quote section. Otherwise, ++# look for a macro that doesn't take arguments. ++cat >confdef2opt.sed <<\_ACEOF + changequote(<<, >>)dnl +-s%<<#define>> \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +-s%[ `~<<#>>$^&*(){}\\|;'"<>?]%\\&%g +-s%\[%\\&%g +-s%\]%\\&%g +-s%\$%$$%g ++t clear ++: clear ++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g ++t quote ++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g ++t quote ++d ++: quote ++s,[ `~#$^&*(){}\\|;'"<>?],\\&,g ++s,\[,\\&,g ++s,\],\\&,g ++s,\$,$$,g ++p + changequote([, ])dnl +-EOF +-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +-rm -f conftest.defs ++_ACEOF ++# We use echo to avoid assuming a particular line-breaking character. ++# The extra dot is to prevent the shell from consuming trailing ++# line-breaks from the sub-command output. A line-break within ++# single-quotes doesn't work because, if this script is created in a ++# platform that uses two characters for line-breaks (e.g., DOS), tr ++# would break. ++ac_LF_and_DOT=`echo; echo .` ++DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` ++rm -f confdef2opt.sed + ]) + + dnl Do the variable substitutions to create the Makefiles or whatever. +diff -Naur a/acspecific.m4 b/acspecific.m4 +--- a/acspecific.m4 1999-01-05 13:27:52.000000000 +0000 ++++ b/acspecific.m4 2016-06-11 00:18:17.533078644 +0100 +@@ -152,8 +152,41 @@ + CXXFLAGS= + fi + fi ++ ++AC_PROG_CXX_EXIT_DECLARATION + ]) + ++ ++# AC_PROG_CXX_EXIT_DECLARATION ++# ----------------------------- ++# Find a valid prototype for exit and declare it in confdefs.h. ++AC_DEFUN(AC_PROG_CXX_EXIT_DECLARATION, ++[for ac_declaration in \ ++ ''\ ++ '#include ' \ ++ 'extern "C" void std::exit (int) throw (); using std::exit;' \ ++ 'extern "C" void std::exit (int); using std::exit;' \ ++ 'extern "C" void exit (int) throw ();' \ ++ 'extern "C" void exit (int);' \ ++ 'void exit (int);' ++do ++ AC_TRY_COMPILE([#include ++$ac_declaration], ++ [exit (42);], ++ [], ++ [continue]) ++ AC_TRY_COMPILE([$ac_declaration], ++ [exit (42);], ++ [break]) ++done ++if test -n "$ac_declaration"; then ++ echo '#ifdef __cplusplus' >>confdefs.h ++ echo $ac_declaration >>confdefs.h ++ echo '#endif' >>confdefs.h ++fi ++])# AC_PROG_CXX_EXIT_DECLARATION ++ ++ + dnl Determine a Fortran 77 compiler to use. If `F77' is not already set + dnl in the environment, check for `g77', `f77' and `f2c', in that order. + dnl Set the output variable `F77' to the name of the compiler found. +@@ -1010,7 +1043,7 @@ + ]) + + AC_DEFUN(AC_FUNC_MMAP, +-[AC_CHECK_HEADERS(unistd.h) ++[AC_CHECK_HEADERS(stdlib.h unistd.h sys/stat.h sys/types.h) + AC_CHECK_FUNCS(getpagesize) + AC_CACHE_CHECK(for working mmap, ac_cv_func_mmap_fixed_mapped, + [AC_TRY_RUN([ +@@ -1039,11 +1072,24 @@ + #include + #include + ++#if HAVE_SYS_TYPES_H ++# include ++#endif ++ ++#if HAVE_STDLIB_H ++# include ++#endif ++ ++#if HAVE_SYS_STAT_H ++# include ++#endif ++ ++#if HAVE_UNISTD_H ++# include ++#endif ++ + /* This mess was copied from the GNU getpagesize.h. */ + #ifndef HAVE_GETPAGESIZE +-# ifdef HAVE_UNISTD_H +-# include +-# endif + + /* Assume that all systems that can run configure have sys/param.h. */ + # ifndef HAVE_SYS_PARAM_H +@@ -1373,6 +1419,8 @@ + r.ru_majflt = r.ru_minflt = 0; + switch (fork()) { + case 0: /* Child. */ ++ /* Unless we actually _do_ something, the kernel sometimes doesn't chalk up any system time to this process. */ ++ if(fork()) { i = 123; wait(NULL); } else { i = 234; exit(0); } + sleep(1); /* Give up the CPU. */ + _exit(0); + case -1: _exit(0); /* What can we do? */ +diff -Naur a/autoconf.sh b/autoconf.sh +--- a/autoconf.sh 1999-01-05 13:27:53.000000000 +0000 ++++ b/autoconf.sh 2016-06-11 00:22:17.351872133 +0100 +@@ -45,20 +45,20 @@ + esac + + : ${TMPDIR=/tmp} +-tmpout=${TMPDIR}/acout.$$ ++tmpout=`/usr/bin/mktemp ${TMPDIR}/acout.XXXXXX` + localdir= + show_version=no + + while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) +- echo "${usage}" 1>&2; exit 0 ;; ++ echo "${usage}" 1>&2; rm -f $tmpout ; exit 0 ;; + --localdir=* | --l*=* ) + localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -l | --localdir | --l*) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $tmpout; exit 1; } + localdir="${1}" + shift ;; + --macrodir=* | --m*=* ) +@@ -66,7 +66,7 @@ + shift ;; + -m | --macrodir | --m* ) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $tmpout; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --v* ) +@@ -76,7 +76,7 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "${usage}" 1>&2; exit 1 ;; ++ echo "${usage}" 1>&2; rm -f $tmpout; exit 1 ;; + * ) + break ;; + esac +@@ -86,23 +86,25 @@ + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" ++ rm -f $tmpout + exit 0 + fi + + case $# in + 0) infile=configure.in ;; + 1) infile="$1" ;; +- *) echo "$usage" >&2; exit 1 ;; ++ *) echo "$usage" >&2; rm -f $tmpout; exit 1 ;; + esac + + trap 'rm -f $tmpin $tmpout; exit 1' 1 2 15 + +-tmpin=${TMPDIR}/acin.$$ # Always set this, to avoid bogus errors from some rm's. ++tmpin=`/usr/bin/mktemp ${TMPDIR}/acin.XXXXXX` ++# Always set this, to avoid bogus errors from some rm's. + if test z$infile = z-; then + infile=$tmpin +- cat > $infile + elif test ! -r "$infile"; then + echo "autoconf: ${infile}: No such file or directory" >&2 ++ rm -f $tmpin $tmpout + exit 1 + fi + +@@ -111,6 +113,8 @@ + else + use_localdir= + fi ++# Make sure we don't leave those around - they are annoying ++trap 'rm -f $tmpin $tmpout' 0 + + # Use the frozen version of Autoconf if available. + r= f= +@@ -118,7 +122,7 @@ + case `$M4 --help < /dev/null 2>&1` in + *reload-state*) test -r $AC_MACRODIR/autoconf.m4f && { r=--reload f=f; } ;; + *traditional*) ;; +-*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin; exit 1 ;; ++*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin $tmpout; exit 1 ;; + esac + + $M4 -I$AC_MACRODIR $use_localdir $r autoconf.m4$f $infile > $tmpout || +@@ -154,6 +158,6 @@ + /__oline__/s/^\([0-9][0-9]*\):\(.*\)__oline__/\2\1/ + ' >&4 + +-rm -f $tmpout ++rm -f $tmpout $tmpin + + exit $status +diff -Naur a/autoconf.texi b/autoconf.texi +--- a/autoconf.texi 1999-01-05 13:28:37.000000000 +0000 ++++ b/autoconf.texi 2016-06-11 00:18:46.360933604 +0100 +@@ -1,7 +1,7 @@ + \input texinfo @c -*-texinfo-*- + @c %**start of header +-@setfilename autoconf.info +-@settitle Autoconf ++@setfilename autoconf.info ++@settitle Autoconf + @c For double-sided printing, uncomment: + @c @setchapternewpage odd + @c %**end of header +@@ -17,7 +17,8 @@ + @ifinfo + @format + START-INFO-DIR-ENTRY +-* Autoconf: (autoconf). Create source code configuration scripts. ++* Autoconf: (autoconf). Create source code configuration scripts. ++ This is a legacy version of autoconf. + END-INFO-DIR-ENTRY + @end format + +diff -Naur a/autoheader.sh b/autoheader.sh +--- a/autoheader.sh 1999-01-05 13:28:39.000000000 +0000 ++++ b/autoheader.sh 2016-06-11 00:22:17.351872133 +0100 +@@ -194,9 +194,9 @@ + # Some fgrep's have limits on the number of lines that can be in the + # pattern on the command line, so use a temporary file containing the + # pattern. +- (fgrep_tmp=${TMPDIR-/tmp}/autoh$$ ++ (fgrep_tmp=`/usr/bin/mktemp ${TMPDIR-/tmp}/autoh$$.XXXXXX` + trap "rm -f $fgrep_tmp; exit 1" 1 2 15 +- cat > $fgrep_tmp <> $fgrep_tmp <&2; exit 0 ;; ++ echo "${usage}" 1>&2; rm -f $sedtmp; exit 0 ;; + --macrodir=* | --m*=* ) + AC_MACRODIR="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -m | --macrodir | --m* ) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $sedtmp; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --versio | --versi | --vers) +@@ -51,7 +51,7 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "${usage}" 1>&2; exit 1 ;; ++ echo "${usage}" 1>&2; rm -f $sedtmp; exit 1 ;; + * ) + break ;; + esac +@@ -61,6 +61,7 @@ + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" ++ rm -f $sedtmp + exit 0 + fi + +@@ -68,6 +69,7 @@ + + tmpout=acupo.$$ + trap 'rm -f $sedtmp $tmpout; exit 1' 1 2 15 ++trap 'rm -f $sedtmp' 0 + case $# in + 0) infile=configure.in; out="> $tmpout" + # Make sure $infile can be read, and $tmpout has the same permissions. +diff -Naur a/configure b/configure +--- a/configure 1999-01-05 13:28:57.000000000 +0000 ++++ b/configure 2016-06-11 00:50:57.771231914 +0100 +@@ -43,8 +43,8 @@ + libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++infodir='${datadir}/info' ++mandir='${datadir}/man' + + # Initialize some other variables. + subdirs= +diff -Naur a/Makefile.in b/Makefile.in +--- a/Makefile.in 1999-01-05 13:27:16.000000000 +0000 ++++ b/Makefile.in 2016-06-11 00:29:34.005678107 +0100 +@@ -49,7 +49,7 @@ + + # Directory in which to install library files. + datadir = @datadir@ +-acdatadir = $(datadir)/autoconf ++acdatadir = $(datadir)/autoconf-2.13 + + # Directory in which to install documentation info files. + infodir = @infodir@ +@@ -68,8 +68,8 @@ + DISTFILES = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL \ + Makefile.in NEWS README TODO $(M4FILES) \ + acconfig.h acfunctions acheaders acidentifiers \ +- acmakevars acprograms autoconf.info* \ +- autoconf.sh autoconf.texi install.texi \ ++ acmakevars acprograms autoconf.info* \ ++ autoconf.sh autoconf.texi install.texi \ + autoheader.sh autoscan.pl autoreconf.sh autoupdate.sh ifnames.sh \ + config.guess config.sub configure configure.in \ + install-sh mkinstalldirs texinfo.tex \ +@@ -106,11 +106,11 @@ + autoconf.m4f: autoconf.m4 acgeneral.m4 acspecific.m4 acoldnames.m4 + autoheader.m4f: autoheader.m4 acgeneral.m4 acspecific.m4 acoldnames.m4 + +-info: autoconf.info @standards_info@ INSTALL ++info: autoconf.info @standards_info@ INSTALL + + # Use --no-split to avoid creating filenames > 14 chars. +-autoconf.info: autoconf.texi install.texi +- $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@ ++autoconf.info: autoconf.texi install.texi ++ $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@ + + INSTALL: install.texi + $(MAKEINFO) -I$(srcdir) $(srcdir)/install.texi --output=$@ \ +@@ -121,8 +121,8 @@ + + dvi: autoconf.dvi @standards_dvi@ + +-autoconf.dvi: autoconf.texi +- $(TEXI2DVI) $(srcdir)/autoconf.texi ++autoconf.dvi: autoconf.texi ++ $(TEXI2DVI) $(srcdir)/autoconf.texi + + standards.dvi: standards.texi make-stds.texi + $(TEXI2DVI) $(srcdir)/standards.texi +@@ -137,35 +137,35 @@ + cd testsuite && ${MAKE} AUTOCONF=${bindir}/autoconf $@ + + installdirs: +- $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(acdatadir) ++ $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)/$(bindir) $(DESTDIR)/$(infodir) $(DESTDIR)/$(acdatadir) + +-install: all $(M4FILES) acconfig.h installdirs install-info ++install: all $(M4FILES) acconfig.h installdirs + for p in $(ASCRIPTS); do \ +- $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ ++ $(INSTALL_PROGRAM) $$p $(DESTDIR)/$(bindir)/`echo $$p|sed '$(transform)'`; \ + done + for i in $(M4FROZEN); do \ +- $(INSTALL_DATA) $$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(acdatadir)/$$i; \ + done + for i in $(M4FILES) acconfig.h; do \ +- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)/$(acdatadir)/$$i; \ + done + -if test -f autoscan; then \ +- $(INSTALL_PROGRAM) autoscan $(bindir)/`echo autoscan|sed '$(transform)'`; \ ++ $(INSTALL_PROGRAM) autoscan $(DESTDIR)/$(bindir)/`echo autoscan|sed '$(transform)'`; \ + for i in acfunctions acheaders acidentifiers acprograms \ + acmakevars; do \ +- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)/$(acdatadir)/$$i; \ + done; \ + else :; fi + + # Don't cd, to avoid breaking install-sh references. + install-info: info installdirs +- if test -f autoconf.info; then \ ++ if test -f autoconf.info; then \ + for i in *.info*; do \ +- $(INSTALL_DATA) $$i $(infodir)/$$i; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(infodir)/$$i; \ + done; \ + else \ + for i in $(srcdir)/*.info*; do \ +- $(INSTALL_DATA) $$i $(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ + done; \ + fi + +@@ -174,7 +174,7 @@ + rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ + done + rm -fr $(acdatadir) +- cd $(infodir) && rm -f autoconf.info* ++ cd $(infodir) && rm -f autoconf.info* + if test -f standards.info || test -f $(srcdir)/standards.info; \ + then cd $(infodir) && rm -f standards.info*; fi + +diff -Naur a/testsuite/autoconf.s/syntax.exp b/testsuite/autoconf.s/syntax.exp +--- a/testsuite/autoconf.s/syntax.exp 1999-01-05 13:29:54.000000000 +0000 ++++ b/testsuite/autoconf.s/syntax.exp 2016-06-11 00:18:51.996905247 +0100 +@@ -2,7 +2,7 @@ + + send_user "Checking for syntax errors in the specific tests...\n" + set script {s/^AC_DEFUN(\([^,]*\).*/\1/p} +-set macros [exec sed -n $script $srcdir/../acspecific.m4] ++set macros [exec sed -n $script $srcdir/../acspecific.m4 | grep -v -e AC_FUNC_GETLOADAVG -e F77] + + foreach mac $macros { + send_user "$mac\n" diff --git a/patches/source/mozilla-firefox/autoconf/autoconf.build b/patches/source/mozilla-firefox/autoconf/autoconf.build new file mode 100755 index 000000000..7dae1bad1 --- /dev/null +++ b/patches/source/mozilla-firefox/autoconf/autoconf.build @@ -0,0 +1,81 @@ +#!/bin/sh + +# Copyright 2005-2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=autoconf +VERSION=2.13 +BUILD=${BUILD:-1} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-autoconf + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf autoconf-$VERSION +tar xvf $CWD/autoconf-$VERSION.tar.xz || exit 1 +cd autoconf-$VERSION + +zcat $CWD/autoconf-2.13-consolidated_fixes-1.patch.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Build a temporary copy of autoconf-2.13 only to be used to compile +# Firefox, since it somewhat inexplicably requires this ancient version: + +rm -rf $TMP/autoconf-tmp +mkdir -p $TMP/autoconf-tmp +# This will be at the beginning of the $PATH, so protect against nonsense +# happening in /tmp: +chmod 700 $TMP/autoconf-tmp +rm -rf $TMP/autoconf-tmp/* +mkdir -p $TMP/autoconf-tmp/usr + +./configure \ + --prefix=$TMP/autoconf-tmp/usr \ + --program-suffix=-2.13 \ + --infodir=$TMP/autoconf-tmp/usr/info \ + --mandir=$TMP/autoconf-tmp/usr/man \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install || exit 1 + diff --git a/patches/source/mozilla-firefox/build-with-clang.diff b/patches/source/mozilla-firefox/build-with-clang.diff new file mode 100644 index 000000000..54c0e1055 --- /dev/null +++ b/patches/source/mozilla-firefox/build-with-clang.diff @@ -0,0 +1,13 @@ +--- ./mozilla-firefox.SlackBuild.orig 2016-11-16 12:12:10.068029005 -0600 ++++ ./mozilla-firefox.SlackBuild 2016-11-16 12:41:26.774085280 -0600 +@@ -220,6 +220,10 @@ + # needed for PGO. + echo ". \$topsrcdir/browser/config/mozconfig" > .mozconfig + ++# Build using clang: ++echo "export CC=clang" >> .mozconfig ++echo "export CXX=clang++" >> .mozconfig ++ + # Mozilla devs enforce using an objdir for building + # https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir + mkdir obj diff --git a/patches/source/mozilla-firefox/firefox.moz_plugin_path.diff b/patches/source/mozilla-firefox/firefox.moz_plugin_path.diff new file mode 100644 index 000000000..761f295a4 --- /dev/null +++ b/patches/source/mozilla-firefox/firefox.moz_plugin_path.diff @@ -0,0 +1,17 @@ +--- ./firefox.orig 2008-05-29 15:21:18.000000000 -0500 ++++ ./firefox 2008-06-17 12:19:26.000000000 -0500 +@@ -54,6 +54,14 @@ + + moz_libdir=/usr/local/lib/firefox-3.0 + ++# Include /usr/lib/mozilla/plugins in the plugin path: ++if [ "$MOZ_PLUGIN_PATH" ] ; then ++ MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:${moz_libdir}/plugins:/usr/lib/mozilla/plugins ++else ++ MOZ_PLUGIN_PATH=${moz_libdir}/plugins:/usr/lib/mozilla/plugins ++fi ++export MOZ_PLUGIN_PATH ++ + # Use run-mozilla.sh in the current dir if it exists + # If not, then start resolving symlinks until we find run-mozilla.sh + found=0 diff --git a/patches/source/mozilla-firefox/gold/gold b/patches/source/mozilla-firefox/gold/gold new file mode 100755 index 000000000..8c86d3b06 --- /dev/null +++ b/patches/source/mozilla-firefox/gold/gold @@ -0,0 +1,2 @@ +#!/bin/bash +/usr/bin/ld.gold "$@" diff --git a/patches/source/mozilla-firefox/gold/ld b/patches/source/mozilla-firefox/gold/ld new file mode 120000 index 000000000..78a06a2a1 --- /dev/null +++ b/patches/source/mozilla-firefox/gold/ld @@ -0,0 +1 @@ +gold \ No newline at end of file diff --git a/patches/source/mozilla-firefox/mimeTypes.rdf b/patches/source/mozilla-firefox/mimeTypes.rdf new file mode 100644 index 000000000..f3bc7b406 --- /dev/null +++ b/patches/source/mozilla-firefox/mimeTypes.rdf @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + diff --git a/patches/source/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff b/patches/source/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff new file mode 100644 index 000000000..222113044 --- /dev/null +++ b/patches/source/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff @@ -0,0 +1,45 @@ +diff -Nur mozilla-1.9.1.orig/browser/locales/generic/profile/mimeTypes.rdf mozilla-1.9.1/browser/locales/generic/profile/mimeTypes.rdf +--- mozilla-1.9.1.orig/browser/locales/generic/profile/mimeTypes.rdf 2009-06-29 11:14:41.000000000 -0500 ++++ mozilla-1.9.1/browser/locales/generic/profile/mimeTypes.rdf 2009-07-01 08:28:05.407353867 -0500 +@@ -1,13 +1,28 @@ +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/patches/source/mozilla-firefox/mozilla-firefox.SlackBuild b/patches/source/mozilla-firefox/mozilla-firefox.SlackBuild new file mode 100755 index 000000000..9b0dd6189 --- /dev/null +++ b/patches/source/mozilla-firefox/mozilla-firefox.SlackBuild @@ -0,0 +1,307 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Thanks to the folks at the Mozilla Foundation for permission to +# distribute this, and for all the great work! :-) + +VERSION=$(basename $(ls firefox-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source) +RELEASEVER=$(echo $VERSION | cut -f 1 -d r | cut -f 1 -d b | cut -f 1 -d e) +BUILD=${BUILD:-1_slack14.2} + +# Specify this variable for a localized build. +# For example, to build a version of Firefox with Italian support, run +# the build script like this: +# +# MOZLOCALIZE=it ./mozilla-firefox.SlackBuild +# +MOZLOCALIZE=${MOZLOCALIZE:-} + +# Without LANG=C, building the Python environment may fail with: +# "UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 36: ordinal not in range(128)" +LANG=C + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# Use PGO? Doubles the time and drive space requirements for the build, +# but should provide a performance increase. How much depends on which +# benchmarks you believe, but I've typically seen around 2.5%. I've also +# seen some which say it can be negligably (a fraction of a percent) slower +# with this enganged. The anecdotal reports usually say there's a noticable +# improvement in overall responsiveness. Seems like a good bet if you have +# the time and your system is able to handle it. Set the variable to +# anything else prior to the build to compile Firefox in less time (but +# without the possible benefits of Profile-Guided Optimization). +# +# NOTE: The 23.0 release fails to compile with a GLib assert error if PGO +# is enabled, so it is being disabled by default. I can't say I ever noticed +# a lot of difference with this anyway (other than a much, much longer compile +# time. But pass PGO=yes to the SlackBuild if you want to try it. +#if [ "$ARCH" = "x86_64" ]; then +# PGO=${PGO:-yes} +#else +# # 32-bit systems have problems compiling with PGO, as the per-process +# # memory requirements are too large. Possibly compiling with a 64-bit +# # kernel could be a workaround for this, but for now we will default to +# # using PGO only for x86_64. +# PGO=${PGO:-no} +#fi +# +# PGO is disabled by default: +PGO=${PGO:-no} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O1 " +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O1 " +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + OPTIMIZE=" --enable-optimize=-O1 " +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O1 " +elif [ "$ARCH" = "armel" ]; then + SLKCFLAGS="-O2 -march=armv4t" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O1 " +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O1 " +fi + +# Link using gold. This avoids running out of memory on 32-bit systems, and +# avoids a recurring build failure with GNU ld on other systems. +PATH="$(pwd)/gold:$PATH" +export CC="gcc -B$(pwd)/gold" +export CXX="g++ -B$(pwd)/gold" + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-mozilla-firefox + +# If not specified, figure out if this is a beta or a release +MOZVERS=${MOZVERS:-release} +if echo $VERSION | grep -q b ; then MOZVERS=beta ; fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +rm -rf $PKG +mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX} + +# We need to use the incredibly ancient autoconf-2.13 for this :/ +( cd $CWD/autoconf ; ./autoconf.build ) +PATH=/tmp/autoconf-tmp/usr/bin:$PATH + +cd $TMP +rm -rf firefox-$VERSION +# Unpack this in a subdirectory to prevent changing permissions on /tmp: +rm -rf firefox-unpack +mkdir firefox-unpack +cd firefox-unpack +tar xvf $CWD/firefox-$VERSION.source.tar.?z* || exit 1 +mv * .. +cd .. +rm -rf firefox-unpack +cd firefox-$VERSION || exit 1 + +# Fetch localization, if requested +# https://bugzilla.mozilla.org/show_bug.cgi?id=1256955 +if [ ! -z $MOZLOCALIZE ]; then + LOC_URL="http://ftp.mozilla.org/pub/firefox/candidates/$VERSION-candidates/build1/l10n_changesets.txt" + LOC_COMMIT=$(wget -q -O - $LOC_URL | grep ^$MOZLOCALIZE | cut -d\ -f2) + hg clone https://hg.mozilla.org/l10n-central/$MOZLOCALIZE -r $LOC_COMMIT +fi + +# Patch mimeTypes.rdf +# Uncomment this if you want to use the patch; otherwise, we overwrite the +# mimeTypes.rdf inside the package directory later +# zcat $CWD/mozilla-firefox-mimeTypes-fix.diff.gz | patch -p1 || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Our building options, in a configure-like display ;) +OPTIONS="\ + --enable-official-branding \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER \ + --with-system-zlib \ + --enable-alsa \ + --enable-application=browser \ + --enable-default-toolkit=cairo-gtk2 \ + --enable-startup-notification \ + $OPTIMIZE \ + --enable-strip \ + --enable-cpp-rtti \ + --disable-accessibility \ + --disable-crashreporter \ + --disable-debug" +# Complains about missing APNG support in Slackware's libpng: +# --with-system-png \ +# This option breaks mozilla-12.0: +# --enable-system-cairo \ +# NOTE: It probably reduces bugs to use the bundled library versions, +# so in general we will not --enable-system-libraries. +# But since system zlib has been used for a long time and isn't a moving +# target, we'll leave that one as-is. +if [ ! -z $MOZLOCALIZE ]; then + OPTIONS=$OPTIONS" \ + --enable-ui-locale=$MOZLOCALIZE + --with-l10n-base=.." + # There are no dictionaries in localized builds + sed -i \ + -e "/@BINPATH@\/dictionaries\/\*/d" \ + -e "/@RESPATH@\/dictionaries\/\*/d" \ + browser/installer/package-manifest.in || exit 1 +fi + +export MOZILLA_OFFICIAL="1" +export BUILD_OFFICIAL="1" +export MOZ_PHOENIX="1" +export MOZ_PACKAGE_JSSHELL="1" +export CFLAGS="$SLKCFLAGS" +export CXXFLAGS="$SLKCFLAGS" +export MOZ_MAKE_FLAGS="$NUMJOBS" + +# Clear some variables that could break the build +unset DBUS_SESSION_BUS_ADDRESS ORBIT_SOCKETDIR SESSION_MANAGER \ + XDG_SESSION_COOKIE XAUTHORITY MAKEFLAGS + +# Assemble our .mozconfig, we use this method for building, seems +# needed for PGO. +echo ". \$topsrcdir/browser/config/mozconfig" > .mozconfig + +# Mozilla devs enforce using an objdir for building +# https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir +mkdir obj +echo "mk_add_options MOZ_OBJDIR=$(pwd)/obj" >> .mozconfig + +if [ "$MOZLOCALIZE" ]; then + echo "mk_add_options MOZ_CO_LOCALES=\"$MOZLOCALIZE\"" >> .mozconfig +fi + +# Write in it the options above +for option in $OPTIONS; do echo "ac_add_options $option" >> .mozconfig; done + +# https://developer.mozilla.org/en-US/docs/Building_with_Profile-Guided_Optimization +# Thanks to ArchLinux and Gentoo for the additional hints. +if [ "$PGO" = "yes" ]; then + # Do a PGO build, double time and disk space but worth it. + export MOZ_PGO=1 + echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> .mozconfig + export DISPLAY=:99 + # Launch Xvfb to let the profile scripts run in a X session. + # Ugly note: if the build breaks you may want to do a "killall Xvfb". + Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY & + dbus-launch --exit-with-session make -f client.mk build || exit 1 + kill $! || true +else + # Do a normal build + echo "ac_add_options --disable-tests" >> .mozconfig + make -f client.mk build || exit 1 +fi + +make -f client.mk install DESTDIR=$PKG || exit 1 + +# We don't need these (just symlinks anyway): +rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/firefox-devel-$RELEASEVER + +# Nor these: +rm -rf $PKG/usr/include + +( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER + #mv defaults/profile/mimeTypes.rdf defaults/profile/mimeTypes.rdf.orig || exit 1 + if [ -d defaults/profile ]; then + zcat $CWD/mimeTypes.rdf > defaults/profile/mimeTypes.rdf || exit 1 + fi + # OK, this patch is useless on 7.x. We'll float without it and see what happens. + # Perhaps it won't make a difference or should be worked around elsewhere. + #zcat $CWD/firefox.moz_plugin_path.diff.gz \ + # | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + # | patch -p1 --verbose --backup --suffix=.orig || exit 1 + # Clean up if the above patch was successful: + #rm -f firefox.orig +) || exit + +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins +mkdir -p $PKG/usr/share/applications +cat $CWD/mozilla-firefox.desktop > $PKG/usr/share/applications/mozilla-firefox.desktop + +# These files/directories are usually created if Firefox is run as root, +# which on many systems might (and possibly should) be never. Therefore, if we +# don't see them we'll put stubs in place to prevent startup errors. +( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER + if [ -d extensions/talkback\@mozilla.org ]; then + if [ ! -r extensions/talkback\@mozilla.org/chrome.manifest ]; then + echo > extensions/talkback\@mozilla.org/chrome.manifest + fi + fi + if [ ! -d updates ]; then + mkdir -p updates/0 + fi +) + +# Need some default icons in the right place: +for i in 16 22 24 32 48 256; do + install -m 0644 -D browser/branding/official/default${i}.png \ + $PKG/usr/share/icons/hicolor/${i}x${i}/apps/firefox.png +done +mkdir -p $PKG/usr/share/pixmaps +( cd $PKG/usr/share/pixmaps ; ln -sf /usr/share/icons/hicolor/256x256/apps/firefox.png . ) +mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/chrome/icons/default +install -m 644 browser/branding/official/default16.png \ + $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/icons/ +install -m 644 browser/branding/official/default16.png \ + $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/chrome/icons/default/ + +# Copy over the LICENSE +install -p -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER/ + +mkdir $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +if [ -z $MOZLOCALIZE ]; then + /sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-$BUILD.txz +else + /sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-${BUILD}_$MOZLOCALIZE.txz +fi + diff --git a/patches/source/mozilla-firefox/mozilla-firefox.desktop b/patches/source/mozilla-firefox/mozilla-firefox.desktop new file mode 100644 index 000000000..e099dcade --- /dev/null +++ b/patches/source/mozilla-firefox/mozilla-firefox.desktop @@ -0,0 +1,80 @@ +[Desktop Entry] +Exec=firefox %u +Icon=firefox +Type=Application +Categories=Network; +Name=Firefox +Name[bn]=ফায়ারফকà§à¦¸ +Name[eo]=Mozilo Fajrovulpo +Name[fi]=Mozilla Firefox +Name[pa]=ਫਾਇਰਫੋਕਸ +Name[tg]=Рӯбоҳи оташин +GenericName=Web Browser +GenericName[af]=Web Blaaier +GenericName[ar]=متصÙØ­ ويب +GenericName[az]=Veb SÉ™yyahı +GenericName[bg]=Браузър +GenericName[bn]=ওয়েব বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° +GenericName[br]=Furcher ar Gwiad +GenericName[bs]=WWW Preglednik +GenericName[ca]=Fullejador web +GenericName[cs]=WWW prohlížeÄ +GenericName[cy]=Porydd Gwe +GenericName[da]=Browser +GenericName[de]=Web-Browser +GenericName[el]=ΠεÏιηγητής Î™ÏƒÏ„Î¿Ï +GenericName[eo]=TTT-legilo +GenericName[es]=Navegador web +GenericName[et]=Veebilehitseja +GenericName[eu]=Web arakatzailea +GenericName[fa]=مرورگر وب +GenericName[fi]=WWW-selain +GenericName[fo]=Alnótsfar +GenericName[fr]=Navigateur web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן ×ינטרנט +GenericName[hi]=वेब बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° +GenericName[hr]=Web preglednik +GenericName[hu]=WebböngészÅ‘ +GenericName[is]=Vafri +GenericName[it]=Browser Web +GenericName[ja]=ウェブブラウザ +GenericName[ko]=웹 브ë¼ìš°ì € +GenericName[lo]=ເວັບບຣາວເຊີ +GenericName[lt]=Žiniatinklio narÅ¡yklÄ— +GenericName[lv]=Web PÄrlÅ«ks +GenericName[mk]=ПрелиÑтувач на Интернет +GenericName[mn]=Веб-Хөтөч +GenericName[nb]=Nettleser +GenericName[nds]=Nettkieker +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[nso]=Seinyakisi sa Web +GenericName[pa]=ਵੈਬ à¨à¨²à¨•à¨¾à¨°à¨¾ +GenericName[pl]=PrzeglÄ…darka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator de web +GenericName[ru]=Веб-браузер +GenericName[se]=Fierpmádatlogan +GenericName[sk]=Webový prehliadaÄ +GenericName[sl]=Spletni brskalnik +GenericName[sr]=Веб претраживач +GenericName[sr@Latn]=Veb pretraživaÄ +GenericName[ss]=Ibrawuza yeWeb +GenericName[sv]=Webbläsare +GenericName[ta]=வலை உலாவி +GenericName[tg]=ТафÑиргари вÑб +GenericName[th]=เว็บบราวเซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[uk]=Ðавігатор Тенет +GenericName[uz]=Веб-браузер +GenericName[ven]=Buronza ya Webu +GenericName[vi]=Trình duyệt Web +GenericName[wa]=Betchteu waibe +GenericName[xh]=Umkhangeli zincwadi we Web +GenericName[zh_CN]=网页æµè§ˆå™¨ +GenericName[zh_TW]=網é ç€è¦½å™¨ +GenericName[zu]=Umcingi we-Web +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +X-KDE-StartupNotify=true diff --git a/patches/source/mozilla-firefox/slack-desc b/patches/source/mozilla-firefox/slack-desc new file mode 100644 index 000000000..a54bac8f0 --- /dev/null +++ b/patches/source/mozilla-firefox/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +mozilla-firefox: mozilla-firefox (Mozilla Firefox Web browser) +mozilla-firefox: +mozilla-firefox: This project is a redesign of the Mozilla browser component written +mozilla-firefox: using the XUL user interface language. Firefox empowers you to +mozilla-firefox: browse faster, more safely and more efficiently than with any other +mozilla-firefox: browser. +mozilla-firefox: +mozilla-firefox: Visit the Mozilla Firefox project online: +mozilla-firefox: http://www.mozilla.org/projects/firefox/ +mozilla-firefox: +mozilla-firefox: diff --git a/patches/source/mozilla-nss/MPL-1.1.txt b/patches/source/mozilla-nss/MPL-1.1.txt new file mode 100644 index 000000000..7714141d1 --- /dev/null +++ b/patches/source/mozilla-nss/MPL-1.1.txt @@ -0,0 +1,470 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + diff --git a/patches/source/mozilla-nss/faq.html b/patches/source/mozilla-nss/faq.html new file mode 100644 index 000000000..176fe8f88 --- /dev/null +++ b/patches/source/mozilla-nss/faq.html @@ -0,0 +1,364 @@ + + + + + + + + + + + + +NSS FAQ + + + +
      + + +
      +
      + +
      +
      + + + + +
      +

      NSS FAQ

      + + +Newsgroup: +mozilla.dev.tech.crypto + + +
      + +

      +


      +

      + +General Questions + +

      + +Developer Questions + + +Licensing Questions + +

      +
      General Questions

      +

      What is Network Security Services (NSS)?

      +

      NSS is set of libraries, APIs, utilities, and documentation designed +to support cross-platform development of security-enabled client and +server applications. It provides a complete open-source implementation +of the crypto libraries used by Netscape and other companies in the +Netscape 6 browser, server products from iPlanet E-Commerce Solutions, the +Gateway Connected Touch Pad with Instant AOL, and other products. + +

      For an +overview of NSS, see Overview of NSS. For detailed information +on the open-source NSS project, see NSS Project Page. + +
      +

      What can I do with NSS? Is NSS appropriate for +my application?

      +

      If you want add support for SSL, S/MIME, or other Internet security standards +to your application, you can use Network Security Services (NSS) to do so. Because +NSS provides complete support for all versions of SSL and TLS, it is particularly well-suited +for applications that need to communicate with the many clients and servers +that already support the SSL protocol. +

      The PKCS #11 interface included in NSS means that your application can +use hardware accelerators on the server and smart +cards for two-factor authentication. +
      + +

      How does NSS compare to OpenSSL?

      + +OpenSSL is an open source project that implements server-side SSL, +TLS, and a general-purpose cryptography library. It does not support PKCS #11. It is based on +the SSLeay library developed by Eric A. Young and Tim J. Hudson. OpenSSL is widely used in +Apache servers and is licensed under an Apache-style licence. + +

      NSS supports both server and client applications as well as PKCS #11 and S/MIME. To permit its use +in as many contexts as possible, +NSS is triple-licensed under the Mozilla Public License, the +GNU General Public License, +and the GNU Lesser General Public License. +You may choose to use the code either under the terms of the MPL or the GPL or the LGPL. + +

      How does NSS compare to SSLRef?

      +SSLRef was an early reference implementation of the SSL protocol. It contains +bugs that were never fixed, doesn't support TLS or or the +new 56-bit export cipher suites, and does not contain the fix to the +Bleichenbacher attack on PKCS#1. + +

      Netscape no longer maintains SSLRef or makes it available. It was built as +an example of an SSL implementation, not for creating production applications. + +

      NSS was designed from the ground up for use by commercial developers. +It provides a complete software development kit +that uses the same architecture used to support security features in many client +and server products from Netscape and other companies. + +

      What platforms and development environments are supported?

      +

      iPlanet E-Commerce Solutions has certified NSS 3.1 on 18 platforms, including AIX 4.3, HP-UX 11.0, +Red Hat Linux 6.0, Solaris (2.6 or later), Windows NT (4.0 or later), and +Windows 2000. Other contributors are in the process of certifying additional platforms. +The NSS 3.1 API requires C or C++ development environments. + +

      For the latest NSS release notes and detailed platform information, see +NSS 3.1 Release Notes. + +

      What cryptography standards does NSS support?

      +

      NSS supports SSL v2 and v3, + TLS, + PKCS #5, + PKCS #7, + PKCS #11, + PKCS #12, + S/MIME, and + X.509 v3 certificates. +For complete details, +see +Encryption Technologies. + +

      What is the relationship between NSS and PSM?

      + +Personal Security Manager (PSM) is built on top of NSS. It consists of libraries +and a daemon designed to support cross-platform development of security-enabled +client applications. The PSM binary provides a client module +that performs cryptographic operations on behalf of applications. +Netscape Personal Security Manager ships with Netscape 6 and the Gateway Connected Touch Pad with Instant AOL, +and is also available for use with Communicagotr 4.7x. + +

      For more information about the PSM open-source project, see Personal Security Manager. + +

      Where can I get the source code?

      + +For instructions on how to check out and build the NSS 3.1 source code, see +Build Instructions for NSS 3.1. The source code may also +be downloaded as a tar file from +ftp://ftp.mozilla.org/pub/mozilla.org/security/. + +

      How much does it cost?

      + +NSS source code and binaries (when they become available) are completely free. No license fees, +no royalty fees, no subscription fees. + + +

      +
      Developer Questions

      + +

      What hardware accelerators are supported?

      +

      NSS supports the PKCS #11 interface for hardware acceleration. Since leading accelerator vendors such as +Chrysalis-IT, nCipher, and Rainbow Technologies also support this interface, NSS-enabled applications +can support a wide variety of hardware accelerators. +

      How do I integrate smart cards into my application using +NSS?

      +

      NSS supports the PKCS #11 interface for smart card integration. Applications that use the PKCS #11 +interface provided by NSS will therefore support smart cards from leading vendors such as +ActiveCard, Litronic, and SecureID Technologies that also support the PKCS #11 interface. + +

      How is NSS compatible with other Netscape products?

      +

      NSS provides tight integration with other Netscape products in two ways. +First, by using NSS to implement SSL and TLS, you can support SSL communications +with all products from Netscape and all other vendors +that support SSL and TLS. Second, NSS makes it easy +to share certificates between Netscape client and server products +and your application. + +

      Does NSS require Netscape Portable Runtime (NSPR)?

      +

      To provide cross-platform support, NSS utilizes Netscape Portable Runtime +(NSPR) libraries as a portability interface and implementation that +provides consistent cross-platform semantics for network I/O and threading +models. You can use NSPR throughout your application or +only in the portion that calls into NSS. Netscape strongly recommends that +multithreaded applications use the NSPR or native OS threading model. (In +recent NSPR releases, the NSPR threading model is compatible with the native +threading model if the OS has native threads.) Alternatively, you can adapt +the open-source NSPR implementation to be compatible with your existing +application's threading models. More information about NSPR may be found at +Netscape Portable Runtime. +
      + +

      Can I use NSS even if my application protocol isn't +HTTP?

      +

      Yes, SSL independent of application protocols. It works with common +Internet standard application protocols (HTTP, POP3, FTP, SMTP, etc.) as +well as custom application protocols using TCP/IP. + +
      +

      How long does it take to integrate NSS into my application?

      +

      The integration effort depends on an number of factors, such as developer +skill set, application complexity, and the level of security required for +your application. NSS includes detailed documentation of the SSL API and +sample code that demonstrates basic SSL functionality (setting up an encrypted +session, server authentication, and client authentication) to help jump start the +integration process. However, there is little or no documentation currently +available for the rest of the NSS API. If your application requires sophisticated +certificate management, smart card support, or hardware acceleration, your +integration effort will be more extensive. + +

      Where can I download the NSS tools?

      + +Currently, you must download the NSS source and build it to create binary files for the NSS tools. +For more information, see NSS Tools. + + +

      How can I learn more about SSL?

      + +NSS provides extensive documentation related to SSL, including high-level introductions, +detailed API documentation, sample code for simple client and server +applications, the original SSL 3.0 specification, and +information on debugging SSL applications. For details, see the +SSL/TLS Project Page. For information about the NSS tools, including those used +for debugging SSL applications, see +NSS Security Tools. + +

      +
      Licensing Questions

      +

      How is NSS licensed?

      +

      NSS is triple-licensed under the Mozilla Public License, the +GNU General Public License, +and the GNU Lesser General Public License. +For more details, see the Mozilla Crypto FAQ. + +

      Is NSS available outside the United States?

      +

      Yes; see +Build Instructions for NSS 3.1. and +ftp://ftp.mozilla.org/pub/mozilla.org/security/. +However, NSS source code is subject to the U.S. Export +Administration Regulations and other U.S. law, and may not be exported or +re-exported to certain +countries (currently Cuba, Iran, Libya, North Korea, Sudan and Syria) or +to persons or entities prohibited from receiving U.S. exports (including +those (a) on the Bureau of Industry and Security Denied Parties List or +Entity List, (b) on the Office of Foreign Assets Control list of Specially +Designated Nationals and Blocked Persons, and (c) involved with missile +technology or nuclear, chemical or biological weapons). + +

      For more information about U.S. export controls on encryption software, +see the Mozilla Crypto FAQ. + + + + + +


      +
      +
      + +
      + + diff --git a/patches/source/mozilla-nss/gpl-2.0.txt b/patches/source/mozilla-nss/gpl-2.0.txt new file mode 100644 index 000000000..d511905c1 --- /dev/null +++ b/patches/source/mozilla-nss/gpl-2.0.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/patches/source/mozilla-nss/lgpl-2.1.txt b/patches/source/mozilla-nss/lgpl-2.1.txt new file mode 100644 index 000000000..602bfc946 --- /dev/null +++ b/patches/source/mozilla-nss/lgpl-2.1.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/patches/source/mozilla-nss/mozilla-nss.SlackBuild b/patches/source/mozilla-nss/mozilla-nss.SlackBuild new file mode 100755 index 000000000..9d6bb9091 --- /dev/null +++ b/patches/source/mozilla-nss/mozilla-nss.SlackBuild @@ -0,0 +1,186 @@ +#!/bin/sh +# Copyright 2005, 2006, 2008, 2009, 2010, 2012 Eric Hameleers, Eindhoven, NL +# Copyright 2013, 2014, 2015, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# ----------------------------------------------------------------------------- + +PKGNAM=mozilla-nss +SRCNAM=nss +VERSION=${VERSION:-3.31.1} +NSPR=${NSPR:-4.16} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + export USE_64=1 +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +# Seems parallel build does not work with this. +#NUMJOBS=${NUMJOBS:-" -j7 "} + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf nss-${VERSION} +rm -rf nspr-${NSPR} +tar xvf $CWD/nss-$VERSION.tar.?z* || exit 1 +cd nss-$VERSION +tar xvf $CWD/nspr-$NSPR.tar.?z* || exit 1 +mv nspr*/nspr . + +# -Werror is problematic with gcc7: +sed -i "s|\ -Werror| |" nss/coreconf/Werror.mk || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +echo Building ... +export LDFLAGS="-lz" +export CFLAGS="$SLKCFLAGS" +export CXXFLAGS="$SLKCFLAGS" +export BUILD_OPT=1 +export NSDISTMODE="copy" +export NSS_USE_SYSTEM_SQLITE=1 +export NSS_ENABLE_ECC=1 +cd nss + # Seems parallel build does not work with this. + #make $NUMJOBS nss_build_all export + make nss_build_all export || exit 1 +cd - + +# Install all the needed stuff to the package dir: +mkdir -p $PKG/usr/{bin,lib${LIBDIRSUFFIX},include/{nss,nspr}} +cd dist/$(uname -s)* + cp -pL bin/{certutil,cmsutil,crlutil,modutil,pk12util,shlibsign,signtool,signver,ssltap} $PKG/usr/bin/ + cp -pL lib/* $PKG/usr/lib${LIBDIRSUFFIX}/ + chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/*.so* + cp -rL include/* $PKG/usr/include/nspr/ + cp -rpL ../public/nss/*.h $PKG/usr/include/nss/ + # Remove some things we do not need: + rm -f $PKG/usr/bin/*.so + rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.a + rm -rf $PKG/usr/include/nspr/md + cp -L lib/libcrmf.a $PKG/usr/lib${LIBDIRSUFFIX}/ # yes, put this one back +cd - + +cd nss/cmd/smimetools + cp -a smime $PKG/usr/bin/ + chmod 0755 $PKG/usr/bin/smime + sed -i -e 's#/usr/local/bin#/usr/bin#g' $PKG/usr/bin/smime +cd - + +# Install nspr-config: +cat nspr/$(uname -s)*/config/nspr-config | sed -e "s,prefix=/usr/local,prefix=/usr,g" | sed -e "s,libdir=\${exec_prefix}/lib,libdir=\${exec_prefix}/lib${LIBDIRSUFFIX},g" > $PKG/usr/bin/nspr-config +chmod 755 $PKG/usr/bin/nspr-config + +# Install nss-config: +sed -e "s,@prefix@,/usr,g" \ + -e "s,@MOD_MAJOR_VERSION@,$(printf $VERSION | cut -d. -f1),g" \ + -e "s,@MOD_MINOR_VERSION@,$(printf $VERSION | cut -d. -f2),g" \ + -e "s,@MOD_PATCH_VERSION@,$(printf $VERSION | cut -d. -f3),g" \ + $CWD/nss-config.in > $PKG/usr/bin/nss-config +chmod 755 $PKG/usr/bin/nss-config + +# Provide pkg-config files: +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig +cat < $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/mozilla-nss.pc +prefix=/usr +exec_prefix=\${prefix} +libdir=/usr/lib${LIBDIRSUFFIX} +includedir=\${prefix}/include/nss + +Name: NSS +Description: Network Security Services +Version: $VERSION +Requires: nspr >= $NSPR sqlite3 +Libs: -L\${libdir} -lnss3 -lsmime3 -lssl3 -lsoftokn3 -lnssutil3 +Cflags: -I\${includedir} +EOT +cat < $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/mozilla-nspr.pc +prefix=/usr +exec_prefix=\${prefix} +libdir=/usr/lib${LIBDIRSUFFIX} +includedir=\${prefix}/include/nspr + +Name: NSPR +Description: The Netscape Portable Runtime +Version: $NSPR +Libs: -L\${libdir} -lplds4 -lplc4 -lnspr4 +Cflags: -I\${includedir} +EOT + +( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig + ln -s mozilla-nspr.pc nspr.pc + ln -s mozilla-nss.pc nss.pc +) + +# Add documentation: +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + $CWD/MPL-1.1.txt $CWD/gpl-2.0.txt $CWD/lgpl-2.1.txt \ + $CWD/faq.html \ + $PKG/usr/doc/$PKGNAM-$VERSION +chown -R root:root $PKG/usr/doc/$PKGNAM-$VERSION + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Add a package description: +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz + diff --git a/patches/source/mozilla-nss/nss-config.in b/patches/source/mozilla-nss/nss-config.in new file mode 100644 index 000000000..f8f893e71 --- /dev/null +++ b/patches/source/mozilla-nss/nss-config.in @@ -0,0 +1,145 @@ +#!/bin/sh + +prefix=@prefix@ + +major_version=@MOD_MAJOR_VERSION@ +minor_version=@MOD_MINOR_VERSION@ +patch_version=@MOD_PATCH_VERSION@ + +usage() +{ + cat <&2 +fi + +lib_ssl=yes +lib_smime=yes +lib_nss=yes +lib_nssutil=yes + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --includedir=*) + includedir=$optarg + ;; + --includedir) + echo_includedir=yes + ;; + --libdir=*) + libdir=$optarg + ;; + --libdir) + echo_libdir=yes + ;; + --version) + echo ${major_version}.${minor_version}.${patch_version} + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + ssl) + lib_ssl=yes + ;; + smime) + lib_smime=yes + ;; + nss) + lib_nss=yes + ;; + nssutil) + lib_nssutil=yes + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +# Set variables that may be dependent upon other variables +if test -z "$exec_prefix"; then + exec_prefix=`pkg-config --variable=exec_prefix nss` +fi +if test -z "$includedir"; then + includedir=`pkg-config --variable=includedir nss` +fi +if test -z "$libdir"; then + libdir=`pkg-config --variable=libdir nss` +fi + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi + +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi + +if test "$echo_includedir" = "yes"; then + echo $includedir +fi + +if test "$echo_libdir" = "yes"; then + echo $libdir +fi + +if test "$echo_cflags" = "yes"; then + echo -I$includedir +fi + +if test "$echo_libs" = "yes"; then + libdirs="-Wl,-rpath-link,$libdir -L$libdir" + if test -n "$lib_ssl"; then + libdirs="$libdirs -lssl${major_version}" + fi + if test -n "$lib_smime"; then + libdirs="$libdirs -lsmime${major_version}" + fi + if test -n "$lib_nss"; then + libdirs="$libdirs -lnss${major_version}" + fi + if test -n "$lib_nssutil"; then + libdirs="$libdirs -lnssutil${major_version}" + fi + echo $libdirs +fi + diff --git a/patches/source/mozilla-nss/slack-desc b/patches/source/mozilla-nss/slack-desc new file mode 100644 index 000000000..7a23daaff --- /dev/null +++ b/patches/source/mozilla-nss/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +mozilla-nss: mozilla-nss (Network Security Services) +mozilla-nss: +mozilla-nss: Network Security Services (NSS) is a set of libraries designed to +mozilla-nss: support cross-platform development of security-enabled client and +mozilla-nss: server applications. Applications built with NSS can support +mozilla-nss: SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, +mozilla-nss: X.509 v3 certificates, and other security standards. +mozilla-nss: +mozilla-nss: +mozilla-nss: Read http://www.mozilla.org/projects/security/pki/nss/overview.html +mozilla-nss: diff --git a/patches/source/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch b/patches/source/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch new file mode 100644 index 000000000..5e7b23113 --- /dev/null +++ b/patches/source/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch @@ -0,0 +1,504 @@ +Submitted By: Ken Moffat +Date: 2016-06-11 +Initial Package Version: 2.13 +Upstream Status: Version is historic and unmaintained. +Origin: Found at fedora, plus fixes for LFS. +Description: All of the patches currently used by fedora, except for +the patch which ensures gawk is used in preference to mawk (we do not +install mawk). For LFS: we put mktemp in /usr/bin not /bin, remove +the install-info target because that will overwrite standards.info +with an old version (fedora always use a DESTDIR), and change the +man and info dirs to ${datadir}/ i.e. /usr/share (an empty /usr/info +will otherwise be created). + +diff -Naur a/acgeneral.m4 b/acgeneral.m4 +--- a/acgeneral.m4 1999-01-05 13:27:37.000000000 +0000 ++++ b/acgeneral.m4 2016-06-11 00:18:24.429043947 +0100 +@@ -1817,10 +1817,6 @@ + [cat > conftest.$ac_ext </dev/null +@@ -1988,12 +1984,12 @@ + AC_MSG_CHECKING(size of $1) + AC_CACHE_VAL(AC_CV_NAME, + [AC_TRY_RUN([#include +-main() ++int main() + { + FILE *f=fopen("conftestval", "w"); +- if (!f) exit(1); ++ if (!f) return(1); + fprintf(f, "%d\n", sizeof($1)); +- exit(0); ++ return(0); + }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl + AC_MSG_RESULT($AC_CV_NAME) + AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) +@@ -2160,20 +2156,38 @@ + dnl AC_OUTPUT_MAKE_DEFS() + define(AC_OUTPUT_MAKE_DEFS, + [# Transform confdefs.h into DEFS. +-dnl Using a here document instead of a string reduces the quoting nightmare. + # Protect against shell expansion while executing Makefile rules. + # Protect against Makefile macro expansion. +-cat > conftest.defs <<\EOF ++# ++# If the first sed substitution is executed (which looks for macros that ++# take arguments), then we branch to the quote section. Otherwise, ++# look for a macro that doesn't take arguments. ++cat >confdef2opt.sed <<\_ACEOF + changequote(<<, >>)dnl +-s%<<#define>> \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +-s%[ `~<<#>>$^&*(){}\\|;'"<>?]%\\&%g +-s%\[%\\&%g +-s%\]%\\&%g +-s%\$%$$%g ++t clear ++: clear ++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g ++t quote ++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g ++t quote ++d ++: quote ++s,[ `~#$^&*(){}\\|;'"<>?],\\&,g ++s,\[,\\&,g ++s,\],\\&,g ++s,\$,$$,g ++p + changequote([, ])dnl +-EOF +-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +-rm -f conftest.defs ++_ACEOF ++# We use echo to avoid assuming a particular line-breaking character. ++# The extra dot is to prevent the shell from consuming trailing ++# line-breaks from the sub-command output. A line-break within ++# single-quotes doesn't work because, if this script is created in a ++# platform that uses two characters for line-breaks (e.g., DOS), tr ++# would break. ++ac_LF_and_DOT=`echo; echo .` ++DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` ++rm -f confdef2opt.sed + ]) + + dnl Do the variable substitutions to create the Makefiles or whatever. +diff -Naur a/acspecific.m4 b/acspecific.m4 +--- a/acspecific.m4 1999-01-05 13:27:52.000000000 +0000 ++++ b/acspecific.m4 2016-06-11 00:18:17.533078644 +0100 +@@ -152,8 +152,41 @@ + CXXFLAGS= + fi + fi ++ ++AC_PROG_CXX_EXIT_DECLARATION + ]) + ++ ++# AC_PROG_CXX_EXIT_DECLARATION ++# ----------------------------- ++# Find a valid prototype for exit and declare it in confdefs.h. ++AC_DEFUN(AC_PROG_CXX_EXIT_DECLARATION, ++[for ac_declaration in \ ++ ''\ ++ '#include ' \ ++ 'extern "C" void std::exit (int) throw (); using std::exit;' \ ++ 'extern "C" void std::exit (int); using std::exit;' \ ++ 'extern "C" void exit (int) throw ();' \ ++ 'extern "C" void exit (int);' \ ++ 'void exit (int);' ++do ++ AC_TRY_COMPILE([#include ++$ac_declaration], ++ [exit (42);], ++ [], ++ [continue]) ++ AC_TRY_COMPILE([$ac_declaration], ++ [exit (42);], ++ [break]) ++done ++if test -n "$ac_declaration"; then ++ echo '#ifdef __cplusplus' >>confdefs.h ++ echo $ac_declaration >>confdefs.h ++ echo '#endif' >>confdefs.h ++fi ++])# AC_PROG_CXX_EXIT_DECLARATION ++ ++ + dnl Determine a Fortran 77 compiler to use. If `F77' is not already set + dnl in the environment, check for `g77', `f77' and `f2c', in that order. + dnl Set the output variable `F77' to the name of the compiler found. +@@ -1010,7 +1043,7 @@ + ]) + + AC_DEFUN(AC_FUNC_MMAP, +-[AC_CHECK_HEADERS(unistd.h) ++[AC_CHECK_HEADERS(stdlib.h unistd.h sys/stat.h sys/types.h) + AC_CHECK_FUNCS(getpagesize) + AC_CACHE_CHECK(for working mmap, ac_cv_func_mmap_fixed_mapped, + [AC_TRY_RUN([ +@@ -1039,11 +1072,24 @@ + #include + #include + ++#if HAVE_SYS_TYPES_H ++# include ++#endif ++ ++#if HAVE_STDLIB_H ++# include ++#endif ++ ++#if HAVE_SYS_STAT_H ++# include ++#endif ++ ++#if HAVE_UNISTD_H ++# include ++#endif ++ + /* This mess was copied from the GNU getpagesize.h. */ + #ifndef HAVE_GETPAGESIZE +-# ifdef HAVE_UNISTD_H +-# include +-# endif + + /* Assume that all systems that can run configure have sys/param.h. */ + # ifndef HAVE_SYS_PARAM_H +@@ -1373,6 +1419,8 @@ + r.ru_majflt = r.ru_minflt = 0; + switch (fork()) { + case 0: /* Child. */ ++ /* Unless we actually _do_ something, the kernel sometimes doesn't chalk up any system time to this process. */ ++ if(fork()) { i = 123; wait(NULL); } else { i = 234; exit(0); } + sleep(1); /* Give up the CPU. */ + _exit(0); + case -1: _exit(0); /* What can we do? */ +diff -Naur a/autoconf.sh b/autoconf.sh +--- a/autoconf.sh 1999-01-05 13:27:53.000000000 +0000 ++++ b/autoconf.sh 2016-06-11 00:22:17.351872133 +0100 +@@ -45,20 +45,20 @@ + esac + + : ${TMPDIR=/tmp} +-tmpout=${TMPDIR}/acout.$$ ++tmpout=`/usr/bin/mktemp ${TMPDIR}/acout.XXXXXX` + localdir= + show_version=no + + while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) +- echo "${usage}" 1>&2; exit 0 ;; ++ echo "${usage}" 1>&2; rm -f $tmpout ; exit 0 ;; + --localdir=* | --l*=* ) + localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -l | --localdir | --l*) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $tmpout; exit 1; } + localdir="${1}" + shift ;; + --macrodir=* | --m*=* ) +@@ -66,7 +66,7 @@ + shift ;; + -m | --macrodir | --m* ) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $tmpout; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --v* ) +@@ -76,7 +76,7 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "${usage}" 1>&2; exit 1 ;; ++ echo "${usage}" 1>&2; rm -f $tmpout; exit 1 ;; + * ) + break ;; + esac +@@ -86,23 +86,25 @@ + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" ++ rm -f $tmpout + exit 0 + fi + + case $# in + 0) infile=configure.in ;; + 1) infile="$1" ;; +- *) echo "$usage" >&2; exit 1 ;; ++ *) echo "$usage" >&2; rm -f $tmpout; exit 1 ;; + esac + + trap 'rm -f $tmpin $tmpout; exit 1' 1 2 15 + +-tmpin=${TMPDIR}/acin.$$ # Always set this, to avoid bogus errors from some rm's. ++tmpin=`/usr/bin/mktemp ${TMPDIR}/acin.XXXXXX` ++# Always set this, to avoid bogus errors from some rm's. + if test z$infile = z-; then + infile=$tmpin +- cat > $infile + elif test ! -r "$infile"; then + echo "autoconf: ${infile}: No such file or directory" >&2 ++ rm -f $tmpin $tmpout + exit 1 + fi + +@@ -111,6 +113,8 @@ + else + use_localdir= + fi ++# Make sure we don't leave those around - they are annoying ++trap 'rm -f $tmpin $tmpout' 0 + + # Use the frozen version of Autoconf if available. + r= f= +@@ -118,7 +122,7 @@ + case `$M4 --help < /dev/null 2>&1` in + *reload-state*) test -r $AC_MACRODIR/autoconf.m4f && { r=--reload f=f; } ;; + *traditional*) ;; +-*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin; exit 1 ;; ++*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin $tmpout; exit 1 ;; + esac + + $M4 -I$AC_MACRODIR $use_localdir $r autoconf.m4$f $infile > $tmpout || +@@ -154,6 +158,6 @@ + /__oline__/s/^\([0-9][0-9]*\):\(.*\)__oline__/\2\1/ + ' >&4 + +-rm -f $tmpout ++rm -f $tmpout $tmpin + + exit $status +diff -Naur a/autoconf.texi b/autoconf.texi +--- a/autoconf.texi 1999-01-05 13:28:37.000000000 +0000 ++++ b/autoconf.texi 2016-06-11 00:18:46.360933604 +0100 +@@ -1,7 +1,7 @@ + \input texinfo @c -*-texinfo-*- + @c %**start of header +-@setfilename autoconf.info +-@settitle Autoconf ++@setfilename autoconf.info ++@settitle Autoconf + @c For double-sided printing, uncomment: + @c @setchapternewpage odd + @c %**end of header +@@ -17,7 +17,8 @@ + @ifinfo + @format + START-INFO-DIR-ENTRY +-* Autoconf: (autoconf). Create source code configuration scripts. ++* Autoconf: (autoconf). Create source code configuration scripts. ++ This is a legacy version of autoconf. + END-INFO-DIR-ENTRY + @end format + +diff -Naur a/autoheader.sh b/autoheader.sh +--- a/autoheader.sh 1999-01-05 13:28:39.000000000 +0000 ++++ b/autoheader.sh 2016-06-11 00:22:17.351872133 +0100 +@@ -194,9 +194,9 @@ + # Some fgrep's have limits on the number of lines that can be in the + # pattern on the command line, so use a temporary file containing the + # pattern. +- (fgrep_tmp=${TMPDIR-/tmp}/autoh$$ ++ (fgrep_tmp=`/usr/bin/mktemp ${TMPDIR-/tmp}/autoh$$.XXXXXX` + trap "rm -f $fgrep_tmp; exit 1" 1 2 15 +- cat > $fgrep_tmp <> $fgrep_tmp <&2; exit 0 ;; ++ echo "${usage}" 1>&2; rm -f $sedtmp; exit 0 ;; + --macrodir=* | --m*=* ) + AC_MACRODIR="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -m | --macrodir | --m* ) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $sedtmp; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --versio | --versi | --vers) +@@ -51,7 +51,7 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "${usage}" 1>&2; exit 1 ;; ++ echo "${usage}" 1>&2; rm -f $sedtmp; exit 1 ;; + * ) + break ;; + esac +@@ -61,6 +61,7 @@ + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" ++ rm -f $sedtmp + exit 0 + fi + +@@ -68,6 +69,7 @@ + + tmpout=acupo.$$ + trap 'rm -f $sedtmp $tmpout; exit 1' 1 2 15 ++trap 'rm -f $sedtmp' 0 + case $# in + 0) infile=configure.in; out="> $tmpout" + # Make sure $infile can be read, and $tmpout has the same permissions. +diff -Naur a/configure b/configure +--- a/configure 1999-01-05 13:28:57.000000000 +0000 ++++ b/configure 2016-06-11 00:50:57.771231914 +0100 +@@ -43,8 +43,8 @@ + libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++infodir='${datadir}/info' ++mandir='${datadir}/man' + + # Initialize some other variables. + subdirs= +diff -Naur a/Makefile.in b/Makefile.in +--- a/Makefile.in 1999-01-05 13:27:16.000000000 +0000 ++++ b/Makefile.in 2016-06-11 00:29:34.005678107 +0100 +@@ -49,7 +49,7 @@ + + # Directory in which to install library files. + datadir = @datadir@ +-acdatadir = $(datadir)/autoconf ++acdatadir = $(datadir)/autoconf-2.13 + + # Directory in which to install documentation info files. + infodir = @infodir@ +@@ -68,8 +68,8 @@ + DISTFILES = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL \ + Makefile.in NEWS README TODO $(M4FILES) \ + acconfig.h acfunctions acheaders acidentifiers \ +- acmakevars acprograms autoconf.info* \ +- autoconf.sh autoconf.texi install.texi \ ++ acmakevars acprograms autoconf.info* \ ++ autoconf.sh autoconf.texi install.texi \ + autoheader.sh autoscan.pl autoreconf.sh autoupdate.sh ifnames.sh \ + config.guess config.sub configure configure.in \ + install-sh mkinstalldirs texinfo.tex \ +@@ -106,11 +106,11 @@ + autoconf.m4f: autoconf.m4 acgeneral.m4 acspecific.m4 acoldnames.m4 + autoheader.m4f: autoheader.m4 acgeneral.m4 acspecific.m4 acoldnames.m4 + +-info: autoconf.info @standards_info@ INSTALL ++info: autoconf.info @standards_info@ INSTALL + + # Use --no-split to avoid creating filenames > 14 chars. +-autoconf.info: autoconf.texi install.texi +- $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@ ++autoconf.info: autoconf.texi install.texi ++ $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@ + + INSTALL: install.texi + $(MAKEINFO) -I$(srcdir) $(srcdir)/install.texi --output=$@ \ +@@ -121,8 +121,8 @@ + + dvi: autoconf.dvi @standards_dvi@ + +-autoconf.dvi: autoconf.texi +- $(TEXI2DVI) $(srcdir)/autoconf.texi ++autoconf.dvi: autoconf.texi ++ $(TEXI2DVI) $(srcdir)/autoconf.texi + + standards.dvi: standards.texi make-stds.texi + $(TEXI2DVI) $(srcdir)/standards.texi +@@ -137,35 +137,35 @@ + cd testsuite && ${MAKE} AUTOCONF=${bindir}/autoconf $@ + + installdirs: +- $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(acdatadir) ++ $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)/$(bindir) $(DESTDIR)/$(infodir) $(DESTDIR)/$(acdatadir) + +-install: all $(M4FILES) acconfig.h installdirs install-info ++install: all $(M4FILES) acconfig.h installdirs + for p in $(ASCRIPTS); do \ +- $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ ++ $(INSTALL_PROGRAM) $$p $(DESTDIR)/$(bindir)/`echo $$p|sed '$(transform)'`; \ + done + for i in $(M4FROZEN); do \ +- $(INSTALL_DATA) $$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(acdatadir)/$$i; \ + done + for i in $(M4FILES) acconfig.h; do \ +- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)/$(acdatadir)/$$i; \ + done + -if test -f autoscan; then \ +- $(INSTALL_PROGRAM) autoscan $(bindir)/`echo autoscan|sed '$(transform)'`; \ ++ $(INSTALL_PROGRAM) autoscan $(DESTDIR)/$(bindir)/`echo autoscan|sed '$(transform)'`; \ + for i in acfunctions acheaders acidentifiers acprograms \ + acmakevars; do \ +- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)/$(acdatadir)/$$i; \ + done; \ + else :; fi + + # Don't cd, to avoid breaking install-sh references. + install-info: info installdirs +- if test -f autoconf.info; then \ ++ if test -f autoconf.info; then \ + for i in *.info*; do \ +- $(INSTALL_DATA) $$i $(infodir)/$$i; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(infodir)/$$i; \ + done; \ + else \ + for i in $(srcdir)/*.info*; do \ +- $(INSTALL_DATA) $$i $(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ + done; \ + fi + +@@ -174,7 +174,7 @@ + rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ + done + rm -fr $(acdatadir) +- cd $(infodir) && rm -f autoconf.info* ++ cd $(infodir) && rm -f autoconf.info* + if test -f standards.info || test -f $(srcdir)/standards.info; \ + then cd $(infodir) && rm -f standards.info*; fi + +diff -Naur a/testsuite/autoconf.s/syntax.exp b/testsuite/autoconf.s/syntax.exp +--- a/testsuite/autoconf.s/syntax.exp 1999-01-05 13:29:54.000000000 +0000 ++++ b/testsuite/autoconf.s/syntax.exp 2016-06-11 00:18:51.996905247 +0100 +@@ -2,7 +2,7 @@ + + send_user "Checking for syntax errors in the specific tests...\n" + set script {s/^AC_DEFUN(\([^,]*\).*/\1/p} +-set macros [exec sed -n $script $srcdir/../acspecific.m4] ++set macros [exec sed -n $script $srcdir/../acspecific.m4 | grep -v -e AC_FUNC_GETLOADAVG -e F77] + + foreach mac $macros { + send_user "$mac\n" diff --git a/patches/source/mozilla-thunderbird/autoconf/autoconf.build b/patches/source/mozilla-thunderbird/autoconf/autoconf.build new file mode 100755 index 000000000..7dae1bad1 --- /dev/null +++ b/patches/source/mozilla-thunderbird/autoconf/autoconf.build @@ -0,0 +1,81 @@ +#!/bin/sh + +# Copyright 2005-2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=autoconf +VERSION=2.13 +BUILD=${BUILD:-1} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-autoconf + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf autoconf-$VERSION +tar xvf $CWD/autoconf-$VERSION.tar.xz || exit 1 +cd autoconf-$VERSION + +zcat $CWD/autoconf-2.13-consolidated_fixes-1.patch.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Build a temporary copy of autoconf-2.13 only to be used to compile +# Firefox, since it somewhat inexplicably requires this ancient version: + +rm -rf $TMP/autoconf-tmp +mkdir -p $TMP/autoconf-tmp +# This will be at the beginning of the $PATH, so protect against nonsense +# happening in /tmp: +chmod 700 $TMP/autoconf-tmp +rm -rf $TMP/autoconf-tmp/* +mkdir -p $TMP/autoconf-tmp/usr + +./configure \ + --prefix=$TMP/autoconf-tmp/usr \ + --program-suffix=-2.13 \ + --infodir=$TMP/autoconf-tmp/usr/info \ + --mandir=$TMP/autoconf-tmp/usr/man \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install || exit 1 + diff --git a/patches/source/mozilla-thunderbird/gold/gold b/patches/source/mozilla-thunderbird/gold/gold new file mode 100755 index 000000000..8c86d3b06 --- /dev/null +++ b/patches/source/mozilla-thunderbird/gold/gold @@ -0,0 +1,2 @@ +#!/bin/bash +/usr/bin/ld.gold "$@" diff --git a/patches/source/mozilla-thunderbird/gold/ld b/patches/source/mozilla-thunderbird/gold/ld new file mode 120000 index 000000000..78a06a2a1 --- /dev/null +++ b/patches/source/mozilla-thunderbird/gold/ld @@ -0,0 +1 @@ +gold \ No newline at end of file diff --git a/patches/source/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch b/patches/source/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch new file mode 100644 index 000000000..7309b55a1 --- /dev/null +++ b/patches/source/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch @@ -0,0 +1,18 @@ +--- a/xpcom/glue/objs.mk ++++ a/xpcom/glue/objs.mk +@@ -71,13 +71,13 @@ XPCOM_GLUENS_SRC_LCPPSRCS = \ + SSE.cpp \ + unused.cpp \ + nsProxyRelease.cpp \ + nsTextFormatter.cpp \ + GenericFactory.cpp \ + FileUtils.cpp \ + $(NULL) + +-ifeq (arm,$(TARGET_CPU)) ++ifneq (,$(filter arm%,$(TARGET_CPU))) + XPCOM_GLUENS_SRC_LCPPSRCS += arm.cpp + endif + + XPCOM_GLUENS_SRC_CPPSRCS = $(addprefix $(topsrcdir)/xpcom/glue/,$(XPCOM_GLUENS_SRC_LCPPSRCS)) + diff --git a/patches/source/mozilla-thunderbird/mozilla-thunderbird.SlackBuild b/patches/source/mozilla-thunderbird/mozilla-thunderbird.SlackBuild new file mode 100755 index 000000000..eb88ecd4b --- /dev/null +++ b/patches/source/mozilla-thunderbird/mozilla-thunderbird.SlackBuild @@ -0,0 +1,247 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2012 by Eric Hameleers for ARM port. + +# Thanks to the folks at the Mozilla Foundation for permission to +# distribute this, and for all the great work! :-) + +VERSION=$(basename $(ls thunderbird-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source) +RELEASEVER=$(echo $VERSION | cut -f 1 -d e | cut -f 1 -d b) +BUILD=${BUILD:-1_slack14.2} + +# Specify this variable for a localized build. +# For example, to build a version of Thunderbird with Italian support, run +# the build script like this: +# +# MOZLOCALIZE=it ./mozilla-firefox.SlackBuild +# +MOZLOCALIZE=${MOZLOCALIZE:-} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=armv7hl ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O2 " +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-fPIC" + LIBDIRSUFFIX="64" + OPTIMIZE=" --enable-optimize=-O2 " +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-march=armv4 -mtune=xscale" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O2 " +else + SLKCFLAGS="" + LIBDIRSUFFIX="" + OPTIMIZE=" --enable-optimize=-O2 " +fi + +# Link using gold. This avoids running out of memory on 32-bit systems, and +# avoids a recurring build failure with GNU ld on other systems. +PATH="$(pwd)/gold:$PATH" +export CC="gcc -B$(pwd)/gold" +export CXX="g++ -B$(pwd)/gold" + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-mozilla-thunderbird + +NUMJOBS=${NUMJOBS:-" -j7 "} + +rm -rf $PKG +mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX} + +# We need to use the incredibly ancient autoconf-2.13 for this :/ +( cd $CWD/autoconf ; ./autoconf.build ) +PATH=/tmp/autoconf-tmp/usr/bin:$PATH + +cd $TMP +rm -rf thunderbird-$VERSION +# Unpack this in a subdirectory to prevent changing permissions on /tmp: +rm -rf thunderbird-unpack +mkdir thunderbird-unpack +cd thunderbird-unpack +tar xvf $CWD/thunderbird-$VERSION.source.tar.?z* || exit 1 +mv * .. +cd .. +rm -rf thunderbird-unpack +cd thunderbird-$VERSION || exit 1 + +# Fetch localization, if requested: +if [ ! -z $MOZLOCALIZE ]; then + LOC_TAG="THUNDERBIRD_$( echo $VERSION | tr \. _ )_RELEASE" + rm -f $LOC_TAG.tar.bz2 + wget https://hg.mozilla.org/releases/l10n/mozilla-release/$MOZLOCALIZE/archive/$LOC_TAG.tar.bz2 + tar xvf $LOC_TAG.tar.bz2 + mv $MOZLOCALIZE-$LOC_TAG $MOZLOCALIZE +fi + +# Arch-dependent patches: +case "$ARCH" in + armv7hl) ARCH_CONFIG="--with-arch=armv7-a --with-float-abi=hard --with-fpu=vfpv3-d16 --disable-elf-hack" + # Make firefox compile on ARM platforms lacking neon support: + zcat $CWD/mozilla-firefox.xpcom_arm.patch.gz | patch -p1 --verbose || exit 1 + ;; + *) ARCH_CONFIG=" " + ;; +esac + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Our building options, in a configure-like display ;) +OPTIONS="\ + --enable-official-branding \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/thunderbird-$RELEASEVER \ + --with-system-zlib \ + --enable-alsa \ + --enable-application=mail \ + --enable-calendar \ + --enable-default-toolkit=cairo-gtk2 \ + --enable-startup-notification \ + --enable-ldap \ + $OPTIMIZE \ + --enable-strip \ + --enable-cpp-rtti \ + --disable-accessibility \ + --disable-crashreporter \ + --disable-debug \ + --disable-tests \ + --host=$ARCH-slackware-linux \ + --target=$ARCH-slackware-linux" + # Complains about missing APNG support in Slackware's libpng: + #--with-system-png \ + # Broken with 12.0: + #--enable-system-cairo \ +if [ ! -z $MOZLOCALIZE ]; then + OPTIONS=$OPTIONS" \ + --enable-ui-locale=$MOZLOCALIZE + --with-l10n-base=.." + # There are no dictionaries in localized builds + sed -i \ + -e "/@BINPATH@\/dictionaries\/\*/d" \ + -e "/@RESPATH@\/dictionaries\/\*/d" \ + mail/installer/package-manifest.in || exit 1 +fi + +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +export MOZ_PHOENIX=1 +export CFLAGS="$SLKCFLAGS" +export CXXFLAGS="$SLKCFLAGS" +export MOZ_MAKE_FLAGS="$NUMJOBS" + +# Clear some variables that could break the build +unset DBUS_SESSION_BUS_ADDRESS ORBIT_SOCKETDIR SESSION_MANAGER \ + XDG_SESSION_COOKIE XAUTHORITY MAKEFLAGS + +# Assemble our .mozconfig: +echo > .mozconfig + +# Mozilla devs enforce using an objdir for building +# https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir +mkdir obj +echo "mk_add_options MOZ_OBJDIR=$(pwd)/obj" >> .mozconfig +# This directory is also needed or the build will fail: +mkdir -p mozilla/obj + +# Write in it the options above +for option in $OPTIONS; do echo "ac_add_options $option" >> .mozconfig; done + +make -f client.mk build || exit 1 +make -f client.mk install DESTDIR=$PKG || exit 1 + +# We don't need these (just symlinks anyway): +rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-devel-$RELEASEVER + +# Nor these: +rm -rf $PKG/usr/include + +# Thunderbird 3.x cruft? +# If we still need something like this (and you know what we need :), let me know. +#( cd $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION +# cp -a defaults/profile/mimeTypes.rdf defaults/profile/mimeTypes.rdf.orig +# zcat $CWD/mimeTypes.rdf > defaults/profile/mimeTypes.rdf || exit 1 +#) || exit 1 + +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins +mkdir -p $PKG/usr/share/applications +cat $CWD/mozilla-thunderbird.desktop > $PKG/usr/share/applications/mozilla-thunderbird.desktop +mkdir -p $PKG/usr/share/pixmaps +cat $CWD/thunderbird.png > $PKG/usr/share/pixmaps/thunderbird.png + +# These files/directories are usually created if Thunderbird is run as root, +# which on many systems might (and possibly should) be never. Therefore, if we +# don't see them we'll put stubs in place to prevent startup errors. +( cd $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$RELEASEVER + if [ -d extensions/talkback\@mozilla.org ]; then + if [ ! -r extensions/talkback\@mozilla.org/chrome.manifest ]; then + echo > extensions/talkback\@mozilla.org/chrome.manifest + fi + fi + if [ ! -d updates ]; then + mkdir -p updates/0 + fi +) + +# Need some default icons in the right place: +for i in 16 22 24 32 48 256; do + install -m 0644 -D other-licenses/branding/thunderbird/mailicon${i}.png \ + $PKG/usr/share/icons/hicolor/${i}x${i}/apps/thunderbird.png +done +mkdir -p $PKG/usr/share/pixmaps +( cd $PKG/usr/share/pixmaps ; ln -sf /usr/share/icons/hicolor/256x256/apps/thunderbird . ) +mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/thunderbird-$RELEASEVER/chrome/icons/default +install -m 644 other-licenses/branding/thunderbird/mailicon16.png \ + $PKG/usr/lib$LIBDIRSUFFIX/thunderbird-$RELEASEVER/icons/ +install -m 644 other-licenses/branding/thunderbird/mailicon16.png \ + $PKG/usr/lib$LIBDIRSUFFIX/thunderbird-$RELEASEVER/chrome/icons/default/ + +# Copy over the LICENSE +install -p -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$RELEASEVER/ + +mkdir $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +if [ -z $MOZLOCALIZE ]; then + /sbin/makepkg -l y -c n $TMP/mozilla-thunderbird-$VERSION-$ARCH-$BUILD.txz +else + /sbin/makepkg -l y -c n $TMP/mozilla-thunderbird-$VERSION-$ARCH-${BUILD}_$MOZLOCALIZE.txz +fi diff --git a/patches/source/mozilla-thunderbird/mozilla-thunderbird.desktop b/patches/source/mozilla-thunderbird/mozilla-thunderbird.desktop new file mode 100644 index 000000000..0f85ecbe1 --- /dev/null +++ b/patches/source/mozilla-thunderbird/mozilla-thunderbird.desktop @@ -0,0 +1,84 @@ +[Desktop Entry] +Encoding=UTF-8 +Exec=thunderbird +Icon=/usr/share/pixmaps/thunderbird.png +Type=Application +Categories=Application;Network; +Name=Thunderbird +Name[bn]=থাণà§à¦¡à¦¾à¦°à¦¬à¦¾à¦°à§à¦¡ +Name[eo]=Mozilo Tondrobirdo +Name[fi]=Mozilla Thunderbird +Name[pa]=ਥੰਡਰਬਰਡ +Name[tg]=Паррандаи бало +GenericName=Mail Client +GenericName[af]=Pos Kliënt +GenericName[ar]=البريد الألكتروني +GenericName[az]=Poçt Alıcısı +GenericName[be]=Паштовы кліент +GenericName[bg]=ПощенÑки клиент +GenericName[bn]=ইমেইল কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ +GenericName[br]=Arval postel +GenericName[bs]=Program za Äitanje elektronske poÅ¡te +GenericName[ca]=Client de correu electrònic +GenericName[cs]=Klient pro Ätení elektronické poÅ¡ty +GenericName[cy]=Dibynnydd Ebost +GenericName[da]=E-mail-klient +GenericName[de]=E-Mail-Programm +GenericName[el]=Πελάτης mail +GenericName[eo]=Legi kaj sendi retpoÅton +GenericName[es]=Cliente de correo electrónico +GenericName[et]=Meiliklient +GenericName[eu]=Posta bezeroa +GenericName[fa]=کارگیر پست الکترونیکی +GenericName[fi]=Sähköpostiohjelma +GenericName[fo]=Postforrit +GenericName[fr]=Logiciel de messagerie électronique +GenericName[ga]=Cliant Ríomhphoist +GenericName[gl]=Cliente de correo +GenericName[he]=תוכנית דו×ר +GenericName[hi]=डाकिया +GenericName[hr]=Program za Äitanje elektronske poÅ¡te +GenericName[hu]=LevelezÅ‘program +GenericName[id]=Klien Mail +GenericName[is]=Póstforrit +GenericName[it]=Programma di posta elettronica +GenericName[ja]=メールクライアント +GenericName[ko]=편지를 주고 받는 프로그램 +GenericName[lo]=ໄຄà»à»€àº­àº±àº™àºˆàº»àº”ຫມາàºà»€àº­à»€àº¥àº±àºà»‚ຕນິຠ+GenericName[lt]=PaÅ¡to klientas +GenericName[lv]=Pasta Klients +GenericName[mk]=Програма за електронÑка пошта +GenericName[mn]=Э-Захиа-Програм +GenericName[mt]=Klijent tal-imejl +GenericName[nb]=E-postklient +GenericName[nds]=Mailprogramm +GenericName[nl]=E-mailclient +GenericName[nn]=Lesing og sending av e-post +GenericName[nso]=Moreki wa Poso +GenericName[oc]=Programari de correu electrònic +GenericName[pa]=ਪੱਤਰ ਕਲਾਂਇਟ +GenericName[pl]=Program do wysyÅ‚ania i odbierania poczty elektronicznej +GenericName[pt]=Client de E-mail +GenericName[pt_BR]=Cliente de E-mail +GenericName[ro]=Program de poÅŸtă electronică +GenericName[ru]=Клиент Ñлектронной почты +GenericName[se]=Boastaprográmma +GenericName[sk]=Klient elektronickej poÅ¡ty +GenericName[sl]=Program za e-poÅ¡to +GenericName[sr]=Програм за e-пошту +GenericName[sr@Latn]=Program za e-poÅ¡tu +GenericName[ss]=Likhasimende leliposi +GenericName[sv]=E-postklient +GenericName[ta]=அஞà¯à®šà®²à¯ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ +GenericName[tg]=Коргири почтаи Ñллектроникӣ +GenericName[th]=ไคลเอนต์จดหมายอิเล็à¸à¸—รอนิà¸à¸ªà¹Œ +GenericName[tr]=Posta Ä°stemcisi +GenericName[uk]=Клієнт електронної пошти +GenericName[uz]=Хат-хабар клиенти +GenericName[ven]=Mushumisani na poso +GenericName[wa]=Cliyint d' emilaedje +GenericName[xh]=Umxhasi Weposi +GenericName[zh_CN]=é‚®ä»¶ç¨‹åº +GenericName[zh_TW]=郵件處ç†ç¨‹å¼ +GenericName[zu]=Umxhasi weposi +X-KDE-StartupNotify=true diff --git a/patches/source/mozilla-thunderbird/slack-desc b/patches/source/mozilla-thunderbird/slack-desc new file mode 100644 index 000000000..353b22253 --- /dev/null +++ b/patches/source/mozilla-thunderbird/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +mozilla-thunderbird: mozilla-thunderbird (Mozilla Thunderbird mail application) +mozilla-thunderbird: +mozilla-thunderbird: Mozilla Thunderbird is a redesign of the Mozilla mail component +mozilla-thunderbird: written using the XUL user interface language. Thunderbird makes +mozilla-thunderbird: emailing safer, faster, and easier than ever before with the +mozilla-thunderbird: industry's best implementations of features such as intelligent spam +mozilla-thunderbird: filters, built-in RSS reader, quick search, and much more. +mozilla-thunderbird: +mozilla-thunderbird: Visit the Mozilla Thunderbird project online: +mozilla-thunderbird: http://www.mozilla.org/projects/thunderbird/ +mozilla-thunderbird: diff --git a/patches/source/mozilla-thunderbird/thunderbird.png b/patches/source/mozilla-thunderbird/thunderbird.png new file mode 100644 index 0000000000000000000000000000000000000000..61a37d70e68f077722b11f02247a29d77b88c233 GIT binary patch literal 47617 zcmV)gK%~EkP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 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 FV1nJe%i#b3 literal 0 HcmV?d00001 diff --git a/patches/source/nasm/nasm.SlackBuild b/patches/source/nasm/nasm.SlackBuild new file mode 100755 index 000000000..9f4d83256 --- /dev/null +++ b/patches/source/nasm/nasm.SlackBuild @@ -0,0 +1,90 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=nasm +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-nasm + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf nasm-$VERSION +tar xvf $CWD/nasm-$VERSION.tar.?z* || exit 1 +cd nasm-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --mandir=/usr/man \ + --build=${ARCH}-slackware-linux || exit 1 + +make || exit 1 +( cd doc + make nasmdoc.txt + mkdir -p $PKG/usr/doc/nasm-$VERSION + cp nasmdoc.txt $PKG/usr/doc/nasm-$VERSION +) +make install INSTALLROOT=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc/nasm-$VERSION +cp -a \ + AUTHORS CHANGES COPYING* INSTALL LICENSE README* TODO \ + $PKG/usr/doc/nasm-$VERSION + +gzip -9 $PKG/usr/man/man?/* + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/nasm-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/nasm/slack-desc b/patches/source/nasm/slack-desc new file mode 100644 index 000000000..f289814b5 --- /dev/null +++ b/patches/source/nasm/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +nasm: nasm (NASM assembler) +nasm: +nasm: NASM is the Netwide Assembler, a free portable assembler for the Intel +nasm: 80x86 microprocessor series, using primarily the traditional Intel +nasm: instruction mnemonics and syntax. +nasm: +nasm: NASM was written by Simon Tatham and Julian Hall. +nasm: +nasm: Homepage: http://www.nasm.us +nasm: +nasm: diff --git a/patches/source/network-manager-applet/doinst.sh b/patches/source/network-manager-applet/doinst.sh new file mode 100644 index 000000000..96ae4b325 --- /dev/null +++ b/patches/source/network-manager-applet/doinst.sh @@ -0,0 +1,16 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications 1>/dev/null 2> /dev/null +fi + +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor 1>/dev/null 2> /dev/null + fi +fi + +if [ -e usr/share/glib-2.0/schemas ]; then + if [ -x /usr/bin/glib-compile-schemas ]; then + /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1 + fi +fi + diff --git a/patches/source/network-manager-applet/network-manager-applet.SlackBuild b/patches/source/network-manager-applet/network-manager-applet.SlackBuild new file mode 100755 index 000000000..804c3976c --- /dev/null +++ b/patches/source/network-manager-applet/network-manager-applet.SlackBuild @@ -0,0 +1,124 @@ +#!/bin/sh + +# Slackware build script for network-manager-applet + +# Copyright 2010, 2011, 2014 Robby Workman, Northport, Alabama, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=network-manager-applet +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --disable-static \ + --enable-more-warnings=no \ + --without-team \ + --without-selinux \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS CONTRIBUTING COPYING* ChangeLog INSTALL NEWS README* \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/network-manager-applet/slack-desc b/patches/source/network-manager-applet/slack-desc new file mode 100644 index 000000000..ad8c8f7d6 --- /dev/null +++ b/patches/source/network-manager-applet/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +network-manager-applet: network-manager-applet (NetworkManager Applet) +network-manager-applet: +network-manager-applet: nm-applet is a gui frontend for NetworkManager. +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: +network-manager-applet: diff --git a/patches/source/ntp/doinst.sh b/patches/source/ntp/doinst.sh new file mode 100644 index 000000000..bc5429909 --- /dev/null +++ b/patches/source/ntp/doinst.sh @@ -0,0 +1,28 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + config ${NEW} +} + +config etc/ntp.conf.new +config etc/ntp/ntp.keys.new +if [ -r etc/rc.d/rc.ntpd -a -r etc/rc.d/rc.ntpd.new ]; then + chmod --reference=etc/rc.d/rc.ntpd etc/rc.d/rc.ntpd.new +fi +mv etc/rc.d/rc.ntpd.new etc/rc.d/rc.ntpd diff --git a/patches/source/ntp/ntp.SlackBuild b/patches/source/ntp/ntp.SlackBuild new file mode 100755 index 000000000..ae20783b4 --- /dev/null +++ b/patches/source/ntp/ntp.SlackBuild @@ -0,0 +1,158 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=ntp +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-ntp + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf ntp-${VERSION}* +tar xvf $CWD/ntp-${VERSION}*.tar.?z* || exit 1 +cd ntp-${VERSION}* || exit 1 + +zcat $CWD/ntp.nano.diff.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 2777 -o -perm 2755 -o -perm 2775 \) \ + -exec chmod u+rwx,g-sw,g+rx,o-w,o+rx {} \; -o \ + \( -perm 777 -o -perm 775 -o -perm 774 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod u+rwx,g-sw,g+rx,o-w,o+rx {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --bindir=/usr/sbin \ + --sbindir=/usr/sbin \ + --mandir=/usr/man \ + --docdir=/usr/doc/ntp-$VERSION \ + --htmldir=/usr/doc/ntp-$VERSION \ + --enable-ipv6 \ + --with-crypto \ + --program-prefix= \ + --program-suffix= \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make -i install DESTDIR=$PKG || exit 1 + +# Since the Makefile's install pays no heed to the --bindir settings, +# we'll move things to where they've always been ourselves: +mv $PKG/usr/bin/* $PKG/usr/sbin +rmdir $PKG/usr/bin + +# This might only be an empty directory: +rmdir $PKG/usr/lib/pkgconfig + +# This should be empty. Try to remove it, and error out if it's not actually empty: +rmdir $PKG/usr/libexec || exit 1 + +mkdir -p $PKG/etc/ntp +cat $CWD/ntp.conf > $PKG/etc/ntp.conf.new +cat $CWD/ntp.keys > $PKG/etc/ntp/ntp.keys.new +chmod 600 $PKG/etc/ntp/ntp.keys.new +touch $PKG/etc/ntp/step-tickers + +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.ntpd > $PKG/etc/rc.d/rc.ntpd.new + +mv $PKG/usr/doc/ntp-$VERSION/*.html $PKG/usr/doc/ntp-$VERSION/html || exit 1 +cp -a \ + COPYRIGHT NEWS README* TODO WHERE-TO-START \ + *.y2kfixes clockstuff conf scripts \ + $PKG/usr/doc/ntp-$VERSION +mkdir $PKG/usr/doc/ntp-$VERSION/util +cp -a util/README $PKG/usr/doc/ntp-$VERSION/util +mkdir $PKG/usr/doc/ntp-$VERSION/ntpdate +cp -a ntpdate/README $PKG/usr/doc/ntp-$VERSION/ntpdate +( cd $PKG/usr/doc/ntp-$VERSION + find . -name ".deps*" -exec rm -rf "{}" \; 2> /dev/null +) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/ntp-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/ntp/ntp.conf b/patches/source/ntp/ntp.conf new file mode 100644 index 000000000..1844fb91c --- /dev/null +++ b/patches/source/ntp/ntp.conf @@ -0,0 +1,72 @@ +# Sample /etc/ntp.conf: Configuration file for ntpd. +# +# Undisciplined Local Clock. This is a fake driver intended for backup +# and when no outside source of synchronized time is available. The +# default stratum is usually 3, but in this case we elect to use stratum +# 0. Since the server line does not have the prefer keyword, this driver +# is never used for synchronization, unless no other other +# synchronization source is available. In case the local host is +# controlled by some external source, such as an external oscillator or +# another protocol, the prefer keyword would cause the local host to +# disregard all other synchronization sources, unless the kernel +# modifications are in use and declare an unsynchronized condition. +# +server 127.127.1.0 # local clock +fudge 127.127.1.0 stratum 10 + +# +# NTP server (list one or more) to synchronize with: +#server 0.pool.ntp.org iburst +#server 1.pool.ntp.org iburst +#server 2.pool.ntp.org iburst +#server 3.pool.ntp.org iburst + +# +# Drift file. Put this in a directory which the daemon can write to. +# No symbolic links allowed, either, since the daemon updates the file +# by creating a temporary in the same directory and then rename()'ing +# it to the file. +# +driftfile /etc/ntp/drift + +# +# Uncomment to use a multicast NTP server on the local subnet: +#multicastclient 224.0.1.1 # listen on default 224.0.1.1 +# Set an optional compensation for broadcast packet delay: +#broadcastdelay 0.008 + +# +# Keys file. If you want to diddle your server at run time, make a +# keys file (mode 600 for sure) and define the key number to be +# used for making requests. +# PLEASE DO NOT USE THE DEFAULT VALUES HERE. Pick your own, or remote +# systems might be able to reset your clock at will. +# +#keys /etc/ntp/keys +#trustedkey 65535 +#requestkey 65535 +#controlkey 65535 + +# +# Don't serve time or stats to anyone else by default (more secure) +restrict default limited kod nomodify notrap nopeer noquery +restrict -6 default limited kod nomodify notrap nopeer noquery + +# +# Use these lines instead if you do want to serve time and stats to +# other machines on the network: +#restrict default limited kod nomodify notrap nopeer +#restrict -6 default limited kod nomodify notrap nopeer + +# +# Disable the ntpdc -c monlist command, which is insecure and can be used +# to cause a denial of service attack (CVE-2013-5211). Future versions of +# NTP will remove this command. +# (this feature was disabled by default with ntpd 4.2.7p230) +disable monitor + +# +# Trust ourselves. :-) +restrict 127.0.0.1 +restrict ::1 + diff --git a/patches/source/ntp/ntp.keys b/patches/source/ntp/ntp.keys new file mode 100644 index 000000000..1c3fbd2c4 --- /dev/null +++ b/patches/source/ntp/ntp.keys @@ -0,0 +1,2 @@ +65535 M akey +1 M pass diff --git a/patches/source/ntp/ntp.nano.diff b/patches/source/ntp/ntp.nano.diff new file mode 100644 index 000000000..0ff361ce9 --- /dev/null +++ b/patches/source/ntp/ntp.nano.diff @@ -0,0 +1,17 @@ +--- ./include/ntp_syscall.h.orig 2009-12-09 01:36:37.000000000 -0600 ++++ ./include/ntp_syscall.h 2010-04-21 23:38:30.000000000 -0500 +@@ -14,6 +14,14 @@ + # include + #endif + ++#if defined(ADJ_NANO) && !defined(MOD_NANO) ++#define MOD_NANO ADJ_NANO ++#endif ++ ++#if defined(ADJ_TAI) && !defined(MOD_TAI) ++#define MOD_TAI ADJ_TAI ++#endif ++ + #ifndef NTP_SYSCALLS_LIBC + #ifdef NTP_SYSCALLS_STD + # define ntp_adjtime(t) syscall(SYS_ntp_adjtime, (t)) diff --git a/patches/source/ntp/rc.ntpd b/patches/source/ntp/rc.ntpd new file mode 100644 index 000000000..7cf3d50b0 --- /dev/null +++ b/patches/source/ntp/rc.ntpd @@ -0,0 +1,56 @@ +#!/bin/sh +# Start/stop/restart ntpd. + +# Start ntpd: +ntpd_start() { + CMDLINE="/usr/sbin/ntpd -g" + echo -n "Starting NTP daemon: $CMDLINE" + $CMDLINE -p /var/run/ntpd.pid + echo +} + +# Stop ntpd: +ntpd_stop() { + echo -n "Stopping NTP daemon..." + if [ -r /var/run/ntpd.pid ]; then + kill -HUP $(cat /var/run/ntpd.pid) + rm -f /var/run/ntpd.pid + else + killall -HUP -q ntpd + fi + echo +} + +# Restart ntpd: +ntpd_restart() { + ntpd_stop + sleep 1 + ntpd_start +} + +# Check if ntpd is running +ntpd_status() { + if [ -e /var/run/ntpd.pid ]; then + echo "ntpd is running." + else + echo "ntpd is stopped." + exit 1 + fi +} + +case "$1" in +'start') + ntpd_start + ;; +'stop') + ntpd_stop + ;; +'restart') + ntpd_restart + ;; +'status') + ntpd_status + ;; +*) + echo "usage $0 start|stop|restart|status" +esac diff --git a/patches/source/ntp/slack-desc b/patches/source/ntp/slack-desc new file mode 100644 index 000000000..6319e8885 --- /dev/null +++ b/patches/source/ntp/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +ntp: ntp (Network Time Protocol daemon) +ntp: +ntp: The Network Time Protocol (NTP) is used to synchronize the time of a +ntp: computer client or server to another server or reference time source, +ntp: such as a radio or satellite receiver or modem. It provides client +ntp: accuracies typically within a millisecond on LANs and up to a few tens +ntp: of milliseconds on WANs relative to a primary server synchronized to +ntp: Coordinated Universal Time (UTC) via a Global Positioning Service +ntp: (GPS) receiver, for example. +ntp: +ntp: diff --git a/patches/source/openexr/openexr.CVE-2017-9110-to-9116.patch b/patches/source/openexr/openexr.CVE-2017-9110-to-9116.patch new file mode 100644 index 000000000..98c03a997 --- /dev/null +++ b/patches/source/openexr/openexr.CVE-2017-9110-to-9116.patch @@ -0,0 +1,82 @@ +--- a/IlmImf/ImfDwaCompressor.cpp ++++ b/IlmImf/ImfDwaCompressor.cpp +@@ -2377,7 +2377,12 @@ DwaCompressor::uncompress + + const char *dataPtr = inPtr + NUM_SIZES_SINGLE * sizeof(Int64); + +- if (inSize < headerSize + compressedSize) ++ /* Both the sum and individual sizes are checked in case of overflow. */ ++ if (inSize < (headerSize + compressedSize) || ++ inSize < unknownCompressedSize || ++ inSize < acCompressedSize || ++ inSize < dcCompressedSize || ++ inSize < rleCompressedSize) + { + throw Iex::InputExc("Error uncompressing DWA data" + "(truncated file)."); +diff --git a/IlmImf/ImfHuf.cpp b/IlmImf/ImfHuf.cpp +index a375d05..97909a5 100644 +--- a/IlmImf/ImfHuf.cpp ++++ b/IlmImf/ImfHuf.cpp +@@ -822,7 +822,7 @@ hufEncode // return: output size (in bits) + } + + +-#define getCode(po, rlc, c, lc, in, out, oe) \ ++#define getCode(po, rlc, c, lc, in, out, ob, oe)\ + { \ + if (po == rlc) \ + { \ +@@ -835,6 +835,8 @@ hufEncode // return: output size (in bits) + \ + if (out + cs > oe) \ + tooMuchData(); \ ++ else if (out - 1 < ob) \ ++ notEnoughData(); \ + \ + unsigned short s = out[-1]; \ + \ +@@ -895,7 +897,7 @@ hufDecode + // + + lc -= pl.len; +- getCode (pl.lit, rlc, c, lc, in, out, oe); ++ getCode (pl.lit, rlc, c, lc, in, out, outb, oe); + } + else + { +@@ -925,7 +927,7 @@ hufDecode + // + + lc -= l; +- getCode (pl.p[j], rlc, c, lc, in, out, oe); ++ getCode (pl.p[j], rlc, c, lc, in, out, outb, oe); + break; + } + } +@@ -952,7 +954,7 @@ hufDecode + if (pl.len) + { + lc -= pl.len; +- getCode (pl.lit, rlc, c, lc, in, out, oe); ++ getCode (pl.lit, rlc, c, lc, in, out, outb, oe); + } + else + { +diff --git a/IlmImf/ImfPizCompressor.cpp b/IlmImf/ImfPizCompressor.cpp +index 46c6fba..8b3ee38 100644 +--- a/IlmImf/ImfPizCompressor.cpp ++++ b/IlmImf/ImfPizCompressor.cpp +@@ -573,6 +573,12 @@ PizCompressor::uncompress (const char *inPtr, + int length; + Xdr::read (inPtr, length); + ++ if (length > inSize) ++ { ++ throw InputExc ("Error in header for PIZ-compressed data " ++ "(invalid array length)."); ++ } ++ + hufUncompress (inPtr, length, _tmpBuffer, tmpBufferEnd - _tmpBuffer); + + // diff --git a/patches/source/openexr/openexr.SlackBuild b/patches/source/openexr/openexr.SlackBuild new file mode 100755 index 000000000..7932f0d43 --- /dev/null +++ b/patches/source/openexr/openexr.SlackBuild @@ -0,0 +1,113 @@ +#!/bin/sh + +# Copyright 2007, 2013, 2014 Heinz Wiesinger, Amsterdam, The Netherlands +# Copyright 2008, 2009, 2010, 2014, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified by Robby Workman + + +PKGNAM=openexr +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:--j7} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Patch security issues: +zcat $CWD/openexr.CVE-2017-9110-to-9116.patch.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL LICENSE NEWS README* \ + $PKG/usr/doc/$PKGNAM-$VERSION +mv $PKG/usr/share/doc/OpenEXR-$VERSION/*.pdf $PKG/usr/doc/$PKGNAM-$VERSION/ +rm -rf $PKG/usr/share/doc + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/openexr/slack-desc b/patches/source/openexr/slack-desc new file mode 100644 index 000000000..cf0b46a62 --- /dev/null +++ b/patches/source/openexr/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +openexr: openexr (HDR Image File Format & Library) +openexr: +openexr: OpenEXR is an image file format and library developed by Industrial +openexr: Light & Magic, and later released to the public. It provides support +openexr: for high dynamic range and a 16-bit floating point "half" data type +openexr: which is compatible with the half data type in the Cg programming +openexr: language. +openexr: +openexr: Homepage: http://www.openexr.org/ +openexr: +openexr: diff --git a/patches/source/openjpeg/openjpeg.SlackBuild b/patches/source/openjpeg/openjpeg.SlackBuild new file mode 100755 index 000000000..7be4e4f1d --- /dev/null +++ b/patches/source/openjpeg/openjpeg.SlackBuild @@ -0,0 +1,121 @@ +#!/bin/sh + +# Slackware build script for openjpeg + +# Copyright 2008-2014 Heinz Wiesinger, Amsterdam, The Netherlands +# Copyright 2014, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=openjpeg +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:--j7} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-openjpeg + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf openjpeg-$VERSION +tar xvf $CWD/openjpeg-$VERSION.tar.?z* || exit 1 +cd openjpeg-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/openjpeg2_remove-thirdparty.patch.gz | patch -p1 --verbose || exit 1 + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DOPENJPEG_INSTALL_LIB_DIR="lib$LIBDIRSUFFIX" \ + -DOPENJPEG_INSTALL_MAN_DIR="man/" \ + -DOPENJPEG_INSTALL_DOC_DIR="doc/openjpeg-$VERSION/" \ + -DOPENJPEG_INSTALL_SHARE_DIR="share/openjpeg" \ + -DBUILD_JPWL:BOOL=ON \ + -DBUILD_MJ2:BOOL=ON \ + -DBUILD_JPIP:BOOL=ON \ + -DBUILD_JP3D:BOOL=ON \ + .. || exit 1 + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 +cd - + +# Some libs require the openjpeg.h used for openmj2. +# This version is pretty much the old version from openjpeg 1.5 +mkdir -p $PKG/usr/include/openmj2-2.1 +install -m 644 src/lib/openmj2/openjpeg.h $PKG/usr/include/openmj2-2.1/ + +mkdir -p $PKG/usr/man +cp -r doc/man/* $PKG/usr/man/ + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +find $PKG/usr/man -type f -exec gzip -9 {} \; + +mkdir -p $PKG/usr/doc/openjpeg-$VERSION +cp -a AUTHORS* CHANGES* INSTALL* LICENSE* NEWS* README* THANKS* \ + $PKG/usr/doc/openjpeg-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/openjpeg-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/openjpeg/openjpeg2_remove-thirdparty.patch b/patches/source/openjpeg/openjpeg2_remove-thirdparty.patch new file mode 100644 index 000000000..6987fc240 --- /dev/null +++ b/patches/source/openjpeg/openjpeg2_remove-thirdparty.patch @@ -0,0 +1,11 @@ +diff -rupN openjpeg-2.1.1/CMakeLists.txt openjpeg-2.1.1-new/CMakeLists.txt +--- openjpeg-2.1.1/CMakeLists.txt 2016-07-05 16:54:17.000000000 +0200 ++++ openjpeg-2.1.1-new/CMakeLists.txt 2016-07-06 09:38:26.083029127 +0200 +@@ -270,7 +270,6 @@ if(BUILD_CODEC OR BUILD_MJ2) + # OFF: It will only build 3rd party libs if they are not found on the system + # ON: 3rd party libs will ALWAYS be build, and used + option(BUILD_THIRDPARTY "Build the thirdparty executables if it is needed" OFF) +- add_subdirectory(thirdparty) + add_subdirectory(src/bin) + endif () + add_subdirectory(wrapping) diff --git a/patches/source/openjpeg/slack-desc b/patches/source/openjpeg/slack-desc new file mode 100644 index 000000000..7c0b6ef5c --- /dev/null +++ b/patches/source/openjpeg/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +openjpeg: openjpeg (JPEG2000 Codec) +openjpeg: +openjpeg: The OpenJPEG library is an open-source JPEG 2000 codec. +openjpeg: +openjpeg: Homepage: http://www.openjpeg.org +openjpeg: +openjpeg: +openjpeg: +openjpeg: +openjpeg: +openjpeg: diff --git a/patches/source/openssh/doinst.sh b/patches/source/openssh/doinst.sh new file mode 100644 index 000000000..73ce62836 --- /dev/null +++ b/patches/source/openssh/doinst.sh @@ -0,0 +1,49 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + touch -r ${NEW} ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + config ${NEW} +} + +config etc/ssh/ssh_config.new +config etc/ssh/sshd_config.new +preserve_perms etc/rc.d/rc.sshd.new +if [ -e etc/rc.d/rc.sshd.new ]; then + mv etc/rc.d/rc.sshd.new etc/rc.d/rc.sshd +fi + +# If the sshd user/group/shadow don't exist, add them: + +if ! grep -q "^sshd:" etc/passwd ; then + echo "sshd:x:33:33:sshd:/:" >> etc/passwd +fi + +if ! grep -q "^sshd:" etc/group ; then + echo "sshd::33:sshd" >> etc/group +fi + +if ! grep -q "^sshd:" etc/shadow ; then + echo "sshd:*:9797:0:::::" >> etc/shadow +fi + +# Add a btmp file to store login failure if one doesn't exist: +if [ ! -r var/log/btmp ]; then + ( cd var/log ; umask 077 ; touch btmp ) +fi + diff --git a/patches/source/openssh/openssh-7.4p1-libwrap.diff b/patches/source/openssh/openssh-7.4p1-libwrap.diff new file mode 100644 index 000000000..d1025e43c --- /dev/null +++ b/patches/source/openssh/openssh-7.4p1-libwrap.diff @@ -0,0 +1,137 @@ +--- ./configure.ac.orig 2016-12-18 22:59:41.000000000 -0600 ++++ ./configure.ac 2016-12-23 12:58:04.200707728 -0600 +@@ -1467,6 +1467,62 @@ + ] + ) + ++# Check whether user wants TCP wrappers support ++TCPW_MSG="no" ++AC_ARG_WITH([tcp-wrappers], ++ [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support (optionally in PATH)], ++ [ ++ if test "x$withval" != "xno" ; then ++ saved_LIBS="$LIBS" ++ saved_LDFLAGS="$LDFLAGS" ++ saved_CPPFLAGS="$CPPFLAGS" ++ if test -n "${withval}" && \ ++ test "x${withval}" != "xyes"; then ++ if test -d "${withval}/lib"; then ++ if test -n "${need_dash_r}"; then ++ LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}" ++ else ++ LDFLAGS="-L${withval}/lib ${LDFLAGS}" ++ fi ++ else ++ if test -n "${need_dash_r}"; then ++ LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}" ++ else ++ LDFLAGS="-L${withval} ${LDFLAGS}" ++ fi ++ fi ++ if test -d "${withval}/include"; then ++ CPPFLAGS="-I${withval}/include ${CPPFLAGS}" ++ else ++ CPPFLAGS="-I${withval} ${CPPFLAGS}" ++ fi ++ fi ++ LIBS="-lwrap -lnsl $LIBS" ++ AC_MSG_CHECKING([for libwrap]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++#include ++#include ++#include ++#include ++int deny_severity = 0, allow_severity = 0; ++ ]], [[ ++ hosts_access(0); ++ ]])], [ ++ AC_MSG_RESULT([yes]) ++ AC_DEFINE([LIBWRAP], [1], ++ [Define if you want ++ TCP Wrappers support]) ++ SSHDLIBS="$SSHDLIBS -lwrap -lnsl" ++ TCPW_MSG="yes" ++ ], [ ++ AC_MSG_ERROR([*** libwrap missing]) ++ ++ ]) ++ LIBS="$saved_LIBS" ++ fi ++ ] ++) ++ + # Check whether user wants to use ldns + LDNS_MSG="no" + AC_ARG_WITH(ldns, +@@ -5081,6 +5137,7 @@ + echo " SELinux support: $SELINUX_MSG" + echo " Smartcard support: $SCARD_MSG" + echo " S/KEY support: $SKEY_MSG" ++echo " TCP Wrappers support: $TCPW_MSG" + echo " MD5 password support: $MD5_MSG" + echo " libedit support: $LIBEDIT_MSG" + echo " Solaris process contract support: $SPC_MSG" +--- ./sshd.c.orig 2016-12-18 22:59:41.000000000 -0600 ++++ ./sshd.c 2016-12-23 12:58:40.847710372 -0600 +@@ -123,6 +123,13 @@ + #include "version.h" + #include "ssherr.h" + ++#ifdef LIBWRAP ++#include ++#include ++int allow_severity; ++int deny_severity; ++#endif /* LIBWRAP */ ++ + /* Re-exec fds */ + #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) + #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) +@@ -1971,6 +1978,24 @@ + #ifdef SSH_AUDIT_EVENTS + audit_connection_from(remote_ip, remote_port); + #endif ++#ifdef LIBWRAP ++ allow_severity = options.log_facility|LOG_INFO; ++ deny_severity = options.log_facility|LOG_WARNING; ++ /* Check whether logins are denied from this host. */ ++ if (packet_connection_is_on_socket()) { ++ struct request_info req; ++ ++ request_init(&req, RQ_DAEMON, __progname, RQ_FILE, sock_in, 0); ++ fromhost(&req); ++ ++ if (!hosts_access(&req)) { ++ debug("Connection refused by tcp wrapper"); ++ refuse(&req); ++ /* NOTREACHED */ ++ fatal("libwrap refuse returns"); ++ } ++ } ++#endif /* LIBWRAP */ + + /* Log the connection. */ + laddr = get_local_ipaddr(sock_in); +--- ./sshd.8.orig 2016-12-18 22:59:41.000000000 -0600 ++++ ./sshd.8 2016-12-23 12:58:04.208707729 -0600 +@@ -825,6 +825,12 @@ + This file should be writable only by the user, and need not be + readable by anyone else. + .Pp ++.It Pa /etc/hosts.allow ++.It Pa /etc/hosts.deny ++Access controls that should be enforced by tcp-wrappers are defined here. ++Further details are described in ++.Xr hosts_access 5 . ++.Pp + .It Pa /etc/hosts.equiv + This file is for host-based authentication (see + .Xr ssh 1 ) . +@@ -929,6 +935,7 @@ + .Xr ssh-keygen 1 , + .Xr ssh-keyscan 1 , + .Xr chroot 2 , ++.Xr hosts_access 5 , + .Xr login.conf 5 , + .Xr moduli 5 , + .Xr sshd_config 5 , diff --git a/patches/source/openssh/openssh.CVE-2017-15906.patch b/patches/source/openssh/openssh.CVE-2017-15906.patch new file mode 100644 index 000000000..fdb963f7e --- /dev/null +++ b/patches/source/openssh/openssh.CVE-2017-15906.patch @@ -0,0 +1,19 @@ +--- ./sftp-server.c.orig 2016-12-18 22:59:41.000000000 -0600 ++++ ./sftp-server.c 2018-03-07 19:18:19.275984210 -0600 +@@ -1,4 +1,4 @@ +-/* $OpenBSD: sftp-server.c,v 1.110 2016/09/12 01:22:38 deraadt Exp $ */ ++/* $OpenBSD: sftp-server.c,v 1.111 2017/04/04 00:24:56 djm Exp $ */ + /* + * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. + * +@@ -691,8 +691,8 @@ + logit("open \"%s\" flags %s mode 0%o", + name, string_from_portable(pflags), mode); + if (readonly && +- ((flags & O_ACCMODE) == O_WRONLY || +- (flags & O_ACCMODE) == O_RDWR)) { ++ ((flags & O_ACCMODE) != O_RDONLY || ++ (flags & (O_CREAT|O_TRUNC)) != 0)) { + verbose("Refusing open request in read-only mode"); + status = SSH2_FX_PERMISSION_DENIED; + } else { diff --git a/patches/source/openssh/openssh.SlackBuild b/patches/source/openssh/openssh.SlackBuild new file mode 100755 index 000000000..49777ced0 --- /dev/null +++ b/patches/source/openssh/openssh.SlackBuild @@ -0,0 +1,169 @@ +#!/bin/sh + +# Copyright 2000 BSDi, Inc. Concord, CA, USA +# Copyright 2001, 2002, 2003, 2004 Slackware Linux, Inc. Concord, CA, USA +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-openssh + +VERSION=${VERSION:-$(echo openssh-*.tar.gz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2_slack14.2} + +NUMJOBS=${NUMJOBS:--j6} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" +elif [ "$ARCH" = "armel" ]; then + SLKCFLAGS="-O2 -march=armv4t" +else + SLKCFLAGS="-O2" +fi + +# Clean target location: +rm -rf $PKG +mkdir -p $PKG + +# Prepare the framework and extract the package: +cd $TMP +rm -rf $PKG openssh-$VERSION +tar xvf $CWD/openssh-$VERSION.tar.gz || tar xvf $CWD/openssh-$VERSION.tar.?z* || exit 1 +cd openssh-$VERSION +chown -R root:root . + +zcat $CWD/openssh.CVE-2017-15906.patch.gz | patch -p1 --verbose || exit 1 + +# Restore support for tcpwrappers: +zcat $CWD/openssh-7.4p1-libwrap.diff.gz | patch -p1 --verbose || exit 1 +autoreconf -vif + +# Compile package: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --mandir=/usr/man \ + --sysconfdir=/etc/ssh \ + --without-pam \ + --with-md5-passwords \ + --with-tcp-wrappers \ + --with-default-path=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin \ + --with-privsep-path=/var/empty \ + --with-privsep-user=sshd \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 + +# Install the package: +make install DESTDIR=$PKG + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Install directory used with PrivilegeSeparation option: +mkdir -p $PKG/var/empty +chmod 755 $PKG/var/empty + +# Install docs: +mkdir -p $PKG/usr/doc/openssh-$VERSION +cp -a \ + CREDITS ChangeLog INSTALL LICENCE OVERVIEW \ + README README.privsep README.smartcard RFC.nroff TODO WARNING.RNG \ + $PKG/usr/doc/openssh-$VERSION +chmod 644 $PKG/usr/doc/openssh-$VERSION/* + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Install also 'ssh-copy-id' and its manpage from contrib: +( cd contrib + cp -a ssh-copy-id $PKG/usr/bin/ssh-copy-id + chmod 755 $PKG/usr/bin/ssh-copy-id + cat ssh-copy-id.1 | gzip -9c > $PKG/usr/man/man1/ssh-copy-id.1.gz +) + +( cd $PKG + + # Ditch the new host keys, since these have to be uniquely prepared on each machine: + rm -f etc/ssh/ssh_host_dsa_key + rm -f etc/ssh/ssh_host_dsa_key.pub + rm -f etc/ssh/ssh_host_rsa_key + rm -f etc/ssh/ssh_host_rsa_key.pub + rm -f etc/ssh/ssh_host_key + rm -f etc/ssh/ssh_host_key.pub + + # Set up the config script installation: + mv etc/ssh/ssh_config etc/ssh/ssh_config.new + mv etc/ssh/sshd_config etc/ssh/sshd_config.new + + # Add the init script: + mkdir -p etc/rc.d + cat $CWD/rc.sshd > etc/rc.d/rc.sshd.new + chmod 755 etc/rc.d/rc.sshd.new + + # Copy runtime installation files: + mkdir -p install + zcat $CWD/doinst.sh.gz > install/doinst.sh + cat $CWD/slack-desc > install/slack-desc +) + +# Create the package itself: +cd $PKG +/sbin/makepkg -l y -c n $TMP/openssh-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/openssh/rc.sshd b/patches/source/openssh/rc.sshd new file mode 100644 index 000000000..2da2ab307 --- /dev/null +++ b/patches/source/openssh/rc.sshd @@ -0,0 +1,59 @@ +#!/bin/sh +# Start/stop/restart the secure shell server: + +sshd_start() { + # Create host keys if needed. + if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then + /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' + fi + if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then + /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' + fi + if [ ! -f /etc/ssh/ssh_host_ecdsa_key ]; then + /usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' + fi + if [ ! -f /etc/ssh/ssh_host_ed25519_key ]; then + /usr/bin/ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' + fi + # Catch any new host key types not yet created above: + /usr/bin/ssh-keygen -A + # Start the sshd daemon: + /usr/sbin/sshd +} + +sshd_stop() { + killall sshd +} + +sshd_restart() { + if [ -r /var/run/sshd.pid ]; then + echo "WARNING: killing listener process only. To kill every sshd process, you must" + echo " use 'rc.sshd stop'. 'rc.sshd restart' kills only the parent sshd to" + echo " allow an admin logged in through sshd to use 'rc.sshd restart' without" + echo " being cut off. If sshd has been upgraded, new connections will now" + echo " use the new version, which should be a safe enough approach." + kill `cat /var/run/sshd.pid` + else + echo "WARNING: There does not appear to be a parent instance of sshd running." + echo " If you really want to kill all running instances of sshd (including" + echo " any sessions currently in use), run '/etc/rc.d/rc.sshd stop' instead." + exit 1 + fi + sleep 1 + sshd_start +} + +case "$1" in +'start') + sshd_start + ;; +'stop') + sshd_stop + ;; +'restart') + sshd_restart + ;; +*) + echo "usage $0 start|stop|restart" +esac + diff --git a/patches/source/openssh/slack-desc b/patches/source/openssh/slack-desc new file mode 100644 index 000000000..04277a720 --- /dev/null +++ b/patches/source/openssh/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +openssh: openssh (Secure Shell daemon and clients) +openssh: +openssh: ssh (Secure Shell) is a program for logging into a remote machine and +openssh: for executing commands on a remote machine. It is intended to replace +openssh: rlogin and rsh, and provide secure encrypted communications between +openssh: two untrusted hosts over an insecure network. sshd (SSH Daemon) is +openssh: the daemon program for ssh. OpenSSH is based on the last free version +openssh: of Tatu Ylonen's SSH, further enhanced and cleaned up by Aaron +openssh: Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt, and +openssh: Dug Song. It has a homepage at http://www.openssh.com/ +openssh: diff --git a/patches/source/openssl/certwatch b/patches/source/openssl/certwatch new file mode 100644 index 000000000..d52dc3dc4 --- /dev/null +++ b/patches/source/openssl/certwatch @@ -0,0 +1,130 @@ +#!/bin/sh +# +# Will check all certificates stored in $CERTDIR for their expiration date, +# and will display (if optional "stdout" argument is given), or mail a warning +# message to $MAILADDR (if script is executed without any parameter +# - unattended mode suitable for cron execution) for each particular certificate +# that is about to expire in time less to, or equal to $DAYS after this script +# has been executed, or if it has already expired. +# This stupid script (C) 2006,2007 Jan Rafaj + +########################## CONFIGURATION SECTION BEGIN ######################### +# Note: all settings are mandatory +# Warning will be sent if a certificate expires in time <= days given here +DAYS=7 +# E-mail address where to send warnings +MAILADDR=root +# Directory with certificates to check +CERTDIR=/etc/ssl/certs +# Directory where to keep state files if this script isnt executed with "stdout" +STATEDIR=/var/run +########################### CONFIGURATION SECTION END ########################## + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +DAY_IN_SECS=$((60*60*24)) +DATE_CURRENT=$(date '+%s') + +usage() +{ + echo "Usage: $0 [stdout]" + echo + echo "Detailed description and configuration is embedded within the script." + exit 0 +} + +message() +{ + cat << EOF + WARNING: certificate $certfile + is about to expire in time equal to or less than $DAYS days from now on, + or has already expired - it might be a good idea to obtain/create new one. + +EOF +} + +message_mail() +{ + message + cat << EOF + NOTE: This message is being sent only once. + + A lock-file + $STATEDIR/certwatch-mailwarning-sent-$certfilebase + has been created, which will prevent this script from mailing you again + upon its subsequent executions by crond. You dont need to care about it; + the file will be auto-deleted as soon as you'll prolong your certificate. +EOF +} + +unset stdout +case $# in + 0) ;; + 1) if [ "$1" = "-h" -o "$1" == "--help" ]; then + usage + elif [ "$1" = "stdout" ]; then + stdout=1 + else + usage + fi + ;; + *) usage ;; +esac + +for dir in $STATEDIR $CERTDIR ; do + if [ ! -d $dir ]; then + echo "ERROR: directory $dir does not exist" + exit 1 + fi +done +for binary in basename date find grep mail openssl touch ; do + if [ ! \( -x /usr/bin/$binary -o -x /bin/$binary \) ]; then + echo "ERROR: /usr/bin/$binary not found" + exit 1 + fi +done + +find $CERTDIR -type f -maxdepth 1 | while read certfile ; do + if [ "$certfile" != "/etc/ssl/certs/ca-certificates.crt" ]; then + certfilebase="$(basename "$certfile")" + inform=PEM + echo "$certfile" | grep -q -i '\.net$' + if [ $? -eq 0 ]; then + # This is based purely on filename extension, so may give false results. + # But lets assume noone uses NET format certs today, ok? + continue + fi + echo "$certfile" | grep -q -i '\.der$' + if [ $? -eq 0 -o "$(file "$certfile" | egrep '(ASCII|PEM)')" == "" ]; then + inform=DER + fi + # We wont use '-checkend' since it is not properly documented (as of + # OpenSSL 0.9.8e). + DATE_CERT_EXPIRES=$(openssl x509 -in "$certfile" -inform $inform -noout -enddate | sed 's/^notAfter=//') + DATE_CERT_EXPIRES=$(date -d"$DATE_CERT_EXPIRES" +%s) + if [ $(($DATE_CERT_EXPIRES - $DATE_CURRENT)) -le $(($DAYS * $DAY_IN_SECS)) ] + then + if [ $stdout ]; then + message + else + if [ ! -f $STATEDIR/certwatch-mailwarning-sent-"$certfilebase" ]; then + subject="$0: certificate $certfile expiration warning" + message_mail | mail -r "certwatch@$HOSTNAME" \ + -s "$subject" \ + $MAILADDR 2>/dev/null + # echo "Mail about expiring certificate $certfile sent to $MAILADDR." + # echo "If you need to send it again, please remove lock-file" + # echo "$STATEDIR/certwatch-mailwarning-sent-$certfilebase ." + # echo + fi + touch $STATEDIR/certwatch-mailwarning-sent-"$certfilebase" + fi + else + if [ ! $stdout ]; then + if [ -f $STATEDIR/certwatch-mailwarning-sent-"$certfilebase" ]; then + rm $STATEDIR/certwatch-mailwarning-sent-"$certfilebase" + fi + fi + fi + fi +done + diff --git a/patches/source/openssl/doinst.sh-openssl b/patches/source/openssl/doinst.sh-openssl new file mode 100644 index 000000000..8fcf3d1c1 --- /dev/null +++ b/patches/source/openssl/doinst.sh-openssl @@ -0,0 +1,26 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# If there is a known buggy certwatch script with no local +# modifications, just replace it: +if [ "$(md5sum etc/cron.daily/certwatch 2> /dev/null)" = "32556321806f1850d56cb2ef8384b7a1 etc/cron.daily/certwatch" ]; then + cat etc/cron.daily/certwatch.new > etc/cron.daily/certwatch + touch -r etc/cron.daily/certwatch.new etc/cron.daily/certwatch +fi + +config etc/ssl/openssl.cnf.new +config etc/cron.daily/certwatch.new + +# Rehash certificates if the package is upgraded on a running system: +if [ -x /usr/bin/c_rehash ]; then + /usr/bin/c_rehash 1> /dev/null 2> /dev/null +fi diff --git a/patches/source/openssl/doinst.sh-openssl-solibs b/patches/source/openssl/doinst.sh-openssl-solibs new file mode 100644 index 000000000..ed4fdfacb --- /dev/null +++ b/patches/source/openssl/doinst.sh-openssl-solibs @@ -0,0 +1,12 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/ssl/openssl.cnf.new diff --git a/patches/source/openssl/openssl.SlackBuild b/patches/source/openssl/openssl.SlackBuild new file mode 100755 index 000000000..a5e4e59ba --- /dev/null +++ b/patches/source/openssl/openssl.SlackBuild @@ -0,0 +1,223 @@ +#!/bin/sh + +# Copyright 2000 BSDi, Inc. Concord, CA, USA +# Copyright 2001, 2002 Slackware Linux, Inc. Concord, CA, USA +# Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +VERSION=${VERSION:-$(echo openssl-*.tar.gz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +PKG1=$TMP/package-openssl +PKG2=$TMP/package-ossllibs +NAME1=openssl-$VERSION-$ARCH-$BUILD +NAME2=openssl-solibs-$VERSION-$ARCH-$BUILD + +# Parallel build doesn't link properly. +#NUMJOBS=${NUMJOBS:--j6} + +# So that ls has the right field counts for parsing... +export LC_ALL=C + +cd $TMP +rm -rf $PKG1 $PKG2 openssl-$VERSION + +tar xvf $CWD/openssl-$VERSION.tar.gz || exit 1 +cd openssl-$VERSION + +# Fix pod syntax errors which are fatal wih a newer perl: +find . -name "*.pod" -exec sed -i "s/^\=item \([0-9]\)\(\ \|$\)/\=item C<\1>/g" {} \; + +# Use .so.1, not .so.1.0.0: +sed -i "s/soname=\$\$SHLIB\$\$SHLIB_SOVER\$\$SHLIB_SUFFIX/soname=\$\$SHLIB.1/g" Makefile.shared + +if [ "$ARCH" = "i586" ]; then + # Build with -march=i586 -mtune=i686: + sed -i "/linux-elf/s/fomit-frame-pointer/fomit-frame-pointer -march=i586 -mtune=i686/g" Configure + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + # Build with -march=i686 -mtune=i686: + sed -i "/linux-elf/s/fomit-frame-pointer/fomit-frame-pointer -march=i686 -mtune=i686/g" Configure + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +fi + +# OpenSSL has a (nasty?) habit of bumping the internal version number with +# every release. This wouldn't be so bad, but some applications are so +# paranoid that they won't run against a different OpenSSL version than +# what they were compiled against, whether or not the ABI has changed. +# +# So, we will use the OPENSSL_VERSION_NUMBER from openssl-1.0.2e unless ABI +# breakage forces it to change. Yes, we're finally using this old trick. :) +sed -i "s/#define OPENSSL_VERSION_NUMBER.*/\/* Use 0x1000205fL (1.0.2e) below to avoid pointlessly breaking the ABI *\/\n#define OPENSSL_VERSION_NUMBER 0x1000205fL/g" crypto/opensslv.h || exit 1 + +chown -R root:root . +mkdir -p $PKG1/usr/doc/openssl-$VERSION +cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \ + LICENSE NEWS README README.ENGINE doc $PKG1/usr/doc/openssl-$VERSION +find $PKG1/usr/doc/openssl-$VERSION -type d -exec chmod 755 {} \; +find $PKG1/usr/doc/openssl-$VERSION -type f -exec chmod 644 {} \; + +# If there's a CHANGES file, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r CHANGES ]; then + DOCSDIR=$(echo $PKG1/usr/doc/*-$VERSION) + cat CHANGES | head -n 2000 > $DOCSDIR/CHANGES + touch -r CHANGES $DOCSDIR/CHANGES +fi + +# These are the known patent issues with OpenSSL: +# name # expires +# MDC-2: 4,908,861 2007-03-13, not included. +# IDEA: 5,214,703 2010-05-25, not included. +# RC5: 5,724,428 2015-03-03, not included. +# +# Although all of the above are expired, it's still probably +# not a good idea to include them as there are better +# algorithms to use. + +./config \ + --prefix=/usr \ + --openssldir=/etc/ssl \ + no-mdc2 \ + no-idea \ + no-rc5 \ + no-sse2 \ + no-ssl2 \ + no-weak-ssl-ciphers \ + shared + +make $NUMJOBS depend || make depend || exit 1 + +make $NUMJOBS || make || exit 1 + +make install INSTALL_PREFIX=$PKG1 || exit 1 + +# Make the .so.? library symlinks: +( cd $PKG1/usr/lib${LIBDIRSUFFIX} ; ldconfig -l lib*.so.* ) + +# Move libraries, as they might be needed by programs that bring a network +# mounted /usr online: + +mkdir $PKG1/lib${LIBDIRSUFFIX} +( cd $PKG1/usr/lib${LIBDIRSUFFIX} + for file in lib*.so.?.* ; do + mv $file ../../lib${LIBDIRSUFFIX} + ln -sf ../../lib${LIBDIRSUFFIX}/$file . + done + cp -a lib*.so.? ../../lib${LIBDIRSUFFIX} +) + +# Add a cron script to warn root if a certificate is going to expire soon: +mkdir -p $PKG1/etc/cron.daily +zcat $CWD/certwatch.gz > $PKG1/etc/cron.daily/certwatch.new +chmod 755 $PKG1/etc/cron.daily/certwatch.new + +mv $PKG1/etc/ssl/openssl.cnf $PKG1/etc/ssl/openssl.cnf.new + +( cd $PKG1 + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +mv $PKG1/etc/ssl/man $PKG1/usr +( cd $PKG1/usr/man/man1 ; mv passwd.1 ssl_passwd.1 ) +( cd $PKG1/usr/man/man3 ; mv rand.3 ssl_rand.3 ) +( cd $PKG1/usr/man/man3 ; mv err.3 ssl_err.3 ) +# Compress and symlink the man pages: +if [ -d $PKG1/usr/man ]; then + ( cd $PKG1/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# If there's an openssl0 directory, then build openssl-0 shared libraries for +# compatibility with programs linked to those: +if [ -d $CWD/openssl0 ]; then + ( cd $CWD/openssl0 + ./openssl0.build || exit 1 + ) || exit 1 + # Don't put these in the openssl package... openssl-solibs is enough. + #mkdir -p $PKG1/lib${LIBDIRSUFFIX} + #cp -a $TMP/package-openssl0/usr/lib/lib*.so.?.?.? $PKG1/lib${LIBDIRSUFFIX} + #( cd $PKG1/lib${LIBDIRSUFFIX} ; ldconfig -l lib*.so.?.?.? ) + mkdir -p $PKG2/lib${LIBDIRSUFFIX} + cp -a $TMP/package-openssl0/usr/lib/lib*.so.?.?.? $PKG2/lib${LIBDIRSUFFIX} + ( cd $PKG2/lib${LIBDIRSUFFIX} ; ldconfig -l lib*.so.?.?.? ) +fi + +cd $PKG1 +chmod 755 usr/lib${LIBDIRSUFFIX}/pkgconfig +sed -i -e "s#lib\$#lib${LIBDIRSUFFIX}#" usr/lib${LIBDIRSUFFIX}/pkgconfig/*.pc +mkdir -p install +zcat $CWD/doinst.sh-openssl.gz > install/doinst.sh +cat $CWD/slack-desc.openssl > install/slack-desc +/sbin/makepkg -l y -c n $TMP/${NAME1}.txz + +# Make runtime package: +mkdir -p $PKG2/lib${LIBDIRSUFFIX} +( cd lib${LIBDIRSUFFIX} ; cp -a lib*.so.* $PKG2/lib${LIBDIRSUFFIX} ) +( cd $PKG2/lib${LIBDIRSUFFIX} ; ldconfig -l * ) +mkdir -p $PKG2/etc +( cd $PKG2/etc ; cp -a $PKG1/etc/ssl . ) +mkdir -p $PKG2/usr/doc/openssl-$VERSION +( cd $TMP/openssl-$VERSION + cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \ + LICENSE NEWS README README.ENGINE $PKG2/usr/doc/openssl-$VERSION + # If there's a CHANGES file, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r CHANGES ]; then + DOCSDIR=$(echo $PKG2/usr/doc/*-$VERSION) + cat CHANGES | head -n 2000 > $DOCSDIR/CHANGES + touch -r CHANGES $DOCSDIR/CHANGES + fi +) + +find $PKG2/usr/doc/openssl-$VERSION -type d -exec chmod 755 {} \; +find $PKG2/usr/doc/openssl-$VERSION -type f -exec chmod 644 {} \; +cd $PKG2 +mkdir -p install +zcat $CWD/doinst.sh-openssl-solibs.gz > install/doinst.sh +cat $CWD/slack-desc.openssl-solibs > install/slack-desc +/sbin/makepkg -l y -c n $TMP/${NAME2}.txz diff --git a/patches/source/openssl/slack-desc.openssl b/patches/source/openssl/slack-desc.openssl new file mode 100644 index 000000000..57227c043 --- /dev/null +++ b/patches/source/openssl/slack-desc.openssl @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +openssl: openssl (Secure Sockets Layer toolkit) +openssl: +openssl: The OpenSSL certificate management tool and the shared libraries that +openssl: provide various encryption and decryption algorithms and protocols. +openssl: +openssl: This product includes software developed by the OpenSSL Project for +openssl: use in the OpenSSL Toolkit (http://www.openssl.org). This product +openssl: includes cryptographic software written by Eric Young +openssl: (eay@cryptsoft.com). This product includes software written by Tim +openssl: Hudson (tjh@cryptsoft.com). +openssl: diff --git a/patches/source/openssl/slack-desc.openssl-solibs b/patches/source/openssl/slack-desc.openssl-solibs new file mode 100644 index 000000000..58609e68b --- /dev/null +++ b/patches/source/openssl/slack-desc.openssl-solibs @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +openssl-solibs: openssl-solibs (OpenSSL shared libraries) +openssl-solibs: +openssl-solibs: These shared libraries provide encryption routines required by +openssl-solibs: programs such as openssh, bind, sendmail, and many others. +openssl-solibs: +openssl-solibs: This product includes software developed by the OpenSSL Project for +openssl-solibs: use in the OpenSSL Toolkit (http://www.openssl.org). This product +openssl-solibs: includes cryptographic software written by Eric Young +openssl-solibs: (eay@cryptsoft.com). This product includes software written by Tim +openssl-solibs: Hudson (tjh@cryptsoft.com). +openssl-solibs: diff --git a/patches/source/openvpn/README b/patches/source/openvpn/README new file mode 100644 index 000000000..cf2c6602f --- /dev/null +++ b/patches/source/openvpn/README @@ -0,0 +1,26 @@ +OpenVPN is a full-featured SSL VPN which can accomodate a wide +range of configurations, including remote access, site-to-site VPNs, +WiFi security, and enterprise-scale remote access with load +balancing, failover, and fine-grained access-controls. + +OpenVPN implements OSI layer 2 or 3 secure network extension using the +industry standard SSL/TLS protocol, supports flexible client +authentication methods based on certificates, smart cards, and/or +2-factor authentication, and allows user or group-specific access +control policies using firewall rules applied to the VPN virtual +interface. + +This build of OpenVPN depends upon having openssl (not just +openssl-solibs) and lzo installed on your computer. + +Please note that there is no default config file for OpenVPN. This is +by design. OpenVPN can technically use any config file in any location. +However, this script does create an /etc/openvpn/ directory with certs/ +and keys/ subdirectories. Feel free to place config files, keys, and +certificates in these directories. certs/ and keys/ are owned by user +root and group nobody and are not world readable nor writable. +Additionally, they are not writable by group nobody. It is recommended +that you run openvpn nobody:nobody, but you may use another +non-privilaged user and group at your option. Just change the +permissions on these permissions to reflect that if you do. + diff --git a/patches/source/openvpn/doinst.sh b/patches/source/openvpn/doinst.sh new file mode 100644 index 000000000..4b9b133a9 --- /dev/null +++ b/patches/source/openvpn/doinst.sh @@ -0,0 +1,25 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + config ${NEW} +} + +preserve_perms etc/rc.d/rc.openvpn.new + diff --git a/patches/source/openvpn/openvpn.SlackBuild b/patches/source/openvpn/openvpn.SlackBuild new file mode 100755 index 000000000..91e67fd77 --- /dev/null +++ b/patches/source/openvpn/openvpn.SlackBuild @@ -0,0 +1,169 @@ +#!/bin/bash + +# Copyright 2006, Alan Hicks, Lizella, GA +# Copyright 2008, 2009, 2010, 2011, 2013, 2016, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=openvpn +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +# Fix ownership and permissions inside the source tarball. +# It's appalling how many projects have 777 permissions or +# even suid, sgid, and sticky bits set on things. +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc/openvpn \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/openvpn-${VERSION} \ + --enable-lzo \ + --enable-iproute2 \ + --disable-plugin-auth-pam \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install-strip DESTDIR=$PKG || exit 1 + +# Create a decent config directory. openvpn doesn't have one by +# default, nor does it have a single config file. +mkdir -p $PKG/etc/openvpn/{certs,keys} +chown root:nobody $PKG/etc/openvpn/{certs,keys} +chmod 750 $PKG/etc/openvpn/{certs,keys} + +# Install a startup script: +mkdir -p $PKG/etc/rc.d +cp -a $CWD/rc.openvpn $PKG/etc/rc.d/rc.openvpn.new +chmod 644 $PKG/etc/rc.d/rc.openvpn.new +chown root:root $PKG/etc/rc.d/rc.openvpn.new + +# Let folks know about the other configs, if they haven't found them. +# They might even find the documentation there useful. ;-) +cat << EOF > $PKG/etc/openvpn/README.TXT +One or more OpenVPN config files should be installed in this directory +as files ending in ".conf" (i.e. client.conf, server.conf, etc.). + +Have a look in sample-config-files for some more examples of how to +configure OpenVPN. + +To start OpenVPN, use this command as root: +sh /etc/rc.d/rc.openvpn start + +To make OpenVPN start automatically at boot, change the script permissions: +chmod 755 /etc/rc.d/rc.openvpn + +See "man openvpn" and the other docs for more information. +EOF + +# Add a link, too: +( cd $PKG/etc/openvpn + ln -sf /usr/doc/$PKGNAM-$VERSION/sample-config-files . +) + +if [ -d $PKG/usr/man ]; then +( cd $PKG/usr/man + find . -type f -exec gzip -9 {} \; + for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done +) +fi + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a AUTHORS COPYING* COPYRIGHT* INSTALL* \ + NEWS PORTS README* sample/sample-config-files sample/sample-keys sample/sample-scripts \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# Install a reasonably generic sample config file: +# (put this in with the other samples) +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/sample-config-files +cp -a $CWD/slackware.conf $PKG/usr/doc/$PKGNAM-$VERSION/sample-config-files +chown root:root $PKG/usr/doc/$PKGNAM-$VERSION/sample-config-files/slackware.conf +chmod 644 $PKG/usr/doc/$PKGNAM-$VERSION/sample-config-files/slackware.conf + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/openvpn/openvpn.url b/patches/source/openvpn/openvpn.url new file mode 100644 index 000000000..4c476d874 --- /dev/null +++ b/patches/source/openvpn/openvpn.url @@ -0,0 +1,2 @@ +https://swupdate.openvpn.org/community/releases/openvpn-2.4.6.tar.xz +https://swupdate.openvpn.org/community/releases/openvpn-2.4.6.tar.xz.asc diff --git a/patches/source/openvpn/rc.openvpn b/patches/source/openvpn/rc.openvpn new file mode 100644 index 000000000..86f319225 --- /dev/null +++ b/patches/source/openvpn/rc.openvpn @@ -0,0 +1,111 @@ +#!/bin/sh +# +# /etc/rc.d/rc.openvpn +# +# Start/stop/restart the openvpn daemon. +# +# By default, this script will start/stop/restart a daemon for every *.conf +# file found in /etc/openvpn. +# +# To work with a single connection, add the name of the config file: +# /etc/rc.d/rc.openvpn start configfile.conf +# +# You may also use a config file not found in /etc/openvpn by providing a +# complete path: +# /etc/rc.d/rc.openvpn start /path/to/some/other/configfile.conf +# +# The name of a config file provided with a complete path should not match +# the name of any config file present in the /etc/openvpn directory. + +ovpn_start() { + if [ -x /usr/sbin/openvpn ]; then + if [ -z "$1" ]; then # start OpenVPN for all config files: + if /bin/ls /etc/openvpn/*.conf 1> /dev/null 2> /dev/null ; then + for config in /etc/openvpn/*.conf ; do + echo "Starting OpenVPN: /usr/sbin/openvpn --daemon --writepid /run/openvpn/$(basename $config).pid --user nobody --group nobody --config $config" + /usr/sbin/openvpn --daemon --writepid /run/openvpn/$(basename $config).pid --user nobody --group nobody --config $config + done + else + echo "Unable to start OpenVPN - no .conf files found in /etc/openvpn/." + fi + else # start OpenVPN for one config file: + if [ -r "$1" ]; then + echo "Starting OpenVPN: /usr/sbin/openvpn --daemon --writepid /run/openvpn/$(basename $1).pid --user nobody --group nobody --config $1" + /usr/sbin/openvpn --daemon --writepid /run/openvpn/$(basename $1).pid --user nobody --group nobody --config $1 + else # config file is missing: + echo "Error starting OpenVPN: config file $1 is missing." + fi + fi + fi +} + +ovpn_stop() { + # Note: OpenVPN has a bad habit of leaving stale pid files around when exiting. + # Maybe it would be better to just use killall unless called for one config? + if [ -z "$1" ]; then # stop OpenVPN for all pid files: + if /bin/ls /run/openvpn/*.pid 1> /dev/null 2> /dev/null ; then + for pid in /run/openvpn/*.pid ; do + echo "Stopping OpenVPN for pid file $pid..." + kill $(cat $pid) + rm -f $pid + done + else + echo "Warning: no pid files found in /run/openvpn/. Using killall to stop any OpenVPN processes." + killall openvpn + fi + else # stop OpenVPN for one config file: + if [ -r /run/openvpn/$(basename ${1}).pid ]; then + echo "Stopping OpenVPN for config file ${1}..." + kill $(cat /run/openvpn/$(basename ${1}).pid) + rm -f /run/openvpn/$(basename ${1}).pid + else + echo "Error stopping OpenVPN: no such pid file /run/openvpn/$(basename ${1}).pid" + fi + fi +} + +ovpn_restart() { + if [ ! -z "$1" ]; then # restart for all config files: + ovpn_stop + sleep 2 + ovpn_start + else # restart for one config file only: + ovpn_stop $1 + sleep 2 + ovpn_start $1 + fi +} + +ovpn_status() { + if /bin/ls /run/openvpn/*.pid 1> /dev/null 2> /dev/null ; then + echo "Currently running OpenVPN processes according to .pid files in /run/openvpn:" + for pid in /run/openvpn/*.pid ; do + echo " $(basename $pid) ($(cat $pid))" + done + else + echo "No .pid files found in /run/openvpn." + fi +} + +# Create PID directory if it doesn't exist: +if [ ! -d /run/openvpn ]; then + mkdir -p /run/openvpn +fi + +case "$1" in +'start') + ovpn_start $2 + ;; +'stop') + ovpn_stop $2 + ;; +'restart') + ovpn_restart $2 + ;; +'status') + ovpn_status + ;; +*) + echo "Usage: $0 {start|stop|restart}" +esac + diff --git a/patches/source/openvpn/slack-desc b/patches/source/openvpn/slack-desc new file mode 100644 index 000000000..7ffd6167d --- /dev/null +++ b/patches/source/openvpn/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +openvpn: openvpn (secure IP tunnel daemon) +openvpn: +openvpn: OpenVPN is a full-featured SSL VPN which can accommodate a wide range +openvpn: of configurations, including remote access, site-to-site VPNs, WiFi +openvpn: security, and enterprise-scale remote access with load balancing, +openvpn: failover, and fine-grained access-controls. +openvpn: +openvpn: OpenVPN's home on the net is: http://openvpn.net +openvpn: +openvpn: +openvpn: diff --git a/patches/source/openvpn/slackware.conf b/patches/source/openvpn/slackware.conf new file mode 100644 index 000000000..4314b5441 --- /dev/null +++ b/patches/source/openvpn/slackware.conf @@ -0,0 +1,178 @@ +# openvpn.conf.sample +# +# This is a sample configuration file for OpenVPN. +# Not all options are listed here; you can find good documentation +# about all of the options in OpenVPN's manual page - openvpn(8). +# +# You can make a P-t-P connection by creating a shared key, +# copying this key to other hosts in your network, and changing +# the IP addresses in this file. +# +# Commented options are provided for some typical configurations + +# Change the "search" path to /etc/openvpn +# All files referenced in this configuration will be relative to +# whatever directory is specified here - we default to /etc/openvpn +cd /etc/openvpn + +# If running as a server, which local IP address should OpenVPN +# listen on? Specify this as either a hostname or IP address. If +# this is left blank, OpenVPN will default to listening on all +# interfaces. +#local a.b.c.d + +# This option defines the IP or DNS name of the other side of your VPN +# connection. This option is needed if you are making client or P-t-P +# connections. If you are the server, use "local" instead. This may +# be specified as a domain name or IP address. +#remote vpn.server.org + +# This option defins the protocol to use. Valid options are: +# udp, tcp-server, or tcp-client. Default is udp, and generally +# speaking, tcp is a bad idea. +proto udp + +# This option defines the port on which your server will be listening +# or trying to connect. The default is 1194 +port 1194 + +# This option defines whether to use LZO compression. +# If enabled, it must be enabled at both ends of the VPN connection. +#comp-lzo + +# Debug level (default 1) +#verb 3 + +# VPN logfile location +# If you don't specify a location here, logging will be done through +# syslogd and write to /var/log/messages +log-append /var/log/openvpn.log + +# If you want to use OpenVPN as a daemon, uncomment this line. +# Generally speaking, servers should run OpenVPN as a daemon +# and clients should not. +#daemon + +# Device type to use, you can choose between tun or tap. +# TUN is the most common option. If you have multiple connections, +# it is a good idea to bind each connection to a separate TUN/TAP +# interface using tunX/tapX, where X is the number of each interface. +dev tun + +# This option prevents OpenVPN from closing and re-opening the tun/tap +# device every time it receives a SIGUSR1 signal +#persist-tun + +# This is similar to the previous option, but it prevents OpenVPN from +# re-reading the key files every time +#persist-key + +# If you are using a client-server architecture, you need to specify the +# role of your computer in your VPN network. To use one of these options, +# you need to configure TLS options too. +# +# To use the "server" option, you must specify a network subnet such +# as 172.16.1.0 255.255.255.0. The first number is the network, the +# second is the netmask. OpenVPN will take the first available IP +# for itself (in our example, 172.16.1.1) and the rest will be +# given to connecting clients dynamically. +# +# Leave these commented out if you are using OpenVPN in bridging mode. +# +#server 10.1.2.0 255.255.255.0 +#client + +# This option defines a file with IP address to client mapping. +# This is useful in general, and necessary if clients use persist-tun. +#ifconfig-pool-persist ips.txt + +# Enable this option if you want clients connected to this VPN to be +# able to talk directly to each other +#client-to-client + +# This option defines the directory in which configuration files for clients +# will reside. With individual files you can make each client get different +# options using "push" parameters +#client-config-dir ccd + +# If you are using P-t-P, you need to specify the IP addresses at both ends +# of your VPN connection. The IP addresses are reversed at the other side. +# +# You can use this to specify client IP addresses in ccd files (on server) +# or directly in client configuration +#ifconfig 10.1.2.1 10.1.2.2 + +# You can set routes to specific networks. In the sample below, "vpn_gateway" +# is an internal OpenVPN alias to your VPN gateway - leave it as is. +# This will enable you to talk with the networks behind your VPN server. +# Multiple routes can be specified. +# +# +------------+ - - +------------+ +# | Network1 |---| VPN1 |--[10.1.2.0/24]--| VPN2 |---| Network2 | +# +------------+ +------+ +------+ +------------+ +# 192.168.0.0/24 192.168.2.0/24 +# +# The sample below shows how VPN1 server can reach Network2 +#route 192.168.2.0 255.255.255.0 vpn_gateway + +# You can send clients many network configuration options using the +# "push" directive and sending commands. +# Multiple "push" directives can be used. You should only put global +# "push" directives here. You can "push" different options to +# different clients in per-client configuration files. See +# "client-config-dir" above. +# +# Using the same network configuration that you see above, the route statment +# here allows VPN2 to reach Network1 +#push "route-delay 2 600" +#push "route 192.168.2.0 255.255.255.0 vpn_gateway" +#push "persist-key" + +# This option sets the encryption algorithm to use in the VPN connection. +# Available options are: +# DES-CBC, RC2-CBC, DES-EDE-CBC, DES-EDE3-CBC, +# DESX-CBC, BF-CBC, RC2-40-CBC, CAST5-CBC, +# RC2-64-CBC, AES-128-CBC, AES-192-CBC and AES-256-CBC +cipher BF-CBC + +# Shared Key Connection +# --------------------- +# Secret is one shared key between the hosts that want to connect through VPNs. +# Without secret or TLS options, your data will not be encrypted. +# +# To generate an encryption key do: +# openvpn --genkey --secret /etc/openvpn/keys/shared.key +# +# Do the above on one host and copy it to the others +secret keys/shared.key + +# TLS Connections +# --------------- +# TLS must be used if you use option "server" or "client" +# The basic idea there is: You have one Certificate Authority, and all +# machines in your VPN network need to have individual certificates and +# keys signed by Certificate Authority. This means each client can +# have its own key, making it easier to revoke a key without copying +# a shared secret key to every client. +# +# Inside the /usr/doc/openvpn-$VERSION documentation directory, you can +# find "easy-rsa" scripts to make certificate and key management easier. + +# Certificate Authority file +# This file must be identical on all hosts that connect to your VPN +#ca certs/ca.crt + +# If you are the server, you need to specify some Diffie Hellman parameters. +# OpenVPN provides some sample .pem files in documentation directory +#dh my-dh.pem + +# Certificate and Key signed by Certificate Authority +# Each machine needs to have their own unique certificate +#cert certs/machine.cert +#key keys/machine.key + +# To prevent some DoS attacks we can add another authentication layer in the +# TLS control channel. This needs to be enabled at both ends to work +# client uses the value 1; server uses the value 0 +#tls-auth keys/shared.key 0 + diff --git a/patches/source/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch b/patches/source/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch new file mode 100644 index 000000000..c82574790 --- /dev/null +++ b/patches/source/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch @@ -0,0 +1,178 @@ +From 5046e5605cf7420d9a11de49bd9fe4851a4ca1d2 Mon Sep 17 00:00:00 2001 +From: Saleem Rashid +Date: Thu, 5 Apr 2018 22:48:25 +0100 +Subject: [PATCH] Refuse to apply ed scripts by default + +* src/patch.c, src/pch.c: Warn that ed scripts are potentially +dangerous, unless patch is invoked with --force +* tests/dangerous-ed-scripts: New test case +* tests/crlf-handling, tests/need-filename: Add -f to patch invokation to +avoid ed scripts warning + +This fixes an issue where ed scripts could be included in a patch, executing +arbitrary shell commands without the user's knowledge. + +Original bug report: +https://savannah.gnu.org/bugs/index.php?53566 +--- + src/patch.c | 13 +++++++++++-- + src/pch.c | 11 +++++++++++ + tests/Makefile.am | 1 + + tests/crlf-handling | 4 ++-- + tests/dangerous-ed-scripts | 36 ++++++++++++++++++++++++++++++++++++ + tests/need-filename | 2 +- + 6 files changed, 62 insertions(+), 5 deletions(-) + create mode 100644 tests/dangerous-ed-scripts + +diff --git a/src/patch.c b/src/patch.c +index 0fe6d72..e14a9c4 100644 +--- a/src/patch.c ++++ b/src/patch.c +@@ -781,7 +781,7 @@ static char const *const option_help[] = + " -l --ignore-whitespace Ignore white space changes between patch and input.", + "", + " -c --context Interpret the patch as a context difference.", +-" -e --ed Interpret the patch as an ed script.", ++" -e --ed Interpret the patch as a potentially dangerous ed script. This could allow arbitrary command execution!", + " -n --normal Interpret the patch as a normal difference.", + " -u --unified Interpret the patch as a unified difference.", + "", +@@ -825,7 +825,7 @@ static char const *const option_help[] = + "Miscellaneous options:", + "", + " -t --batch Ask no questions; skip bad-Prereq patches; assume reversed.", +-" -f --force Like -t, but ignore bad-Prereq patches, and assume unreversed.", ++" -f --force Like -t, but ignore bad-Prereq patches, apply potentially dangerous ed scripts, and assume unreversed.", + " -s --quiet --silent Work silently unless an error occurs.", + " --verbose Output extra information about the work being done.", + " --dry-run Do not actually change any files; just print what would happen.", +@@ -1068,6 +1068,15 @@ get_some_switches (void) + } + } + ++ if (! force && diff_type == ED_DIFF) ++ { ++ ask ("Apply potentially dangerous ed script? This could allow arbitrary command execution! [n] "); ++ if (*buf != 'y') ++ { ++ fatal ("Refusing to apply potentially dangerous ed script."); ++ } ++ } ++ + /* Process any filename args. */ + if (optind < Argc) + { +diff --git a/src/pch.c b/src/pch.c +index bc6278c..ab34dd4 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -1001,6 +1001,17 @@ intuit_diff_type (bool need_header, mode_t *p_file_type) + instat = st[i]; + } + ++ if (! force && retval == ED_DIFF) ++ { ++ ask ("Apply potentially dangerous ed script? This could allow arbitrary command execution! [n] "); ++ if (*buf != 'y') ++ { ++ if (verbosity != SILENT) ++ say ("Skipping potentially dangerous ed script.\n"); ++ skip_rest_of_patch = true; ++ } ++ } ++ + return retval; + } + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 6b6df63..d888804 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -30,6 +30,7 @@ TESTS = \ + create-directory \ + criss-cross \ + crlf-handling \ ++ dangerous-ed-scripts \ + dash-o-append \ + deep-directories \ + empty-files \ +diff --git a/tests/crlf-handling b/tests/crlf-handling +index c192cac..f9e654e 100644 +--- a/tests/crlf-handling ++++ b/tests/crlf-handling +@@ -46,7 +46,7 @@ if ! have_ed ; then + else + diff -e a b > ab.ed | lf2crlf > ab.ed + echo 1 > c +- ncheck 'patch c < ab.ed' ++ ncheck 'patch -f c < ab.ed' + fi + + # ============================================================== +@@ -95,7 +95,7 @@ if ! have_ed ; then + else + diff -e a b > ab.diff + cp a c +- ncheck 'patch c < ab.diff' ++ ncheck 'patch -f c < ab.diff' + fi + + check 'cat -ve c' < beep.patch <~/pwn.lol;beep # 13-21 12:53:21.000000000 +0100 ++. ++EOF ++ ++check 'patch < beep.patch; echo "Status: $?"' < /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/usr/doc/patch-${VERSION} +cp -a \ + AUTHORS COPYING* NEWS README* \ + $PKG/usr/doc/patch-${VERSION} + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +makepkg -l y -c n $TMP/patch-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/patch/slack-desc b/patches/source/patch/slack-desc new file mode 100644 index 000000000..4603b7156 --- /dev/null +++ b/patches/source/patch/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +patch: patch (apply a diff file to an original file or files) +patch: +patch: Patch is a utility used to apply diffs (or patches) to files, which +patch: are usually source code. +patch: +patch: Larry Wall wrote the original version of patch. Paul Eggert removed +patch: patch's arbitrary limits; added support for binary files, setting +patch: file times, and deleting files; and made it conform better to POSIX. +patch: Other contributors include Wayne Davison, who added unidiff support, +patch: and David MacKenzie, who added configuration and backup support. +patch: diff --git a/patches/source/php/doinst.sh b/patches/source/php/doinst.sh new file mode 100644 index 000000000..a6f584ed3 --- /dev/null +++ b/patches/source/php/doinst.sh @@ -0,0 +1,30 @@ +if [ ! -r etc/httpd/mod_php.conf ]; then + cp -a etc/httpd/mod_php.conf.example etc/httpd/mod_php.conf +elif [ "`cat etc/httpd/mod_php.conf 2> /dev/null`" = "" ]; then + cp -a etc/httpd/mod_php.conf.example etc/httpd/mod_php.conf +fi + +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +# Keep same perms on rc.php-fpm.new: +if [ -e etc/rc.d/rc.php-fpm ]; then + cp -a etc/rc.d/rc.php-fpm etc/rc.d/rc.php-fpm.new.incoming + cat etc/rc.d/rc.php-fpm.new > etc/rc.d/rc.php-fpm.new.incoming + mv etc/rc.d/rc.php-fpm.new.incoming etc/rc.d/rc.php-fpm.new +fi +config etc/rc.d/rc.php-fpm.new +cp -a etc/php.ini-production etc/php.ini.new +config etc/php.ini.new +cp -a etc/php-fpm.conf.default etc/php-fpm.conf.new +config etc/php-fpm.conf.new +cp -a etc/php-fpm.conf.default etc/php-fpm.conf.new +config etc/php-fpm.conf.new diff --git a/patches/source/php/fetch-php.sh b/patches/source/php/fetch-php.sh new file mode 100755 index 000000000..19c45c74b --- /dev/null +++ b/patches/source/php/fetch-php.sh @@ -0,0 +1,2 @@ +lftpget http://us.php.net/distributions/php-5.6.36.tar.xz.asc +lftpget http://us.php.net/distributions/php-5.6.36.tar.xz diff --git a/patches/source/php/mod_php.conf.example b/patches/source/php/mod_php.conf.example new file mode 100644 index 000000000..670eb7135 --- /dev/null +++ b/patches/source/php/mod_php.conf.example @@ -0,0 +1,29 @@ +# +# mod_php - PHP Hypertext Preprocessor module +# + +# Load the PHP module: +LoadModule php5_module lib/httpd/modules/libphp5.so + +# Tell Apache to feed all *.php files through PHP. If you'd like to +# parse PHP embedded in files with different extensions, comment out +# these lines and see the example below. + + SetHandler application/x-httpd-php + + +# Tell Apache to feed all *.php, *.html, and *.htm files through +# the PHP module. Add or subtract extensions here as desired. Please +# note that running pages through PHP for no reason can be both slow +# and insecure, so be sure to know what you're doing. It's a convenient +# shortcut, but probably isn't suitible for high-traffic sites if you +# write any of your pages in straight HTML. +# +# SetHandler application/x-httpd-php +# + +# This will display PHP files in colored syntax form. Use with caution. +# +# SetHandler application/x-httpd-php-source +# + diff --git a/patches/source/php/php-fpm.conf.diff b/patches/source/php/php-fpm.conf.diff new file mode 100644 index 000000000..38d0f9c6e --- /dev/null +++ b/patches/source/php/php-fpm.conf.diff @@ -0,0 +1,28 @@ +--- ./sapi/fpm/php-fpm.conf.in.orig 2012-05-20 19:47:53.000000000 +0200 ++++ ./sapi/fpm/php-fpm.conf.in 2012-05-21 09:16:32.646276661 +0200 +@@ -12,7 +12,7 @@ + ; Relative path can also be used. They will be prefixed by: + ; - the global prefix if it's been set (-p arguement) + ; - @prefix@ otherwise +-;include=etc/fpm.d/*.conf ++;include=etc/php-fpm.d/*.conf + + ;;;;;;;;;;;;;;;;;; + ; Global Options ; +@@ -22,14 +22,14 @@ + ; Pid file + ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ + ; Default Value: none +-;pid = run/php-fpm.pid ++pid = run/php-fpm.pid + + ; Error log file + ; If it's set to "syslog", log is sent to syslogd instead of being written + ; in a local file. + ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ + ; Default Value: log/php-fpm.log +-;error_log = log/php-fpm.log ++error_log = log/php-fpm.log + + ; syslog_facility is used to specify what type of program is logging the + ; message. This lets syslogd specify that messages from different facilities diff --git a/patches/source/php/php.SlackBuild b/patches/source/php/php.SlackBuild new file mode 100755 index 000000000..f10b53eb0 --- /dev/null +++ b/patches/source/php/php.SlackBuild @@ -0,0 +1,312 @@ +#!/bin/sh + +# Build and package mod_php on Slackware. +# by: David Cantrell +# Modified for PHP 4-5 by volkerdi@slackware.com +# Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015 Patrick Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo php-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +ALPINE=2.20 +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-php/ +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +# we need to compile alpine to get c-client.a for IMAP support: +IMAPLIBDIR=/usr/local/lib${LIBDIRSUFFIX}/c-client +if [ -r $IMAPLIBDIR/lib${LIBDIRSUFFIX}/c-client.a ]; then + echo "Using IMAP library:" + ls -l $IMAPLIBDIR/lib${LIBDIRSUFFIX}/c-client.a + sleep 5 +else + ( cd $CWD/../alpine ; ./alpine.SlackBuild || exit 1 ) || exit 1 + ( cd $TMP/alpine-${ALPINE}/imap/c-client + strip -g c-client.a + mkdir -p $IMAPLIBDIR/lib${LIBDIRSUFFIX} + cp c-client.a $IMAPLIBDIR/lib${LIBDIRSUFFIX} + mkdir -p $IMAPLIBDIR/include + cp *.h $IMAPLIBDIR/include + ) +fi + +mkdir -p $PKG/etc/httpd +mkdir -p $PKG/etc/php.d +# A trick from DaMouse to enable building php into $PKG. +# We'll remove this later on. +cat /etc/httpd/original/httpd.conf > $PKG/etc/httpd/httpd.conf +if [ ! -e /etc/httpd/original/httpd.conf ]; then + echo "FATAL: no /etc/httpd/original/httpd.conf found." + exit 1 +fi + +cd $TMP +rm -rf php-$VERSION +tar xvf $CWD/php-$VERSION.tar.xz || exit 1 +cd php-$VERSION + +# cleanup: +find . -name "*.orig" -delete + +# Add missing(?) PEAR modules back: +if [ -d php-$VERSION/pear/packages ]; then + ( cd php-$VERSION/pear/packages + cp -a $CWD/pear/*.bz2 . 2> /dev/null + bzip2 -d *.bz2 2> /dev/null + ) +fi + +if [ "$ARCH" = "s390" ]; then + zcat $CWD/php.configure.s390.diff.gz | patch -p1 || exit +fi + +# Fixup perms/owners: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +find . -name "*.h" -exec chmod 644 {} \; + +# Sometimes they ship a few of these: +find . -name "*.orig" -exec rm {} \; + +# Patch ini files: +zcat $CWD/php.ini-development.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/php.ini-development.diff.gz | patch -p1 --verbose php.ini-production || exit 1 +zcat $CWD/php-fpm.conf.diff.gz | patch -p1 --verbose || exit 1 + +# Install the build folder into /usr/lib$LIBDIRSUFFIX/php/build +# and adapt phpize accordingly: +sed -i "s|build$|php/build|" scripts/Makefile.frag +sed -i "s|build\"$|php/build\"|" scripts/phpize.in + +# Generic "kitchen sink" configure function, with as many things as possible (and +# maybe then some ;-) compiled as shared extensions: +EXTENSION_DIR=/usr/lib${LIBDIRSUFFIX}/php/extensions \ +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --with-libdir=lib${LIBDIRSUFFIX} \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --datarootdir=/usr/share \ + --datadir=/usr/share \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --with-apxs2=/usr/bin/apxs \ + --enable-fpm \ + --with-fpm-user=apache \ + --with-fpm-group=apache \ + --enable-maintainer-zts \ + --enable-pcntl \ + --enable-mbregex \ + --enable-tokenizer=shared \ + --with-config-file-scan-dir=/etc/php.d \ + --with-config-file-path=/etc \ + --enable-mod_charset \ + --with-layout=PHP \ + --disable-sigchild \ + --enable-xml \ + --with-libxml-dir=/usr \ + --enable-simplexml \ + --enable-xmlreader=shared \ + --enable-dom=shared \ + --enable-filter \ + --disable-debug \ + --with-openssl=shared \ + --with-pcre-regex=/usr \ + --with-zlib=shared,/usr \ + --enable-bcmath=shared \ + --with-bz2=shared,/usr \ + --enable-calendar=shared \ + --enable-ctype=shared \ + --with-curl=shared \ + --with-mcrypt=/usr \ + --enable-dba=shared \ + --with-gdbm=/usr \ + --with-db4=/usr \ + --enable-exif=shared \ + --enable-ftp=shared \ + --with-gd=shared \ + --with-jpeg-dir=/usr \ + --with-png-dir=/usr \ + --with-vpx-dir=/usr \ + --with-zlib-dir=/usr \ + --with-xpm-dir=/usr \ + --with-freetype-dir=/usr \ + --with-t1lib=/usr \ + --enable-gd-native-ttf \ + --with-gettext=shared,/usr \ + --with-gmp=shared,/usr \ + --with-iconv=shared \ + --with-imap-ssl=/usr \ + --with-imap=$IMAPLIBDIR \ + --with-ldap=shared \ + --enable-mbstring=shared \ + --enable-hash \ + --with-mysql=shared,mysqlnd \ + --with-mysqli=shared,mysqlnd \ + --with-mysql-sock=/var/run/mysql/mysql.sock \ + --with-iodbc=shared,/usr \ + --enable-pdo=shared \ + --with-pdo-mysql=shared,mysqlnd \ + --with-pdo-sqlite=shared,/usr \ + --with-pdo-odbc=shared,iODBC,/usr \ + --with-pspell=shared,/usr \ + --with-enchant=shared,/usr \ + --enable-shmop=shared \ + --with-snmp=shared,/usr \ + --enable-soap=shared \ + --enable-sockets \ + --with-sqlite3=shared \ + --with-regex=php \ + --enable-sysvmsg \ + --enable-sysvsem \ + --enable-sysvshm \ + --enable-wddx=shared \ + --with-xsl=shared,/usr \ + --enable-zip=shared \ + --with-tsrm-pthreads \ + --enable-intl=shared \ + --enable-opcache \ + --enable-shared=yes \ + --enable-static=no \ + --with-gnu-ld \ + --with-pic \ + --enable-phpdbg \ + --build=$ARCH-slackware-linux + +# I am told this option is worse than nothing. :-) +# --enable-safe-mode +# +# I would recommend *against* and will take no responbility for turning on +# "safe" mode. + +make $NUMJOBS || make || exit 1 +make install INSTALL_ROOT=$PKG || exit 1 + +mkdir -p $PKG/etc/{rc.d,php-fpm.d} +cp sapi/fpm/init.d.php-fpm $PKG/etc/rc.d/rc.php-fpm.new +chmod 644 $PKG/etc/rc.d/rc.php-fpm.new + +# PHP (used to) install Pear with some strange permissions. +chmod 755 $PKG/usr/bin/pear + +# PHP sometimes puts junk in the root directory: +( cd $PKG + rm -rf .channels .depdb .depdblock .filemap .lock .registry +) + +# We do not package static extension libraries: +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/php/extensions/*.a + +# Fix $PKG/usr/lib/php perms: +( cd $PKG/usr/lib${LIBDIRSUFFIX}/php + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +) + +mkdir -p $PKG/usr/doc/php-$VERSION +cp -a \ + CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS README* TODO* UPGRADING* \ + sapi/cgi/README.FastCGI \ + $PKG/usr/doc/php-$VERSION +chown -R root:root $PKG/usr/doc/php-$VERSION +chmod 644 $PKG/usr/doc/php-$VERSION/UPGRADING* + +mkdir -p $PKG/etc/httpd +cat $CWD/mod_php.conf.example | sed -e "s#lib/httpd#lib${LIBDIRSUFFIX}/httpd#" \ + > $PKG/etc/httpd/mod_php.conf.example +chmod 644 $PKG/etc/httpd/* +chown root:root $PKG/etc/httpd/* + +cp -a php.ini-development php.ini-production $PKG/etc +chmod 755 $PKG/etc/php.d $PKG/etc/php-fpm.d $PKG/etc/httpd +chown root:root $PKG/etc/* + +# This can go now. +rm -f $PKG/etc/httpd/httpd* + +# Session directory for PHP: +mkdir -p $PKG/var/lib/php +chmod 770 $PKG/var/lib/php +chown root:apache $PKG/var/lib/php + +# Strip ELF objects. +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +gzip -9 $PKG/usr/man/man?/*.? + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +#if [ -d "$IMAPLIBDIR" ]; then +# ( cd $IMAPLIBDIR && rm -rf * ) +# rmdir $IMAPLIBDIR +#fi + +cd $PKG +/sbin/makepkg -l y -c n $TMP/php-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/php/php.ini-development.diff b/patches/source/php/php.ini-development.diff new file mode 100644 index 000000000..ffa7c0c9d --- /dev/null +++ b/patches/source/php/php.ini-development.diff @@ -0,0 +1,61 @@ +--- ./php.ini-development.orig 2012-07-18 01:19:16.000000000 -0500 ++++ ./php.ini-development 2012-08-08 20:06:33.512546116 -0500 +@@ -859,6 +859,49 @@ + ; If you only provide the name of the extension, PHP will look for it in its + ; default extension directory. + ; ++ ++; These are the extensions that are available for use on this PHP build. ++; If you do NOT need any of these extensions, you should comment them out. ++; That will probably increase both your security and performance. ++ ++extension=bcmath.so ++extension=bz2.so ++extension=calendar.so ++extension=ctype.so ++extension=curl.so ++extension=dba.so ++extension=dom.so ++extension=enchant.so ++extension=exif.so ++extension=ftp.so ++extension=gd.so ++extension=gettext.so ++extension=gmp.so ++extension=iconv.so ++extension=intl.so ++extension=ldap.so ++extension=mbstring.so ++extension=mysql.so ++extension=mysqli.so ++extension=odbc.so ++extension=openssl.so ++zend_extension=opcache.so ++extension=pdo.so ++extension=pdo_mysql.so ++extension=pdo_sqlite.so ++extension=pdo_odbc.so ++extension=pspell.so ++extension=shmop.so ++extension=snmp.so ++extension=soap.so ++extension=sqlite3.so ++extension=tokenizer.so ++extension=wddx.so ++extension=xmlreader.so ++extension=xsl.so ++extension=zip.so ++extension=zlib.so ++ + ; Windows Extensions + ; Note that ODBC support is built in, so no dll is needed for it. + ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) +@@ -1391,7 +1431,7 @@ + ; where MODE is the octal representation of the mode. Note that this + ; does not overwrite the process's umask. + ; http://php.net/session.save-path +-;session.save_path = "/tmp" ++session.save_path = "/var/lib/php" + + ; Whether to use cookies. + ; http://php.net/session.use-cookies diff --git a/patches/source/php/slack-desc b/patches/source/php/slack-desc new file mode 100644 index 000000000..fe14da6d6 --- /dev/null +++ b/patches/source/php/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +php: php (HTML-embedded scripting language) +php: +php: PHP is an HTML-embedded scripting language. It shares syntax +php: characteristics with C, Java, and Perl. The primary objective behind +php: this language is to make a fast and easy-to-use scripting language +php: for dynamic web sites. +php: +php: More information can be found online at http://www.php.net/ +php: +php: +php: diff --git a/patches/source/pidgin/doinst.sh b/patches/source/pidgin/doinst.sh new file mode 100644 index 000000000..1f8ff67de --- /dev/null +++ b/patches/source/pidgin/doinst.sh @@ -0,0 +1,10 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1 + fi +fi + diff --git a/patches/source/pidgin/fix-gmain_h-compile-error.diff b/patches/source/pidgin/fix-gmain_h-compile-error.diff new file mode 100644 index 000000000..1e313cde0 --- /dev/null +++ b/patches/source/pidgin/fix-gmain_h-compile-error.diff @@ -0,0 +1,17 @@ +Since glib-2.32, this is a common error: + In file included from rsa_nss.c:27:0: + /usr/include/glib-2.0/glib/gmain.h:21:2: error: #error "Only can be included directly." +Let's fix it :) + +diff -Nur pidgin-encryption-3.1.orig/rsa_nss.c pidgin-encryption-3.1/rsa_nss.c +--- pidgin-encryption-3.1.orig/rsa_nss.c 2010-04-25 20:53:46.000000000 -0500 ++++ pidgin-encryption-3.1/rsa_nss.c 2012-05-01 22:58:18.033710803 -0500 +@@ -24,7 +24,7 @@ + #include + #include + +-#include "glib/gmain.h" ++#include + + #include + #include diff --git a/patches/source/pidgin/pidgin.SlackBuild b/patches/source/pidgin/pidgin.SlackBuild new file mode 100755 index 000000000..bf97c19da --- /dev/null +++ b/patches/source/pidgin/pidgin.SlackBuild @@ -0,0 +1,231 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=pidgin +VERSION=${VERSION:-$(echo $PKGNAM-2.*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +PIDGINENC=${PIDGINENC:-3.1} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j6 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-${PKGNAM} +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" + ARCHQUADLET="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + ARCHQUADLET="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + ARCHQUADLET="" +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv4t" + LIBDIRSUFFIX="" + ARCHQUADLET="-gnueabi" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + ARCHQUADLET="" +fi + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1 +cd ${PKGNAM}-$VERSION || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +#autoreconf --force --install + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --enable-dot=no \ + --disable-schemas-install \ + --enable-dbus \ + --enable-gnutls=no \ + --enable-nss=yes \ + --with-nss-includes="$(pkg-config --variable=includedir nss)" \ + --with-nss-libs=/usr/lib${LIBDIRSUFFIX}/ \ + --with-nspr-includes="$(pkg-config --variable=includedir nspr)" \ + --with-nspr-libs=/usr/lib${LIBDIRSUFFIX}/ \ + --with-system-ssl-certs=/etc/ssl/certs \ + --disable-vv \ + --enable-gtkspell \ + --enable-cyrus-sasl \ + --enable-perl \ + --disable-meanwhile \ + --disable-avahi \ + --disable-nm \ + --with-gstreamer=1.0 \ + --program-prefix= \ + --program-suffix= \ + --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1 + +# Fix install location: +grep -lr -- "lib/perl" . | xargs sed -i 's?lib/perl?lib'"$LIBDIRSUFFIX"'/perl?g' + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Fix misplaced items: +eval $(perl '-V:installvendorlib') +eval $(perl '-V:privlib') +VENDORPERL="$(echo $installvendorlib)" + +mkdir -vpm755 $PKG/$VENDORPERL/ +find $PKG -type f -name perllocal.pod -exec mv -fv {} $PKG/$VENDORPERL/Pidgin.pod \; +# Fix install location for 64bit: +sed -i 's?/lib/perl?/lib'"$LIBDIRSUFFIX"'/perl?g' $PKG/$VENDORPERL/Pidgin.pod +mkdir -p $PKG/usr/man/man3 +find $PKG/usr/share/man -type f -name *.3 -exec mv -fv {} $PKG/usr/man/man3 \; +rm -rf $PKG/usr/share/man +rm -r $PKG$privlib +# This is empty: +rmdir $PKG/usr/lib$LIBDIRSUFFIX/perl[0-9]*/$ARCH-linux-thread-multi/ + +# In case of unwanted junk dirs on 64-bit... this may fail, but doesn't hurt: +rmdir $PKG/usr/lib/perl[0-9]*/$ARCH-linux-thread-multi/ +rmdir $PKG/usr/lib/perl[0-9]* +rmdir $PKG/usr/lib + +# This removes our DESTDIR from the packlist filenames, to keep perl's +# internal inventories consistent and correct. +find $PKG -name .packlist | while read plist ; do + sed -e "s%/share/man%/man%g" \ + -e "s%$PKG%%g" \ + -e "s%\.1$%\.1\.gz%g" \ + -e "s%\.2$%\.2\.gz%g" \ + -e "s%\.3$%\.3\.gz%g" \ + -e "s%\.3pm$%\.3pm\.gz%g" \ + -e "s%\.4$%\.4\.gz%g" \ + -e "s%\.5$%\.5\.gz%g" \ + -e "s%\.6$%\.6\.gz%g" \ + -e "s%\.7$%\.7\.gz%g" \ + -e "s%\.8$%\.8\.gz%g" \ + ${plist} > ${plist}.new + mv -f ${plist}.new ${plist} +done + +### add pidgin-encryption +( cd $TMP + rm -rf pidgin-encryption-$PIDGINENC + tar xvf $CWD/pidgin-encryption-$PIDGINENC.tar.gz || exit 1 + cd pidgin-encryption-$PIDGINENC + zcat $CWD/fix-gmain_h-compile-error.diff.gz | patch -p1 --verbose || exit 1 + PIDGIN_CFLAGS="-I${PKG}/usr/include/pidgin" \ + PIDGIN_LIBS="-L${PKG}/usr/lib${LIBDIRSUFFIX}" \ + PURPLE_CFLAGS="-I${PKG}/usr/include/libpurple" \ + PURPLE_LIBS="-L${PKG}/usr/lib${LIBDIRSUFFIX}" \ + ./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --disable-static \ + --with-nss-includes="$(pkg-config --variable=includedir nss)" \ + --with-nss-libs=/usr/lib${LIBDIRSUFFIX}/ \ + --with-nspr-includes="$(pkg-config --variable=includedir nspr)" \ + --with-nspr-libs=/usr/lib${LIBDIRSUFFIX}/ \ + --program-prefix="" \ + --program-suffix="" \ + --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1 + + # Fix install location: + grep -lr -- "lib/perl" . | xargs sed -i 's?lib/perl?lib'"$LIBDIRSUFFIX"'/perl?g' + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 +) || exit 1 +### end add pidgin-encryption + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) +fi + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING COPYRIGHT HACKING INSTALL NEWS PLUGIN_HOWTO README* doc \ + $PKG/usr/doc/${PKGNAM}-$VERSION +( cd $PKG/usr/doc/${PKGNAM}-$VERSION/doc + rm -f Makefile* *.dox *.1 *.in +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/pidgin/slack-desc b/patches/source/pidgin/slack-desc new file mode 100644 index 000000000..a9aabca14 --- /dev/null +++ b/patches/source/pidgin/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +pidgin: pidgin (GTK+ instant messaging program) +pidgin: +pidgin: Pidgin allows you to talk to anyone using a variety of messaging +pidgin: protocols, including AIM (Oscar and TOC), ICQ, IRC, Yahoo!, MSN +pidgin: Messenger, Jabber, Gadu-Gadu, Napster, and Zephyr. These protocols +pidgin: are implemented using a modular, easy to use design. To use a +pidgin: protocol, just load the plugin for it. +pidgin: +pidgin: For more info, see: http://www.pidgin.im +pidgin: +pidgin: diff --git a/patches/source/pkg-config/doinst.sh b/patches/source/pkg-config/doinst.sh new file mode 100644 index 000000000..06ebcafc0 --- /dev/null +++ b/patches/source/pkg-config/doinst.sh @@ -0,0 +1,9 @@ +# Break the /usr/share/pkgconfig symlinks, if it exists. +# Then move the .pc files to the standard location. +if [ -L usr/share/pkgconfig ]; then + rm usr/share/pkgconfig + mkdir -p usr/share/pkgconfig + grep usr/share/pkgconfig var/log/packages/* | grep '\.pc$' | cut -f 2 -d : | cut -f 4 -d / | while read movefile ; do + mv usr/lib/pkgconfig/$movefile usr/share/pkgconfig 1> /dev/null 2> /dev/null + done +fi diff --git a/patches/source/pkg-config/pkg-config.SlackBuild b/patches/source/pkg-config/pkg-config.SlackBuild new file mode 100755 index 000000000..a2d0e6405 --- /dev/null +++ b/patches/source/pkg-config/pkg-config.SlackBuild @@ -0,0 +1,120 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=pkg-config +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-pkg-config +rm -rf $PKG +mkdir -p $TMP $PKG/usr + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "armel" ]; then + SLKCFLAGS="-O2 -march=armv4t" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +cd $TMP +rm -rf pkg-config-$VERSION +tar xvf $CWD/pkg-config-$VERSION.tar.?z* || exit 1 +cd pkg-config-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --docdir=/usr/doc/pkg-config-$VERSION \ + --build=${ARCH}-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/etc/profile.d/ +for script in $(ls $CWD/scripts/*) ; do + cat ${script} | sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#g" \ + > $PKG/etc/profile.d/$(basename ${script}) +done +chown root:root $PKG/etc/profile.d/* +chmod 755 $PKG/etc/profile.d/* + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +gzip -9 $PKG/usr/man/man?/*.? + +mkdir -p $PKG/usr/doc/pkg-config-$VERSION +cp -a \ + AUTHORS* COPYING* NEWS* README* \ + $PKG/usr/doc/pkg-config-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz | sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#g" \ + > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $TMP/package-pkg-config +/sbin/makepkg -l y -c n $TMP/pkg-config-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/pkg-config/scripts/pkgconfig.csh b/patches/source/pkg-config/scripts/pkgconfig.csh new file mode 100755 index 000000000..da9a45a60 --- /dev/null +++ b/patches/source/pkg-config/scripts/pkgconfig.csh @@ -0,0 +1,6 @@ +#!/bin/csh +if ( $?PKG_CONFIG_PATH ) then + setenv PKG_CONFIG_PATH ${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig +else + setenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig +endif diff --git a/patches/source/pkg-config/scripts/pkgconfig.sh b/patches/source/pkg-config/scripts/pkgconfig.sh new file mode 100755 index 000000000..96e07c4fa --- /dev/null +++ b/patches/source/pkg-config/scripts/pkgconfig.sh @@ -0,0 +1,7 @@ +#!/bin/sh +if [ ! "$PKG_CONFIG_PATH" = "" ]; then + PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig +else + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig +fi +export PKG_CONFIG_PATH diff --git a/patches/source/pkg-config/slack-desc b/patches/source/pkg-config/slack-desc new file mode 100644 index 000000000..52f57e1b9 --- /dev/null +++ b/patches/source/pkg-config/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +pkg-config: pkg-config (system for managing library compile/link flags) +pkg-config: +pkg-config: pkg-config is a system for managing library compile/link flags +pkg-config: that works with automake and autoconf. It replaces the ubiquitous +pkg-config: *-config scripts you may have seen with a single tool. See the man +pkg-config: page that comes with pkg-config for full documentation. +pkg-config: +pkg-config: +pkg-config: +pkg-config: +pkg-config: diff --git a/patches/source/procps-ng/procps-ng.SlackBuild b/patches/source/procps-ng/procps-ng.SlackBuild new file mode 100755 index 000000000..f99bedf86 --- /dev/null +++ b/patches/source/procps-ng/procps-ng.SlackBuild @@ -0,0 +1,251 @@ +#!/bin/sh + +# Copyright 2005-2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=procps-ng +VERSION=${VERSION:-3.3.15} +PSMISCVER=${PSMISCVER:-22.21} +PROCINFONGVER=${PROCINFONGVER:-2.0.304} +PROCINFOVER=${PROCINFOVER:-18} +BUILD=${BUILD:-1_slack14.2} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +tar xvf $CWD/psmisc-$PSMISCVER.tar.xz || exit 1 +tar xvf $CWD/procinfo-ng-$PROCINFONGVER.tar.xz || exit 1 +tar xvf $CWD/procinfo-$PROCINFOVER.tar.xz || exit 1 +chown -R root:root . + +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/ \ + --bindir=/bin \ + --sbindir=/sbin \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --includedir=/usr/include \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --datarootdir=/usr/share \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --enable-static=no \ + --disable-silent-rules \ + --disable-rpath \ + --enable-watch8bit \ + --enable-skill \ + --enable-sigwinch \ + --enable-w-from \ + --disable-kill \ + --without-systemd \ + --disable-modern-top \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Move the shared library to $PKG/lib${LIBDIRSUFFIX}: +mkdir -p $PKG/lib${LIBDIRSUFFIX} +( cd $PKG/usr/lib${LIBDIRSUFFIX} + for file in lib*.so.?.* ; do + mv $file ../../lib${LIBDIRSUFFIX} + ln -sf ../../lib${LIBDIRSUFFIX}/$file . + done + cp -a lib*.so.? ../../lib${LIBDIRSUFFIX} +) + +# Remove .la file(s): +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la + +# It seems that upstream has shuffled the location of many tools with the +# 3.3.11 release. To me, this just doesn't make sense to break any existing +# scripts that might be using an absolute path, or to move tools that might +# be needed before /usr is mounted into /usr. So, we will make sure that +# everything is moved back to where the Slackware locations have always been. +# These tools belong in /bin: +mkdir -p $PKG/bin +for file in free killall ps ; do + find $PKG -name $file -exec mv "{}" $PKG/bin \; +done +# These tools belong in /sbin: +mkdir -p $PKG/sbin +for file in pidof sysctl ; do + find $PKG -name $file -exec mv "{}" $PKG/sbin \; +done +mkdir -p $PKG/usr/bin +# These tools belong in /usr/bin: +for file in fuser lsdev peekfd pgrep pkill pmap procinfo prtstat pstree pwdx skill slabtop snice socklist tload top uptime vmstat w watch ; do + find $PKG -name $file -exec mv "{}" $PKG/usr/bin \; +done +# These symlinks belong in /bin: +rm -f $PKG/bin/pidof +ln -sf /sbin/pidof $PKG/bin/pidof +# These symlinks belong in /usr/bin: +rm -f $PKG/usr/bin/free $PKG/usr/bin/pidof $PKG/usr/bin/ps +ln -sf /bin/free $PKG/usr/bin/free +ln -sf /sbin/pidof $PKG/usr/bin/pidof +ln -sf /bin/ps $PKG/usr/bin/ps + +# Create /etc/sysctl.d: +mkdir -p $PKG/etc/sysctl.d + +cd psmisc-$PSMISCVER || exit 1 + +# Fix fuser -s: +zcat $CWD/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff.gz | patch -p1 --verbose || exit 1 + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/psmisc-$PSMISCVER \ + --disable-silent-rules \ + --disable-rpath \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Move "killall" to the traditional location: +mv $PKG/usr/bin/killall $PKG/bin +ln -s /bin/killall $PKG/usr/bin/killall + +mkdir -p $PKG/usr/doc/psmisc-$PSMISCVER +cp -a ChangeLog COPYING* NEWS README* $PKG/usr/doc/psmisc-$PSMISCVER + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$PKG/usr/doc/psmisc-$PSMISCVER + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +cd ../procinfo-ng-$PROCINFONGVER || exit 1 +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/procinfo-ng-$PROCINFONGVER \ + --enable-maintainer-mode \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/usr/doc/procinfo-ng-$PROCINFONGVER +cp -a GPL-2.txt LGPL-2.1.txt LICENSE.txt COPYING* README* $PKG/usr/doc/procinfo-ng-$PROCINFONGVER + +# Now install a couple of scripts from the original procinfo package. +cd ../procinfo-$PROCINFOVER || exit 1 +install -m 0755 lsdev.pl $PKG/usr/bin/lsdev +install -m 0755 socklist.pl $PKG/usr/bin/socklist +install -m 0644 lsdev.8 socklist.8 $PKG/usr/man/man8 + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1 | grep -v '\.gz$') ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Back to the procps-ng main source directory... +cd .. + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS ChangeLog COPYING* NEWS README* \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$PKG/usr/doc/$PKGNAM-$VERSION + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff b/patches/source/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff new file mode 100644 index 000000000..d930f6f23 --- /dev/null +++ b/patches/source/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff @@ -0,0 +1,25 @@ +diff --git a/ChangeLog b/ChangeLog +index fd1cccf..e5f784c 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++Changes in 22.22 ++================ ++ * Fixed typo in fuser which has -M on Debian #740275 ++ + Changes in 22.21 + ================ + * Missing comma in fuser(1) added Debian #702391 +diff --git a/src/fuser.c b/src/fuser.c +index b485f65..389b302 100644 +--- a/src/fuser.c ++++ b/src/fuser.c +@@ -1174,7 +1174,7 @@ int main(int argc, char *argv[]) + usage(_("No process specification given")); + + /* Check if -M flag was used and if so check mounts */ +- if (opts * OPT_ISMOUNTPOINT) { ++ if (opts & OPT_ISMOUNTPOINT) { + check_mountpoints(&mounts, &names_head, &names_tail); + } + diff --git a/patches/source/procps-ng/slack-desc b/patches/source/procps-ng/slack-desc new file mode 100644 index 000000000..0573fcb04 --- /dev/null +++ b/patches/source/procps-ng/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +procps-ng: procps-ng (utilities for displaying process information) +procps-ng: +procps-ng: The procps-ng package provides the classic set of utilities used to +procps-ng: display information about the processes currently running on the +procps-ng: machine. +procps-ng: +procps-ng: Homepage: http://sourceforge.net/projects/procps-ng/ +procps-ng: +procps-ng: +procps-ng: +procps-ng: diff --git a/patches/source/proftpd/doinst.sh b/patches/source/proftpd/doinst.sh new file mode 100644 index 000000000..37fe02dd9 --- /dev/null +++ b/patches/source/proftpd/doinst.sh @@ -0,0 +1,18 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/ftpusers.new +config etc/proftpd.conf.new + +# Remove any old proftpd files: +rm -f var/run/proftpd/proftpd* + diff --git a/patches/source/proftpd/etc/ftpusers b/patches/source/proftpd/etc/ftpusers new file mode 100644 index 000000000..d08f2a1fd --- /dev/null +++ b/patches/source/proftpd/etc/ftpusers @@ -0,0 +1,22 @@ +# +# ftpusers This file describes the names of the users that may +# _*NOT*_ log into the system via the FTP server. +# This usually includes "root", "uucp", "news" and the +# like, because those users have too much power to be +# allowed to do "just" FTP... +# +# +# Version: @(#)/etc/ftpusers 3.00 02/25/2001 volkerdi +# +# Original Author: Fred N. van Kempen, +# +# The entire line gets matched, so no comments or extra characters on +# lines containing a username. +# +# To enable anonymous FTP, remove the "ftp" user: +ftp +root +uucp +news + +# End of ftpusers. diff --git a/patches/source/proftpd/etc/proftpd.conf b/patches/source/proftpd/etc/proftpd.conf new file mode 100644 index 000000000..ffb0df3fe --- /dev/null +++ b/patches/source/proftpd/etc/proftpd.conf @@ -0,0 +1,74 @@ +# This is a basic ProFTPD configuration file. +# It establishes a single server and a single anonymous login. +# It assumes that you have a user/group "nobody" and "ftp" +# for normal/anonymous operation. + +ServerName "ProFTPD Default Installation" +#ServerType standalone +ServerType inetd +DefaultServer on + +# Port 21 is the standard FTP port. +Port 21 +# Umask 022 is a good standard umask to prevent new dirs and files +# from being group and world writable. +Umask 022 + +# To prevent DoS attacks, set the maximum number of child processes +# to 30. If you need to allow more than 30 concurrent connections +# at once, simply increase this value. Note that this ONLY works +# in standalone mode, in inetd mode you should use an inetd server +# that allows you to limit maximum number of processes per service +# (such as xinetd) +MaxInstances 30 + +# Set the user and group that the server normally runs at. +User nobody +Group nogroup + +# This next option is required for NIS or NIS+ to work properly: +#PersistentPasswd off + +SystemLog /var/log/proftpd.log +TransferLog /var/log/xferlog + +# Normally, we want files to be overwriteable. + + AllowOverwrite on + + +# A basic anonymous FTP server configuration. +# To enable this, remove the user ftp from /etc/ftpusers. + + RequireValidShell off + User ftp + Group ftp + # We want clients to be able to login with "anonymous" as well as "ftp" + UserAlias anonymous ftp + + # Limit the maximum number of anonymous logins + MaxClients 50 + + # We want 'welcome.msg' displayed at login, and '.message' displayed + # in each newly chdired directory. + DisplayLogin welcome.msg + DisplayChdir .message + + # Limit WRITE everywhere in the anonymous chroot + + DenyAll + + + # An upload directory that allows storing files but not retrieving + # or creating directories. +# +# +# DenyAll +# +# +# +# AllowAll +# +# + + diff --git a/patches/source/proftpd/proftpd.SlackBuild b/patches/source/proftpd/proftpd.SlackBuild new file mode 100755 index 000000000..436360c3f --- /dev/null +++ b/patches/source/proftpd/proftpd.SlackBuild @@ -0,0 +1,139 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=1.3.5e +DIRVER=1.3.5e +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +PROFTPD_MODS="mod_radius:mod_ban:mod_readme:mod_ratio:mod_tls:mod_wrap:mod_ctrls_admin:mod_quotatab:mod_quotatab_file" + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-proftpd + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf proftpd-$VERSION +tar xvf $CWD/proftpd-$VERSION.tar.?z* || exit 1 +cd proftpd-$DIRVER || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --sysconfdir=/etc \ + --enable-autoshadow \ + --enable-ctrls \ + --enable-dso \ + --enable-ipv6 \ + --enable-nls \ + --localstatedir=/var/run \ + --with-modules="${PROFTPD_MODS}" \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# With no library to link against, these are useless: +rm -rf $PKG/usr/include +rm -f $PKG/etc/* +rmdir $PKG/usr/libexec 2> /dev/null + +cat $CWD/etc/proftpd.conf > $PKG/etc/proftpd.conf.new +cat $CWD/etc/ftpusers > $PKG/etc/ftpusers.new +mkdir -p $PKG/home/ftp + +# Directory used by mod_ban: +mkdir -p $PKG/var/db/proftpd +chown nobody:nogroup $PKG/var/db/proftpd + +gzip -9 $PKG/usr/man/man?/*.? + +mkdir -p $PKG/usr/doc/proftpd-$VERSION +cp -a COPYING* CREDITS INSTALL NEWS README* \ + contrib/README.mod_wrap contrib/README.ratio \ + $PKG/usr/doc/proftpd-$VERSION +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/proftpd-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi +cp -a contrib/README $PKG/usr/doc/proftpd-$VERSION/README.contrib +cp -a doc sample-configurations $PKG/usr/doc/proftpd-$VERSION +# Bloat removal: +( cd $PKG/usr/doc + find . -name "*.sgml" -exec rm {} \; + find . -name "*.pdf" -exec rm {} \; +) +rmdir $PKG/usr/share/locale +rmdir $PKG/usr/share + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/proftpd-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/proftpd/slack-desc b/patches/source/proftpd/slack-desc new file mode 100644 index 000000000..5ed80ca92 --- /dev/null +++ b/patches/source/proftpd/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +proftpd: proftpd (FTP server daemon) +proftpd: +proftpd: ProFTPD is the Professional File Transfer Protocol (FTP) server +proftpd: daemon. ProFTPD grew out of the desire to have a secure and +proftpd: configurable FTP server, and out of a significant admiration of the +proftpd: Apache web server. +proftpd: +proftpd: +proftpd: +proftpd: +proftpd: diff --git a/patches/source/python/python.SlackBuild b/patches/source/python/python.SlackBuild new file mode 100755 index 000000000..921a3dc89 --- /dev/null +++ b/patches/source/python/python.SlackBuild @@ -0,0 +1,167 @@ +#!/bin/bash + +# Copyright 2008, 2009, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=python +SRCNAM=Python +VERSION=$(echo $SRCNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +BRANCH_VERSION=$(echo $VERSION | cut -f 1,2 -d . ) +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +rm -rf $PKG +mkdir -p $TMP $PKG + +# Don't set any SLKCFLAGS here, or OPT="$SLKCFLAGS" before the ./configure. +# Python gets the compile options right without any help. +if [ "$ARCH" = "i586" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "arm" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "armel" ]; then + LIBDIRSUFFIX="" +fi + +# Location for Python site-packages: +SITEPK=$PKG/usr/lib${LIBDIRSUFFIX}/${PKGNAM}${BRANCH_VERSION}/site-packages +# same as above without $PKG +TOOLSDIR=/usr/lib${LIBDIRSUFFIX}/${PKGNAM}${BRANCH_VERSION}/site-packages + +cd $TMP +rm -rf $SRCNAM-$VERSION +tar xf $CWD/$SRCNAM-$VERSION.tar.xz || exit 1 +cd $SRCNAM-$VERSION + +zcat $CWD/python.readline.set_pre_input_hook.diff.gz | patch -p1 --verbose || exit 1 +# We don't want a large libpython*.a: +zcat $CWD/python.no-static-library.diff.gz | patch -p1 --verbose || exit 1 + +if [ "$ARCH" = "x86_64" ]; then + # Install to lib64 instead of lib and + # Python must report /usr/lib64/python2.7/site-packages as python_lib_dir: + zcat $CWD/python.x86_64.diff.gz | patch -p1 --verbose || exit 1 +fi + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --docdir=/usr/doc/python-$VERSION \ + --with-threads \ + --enable-ipv6 \ + --enable-shared \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +# Install some python-demo files: +mkdir -p $PKG/usr/doc/python-$VERSION +cp -a Demo $PKG/usr/doc/python-$VERSION + +# We'll install the python-tools under site-packages: +mkdir -p $SITEPK +cp -a Tools/* $SITEPK + +mkdir -p $PKG/usr/doc/python-$VERSION +mv $SITEPK/README $PKG/usr/doc/python-$VERSION/README.python-tools +( cd $PKG/usr/doc/python-$VERSION + ln -sf $TOOLSDIR Tools +) +# Make a few useful symlinks: +mkdir -p $PKG/usr/bin +( cd $PKG/usr/bin + ln -sf $TOOLSDIR/pynche/pynche pynche + ln -sf $TOOLSDIR/i18n/msgfmt.py . + ln -sf $TOOLSDIR/i18n/pygettext.py . +) + +# Install docs: +mkdir -p $PKG/usr/doc/python-$VERSION/Documentation +cp -a README LICENSE $PKG/usr/doc/python-$VERSION +cp -a Misc $PKG/usr/doc/python-$VERSION +tar xf $CWD/python-$VERSION-docs-text.tar.?z* +mv python-${VERSION}-docs-text/* $PKG/usr/doc/python-$VERSION/Documentation +chown -R root:root $PKG/usr/doc/python-$VERSION + +# Fix possible incorrect permissions: +( cd $PKG + find . -type d -exec chmod 755 "{}" \; + find . -perm 640 -exec chmod 644 "{}" \; + find . -perm 750 -exec chmod 755 "{}" \; +) + + +( cd $PKG/usr/bin + rm -f python + ln -sf python${BRANCH_VERSION} python +) + +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \ + xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \ + xargs strip --strip-unneeded 2> /dev/null +) + +( cd $PKG/usr/man + find . -type f -exec gzip -9 {} \; + for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done +) + +( cd $PKG/usr/man + if [ -r python${BRANCH_VERSION}.1.gz ] ; then + ln -sf python${BRANCH_VERSION}.1.gz python.1.gz + fi +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/python-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/python/python.no-static-library.diff b/patches/source/python/python.no-static-library.diff new file mode 100644 index 000000000..962098971 --- /dev/null +++ b/patches/source/python/python.no-static-library.diff @@ -0,0 +1,49 @@ +--- ./Makefile.pre.in.orig 2012-04-09 18:07:33.000000000 -0500 ++++ ./Makefile.pre.in 2012-05-09 13:38:24.913226185 -0500 +@@ -396,7 +396,7 @@ + + + # Build the interpreter +-$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) ++$(BUILDPYTHON): Modules/python.o $(LDLIBRARY) + $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ + Modules/python.o \ + $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +@@ -412,18 +412,6 @@ + *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ + esac + +-# Build static library +-# avoid long command lines, same as LIBRARY_OBJS +-$(LIBRARY): $(LIBRARY_OBJS) +- -rm -f $@ +- $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o +- $(AR) $(ARFLAGS) $@ $(PARSER_OBJS) +- $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS) +- $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS) +- $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS) +- $(AR) $(ARFLAGS) $@ $(MODOBJS) +- $(RANLIB) $@ +- + libpython$(VERSION).so: $(LIBRARY_OBJS) + if test $(INSTSONAME) != $(LDLIBRARY); then \ + $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \ +@@ -1008,18 +996,6 @@ + else true; \ + fi; \ + done +- @if test -d $(LIBRARY); then :; else \ +- if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ +- if test "$(SO)" = .dll; then \ +- $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \ +- else \ +- $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ +- $(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ +- fi; \ +- else \ +- echo Skip install of $(LIBRARY) - use make frameworkinstall; \ +- fi; \ +- fi + $(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c + $(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o + $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in diff --git a/patches/source/python/python.readline.set_pre_input_hook.diff b/patches/source/python/python.readline.set_pre_input_hook.diff new file mode 100644 index 000000000..8af4b4bed --- /dev/null +++ b/patches/source/python/python.readline.set_pre_input_hook.diff @@ -0,0 +1,12 @@ +--- ./Modules/readline.c.orig 2008-11-04 14:43:31.000000000 -0600 ++++ ./Modules/readline.c 2009-06-09 14:23:16.000000000 -0500 +@@ -11,6 +11,9 @@ + #include + #include + ++/* This seems to be needed for set_pre_input_hook to work */ ++#define HAVE_RL_PRE_INPUT_HOOK 1 ++ + #if defined(HAVE_SETLOCALE) + /* GNU readline() mistakenly sets the LC_CTYPE locale. + * This is evil. Only the user or the app's main() should do this! diff --git a/patches/source/python/python.x86_64.diff b/patches/source/python/python.x86_64.diff new file mode 100644 index 000000000..55cdf4996 --- /dev/null +++ b/patches/source/python/python.x86_64.diff @@ -0,0 +1,174 @@ +--- ./Makefile.pre.in.orig 2016-12-17 14:05:06.000000000 -0600 ++++ ./Makefile.pre.in 2016-12-28 13:17:09.089663880 -0600 +@@ -111,7 +111,7 @@ + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= $(prefix)/lib64 + + # Detailed destination directories + BINLIBDEST= $(LIBDIR)/python$(VERSION) +--- ./Lib/sysconfig.py.orig 2016-12-17 14:05:06.000000000 -0600 ++++ ./Lib/sysconfig.py 2016-12-28 13:17:09.086663880 -0600 +@@ -7,20 +7,20 @@ + + _INSTALL_SCHEMES = { + 'posix_prefix': { +- 'stdlib': '{base}/lib/python{py_version_short}', +- 'platstdlib': '{platbase}/lib/python{py_version_short}', +- 'purelib': '{base}/lib/python{py_version_short}/site-packages', +- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', ++ 'stdlib': '{base}/lib64/python{py_version_short}', ++ 'platstdlib': '{platbase}/lib64/python{py_version_short}', ++ 'purelib': '{base}/lib64/python{py_version_short}/site-packages', ++ 'platlib': '{platbase}/lib64/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', + 'scripts': '{base}/bin', + 'data': '{base}', + }, + 'posix_home': { +- 'stdlib': '{base}/lib/python', +- 'platstdlib': '{base}/lib/python', +- 'purelib': '{base}/lib/python', +- 'platlib': '{base}/lib/python', ++ 'stdlib': '{base}/lib64/python', ++ 'platstdlib': '{base}/lib64/python', ++ 'purelib': '{base}/lib64/python', ++ 'platlib': '{base}/lib64/python', + 'include': '{base}/include/python', + 'platinclude': '{base}/include/python', + 'scripts': '{base}/bin', +@@ -65,10 +65,10 @@ + 'data' : '{userbase}', + }, + 'posix_user': { +- 'stdlib': '{userbase}/lib/python{py_version_short}', +- 'platstdlib': '{userbase}/lib/python{py_version_short}', +- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'stdlib': '{userbase}/lib64/python{py_version_short}', ++ 'platstdlib': '{userbase}/lib64/python{py_version_short}', ++ 'purelib': '{userbase}/lib64/python{py_version_short}/site-packages', ++ 'platlib': '{userbase}/lib64/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', +--- ./Lib/site.py.orig 2016-12-17 14:05:06.000000000 -0600 ++++ ./Lib/site.py 2016-12-28 13:19:06.612662631 -0600 +@@ -288,13 +288,13 @@ + if sys.platform in ('os2emx', 'riscos'): + sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) + elif os.sep == '/': +- sitepackages.append(os.path.join(prefix, "lib", ++ sitepackages.append(os.path.join(prefix, "lib64", + "python" + sys.version[:3], + "site-packages")) +- sitepackages.append(os.path.join(prefix, "lib", "site-python")) ++ sitepackages.append(os.path.join(prefix, "lib64", "site-python")) + else: + sitepackages.append(prefix) +- sitepackages.append(os.path.join(prefix, "lib", "site-packages")) ++ sitepackages.append(os.path.join(prefix, "lib64", "site-packages")) + return sitepackages + + def addsitepackages(known_paths): +--- ./Lib/distutils/command/install.py.orig 2016-12-17 14:05:05.000000000 -0600 ++++ ./Lib/distutils/command/install.py 2016-12-28 13:17:09.079663880 -0600 +@@ -41,15 +41,15 @@ + + INSTALL_SCHEMES = { + 'unix_prefix': { +- 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'purelib': '$base/lib64/python$py_version_short/site-packages', ++ 'platlib': '$platbase/lib64/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', + }, + 'unix_home': { +- 'purelib': '$base/lib/python', +- 'platlib': '$base/lib/python', ++ 'purelib': '$base/lib64/python', ++ 'platlib': '$base/lib64/python', + 'headers': '$base/include/python/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +--- ./Lib/distutils/sysconfig.py.orig 2016-12-17 14:05:05.000000000 -0600 ++++ ./Lib/distutils/sysconfig.py 2016-12-28 13:17:09.081663880 -0600 +@@ -120,7 +120,7 @@ + + if os.name == "posix": + libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ "lib64", "python" + get_python_version()) + if standard_lib: + return libpython + else: +--- ./Modules/getpath.c.orig 2016-12-17 14:05:07.000000000 -0600 ++++ ./Modules/getpath.c 2016-12-28 13:17:09.093663880 -0600 +@@ -108,7 +108,7 @@ + static char exec_prefix[MAXPATHLEN+1]; + static char progpath[MAXPATHLEN+1]; + static char *module_search_path = NULL; +-static char lib_python[] = "lib/python" VERSION; ++static char lib_python[] = "lib64/python" VERSION; + + static void + reduce(char *dir) +@@ -520,7 +520,7 @@ + } + else + strncpy(zip_path, PREFIX, MAXPATHLEN); +- joinpath(zip_path, "lib/python00.zip"); ++ joinpath(zip_path, "lib64/python00.zip"); + bufsz = strlen(zip_path); /* Replace "00" with version */ + zip_path[bufsz - 6] = VERSION[0]; + zip_path[bufsz - 5] = VERSION[2]; +@@ -530,7 +530,7 @@ + fprintf(stderr, + "Could not find platform dependent libraries \n"); + strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN); +- joinpath(exec_prefix, "lib/lib-dynload"); ++ joinpath(exec_prefix, "lib64/lib-dynload"); + } + /* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */ + +--- ./setup.py.orig 2016-12-17 14:05:07.000000000 -0600 ++++ ./setup.py 2016-12-28 13:17:09.097663880 -0600 +@@ -456,7 +456,7 @@ + def detect_modules(self): + # Ensure that /usr/local is always used + if not cross_compiling: +- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') ++ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + if cross_compiling: + self.add_gcc_paths() +@@ -782,11 +782,11 @@ + elif curses_library: + readline_libs.append(curses_library) + elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], ++ ['/usr/lib64/termcap'], + 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], ++ library_dirs=['/usr/lib64/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: +@@ -821,8 +821,8 @@ + if krb5_h: + ssl_incs += krb5_h + ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, +- ['/usr/local/ssl/lib', +- '/usr/contrib/ssl/lib/' ++ ['/usr/local/ssl/lib64', ++ '/usr/contrib/ssl/lib64/' + ] ) + + if (ssl_incs is not None and diff --git a/patches/source/python/slack-desc b/patches/source/python/slack-desc new file mode 100644 index 000000000..569c3c5b3 --- /dev/null +++ b/patches/source/python/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +python: python (object-oriented interpreted programming language) +python: +python: Python is an interpreted, interactive, object-oriented programming +python: language that combines remarkable power with very clear syntax. +python: Python's basic power can be extended with your own modules written in +python: C or C++. Python is also adaptable as an extension language for +python: existing applications. +python: +python: +python: +python: diff --git a/patches/source/rpcbind/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch b/patches/source/rpcbind/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch new file mode 100644 index 000000000..9ea5870d8 --- /dev/null +++ b/patches/source/rpcbind/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch @@ -0,0 +1,39 @@ +From a89ba6d07832cb62a86601971380fda7130c6826 Mon Sep 17 00:00:00 2001 +From: "Patrick J. Volkerding" +Date: Mon, 17 Jul 2017 23:09:36 -0500 +Subject: [PATCH 1/2] man/rpcibind.8: Clarify state file usage and history + +--- + man/rpcbind.8 | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/man/rpcbind.8 b/man/rpcbind.8 +index af6200f..bdfb1c8 100644 +--- a/man/rpcbind.8 ++++ b/man/rpcbind.8 +@@ -132,11 +132,20 @@ to connect to services from a privileged port. + .It Fl w + Cause + .Nm +-to do a "warm start" by read a state file when ++to do a "warm start" by attempting to read *.xdr state files from the ++state directory ++.%T /var/run/rpcbind ++when + .Nm +-starts up. The state file is created when ++starts up. The state files are created when + .Nm + terminates. ++.Pp ++This allows for restarting ++.Nm ++without the need to restart all RPC services that have previously registered. ++The state files serve a similar purpose to the files created/restored by the ++pmap_dump and pmap_set utilities distributed with the old portmap server package. + .El + .Sh NOTES + All RPC servers must be restarted if +-- +2.13.2 + diff --git a/patches/source/rpcbind/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch b/patches/source/rpcbind/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch new file mode 100644 index 000000000..060614cc9 --- /dev/null +++ b/patches/source/rpcbind/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch @@ -0,0 +1,218 @@ +From 7ea36eeece56b59f98e469934e4c20b4da043346 Mon Sep 17 00:00:00 2001 +From: Doran Moppert +Date: Thu, 11 May 2017 11:42:54 -0400 +Subject: [PATCH 2/6] rpcbind: pair all svc_getargs() calls with svc_freeargs() + to avoid memory leak + +This patch is to address CVE-2017-8779 "rpcbomb" in rpcbind, discussed +at [1], [2], [3]. The last link suggests this issue is actually a bug +in rpcbind, which led me here. + +The leak caused by the reproducer at [4] appears to come from +rpcb_service_4(), in the case where svc_getargs() returns false and the +function had an early return, rather than passing through the cleanup +path at done:, as would otherwise occur. + +It also addresses a couple of other locations where the same fault seems +to exist, though I haven't been able to exercise those. I hope someone +more intimate with rpc(3) can confirm my understanding is correct, and +that I haven't introduced any new bugs. + +Without this patch, using the reproducer (and variants) repeatedly +against rpcbind with a numBytes argument of 1_000_000_000, /proc/$(pidof +rpcbind)/status reports VmSize increase of 976564 kB each call, and +VmRSS increase of around 260 kB every 33 calls - the specific numbers +are probably an artifact of my rhel/glibc version. With the patch, +there is a small (~50 kB) VmSize increase with the first message, but +thereafter both VmSize and VmRSS remain steady. + +[1]: http://seclists.org/oss-sec/2017/q2/209 +[2]: https://bugzilla.redhat.com/show_bug.cgi?id=1448124 +[3]: https://sourceware.org/ml/libc-alpha/2017-05/msg00129.html +[4]: https://github.com/guidovranken/rpcbomb/ + +Signed-off-by: Doran Moppert +Signed-off-by: Steve Dickson +--- + src/pmap_svc.c | 56 +++++++++++++++++++++++++++++++++++++++++++++--------- + src/rpcb_svc.c | 2 +- + src/rpcb_svc_4.c | 2 +- + src/rpcb_svc_com.c | 8 ++++++++ + 4 files changed, 57 insertions(+), 11 deletions(-) + +diff --git a/src/pmap_svc.c b/src/pmap_svc.c +index 4c744fe..e926cdc 100644 +--- a/src/pmap_svc.c ++++ b/src/pmap_svc.c +@@ -175,6 +175,7 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long + long ans; + uid_t uid; + char uidbuf[32]; ++ int rc = TRUE; + + /* + * Can't use getpwnam here. We might end up calling ourselves +@@ -194,7 +195,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long + + if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { + svcerr_decode(xprt); +- return (FALSE); ++ rc = FALSE; ++ goto done; + } + #ifdef RPCBIND_DEBUG + if (debugging) +@@ -205,7 +207,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long + + if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) { + svcerr_weakauth(xprt); +- return (FALSE); ++ rc = (FALSE); ++ goto done; + } + + rpcbreg.r_prog = reg.pm_prog; +@@ -258,7 +261,16 @@ done_change: + rpcbs_set(RPCBVERS_2_STAT, ans); + else + rpcbs_unset(RPCBVERS_2_STAT, ans); +- return (TRUE); ++done: ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } ++ return (rc); + } + + /* ARGSUSED */ +@@ -272,15 +284,18 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + #ifdef RPCBIND_DEBUG + char *uaddr; + #endif ++ int rc = TRUE; + + if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { + svcerr_decode(xprt); +- return (FALSE); ++ rc = FALSE; ++ goto done; + } + + if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) { + svcerr_weakauth(xprt); +- return FALSE; ++ rc = FALSE; ++ goto done; + } + + #ifdef RPCBIND_DEBUG +@@ -330,21 +345,34 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + pmap_ipprot2netid(reg.pm_prot) ?: "", + port ? udptrans : ""); + +- return (TRUE); ++done: ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } ++ return (rc); + } + + /* ARGSUSED */ + static bool_t + pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + { ++ int rc = TRUE; ++ + if (!svc_getargs(xprt, (xdrproc_t)xdr_void, NULL)) { + svcerr_decode(xprt); +- return (FALSE); ++ rc = FALSE; ++ goto done; + } + + if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) { + svcerr_weakauth(xprt); +- return FALSE; ++ rc = FALSE; ++ goto done; + } + + if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist_ptr, +@@ -354,7 +382,17 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + rpcbind_abort(); + } + } +- return (TRUE); ++ ++done: ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)NULL)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } ++ return (rc); + } + + int pmap_netid2ipprot(const char *netid) +diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c +index 709e3fb..091f530 100644 +--- a/src/rpcb_svc.c ++++ b/src/rpcb_svc.c +@@ -166,7 +166,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) + svcerr_decode(transp); + if (debugging) + (void) xlog(LOG_DEBUG, "rpcbind: could not decode"); +- return; ++ goto done; + } + + if (rqstp->rq_proc == RPCBPROC_SET +diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c +index 5094879..eebbbbe 100644 +--- a/src/rpcb_svc_4.c ++++ b/src/rpcb_svc_4.c +@@ -218,7 +218,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) + svcerr_decode(transp); + if (debugging) + (void) xlog(LOG_DEBUG, "rpcbind: could not decode\n"); +- return; ++ goto done; + } + + if (rqstp->rq_proc == RPCBPROC_SET +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 5862c26..cb63afd 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -927,6 +927,14 @@ error: + if (call_msg.rm_xid != 0) + (void) free_slot_by_xid(call_msg.rm_xid); + out: ++ if (!svc_freeargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } + if (local_uaddr) + free(local_uaddr); + if (buf_alloc) +-- +2.13.0 + diff --git a/patches/source/rpcbind/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch b/patches/source/rpcbind/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch new file mode 100644 index 000000000..6cf885ac4 --- /dev/null +++ b/patches/source/rpcbind/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch @@ -0,0 +1,29 @@ +From c49a7ea639eb700823e174fd605bbbe183e229aa Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Wed, 17 May 2017 10:52:25 -0400 +Subject: [PATCH 3/6] pmapproc_dump: Fixed typo in memory leak patch + +commit 7ea36eee introduce a typo that caused +NIS (aka ypbind) to fail. + +Signed-off-by: Steve Dickson +--- + src/pmap_svc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pmap_svc.c b/src/pmap_svc.c +index e926cdc..26c31d0 100644 +--- a/src/pmap_svc.c ++++ b/src/pmap_svc.c +@@ -384,7 +384,7 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + } + + done: +- if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)NULL)) { ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_void, (char *)NULL)) { + if (debugging) { + (void) xlog(LOG_DEBUG, "unable to free arguments\n"); + if (doabort) { +-- +2.13.0 + diff --git a/patches/source/rpcbind/0004-rpcbind-fix-building-without-enable-debug.patch b/patches/source/rpcbind/0004-rpcbind-fix-building-without-enable-debug.patch new file mode 100644 index 000000000..f7c307942 --- /dev/null +++ b/patches/source/rpcbind/0004-rpcbind-fix-building-without-enable-debug.patch @@ -0,0 +1,69 @@ +From c0e38c9fd1b2c6785af90c86b26a07724c2488e8 Mon Sep 17 00:00:00 2001 +From: Nick Alcock +Date: Thu, 25 May 2017 12:45:35 -0400 +Subject: [PATCH 4/6] rpcbind: fix building without --enable-debug + +All if (debugging) stanzas and their accompanying xlog()s and aborts +should be within #ifdef RPCBIND_DEBUG. + +Fixes a compilation failure due to non-inclusion of in the +non-debugging case. + +Signed-off-by: Nick Alcock +Signed-off-by: Steve Dickson +--- + src/pmap_svc.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/pmap_svc.c b/src/pmap_svc.c +index 26c31d0..a53dd5f 100644 +--- a/src/pmap_svc.c ++++ b/src/pmap_svc.c +@@ -263,12 +263,14 @@ done_change: + rpcbs_unset(RPCBVERS_2_STAT, ans); + done: + if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { ++#ifdef RPCBIND_DEBUG + if (debugging) { + (void) xlog(LOG_DEBUG, "unable to free arguments\n"); + if (doabort) { + rpcbind_abort(); + } + } ++#endif + } + return (rc); + } +@@ -347,12 +349,14 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + + done: + if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { ++#ifdef RPCBIND_DEBUG + if (debugging) { + (void) xlog(LOG_DEBUG, "unable to free arguments\n"); + if (doabort) { + rpcbind_abort(); + } + } ++#endif + } + return (rc); + } +@@ -385,12 +389,14 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + + done: + if (!svc_freeargs(xprt, (xdrproc_t) xdr_void, (char *)NULL)) { ++#ifdef RPCBIND_DEBUG + if (debugging) { + (void) xlog(LOG_DEBUG, "unable to free arguments\n"); + if (doabort) { + rpcbind_abort(); + } + } ++#endif + } + return (rc); + } +-- +2.13.0 + diff --git a/patches/source/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch b/patches/source/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch new file mode 100644 index 000000000..ff42c9e43 --- /dev/null +++ b/patches/source/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch @@ -0,0 +1,96 @@ +From 7c7590ad536c0e24bef790cb1e65702fc54db566 Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Tue, 30 May 2017 11:27:22 -0400 +Subject: [PATCH 5/6] rpcbproc_callit_com: Stop freeing a static pointer + +commit 7ea36ee introduced a svc_freeargs() call +that ended up freeing static pointer. + +It turns out the allocations for the rmt_args +is not necessary . The xdr routines (xdr_bytes) will +handle the memory management and the largest +possible message size is UDPMSGSIZE (due to UDP only) +which is smaller than RPC_BUF_MAX + +Signed-off-by: Steve Dickson +--- + src/rpcb_svc_com.c | 39 ++++++--------------------------------- + 1 file changed, 6 insertions(+), 33 deletions(-) + +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index cb63afd..1fc2229 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -612,9 +612,9 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + struct netconfig *nconf; + struct netbuf *caller; + struct r_rmtcall_args a; +- char *buf_alloc = NULL, *outbufp; ++ char *outbufp; + char *outbuf_alloc = NULL; +- char buf[RPC_BUF_MAX], outbuf[RPC_BUF_MAX]; ++ char outbuf[RPC_BUF_MAX]; + struct netbuf *na = (struct netbuf *) NULL; + struct rpc_msg call_msg; + int outlen; +@@ -635,36 +635,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + } + if (si.si_socktype != SOCK_DGRAM) + return; /* Only datagram type accepted */ +- sendsz = __rpc_get_t_size(si.si_af, si.si_proto, UDPMSGSIZE); +- if (sendsz == 0) { /* data transfer not supported */ +- if (reply_type == RPCBPROC_INDIRECT) +- svcerr_systemerr(transp); +- return; +- } +- /* +- * Should be multiple of 4 for XDR. +- */ +- sendsz = ((sendsz + 3) / 4) * 4; +- if (sendsz > RPC_BUF_MAX) { +-#ifdef notyet +- buf_alloc = alloca(sendsz); /* not in IDR2? */ +-#else +- buf_alloc = malloc(sendsz); +-#endif /* notyet */ +- if (buf_alloc == NULL) { +- if (debugging) +- xlog(LOG_DEBUG, +- "rpcbproc_callit_com: No Memory!\n"); +- if (reply_type == RPCBPROC_INDIRECT) +- svcerr_systemerr(transp); +- return; +- } +- a.rmt_args.args = buf_alloc; +- } else { +- a.rmt_args.args = buf; +- } ++ sendsz = UDPMSGSIZE; + + call_msg.rm_xid = 0; /* For error checking purposes */ ++ memset(&a, 0, sizeof(a)); /* Zero out the input buffer */ + if (!svc_getargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { + if (reply_type == RPCBPROC_INDIRECT) + svcerr_decode(transp); +@@ -704,7 +678,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + if (rbl == (rpcblist_ptr)NULL) { + #ifdef RPCBIND_DEBUG + if (debugging) +- xlog(LOG_DEBUG, "not found\n"); ++ xlog(LOG_DEBUG, "prog %lu vers %lu: not found\n", ++ a.rmt_prog, a.rmt_vers); + #endif + if (reply_type == RPCBPROC_INDIRECT) + svcerr_noprog(transp); +@@ -937,8 +912,6 @@ out: + } + if (local_uaddr) + free(local_uaddr); +- if (buf_alloc) +- free(buf_alloc); + if (outbuf_alloc) + free(outbuf_alloc); + if (na) { +-- +2.13.2 + diff --git a/patches/source/rpcbind/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch b/patches/source/rpcbind/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch new file mode 100644 index 000000000..1a0aa6cfb --- /dev/null +++ b/patches/source/rpcbind/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch @@ -0,0 +1,96 @@ +From 1e2ddd4ebd7a9266e6070f275fa35752752fdfd6 Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Tue, 30 May 2017 11:29:58 -0400 +Subject: [PATCH 6/6] rpcbproc_callit_com: No need to allocate output buffer + +Now that sendz is a fixed size (UDPMSGSIZE) which +is small then RPC_BUF_MAX, no need to check the +sendz size. + +Signed-off-by: Steve Dickson +--- + src/rpcb_svc_com.c | 33 +++++---------------------------- + 1 file changed, 5 insertions(+), 28 deletions(-) + +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 1fc2229..d36b090 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -612,8 +612,6 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + struct netconfig *nconf; + struct netbuf *caller; + struct r_rmtcall_args a; +- char *outbufp; +- char *outbuf_alloc = NULL; + char outbuf[RPC_BUF_MAX]; + struct netbuf *na = (struct netbuf *) NULL; + struct rpc_msg call_msg; +@@ -674,7 +672,6 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + + rpcbs_rmtcall(versnum - 2, reply_type, a.rmt_prog, a.rmt_vers, + a.rmt_proc, transp->xp_netid, rbl); +- + if (rbl == (rpcblist_ptr)NULL) { + #ifdef RPCBIND_DEBUG + if (debugging) +@@ -793,24 +790,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION; + call_msg.rm_call.cb_prog = a.rmt_prog; + call_msg.rm_call.cb_vers = a.rmt_vers; +- if (sendsz > RPC_BUF_MAX) { +-#ifdef notyet +- outbuf_alloc = alloca(sendsz); /* not in IDR2? */ +-#else +- outbuf_alloc = malloc(sendsz); +-#endif /* notyet */ +- if (outbuf_alloc == NULL) { +- if (reply_type == RPCBPROC_INDIRECT) +- svcerr_systemerr(transp); +- if (debugging) +- xlog(LOG_DEBUG, +- "rpcbproc_callit_com: No memory!\n"); +- goto error; +- } +- xdrmem_create(&outxdr, outbuf_alloc, sendsz, XDR_ENCODE); +- } else { +- xdrmem_create(&outxdr, outbuf, sendsz, XDR_ENCODE); +- } ++ ++ memset(outbuf, '\0', sendsz); /* Zero out the output buffer */ ++ xdrmem_create(&outxdr, outbuf, sendsz, XDR_ENCODE); ++ + if (!xdr_callhdr(&outxdr, &call_msg)) { + if (reply_type == RPCBPROC_INDIRECT) + svcerr_systemerr(transp); +@@ -875,10 +858,6 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + goto error; + } + outlen = (int) XDR_GETPOS(&outxdr); +- if (outbuf_alloc) +- outbufp = outbuf_alloc; +- else +- outbufp = outbuf; + + na = uaddr2taddr(nconf, local_uaddr); + if (!na) { +@@ -887,7 +866,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + goto error; + } + +- if (sendto(fd, outbufp, outlen, 0, (struct sockaddr *)na->buf, na->len) ++ if (sendto(fd, outbuf, outlen, 0, (struct sockaddr *)na->buf, na->len) + != outlen) { + if (debugging) + xlog(LOG_DEBUG, +@@ -912,8 +891,6 @@ out: + } + if (local_uaddr) + free(local_uaddr); +- if (outbuf_alloc) +- free(outbuf_alloc); + if (na) { + free(na->buf); + free(na); +-- +2.13.2 + diff --git a/patches/source/rpcbind/01.rpcbind-manpage-statefile-explanation.patch b/patches/source/rpcbind/01.rpcbind-manpage-statefile-explanation.patch new file mode 100644 index 000000000..946dd1bd1 --- /dev/null +++ b/patches/source/rpcbind/01.rpcbind-manpage-statefile-explanation.patch @@ -0,0 +1,25 @@ +--- rpcbind-0.2.3/man/rpcbind.8 2015-04-27 16:07:43.000000000 +0200 ++++ rpcbind-0.2.3/man/rpcbind.8 2015-09-22 16:25:40.000000000 +0200 +@@ -132,11 +132,20 @@ + .It Fl w + Cause + .Nm +-to do a "warm start" by read a state file when ++to do a "warm start" by attempting to read *.xdr state files from the ++state directory ++.%T /var/state/rpcbind ++when + .Nm +-starts up. The state file is created when ++starts up. The state files are created when + .Nm + terminates. ++.Pp ++This allows for restarting ++.Nm ++without the need to restart all RPC services that have previously registered. ++The state file serves similar purpose like the file created/restored by ++pmap_dump and pmap_set utilities, distributed with old portmap server package. + .El + .Sh NOTES + All RPC servers must be restarted if diff --git a/patches/source/rpcbind/doinst.sh b/patches/source/rpcbind/doinst.sh new file mode 100644 index 000000000..5f7dfaf55 --- /dev/null +++ b/patches/source/rpcbind/doinst.sh @@ -0,0 +1,24 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + if [ -e $OLD ]; then + cp -a $OLD ${NEW}.incoming + cat $NEW > ${NEW}.incoming + mv ${NEW}.incoming $NEW + fi + config $NEW +} + +preserve_perms etc/rc.d/rc.rpc.new diff --git a/patches/source/rpcbind/rc.rpc b/patches/source/rpcbind/rc.rpc new file mode 100644 index 000000000..c850c5560 --- /dev/null +++ b/patches/source/rpcbind/rc.rpc @@ -0,0 +1,64 @@ +#!/bin/sh +# rc.rpc: start/stop/restart RPC daemons needed to use NFS. +# +# You must run these daemons in order to mount NFS partitions +# (unless you use the mount option '-o nolock', which can +# corrupt files and is not generally recommended unless you +# are mounting the partition(s) as read-only). +# +# To run an NFS server, starting these is mandatory. +# + +rpc_start() { + if [ -x /sbin/rpcbind -a -x /sbin/rpc.statd ]; then + if ! ps axc | grep -q rpcbind ; then + echo "Starting RPC portmapper: /sbin/rpcbind -l $1" + /sbin/rpcbind -l $1 + fi + if ! ps axc | grep -q rpc.statd ; then + echo "Starting RPC NSM (Network Status Monitor): /sbin/rpc.statd" + /sbin/rpc.statd + fi + else + echo "WARNING: Cannot start RPC daemons needed for NFS. One or more of" + echo " these required daemons is not executable or is not present" + echo " on your system:" + echo + echo " /sbin/rpcbind or /sbin/rpc.statd" + echo + fi +} + +rpc_stop() { + killall rpc.statd 2> /dev/null + sleep 1 + killall rpcbind 2> /dev/null + sleep 1 + killall -9 rpc.statd 2> /dev/null # make sure :) + sleep 1 + killall -9 rpcbind 2> /dev/null # make sure :) + sleep 1 +} + +rpc_restart() { + rpc_stop + rpc_start +} + +case "$1" in +'start') + # Warm restart by default (see "man rpcbind" for details about the -w option) + rpc_start -w + ;; +'cold_start') # Start without -w option + rpc_start + ;; +'stop') + rpc_stop + ;; +'restart') + rpc_restart + ;; +*) + echo "usage $0 start|stop|restart" +esac diff --git a/patches/source/rpcbind/rpcbind.SlackBuild b/patches/source/rpcbind/rpcbind.SlackBuild new file mode 100755 index 000000000..894c7dbda --- /dev/null +++ b/patches/source/rpcbind/rpcbind.SlackBuild @@ -0,0 +1,155 @@ +#!/bin/sh + +# Copyright 2015, 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=rpcbind +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +# CVE-2017-8779 +zcat $CWD/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0004-rpcbind-fix-building-without-enable-debug.patch.gz | patch -p1 --verbose || exit 1 + +# Fixes from git master +zcat $CWD/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch.gz | patch -p1 --verbose || exit 1 + +zcat $CWD/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch | patch -p1 --verbose || exit 1 +zcat $CWD/rpcbind.lwrap.needs.lnsl.diff.gz | patch -p1 --verbose || exit 1 + +# This is needed after the libwrap patch above: +autoreconf -vif || exit 1 +./autogen.sh + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --bindir=/sbin \ + --libdir=/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --enable-libwrap \ + --enable-warmstarts \ + --with-statedir=/var/run/rpcbind \ + --with-rpcuser=rpc \ + --with-nss-modules="files" \ + --without-systemdsystemunitdir \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Make state directory (not really needed as rpcbind does this on startup) +mkdir -p $PKG/var/run/rpcbind +chown rpc:root $PKG/var/run/rpcbind + +# Install init script: +mkdir -p $PKG/etc/rc.d +zcat $CWD/rc.rpc.gz > $PKG/etc/rc.d/rc.rpc.new + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + AUTHORS COPYING* NEWS README* \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# Compress manual pages: +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do + ln -s $( readlink $i ).gz $i.gz + rm $i +done + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/rpcbind/rpcbind.lwrap.needs.lnsl.diff b/patches/source/rpcbind/rpcbind.lwrap.needs.lnsl.diff new file mode 100644 index 000000000..43f2bdf8f --- /dev/null +++ b/patches/source/rpcbind/rpcbind.lwrap.needs.lnsl.diff @@ -0,0 +1,14 @@ +--- ./configure.ac.orig 2015-04-27 09:07:43.000000000 -0500 ++++ ./configure.ac 2015-12-14 13:34:54.592931654 -0600 +@@ -52,6 +52,11 @@ + fi + AM_CONDITIONAL(SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ]) + ++AC_SEARCH_LIBS(yp_get_default_domain, nsl) ++AC_MSG_CHECKING([for hosts_access in -lwrap]) ++saved_LIBS="$LIBS" ++LIBS="$saved_LIBS -lwrap" ++ + AS_IF([test x$enable_libwrap = xyes], [ + AC_CHECK_LIB([wrap], [hosts_access], , + AC_MSG_ERROR([libwrap support requested but unable to find libwrap])) diff --git a/patches/source/rpcbind/slack-desc b/patches/source/rpcbind/slack-desc new file mode 100644 index 000000000..70adeb78d --- /dev/null +++ b/patches/source/rpcbind/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +rpcbind: rpcbind (a daemon to manage RPC connections) +rpcbind: +rpcbind: This is a network daemon used to manage connections to RPC services. +rpcbind: It is meant as a replacement for the 'rpc.portmap' server from the +rpcbind: 'portmap' package. Daemons that offer RPC services (such as the +rpcbind: daemons for NFS) tell the rpcbind on what port they listen. +rpcbind: RPC network port numbers may change each time the system is booted. +rpcbind: +rpcbind: This package is required to use NFS or other RPC services. +rpcbind: +rpcbind: Homepage: http://sourceforge.net/projects/rpcbind/ diff --git a/patches/source/rsync/rsync.SlackBuild b/patches/source/rsync/rsync.SlackBuild new file mode 100755 index 000000000..bb774f9e4 --- /dev/null +++ b/patches/source/rsync/rsync.SlackBuild @@ -0,0 +1,110 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=rsync +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-rsync +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf rsync-$VERSION +tar xvf $CWD/rsync-$VERSION.tar.?z || exit 1 +cd rsync-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit + +mv $PKG/usr/share/man $PKG/usr +rmdir $PKG/usr/share + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1 | grep -v '\.gz$') ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/usr/doc/rsync-$VERSION/popt +cp -a \ + COPYING* INSTALL NEWS README* TODO tech_report.tex \ + support \ + $PKG/usr/doc/rsync-$VERSION +( cd popt + cp -a CHANGES COPYING README README.rsync $PKG/usr/doc/rsync-$VERSION/popt +) + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/rsync-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/rsync/slack-desc b/patches/source/rsync/slack-desc new file mode 100644 index 000000000..7e3b7089a --- /dev/null +++ b/patches/source/rsync/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +rsync: rsync (remote file sync) +rsync: +rsync: rsync is a replacement for rcp that has many more features. It +rsync: uses the "rsync algorithm" which provides a very fast method for +rsync: bringing remote files into sync. It does this by sending just the +rsync: differences in the files across the link, without requiring that both +rsync: sets of files are present at one of the ends of the link beforehand. +rsync: rsync was written by Andrew Tridgell and Paul Mackerras. +rsync: +rsync: Homepage: http://rsync.samba.org +rsync: diff --git a/patches/source/ruby/ruby.SlackBuild b/patches/source/ruby/ruby.SlackBuild new file mode 100755 index 000000000..f3584a5c8 --- /dev/null +++ b/patches/source/ruby/ruby.SlackBuild @@ -0,0 +1,138 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=ruby + +if echo $PKGNAM-*.tar.?z* | grep -q p ; then + # With patchlevel in tarball name: + VERSION=$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1,2 -d - | rev) +else + # Without patchlevel in tarball name: + VERSION=$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +fi + +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-ruby + +if [ "$ARCH" = "i586" ]; then + # -O3 works around a compile failure due to a miniruby segfault + # when trying to build ruby with gcc-4.4 or newer. Evidently + # -O0 also works, but... + # other distributions also use -fno-strict-aliasing which helps stability + SLKCFLAGS="-march=i586 -mtune=i686 -O3 -fno-strict-aliasing" + OPTFLAGS=-O3 + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + # Unknown if s390 is needs -O3. Check to see if it compiles with -O2. + SLKCFLAGS="-O3 -fno-strict-aliasing" + OPTFLAGS=-O3 + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O3 -fPIC -fno-strict-aliasing" + OPTFLAGS=-O3 + LIBDIRSUFFIX="64" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf ruby-$VERSION +tar xvf $CWD/ruby-$VERSION.tar.?z* || exit 1 +cd ruby-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Evidently certain things must be linked static. +# Seems suboptimal to me... + +CFLAGS="$SLKCFLAGS" \ +optflags=$OPTFLAGS \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --datadir=/usr/share \ + --docdir=/usr/doc/ruby-$VERSION \ + --enable-shared \ + --enable-pthread \ + --disable-install-capi \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/usr/doc/ruby-$VERSION +cp -a \ + BSDL COPYING* *GPL* ChangeLog LEGAL NEWS README* ToDo \ + $PKG/usr/doc/ruby-$VERSION + +# The entire ChangeLog is excessive for most users: +cat $PKG/usr/doc/ruby-$VERSION/ChangeLog | head -n 1000 > $PKG/usr/doc/ruby-$VERSION/CL +mv $PKG/usr/doc/ruby-$VERSION/CL $PKG/usr/doc/ruby-$VERSION/ChangeLog + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +find $PKG | xargs file | grep -e "current ar archive" \ + | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/ruby-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz + diff --git a/patches/source/ruby/slack-desc b/patches/source/ruby/slack-desc new file mode 100644 index 000000000..13ffd7a3d --- /dev/null +++ b/patches/source/ruby/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +ruby: ruby (Interpreted object-oriented scripting language) +ruby: +ruby: Ruby is an interpreted scripting language for quick and easy +ruby: object-oriented programming. It has many features to process text +ruby: files and to do system management tasks (as in Perl). It is simple, +ruby: straight-forward, and extensible. +ruby: +ruby: Visit the Ruby project online at http://www.ruby-lang.org/ +ruby: +ruby: +ruby: diff --git a/patches/source/rxvt/rxvt-integer-overflow-fix.patch b/patches/source/rxvt/rxvt-integer-overflow-fix.patch new file mode 100644 index 000000000..edb13856e --- /dev/null +++ b/patches/source/rxvt/rxvt-integer-overflow-fix.patch @@ -0,0 +1,11 @@ +--- rxvt-2.7.10/src/command.c 2003-03-26 07:01:23.000000000 +0100 ++++ rxvt-2.7.10-patched/src/command.c 2017-04-27 12:06:05.682072274 +0200 +@@ -2096,7 +2096,7 @@ + i = ch - CSI_ICH; + ndef = get_byte_array_bit(csi_defaults, i); + for (p = 0; p < nargs; p++) +- if (arg[p] == -1) ++ if (arg[p] < 0 || arg[p] > 30000) + arg[p] = ndef; + + #ifdef DEBUG_CMD diff --git a/patches/source/rxvt/rxvt.SlackBuild b/patches/source/rxvt/rxvt.SlackBuild new file mode 100755 index 000000000..3ce2a5f3a --- /dev/null +++ b/patches/source/rxvt/rxvt.SlackBuild @@ -0,0 +1,127 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2012, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=rxvt +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-5_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" +elif [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-rxvt +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf rxvt-$VERSION +tar xvf $CWD/rxvt-$VERSION.tar.xz || exit 1 +cd rxvt-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/rxvt.utempter.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + +# Patch for CVE-2017-7483: +zcat $CWD/rxvt-integer-overflow-fix.patch.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --enable-languages \ + --enable-utmp \ + --enable-wtmp \ + --enable-xpm-background \ + --enable-transparency \ + --enable-menubar \ + --enable-graphics \ + --enable-rxvt-scroll \ + --enable-next-scroll \ + --enable-xterm-scroll \ + --enable-xim \ + --enable-frills \ + --enable-linespace \ + --enable-24bit \ + --enable-keepscrolling \ + --enable-mousewheel \ + --enable-slipwheeling \ + --enable-xgetdefault \ + --enable-old-selection \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +rmdir $PKG/usr/lib $PKG/usr/include +rm $PKG/usr/bin/rxvt-$VERSION + +mkdir -p $PKG/usr/doc/rxvt-$VERSION +cp -a \ + rxvt-$VERSION.lsm doc rclock/rclock.html \ + $PKG/usr/doc/rxvt-$VERSION +rm -r $PKG/usr/doc/rxvt-$VERSION/doc/yodl + +gzip -9 $PKG/usr/man/man1/* + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/rxvt-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/rxvt/rxvt.utempter.diff b/patches/source/rxvt/rxvt.utempter.diff new file mode 100644 index 000000000..54e06f7af --- /dev/null +++ b/patches/source/rxvt/rxvt.utempter.diff @@ -0,0 +1,277 @@ +--- ./src/logging.c.orig 2002-12-15 16:33:04.000000000 -0800 ++++ ./src/logging.c 2003-06-07 21:08:52.000000000 -0700 +@@ -60,157 +60,7 @@ + void + rxvt_makeutent(rxvt_t *r, const char *pty, const char *hostname) + { +-#ifdef HAVE_STRUCT_UTMP +- struct utmp *ut = &(r->h->ut); +-#endif +-#ifdef HAVE_STRUCT_UTMPX +- struct utmpx *utx = &(r->h->utx); +-#endif +-#ifdef HAVE_UTMP_PID +- int i; +-#endif +- char ut_id[5]; +- struct passwd *pwent = getpwuid(getuid()); +- +- if (!STRNCMP(pty, "/dev/", 5)) +- pty += 5; /* skip /dev/ prefix */ +- +- if (!STRNCMP(pty, "pty", 3) || !STRNCMP(pty, "tty", 3)) { +- STRNCPY(ut_id, (pty + 3), sizeof(ut_id)); +- } +-#ifdef HAVE_UTMP_PID +- else if (sscanf(pty, "pts/%d", &i) == 1) +- sprintf(ut_id, "vt%02x", (i & 0xff)); /* sysv naming */ +-#endif +- else if (STRNCMP(pty, "pty", 3) && STRNCMP(pty, "tty", 3)) { +- rxvt_print_error("can't parse tty name \"%s\"", pty); +- return; +- } +- +-#ifdef HAVE_STRUCT_UTMP +- MEMSET(ut, 0, sizeof(struct utmp)); +-# ifdef HAVE_UTMP_PID +- setutent(); +- STRNCPY(ut->ut_id, ut_id, sizeof(ut->ut_id)); +- ut->ut_type = DEAD_PROCESS; +- getutid(ut); /* position to entry in utmp file */ +- STRNCPY(r->h->ut_id, ut_id, sizeof(r->h->ut_id)); +-# endif +-#endif +- +-#ifdef HAVE_STRUCT_UTMPX +- MEMSET(utx, 0, sizeof(struct utmpx)); +- setutxent(); +- STRNCPY(utx->ut_id, ut_id, sizeof(utx->ut_id)); +- utx->ut_type = DEAD_PROCESS; +- getutxid(utx); /* position to entry in utmp file */ +- STRNCPY(r->h->ut_id, ut_id, sizeof(r->h->ut_id)); +-#endif +- +-#ifdef HAVE_STRUCT_UTMP +- STRNCPY(ut->ut_line, pty, sizeof(ut->ut_line)); +- ut->ut_time = time(NULL); +-# ifdef HAVE_UTMP_PID +- STRNCPY(ut->ut_user, (pwent && pwent->pw_name) ? pwent->pw_name : "?", +- sizeof(ut->ut_user)); +- STRNCPY(ut->ut_id, ut_id, sizeof(ut->ut_id)); +- ut->ut_time = time(NULL); +- ut->ut_pid = r->h->cmd_pid; +-# ifdef HAVE_UTMP_HOST +- STRNCPY(ut->ut_host, hostname, sizeof(ut->ut_host)); +-# endif +- ut->ut_type = USER_PROCESS; +- pututline(ut); +- endutent(); /* close the file */ +- r->h->utmp_pos = -1; +-# else +- STRNCPY(ut->ut_name, (pwent && pwent->pw_name) ? pwent->pw_name : "?", +- sizeof(ut->ut_name)); +-# ifdef HAVE_UTMP_HOST +- STRNCPY(ut->ut_host, hostname, sizeof(ut->ut_host)); +-# endif +-# endif +-#endif +- +-#ifdef HAVE_STRUCT_UTMPX +- STRNCPY(utx->ut_line, pty, sizeof(utx->ut_line)); +- STRNCPY(utx->ut_user, (pwent && pwent->pw_name) ? pwent->pw_name : "?", +- sizeof(utx->ut_user)); +- STRNCPY(utx->ut_id, ut_id, sizeof(utx->ut_id)); +- utx->ut_session = getsid(0); +- utx->ut_tv.tv_sec = time(NULL); +- utx->ut_tv.tv_usec = 0; +- utx->ut_pid = r->h->cmd_pid; +-# ifdef HAVE_UTMPX_HOST +- STRNCPY(utx->ut_host, hostname, sizeof(utx->ut_host)); +-# if 0 +- { +- char *colon; +- +- if ((colon = STRRCHR(ut->ut_host, ':')) != NULL) +- *colon = '\0'; +- } +-# endif +-# endif +- utx->ut_type = USER_PROCESS; +- pututxline(utx); +- endutxent(); /* close the file */ +- r->h->utmp_pos = -1; +-#endif +- +-#if defined(HAVE_STRUCT_UTMP) && !defined(HAVE_UTMP_PID) +- { +- int i; +-# ifdef HAVE_TTYSLOT +- i = ttyslot(); +- if (rxvt_write_bsd_utmp(i, ut)) +- r->h->utmp_pos = i; +-# else +- FILE *fd0; +- +- if ((fd0 = fopen(TTYTAB_FILENAME, "r")) != NULL) { +- char buf[256], name[256]; +- +- buf[sizeof(buf) - 1] = '\0'; +- for (i = 1; (fgets(buf, sizeof(buf) - 1, fd0) != NULL);) { +- if (*buf == '#' || sscanf(buf, "%s", name) != 1) +- continue; +- if (!STRCMP(ut->ut_line, name)) { +- if (!rxvt_write_bsd_utmp(i, ut)) +- i = 0; +- r->h->utmp_pos = i; +- fclose(fd0); +- break; +- } +- i++; +- } +- fclose(fd0); +- } +-# endif +- } +-#endif +- +-#ifdef WTMP_SUPPORT +-# ifdef WTMP_ONLY_ON_LOGIN +- if (r->Options & Opt_loginShell) +-# endif +- { +-# ifdef HAVE_STRUCT_UTMP +-# ifdef HAVE_UPDWTMP +- updwtmp(RXVT_WTMP_FILE, ut); +-# else +- rxvt_update_wtmp(RXVT_WTMP_FILE, ut); +-# endif +-# endif +-# ifdef HAVE_STRUCT_UTMPX +- updwtmpx(RXVT_WTMPX_FILE, utx); +-# endif +- } +-#endif +-#if defined(LASTLOG_SUPPORT) && defined(RXVT_LASTLOG_FILE) +- if (r->Options & Opt_loginShell) +- rxvt_update_lastlog(RXVT_LASTLOG_FILE, pty, hostname); +-#endif ++ addToUtmp(pty, NULL, r->cmd_fd); + } + + /* ------------------------------------------------------------------------- */ +@@ -221,85 +71,7 @@ + void + rxvt_cleanutent(rxvt_t *r) + { +-#ifdef HAVE_STRUCT_UTMP +- struct utmp *tmput, *ut = &(r->h->ut); +-#endif +-#ifdef HAVE_STRUCT_UTMPX +- struct utmpx *tmputx, *utx = &(r->h->utx); +-#endif +- +-#ifdef HAVE_STRUCT_UTMP +-# ifdef HAVE_UTMP_PID +- MEMSET(ut, 0, sizeof(struct utmp)); +- setutent(); +- STRNCPY(ut->ut_id, r->h->ut_id, sizeof(ut->ut_id)); +- ut->ut_type = USER_PROCESS; +- if ((tmput = getutid(ut))) /* position to entry in utmp file */ +- ut = tmput; +- ut->ut_type = DEAD_PROCESS; +-# else +- MEMSET(ut->ut_name, 0, sizeof(ut->ut_name)); +-# ifdef HAVE_UTMP_HOST +- MEMSET(ut->ut_host, 0, sizeof(ut->ut_host)); +-# endif +-# endif +- ut->ut_time = time(NULL); +-#endif +- +-#ifdef HAVE_STRUCT_UTMPX +- MEMSET(utx, 0, sizeof(struct utmpx)); +- setutxent(); +- STRNCPY(utx->ut_id, r->h->ut_id, sizeof(utx->ut_id)); +- utx->ut_type = USER_PROCESS; +- if ((tmputx = getutxid(utx))) /* position to entry in utmp file */ +- utx = tmputx; +- utx->ut_type = DEAD_PROCESS; +- utx->ut_session = getsid(0); +- utx->ut_tv.tv_sec = time(NULL); +- utx->ut_tv.tv_usec = 0; +-#endif +- +- /* +- * Write ending wtmp entry +- */ +-#ifdef WTMP_SUPPORT +-# ifdef WTMP_ONLY_ON_LOGIN +- if (r->Options & Opt_loginShell) +-# endif +- { +-# ifdef HAVE_STRUCT_UTMP +-# ifdef HAVE_UPDWTMP +- updwtmp(RXVT_WTMP_FILE, ut); +-# else +- rxvt_update_wtmp(RXVT_WTMP_FILE, ut); +-# endif +-# endif +-# ifdef HAVE_STRUCT_UTMPX +- updwtmpx(RXVT_WTMPX_FILE, utx); +-# endif +- } +-#endif +- +- /* +- * Write utmp entry +- */ +-#ifdef HAVE_STRUCT_UTMP +-# ifdef HAVE_UTMP_PID +- if (ut->ut_pid == r->h->cmd_pid) +- pututline(ut); +- endutent(); +-# else +- if (r->h->utmp_pos > 0) { +- MEMSET(ut, 0, sizeof(struct utmp)); +- rxvt_write_bsd_utmp(r->h->utmp_pos, ut); +- } +-# endif +-#endif +-#ifdef HAVE_STRUCT_UTMPX +- if (utx->ut_pid == r->h->cmd_pid) +- pututxline(utx); +- endutxent(); +-#endif ++ removeFromUtmp(); + } + + /* ------------------------------------------------------------------------- */ +--- ./src/init.c.orig 2002-12-03 21:21:39.000000000 -0800 ++++ ./src/init.c 2003-06-07 21:09:26.000000000 -0700 +@@ -858,6 +858,7 @@ + rxvt_print_error("aborting"); + exit(EXIT_FAILURE); + } ++ rxvt_privileged_utmp(r, SAVE); + } + + /*----------------------------------------------------------------------*/ +@@ -1364,7 +1365,6 @@ + #endif + r->num_fds++; /* counts from 0 */ + +- rxvt_privileged_utmp(r, SAVE); + return cfd; + } + +--- ./autoconf/Make.common.in.orig 2001-11-29 19:22:56.000000000 -0800 ++++ ./autoconf/Make.common.in 2003-06-07 21:08:52.000000000 -0700 +@@ -68,7 +68,7 @@ + + LIBTOOL = @LIBTOOL@ + COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEBUG) $(DINCLUDE) $(XINC) -I$(basedir) -I$(srcdir) -I. +-LINK = $(CC) $(CFLAGS) $(LDFLAGS) ++LINK = $(CC) $(CFLAGS) $(LDFLAGS) -lutempter -lutil + + # End of common section of the Makefile + #------------------------------------------------------------------------- diff --git a/patches/source/rxvt/slack-desc b/patches/source/rxvt/slack-desc new file mode 100644 index 000000000..5f278d61c --- /dev/null +++ b/patches/source/rxvt/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +rxvt: rxvt (terminal emulator) +rxvt: +rxvt: rxvt is a color vt102 terminal emulator intended as an xterm +rxvt: replacement for users who do not require features such as Tektronix +rxvt: 4014 emulation and toolkit-style configurability. As a result, rxvt +rxvt: uses much less memory -- a significant advantage on a machine serving +rxvt: many X sessions. Also included is rclock, an analog clock for X. +rxvt: +rxvt: +rxvt: +rxvt: diff --git a/patches/source/samba/doinst.sh b/patches/source/samba/doinst.sh new file mode 100644 index 000000000..ff09d3161 --- /dev/null +++ b/patches/source/samba/doinst.sh @@ -0,0 +1,42 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + config ${NEW} +} + +config etc/samba/lmhosts.new +preserve_perms etc/rc.d/rc.samba.new + +# Commented out 2014-09-15 just in case we do need to change this. +## This won't be needed. The point here is to preserve the permissions of the existing +## file, if there is one. I don't see major new development happening in rc.samba... ;-) +#rm -f etc/rc.d/rc.samba.new + +# Since /etc/samba/private/ has moved to /var/lib/samba/private, migrate any +# important files if possible: +if [ -d etc/samba/private -a -d var/lib/samba/private ]; then + for file in etc/samba/private/* ; do + if [ -r "$file" -a ! -r "var/lib/samba/private/$(basename $file)" ]; then + mv "$file" var/lib/samba/private + fi + done + # Might as well try to eliminate this directory, since it should be empty: + rmdir etc/samba/private 1> /dev/null 2> /dev/null +fi diff --git a/patches/source/samba/pytalloc-util.pc b/patches/source/samba/pytalloc-util.pc new file mode 100644 index 000000000..800a9a815 --- /dev/null +++ b/patches/source/samba/pytalloc-util.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: pytalloc-util +Description: Utility functions for using talloc objects with Python +Version: 2.0.8 +Libs: -L${libdir} -lpytalloc-util +Cflags: -Wl,-rpath,/usr/lib -I${includedir} +URL: http://talloc.samba.org/ diff --git a/patches/source/samba/rc.samba b/patches/source/samba/rc.samba new file mode 100644 index 000000000..5b98b879c --- /dev/null +++ b/patches/source/samba/rc.samba @@ -0,0 +1,48 @@ +#!/bin/sh +# +# /etc/rc.d/rc.samba +# +# Start/stop/restart the Samba SMB file/print server. +# +# To make Samba start automatically at boot, make this +# file executable: chmod 755 /etc/rc.d/rc.samba +# + +samba_start() { + if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/samba/smb.conf ]; then + mkdir -p /var/run/samba + echo "Starting Samba: /usr/sbin/smbd -D" + /usr/sbin/smbd -D + echo " /usr/sbin/nmbd -D" + /usr/sbin/nmbd -D + elif [ ! -r /etc/samba/smb.conf ]; then + echo "ERROR: cannot start Samba since /etc/samba/smb.conf does not exist" + fi +} + +samba_stop() { + killall smbd nmbd +} + +samba_restart() { + samba_stop + sleep 2 + samba_start +} + +case "$1" in +'start') + samba_start + ;; +'stop') + samba_stop + ;; +'restart') + samba_restart + ;; +*) + # Default is "start", for backwards compatibility with previous + # Slackware versions. This may change to a 'usage' error someday. + samba_start +esac + diff --git a/patches/source/samba/samba-4.4.16-CVE-2018-1057.patch b/patches/source/samba/samba-4.4.16-CVE-2018-1057.patch new file mode 100644 index 000000000..8d4c0c0e0 --- /dev/null +++ b/patches/source/samba/samba-4.4.16-CVE-2018-1057.patch @@ -0,0 +1,903 @@ +From 6ff2935f6a1bb2bdfb45beea07d4cb7c69c66a74 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 12:43:09 +0100 +Subject: [PATCH 01/13] CVE-2018-1057: s4:dsdb/tests: add a test for password + change with empty delete + +Note that the request using the clearTextPassword attribute for the +password change is already correctly rejected by the server. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + selftest/knownfail.d/samba4.ldap.passwords.python | 2 + + source4/dsdb/tests/python/passwords.py | 49 +++++++++++++++++++++++ + 2 files changed, 51 insertions(+) + create mode 100644 selftest/knownfail.d/samba4.ldap.passwords.python + +diff --git a/selftest/knownfail.d/samba4.ldap.passwords.python b/selftest/knownfail.d/samba4.ldap.passwords.python +new file mode 100644 +index 0000000..343c5a7 +--- /dev/null ++++ b/selftest/knownfail.d/samba4.ldap.passwords.python +@@ -0,0 +1,2 @@ ++samba4.ldap.passwords.python.*.__main__.PasswordTests.test_pw_change_delete_no_value_userPassword ++samba4.ldap.passwords.python.*.__main__.PasswordTests.test_pw_change_delete_no_value_unicodePwd +diff --git a/source4/dsdb/tests/python/passwords.py b/source4/dsdb/tests/python/passwords.py +index fb3eee5..c50f2b6 100755 +--- a/source4/dsdb/tests/python/passwords.py ++++ b/source4/dsdb/tests/python/passwords.py +@@ -931,6 +931,55 @@ userPassword: thatsAcomplPASS4 + # Reset the "minPwdLength" as it was before + self.ldb.set_minPwdLength(minPwdLength) + ++ def test_pw_change_delete_no_value_userPassword(self): ++ """Test password change with userPassword where the delete attribute doesn't have a value""" ++ ++ try: ++ self.ldb2.modify_ldif(""" ++dn: cn=testuser,cn=users,""" + self.base_dn + """ ++changetype: modify ++delete: userPassword ++add: userPassword ++userPassword: thatsAcomplPASS1 ++""") ++ except LdbError, (num, msg): ++ self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) ++ else: ++ self.fail() ++ ++ def test_pw_change_delete_no_value_clearTextPassword(self): ++ """Test password change with clearTextPassword where the delete attribute doesn't have a value""" ++ ++ try: ++ self.ldb2.modify_ldif(""" ++dn: cn=testuser,cn=users,""" + self.base_dn + """ ++changetype: modify ++delete: clearTextPassword ++add: clearTextPassword ++clearTextPassword: thatsAcomplPASS2 ++""") ++ except LdbError, (num, msg): ++ self.assertTrue(num == ERR_CONSTRAINT_VIOLATION or ++ num == ERR_NO_SUCH_ATTRIBUTE) # for Windows ++ else: ++ self.fail() ++ ++ def test_pw_change_delete_no_value_unicodePwd(self): ++ """Test password change with unicodePwd where the delete attribute doesn't have a value""" ++ ++ try: ++ self.ldb2.modify_ldif(""" ++dn: cn=testuser,cn=users,""" + self.base_dn + """ ++changetype: modify ++delete: unicodePwd ++add: unicodePwd ++unicodePwd:: """ + base64.b64encode("\"thatsAcomplPASS3\"".encode('utf-16-le')) + """ ++""") ++ except LdbError, (num, msg): ++ self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) ++ else: ++ self.fail() ++ + def tearDown(self): + super(PasswordTests, self).tearDown() + delete_force(self.ldb, "cn=testuser,cn=users," + self.base_dn) +-- +1.9.1 + + +From 35f8367aa64955d9f34beac9a62f8336e5e6c510 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 10:56:06 +0100 +Subject: [PATCH 02/13] CVE-2018-1057: s4:dsdb/password_hash: add a helper + variable for LDB_FLAG_MOD_TYPE + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/password_hash.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/source4/dsdb/samdb/ldb_modules/password_hash.c b/source4/dsdb/samdb/ldb_modules/password_hash.c +index 05b0854..aa3871d 100644 +--- a/source4/dsdb/samdb/ldb_modules/password_hash.c ++++ b/source4/dsdb/samdb/ldb_modules/password_hash.c +@@ -3152,17 +3152,20 @@ static int password_hash_modify(struct ldb_module *module, struct ldb_request *r + } + + while ((passwordAttr = ldb_msg_find_element(msg, *l)) != NULL) { +- if (LDB_FLAG_MOD_TYPE(passwordAttr->flags) == LDB_FLAG_MOD_DELETE) { ++ unsigned int mtype = LDB_FLAG_MOD_TYPE(passwordAttr->flags); ++ ++ if (mtype == LDB_FLAG_MOD_DELETE) { + ++del_attr_cnt; + } +- if (LDB_FLAG_MOD_TYPE(passwordAttr->flags) == LDB_FLAG_MOD_ADD) { ++ if (mtype == LDB_FLAG_MOD_ADD) { + ++add_attr_cnt; + } +- if (LDB_FLAG_MOD_TYPE(passwordAttr->flags) == LDB_FLAG_MOD_REPLACE) { ++ if (mtype == LDB_FLAG_MOD_REPLACE) { + ++rep_attr_cnt; + } + if ((passwordAttr->num_values != 1) && +- (LDB_FLAG_MOD_TYPE(passwordAttr->flags) == LDB_FLAG_MOD_ADD)) { ++ (mtype == LDB_FLAG_MOD_ADD)) ++ { + talloc_free(ac); + ldb_asprintf_errstring(ldb, + "'%s' attribute must have exactly one value on add operations!", +@@ -3170,7 +3173,8 @@ static int password_hash_modify(struct ldb_module *module, struct ldb_request *r + return LDB_ERR_CONSTRAINT_VIOLATION; + } + if ((passwordAttr->num_values > 1) && +- (LDB_FLAG_MOD_TYPE(passwordAttr->flags) == LDB_FLAG_MOD_DELETE)) { ++ (mtype == LDB_FLAG_MOD_DELETE)) ++ { + talloc_free(ac); + ldb_asprintf_errstring(ldb, + "'%s' attribute must have zero or one value(s) on delete operations!", +-- +1.9.1 + + +From 63c91916d15f355e7179292fac998056c0bd6a44 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 14:40:59 +0100 +Subject: [PATCH 03/13] CVE-2018-1057: s4:dsdb/password_hash: add a helper + variable for passwordAttr->num_values + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/password_hash.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/source4/dsdb/samdb/ldb_modules/password_hash.c b/source4/dsdb/samdb/ldb_modules/password_hash.c +index aa3871d..690bb98 100644 +--- a/source4/dsdb/samdb/ldb_modules/password_hash.c ++++ b/source4/dsdb/samdb/ldb_modules/password_hash.c +@@ -3153,6 +3153,7 @@ static int password_hash_modify(struct ldb_module *module, struct ldb_request *r + + while ((passwordAttr = ldb_msg_find_element(msg, *l)) != NULL) { + unsigned int mtype = LDB_FLAG_MOD_TYPE(passwordAttr->flags); ++ unsigned int nvalues = passwordAttr->num_values; + + if (mtype == LDB_FLAG_MOD_DELETE) { + ++del_attr_cnt; +@@ -3163,18 +3164,14 @@ static int password_hash_modify(struct ldb_module *module, struct ldb_request *r + if (mtype == LDB_FLAG_MOD_REPLACE) { + ++rep_attr_cnt; + } +- if ((passwordAttr->num_values != 1) && +- (mtype == LDB_FLAG_MOD_ADD)) +- { ++ if ((nvalues != 1) && (mtype == LDB_FLAG_MOD_ADD)) { + talloc_free(ac); + ldb_asprintf_errstring(ldb, + "'%s' attribute must have exactly one value on add operations!", + *l); + return LDB_ERR_CONSTRAINT_VIOLATION; + } +- if ((passwordAttr->num_values > 1) && +- (mtype == LDB_FLAG_MOD_DELETE)) +- { ++ if ((nvalues > 1) && (mtype == LDB_FLAG_MOD_DELETE)) { + talloc_free(ac); + ldb_asprintf_errstring(ldb, + "'%s' attribute must have zero or one value(s) on delete operations!", +-- +1.9.1 + + +From 895b1d2c9cbbde96646146a3c7b93bd326aada55 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 17:38:31 +0100 +Subject: [PATCH 04/13] CVE-2018-1057: s4:dsdb/acl: only call dsdb_acl_debug() + if we checked the acl in acl_check_password_rights() + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 62e560f..aa1660c 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -989,12 +989,14 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + GUID_DRS_USER_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, + sid); ++ goto checked; + } + else if (rep_attr_cnt > 0 || (add_attr_cnt != del_attr_cnt)) { + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_FORCE_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, + sid); ++ goto checked; + } + else if (add_attr_cnt == 1 && del_attr_cnt == 1) { + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), +@@ -1005,7 +1007,13 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + if (ret == LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS) { + ret = LDB_ERR_CONSTRAINT_VIOLATION; + } ++ goto checked; + } ++ ++ talloc_free(tmp_ctx); ++ return LDB_SUCCESS; ++ ++checked: + if (ret != LDB_SUCCESS) { + dsdb_acl_debug(sd, acl_user_token(module), + req->op.mod.message->dn, +-- +1.9.1 + + +From db056b588d40c4c6995ee882286042dbf383f502 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 17:38:31 +0100 +Subject: [PATCH 05/13] CVE-2018-1057: s4:dsdb/acl: remove unused else branches + in acl_check_password_rights() + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index aa1660c..5ec5fd3 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -991,14 +991,24 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + sid); + goto checked; + } +- else if (rep_attr_cnt > 0 || (add_attr_cnt != del_attr_cnt)) { ++ ++ if (rep_attr_cnt > 0) { + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_FORCE_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, + sid); + goto checked; + } +- else if (add_attr_cnt == 1 && del_attr_cnt == 1) { ++ ++ if (add_attr_cnt != del_attr_cnt) { ++ ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), ++ GUID_DRS_FORCE_CHANGE_PASSWORD, ++ SEC_ADS_CONTROL_ACCESS, ++ sid); ++ goto checked; ++ } ++ ++ if (add_attr_cnt == 1 && del_attr_cnt == 1) { + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_USER_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, +-- +1.9.1 + + +From ff82d4c547476751f4506092517952ac682ec38c Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 22:59:24 +0100 +Subject: [PATCH 06/13] CVE-2018-1057: s4:dsdb/acl: check for internal controls + before other checks + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 37 ++++++++++++++++++++++-------------- + 1 file changed, 23 insertions(+), 14 deletions(-) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 5ec5fd3..56ba988 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -943,10 +943,33 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + unsigned int del_attr_cnt = 0, add_attr_cnt = 0, rep_attr_cnt = 0; + struct ldb_message_element *el; + struct ldb_message *msg; ++ struct ldb_control *c = NULL; + const char *passwordAttrs[] = { "userPassword", "clearTextPassword", + "unicodePwd", "dBCSPwd", NULL }, **l; + TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx); + ++ c = ldb_request_get_control(req, DSDB_CONTROL_PASSWORD_CHANGE_OID); ++ if (c != NULL) { ++ /* ++ * The "DSDB_CONTROL_PASSWORD_CHANGE_OID" control means that we ++ * have a user password change and not a set as the message ++ * looks like. In it's value blob it contains the NT and/or LM ++ * hash of the old password specified by the user. This control ++ * is used by the SAMR and "kpasswd" password change mechanisms. ++ * ++ * This control can't be used by real LDAP clients, ++ * the only caller is samdb_set_password_internal(), ++ * so we don't have to strict verification of the input. ++ */ ++ ret = acl_check_extended_right(tmp_ctx, ++ sd, ++ acl_user_token(module), ++ GUID_DRS_USER_CHANGE_PASSWORD, ++ SEC_ADS_CONTROL_ACCESS, ++ sid); ++ goto checked; ++ } ++ + msg = ldb_msg_copy_shallow(tmp_ctx, req->op.mod.message); + if (msg == NULL) { + return ldb_module_oom(module); +@@ -977,20 +1000,6 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + return LDB_SUCCESS; + } + +- if (ldb_request_get_control(req, +- DSDB_CONTROL_PASSWORD_CHANGE_OID) != NULL) { +- /* The "DSDB_CONTROL_PASSWORD_CHANGE_OID" control means that we +- * have a user password change and not a set as the message +- * looks like. In it's value blob it contains the NT and/or LM +- * hash of the old password specified by the user. +- * This control is used by the SAMR and "kpasswd" password +- * change mechanisms. */ +- ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), +- GUID_DRS_USER_CHANGE_PASSWORD, +- SEC_ADS_CONTROL_ACCESS, +- sid); +- goto checked; +- } + + if (rep_attr_cnt > 0) { + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), +-- +1.9.1 + + +From 5c92da9918e2ccbcb39db2b060406f05973c0a24 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 17:43:43 +0100 +Subject: [PATCH 07/13] CVE-2018-1057: s4:dsdb/acl: add check for + DSDB_CONTROL_PASSWORD_HASH_VALUES_OID control + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 56ba988..00d52fe 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -970,6 +970,26 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + goto checked; + } + ++ c = ldb_request_get_control(req, DSDB_CONTROL_PASSWORD_HASH_VALUES_OID); ++ if (c != NULL) { ++ /* ++ * The "DSDB_CONTROL_PASSWORD_HASH_VALUES_OID" control, without ++ * "DSDB_CONTROL_PASSWORD_CHANGE_OID" control means that we ++ * have a force password set. ++ * This control is used by the SAMR/NETLOGON/LSA password ++ * reset mechanisms. ++ * ++ * This control can't be used by real LDAP clients, ++ * the only caller is samdb_set_password_internal(), ++ * so we don't have to strict verification of the input. ++ */ ++ ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), ++ GUID_DRS_FORCE_CHANGE_PASSWORD, ++ SEC_ADS_CONTROL_ACCESS, ++ sid); ++ goto checked; ++ } ++ + msg = ldb_msg_copy_shallow(tmp_ctx, req->op.mod.message); + if (msg == NULL) { + return ldb_module_oom(module); +-- +1.9.1 + + +From 6417b18bc767d471e3c88935073acdc19448dc54 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Fri, 16 Feb 2018 15:17:26 +0100 +Subject: [PATCH 08/13] CVE-2018-1057: s4:dsdb/acl: add a NULL check for + talloc_new() in acl_check_password_rights() + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 00d52fe..4146cbc 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -948,6 +948,10 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + "unicodePwd", "dBCSPwd", NULL }, **l; + TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx); + ++ if (tmp_ctx == NULL) { ++ return LDB_ERR_OPERATIONS_ERROR; ++ } ++ + c = ldb_request_get_control(req, DSDB_CONTROL_PASSWORD_CHANGE_OID); + if (c != NULL) { + /* +-- +1.9.1 + + +From bf6c7e1b4510242750de64b0a7a112c2024b4372 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 22 Feb 2018 10:54:37 +0100 +Subject: [PATCH 09/13] CVE-2018-1057: s4/dsdb: correctly detect password + resets + +This change ensures we correctly treat the following LDIF + + dn: cn=testuser,cn=users,... + changetype: modify + delete: userPassword + add: userPassword + userPassword: thatsAcomplPASS1 + +as a password reset. Because delete and add element counts are both +one, the ACL module wrongly treated this as a password change +request. + +For a password change we need at least one value to delete and one value +to add. This patch ensures we correctly check attributes and their +values. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + selftest/knownfail.d/samba4.ldap.passwords.python | 2 -- + source4/dsdb/samdb/ldb_modules/acl.c | 18 +++++++++++++++++- + 2 files changed, 17 insertions(+), 3 deletions(-) + delete mode 100644 selftest/knownfail.d/samba4.ldap.passwords.python + +diff --git a/selftest/knownfail.d/samba4.ldap.passwords.python b/selftest/knownfail.d/samba4.ldap.passwords.python +deleted file mode 100644 +index 343c5a7..0000000 +--- a/selftest/knownfail.d/samba4.ldap.passwords.python ++++ /dev/null +@@ -1,2 +0,0 @@ +-samba4.ldap.passwords.python.*.__main__.PasswordTests.test_pw_change_delete_no_value_userPassword +-samba4.ldap.passwords.python.*.__main__.PasswordTests.test_pw_change_delete_no_value_unicodePwd +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 4146cbc..7a003df 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -941,6 +941,7 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + { + int ret = LDB_SUCCESS; + unsigned int del_attr_cnt = 0, add_attr_cnt = 0, rep_attr_cnt = 0; ++ unsigned int del_val_cnt = 0, add_val_cnt = 0, rep_val_cnt = 0; + struct ldb_message_element *el; + struct ldb_message *msg; + struct ldb_control *c = NULL; +@@ -1006,12 +1007,15 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + while ((el = ldb_msg_find_element(msg, *l)) != NULL) { + if (LDB_FLAG_MOD_TYPE(el->flags) == LDB_FLAG_MOD_DELETE) { + ++del_attr_cnt; ++ del_val_cnt += el->num_values; + } + if (LDB_FLAG_MOD_TYPE(el->flags) == LDB_FLAG_MOD_ADD) { + ++add_attr_cnt; ++ add_val_cnt += el->num_values; + } + if (LDB_FLAG_MOD_TYPE(el->flags) == LDB_FLAG_MOD_REPLACE) { + ++rep_attr_cnt; ++ rep_val_cnt += el->num_values; + } + ldb_msg_remove_element(msg, el); + } +@@ -1041,7 +1045,7 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + goto checked; + } + +- if (add_attr_cnt == 1 && del_attr_cnt == 1) { ++ if (add_val_cnt == 1 && del_val_cnt == 1) { + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_USER_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, +@@ -1053,6 +1057,18 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + goto checked; + } + ++ if (add_val_cnt == 1 && del_val_cnt == 0) { ++ ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), ++ GUID_DRS_FORCE_CHANGE_PASSWORD, ++ SEC_ADS_CONTROL_ACCESS, ++ sid); ++ /* Very strange, but we get constraint violation in this case */ ++ if (ret == LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS) { ++ ret = LDB_ERR_CONSTRAINT_VIOLATION; ++ } ++ goto checked; ++ } ++ + talloc_free(tmp_ctx); + return LDB_SUCCESS; + +-- +1.9.1 + + +From fba762e9d7599e4e2f5022a1486f3ab777d18e6d Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Wed, 14 Feb 2018 19:15:49 +0100 +Subject: [PATCH 10/13] CVE-2018-1057: s4:dsdb/acl: run password checking only + once + +This is needed, because a later commit will let the acl module add a +control to the change request msg and we must ensure that this is only +done once. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 7a003df..c239c01 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -1097,6 +1097,7 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req) + struct ldb_control *as_system; + struct ldb_control *is_undelete; + bool userPassword; ++ bool password_rights_checked = false; + TALLOC_CTX *tmp_ctx; + const struct ldb_message *msg = req->op.mod.message; + static const char *acl_attrs[] = { +@@ -1242,6 +1243,9 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req) + } else if (ldb_attr_cmp("unicodePwd", el->name) == 0 || + (userPassword && ldb_attr_cmp("userPassword", el->name) == 0) || + ldb_attr_cmp("clearTextPassword", el->name) == 0) { ++ if (password_rights_checked) { ++ continue; ++ } + ret = acl_check_password_rights(tmp_ctx, + module, + req, +@@ -1252,6 +1256,7 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req) + if (ret != LDB_SUCCESS) { + goto fail; + } ++ password_rights_checked = true; + } else if (ldb_attr_cmp("servicePrincipalName", el->name) == 0) { + ret = acl_check_spn(tmp_ctx, + module, +-- +1.9.1 + + +From bc733fce398658e2c280dae4ba5041113e7cd500 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Fri, 16 Feb 2018 15:30:13 +0100 +Subject: [PATCH 11/13] CVE-2018-1057: s4:dsdb/samdb: define + DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID control + +Will be used to pass "user password change" vs "password reset" from the +ACL to the password_hash module, ensuring both modules treat the request +identical. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/samdb.h | 9 +++++++++ + source4/libcli/ldap/ldap_controls.c | 1 + + source4/setup/schema_samba4.ldif | 2 ++ + 3 files changed, 12 insertions(+) + +diff --git a/source4/dsdb/samdb/samdb.h b/source4/dsdb/samdb/samdb.h +index 0a1d90d..98faa4f 100644 +--- a/source4/dsdb/samdb/samdb.h ++++ b/source4/dsdb/samdb/samdb.h +@@ -158,6 +158,15 @@ struct dsdb_control_password_change { + */ + #define DSDB_CONTROL_CHANGEREPLMETADATA_RESORT_OID "1.3.6.1.4.1.7165.4.3.25" + ++/* ++ * Used to pass "user password change" vs "password reset" from the ACL to the ++ * password_hash module, ensuring both modules treat the request identical. ++ */ ++#define DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID "1.3.6.1.4.1.7165.4.3.33" ++struct dsdb_control_password_acl_validation { ++ bool pwd_reset; ++}; ++ + #define DSDB_EXTENDED_REPLICATED_OBJECTS_OID "1.3.6.1.4.1.7165.4.4.1" + struct dsdb_extended_replicated_object { + struct ldb_message *msg; +diff --git a/source4/libcli/ldap/ldap_controls.c b/source4/libcli/ldap/ldap_controls.c +index 14a80af..7837e05 100644 +--- a/source4/libcli/ldap/ldap_controls.c ++++ b/source4/libcli/ldap/ldap_controls.c +@@ -1281,6 +1281,7 @@ static const struct ldap_control_handler ldap_known_controls[] = { + { DSDB_CONTROL_PASSWORD_CHANGE_STATUS_OID, NULL, NULL }, + { DSDB_CONTROL_PASSWORD_HASH_VALUES_OID, NULL, NULL }, + { DSDB_CONTROL_PASSWORD_CHANGE_OID, NULL, NULL }, ++ { DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID, NULL, NULL }, + { DSDB_CONTROL_APPLY_LINKS, NULL, NULL }, + { LDB_CONTROL_BYPASS_OPERATIONAL_OID, NULL, NULL }, + { DSDB_CONTROL_CHANGEREPLMETADATA_OID, NULL, NULL }, +diff --git a/source4/setup/schema_samba4.ldif b/source4/setup/schema_samba4.ldif +index 69aa363..6e184bc 100644 +--- a/source4/setup/schema_samba4.ldif ++++ b/source4/setup/schema_samba4.ldif +@@ -200,6 +200,8 @@ + #Allocated: DSDB_CONTROL_PERMIT_INTERDOMAIN_TRUST_UAC_OID 1.3.6.1.4.1.7165.4.3.23 + #Allocated: DSDB_CONTROL_RESTORE_TOMBSTONE_OID 1.3.6.1.4.1.7165.4.3.24 + #Allocated: DSDB_CONTROL_CHANGEREPLMETADATA_RESORT_OID 1.3.6.1.4.1.7165.4.3.25 ++#Allocated: DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID 1.3.6.1.4.1.7165.4.3.33 ++ + + # Extended 1.3.6.1.4.1.7165.4.4.x + #Allocated: DSDB_EXTENDED_REPLICATED_OBJECTS_OID 1.3.6.1.4.1.7165.4.4.1 +-- +1.9.1 + + +From 7fc6a5ef5b1bad171dd6d2c019a4fe4c0ec00eb6 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Fri, 16 Feb 2018 15:38:19 +0100 +Subject: [PATCH 12/13] CVE-2018-1057: s4:dsdb: use + DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID + +This is used to pass information about which password change operation (change +or reset) the acl module validated, down to the password_hash module. + +It's very important that both modules treat the request identical. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 41 ++++++++++++++++++++++++-- + source4/dsdb/samdb/ldb_modules/password_hash.c | 30 ++++++++++++++++++- + 2 files changed, 67 insertions(+), 4 deletions(-) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index c239c01..17e1e67 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -948,13 +948,22 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + const char *passwordAttrs[] = { "userPassword", "clearTextPassword", + "unicodePwd", "dBCSPwd", NULL }, **l; + TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx); ++ struct dsdb_control_password_acl_validation *pav = NULL; + + if (tmp_ctx == NULL) { + return LDB_ERR_OPERATIONS_ERROR; + } + ++ pav = talloc_zero(req, struct dsdb_control_password_acl_validation); ++ if (pav == NULL) { ++ talloc_free(tmp_ctx); ++ return LDB_ERR_OPERATIONS_ERROR; ++ } ++ + c = ldb_request_get_control(req, DSDB_CONTROL_PASSWORD_CHANGE_OID); + if (c != NULL) { ++ pav->pwd_reset = false; ++ + /* + * The "DSDB_CONTROL_PASSWORD_CHANGE_OID" control means that we + * have a user password change and not a set as the message +@@ -977,6 +986,8 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + + c = ldb_request_get_control(req, DSDB_CONTROL_PASSWORD_HASH_VALUES_OID); + if (c != NULL) { ++ pav->pwd_reset = true; ++ + /* + * The "DSDB_CONTROL_PASSWORD_HASH_VALUES_OID" control, without + * "DSDB_CONTROL_PASSWORD_CHANGE_OID" control means that we +@@ -1030,6 +1041,8 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + + + if (rep_attr_cnt > 0) { ++ pav->pwd_reset = true; ++ + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_FORCE_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, +@@ -1038,6 +1051,8 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + } + + if (add_attr_cnt != del_attr_cnt) { ++ pav->pwd_reset = true; ++ + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_FORCE_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, +@@ -1046,6 +1061,8 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + } + + if (add_val_cnt == 1 && del_val_cnt == 1) { ++ pav->pwd_reset = false; ++ + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_USER_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, +@@ -1058,6 +1075,8 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + } + + if (add_val_cnt == 1 && del_val_cnt == 0) { ++ pav->pwd_reset = true; ++ + ret = acl_check_extended_right(tmp_ctx, sd, acl_user_token(module), + GUID_DRS_FORCE_CHANGE_PASSWORD, + SEC_ADS_CONTROL_ACCESS, +@@ -1069,6 +1088,14 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + goto checked; + } + ++ /* ++ * Everything else is handled by the password_hash module where it will ++ * fail, but with the correct error code when the module is again ++ * checking the attributes. As the change request will lack the ++ * DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID control, we can be sure that ++ * any modification attempt that went this way will be rejected. ++ */ ++ + talloc_free(tmp_ctx); + return LDB_SUCCESS; + +@@ -1078,11 +1105,19 @@ checked: + req->op.mod.message->dn, + true, + 10); ++ talloc_free(tmp_ctx); ++ return ret; + } +- talloc_free(tmp_ctx); +- return ret; +-} + ++ ret = ldb_request_add_control(req, ++ DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID, false, pav); ++ if (ret != LDB_SUCCESS) { ++ ldb_debug(ldb_module_get_ctx(module), LDB_DEBUG_ERROR, ++ "Unable to register ACL validation control!\n"); ++ return ret; ++ } ++ return LDB_SUCCESS; ++} + + static int acl_modify(struct ldb_module *module, struct ldb_request *req) + { +diff --git a/source4/dsdb/samdb/ldb_modules/password_hash.c b/source4/dsdb/samdb/ldb_modules/password_hash.c +index 690bb98..de565bc 100644 +--- a/source4/dsdb/samdb/ldb_modules/password_hash.c ++++ b/source4/dsdb/samdb/ldb_modules/password_hash.c +@@ -2572,7 +2572,35 @@ static int setup_io(struct ph_context *ac, + /* On "add" we have only "password reset" */ + ac->pwd_reset = true; + } else if (ac->req->operation == LDB_MODIFY) { +- if (io->og.cleartext_utf8 || io->og.cleartext_utf16 ++ struct ldb_control *pav_ctrl = NULL; ++ struct dsdb_control_password_acl_validation *pav = NULL; ++ ++ pav_ctrl = ldb_request_get_control(ac->req, ++ DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID); ++ if (pav_ctrl != NULL) { ++ pav = talloc_get_type_abort(pav_ctrl->data, ++ struct dsdb_control_password_acl_validation); ++ } ++ ++ if (pav == NULL) { ++ bool ok; ++ ++ /* ++ * If the DSDB_CONTROL_PASSWORD_ACL_VALIDATION_OID ++ * control is missing, we require system access! ++ */ ++ ok = dsdb_module_am_system(ac->module); ++ if (!ok) { ++ return ldb_module_operr(ac->module); ++ } ++ } ++ ++ if (pav != NULL) { ++ /* ++ * We assume what the acl module has validated. ++ */ ++ ac->pwd_reset = pav->pwd_reset; ++ } else if (io->og.cleartext_utf8 || io->og.cleartext_utf16 + || io->og.nt_hash || io->og.lm_hash) { + /* If we have an old password specified then for sure it + * is a user "password change" */ +-- +1.9.1 + + +From 0815e8653277383918530f8dd8afaeadfe8085d5 Mon Sep 17 00:00:00 2001 +From: Ralph Boehme +Date: Thu, 15 Feb 2018 23:11:38 +0100 +Subject: [PATCH 13/13] CVE-2018-1057: s4:dsdb/acl: changing dBCSPwd is only + allowed with a control + +This is not strictly needed to fig bug 13272, but it makes sense to also +fix this while fixing the overall ACL checking logic. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 + +Signed-off-by: Ralph Boehme +Reviewed-by: Stefan Metzmacher +--- + source4/dsdb/samdb/ldb_modules/acl.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c +index 17e1e67..8d9b780 100644 +--- a/source4/dsdb/samdb/ldb_modules/acl.c ++++ b/source4/dsdb/samdb/ldb_modules/acl.c +@@ -946,7 +946,7 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + struct ldb_message *msg; + struct ldb_control *c = NULL; + const char *passwordAttrs[] = { "userPassword", "clearTextPassword", +- "unicodePwd", "dBCSPwd", NULL }, **l; ++ "unicodePwd", NULL }, **l; + TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx); + struct dsdb_control_password_acl_validation *pav = NULL; + +@@ -1006,6 +1006,15 @@ static int acl_check_password_rights(TALLOC_CTX *mem_ctx, + goto checked; + } + ++ el = ldb_msg_find_element(req->op.mod.message, "dBCSPwd"); ++ if (el != NULL) { ++ /* ++ * dBCSPwd is only allowed with a control. ++ */ ++ talloc_free(tmp_ctx); ++ return LDB_ERR_UNWILLING_TO_PERFORM; ++ } ++ + msg = ldb_msg_copy_shallow(tmp_ctx, req->op.mod.message); + if (msg == NULL) { + return ldb_module_oom(module); +-- +1.9.1 + diff --git a/patches/source/samba/samba-4.5.14-security-2017-11-21.patch b/patches/source/samba/samba-4.5.14-security-2017-11-21.patch new file mode 100644 index 000000000..40b9dd084 --- /dev/null +++ b/patches/source/samba/samba-4.5.14-security-2017-11-21.patch @@ -0,0 +1,110 @@ +From 007f5b54d76bf69f441cc277b7f41f478e258aab Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Tue, 19 Sep 2017 16:11:33 -0700 +Subject: [PATCH 1/2] s3: smbd: Fix SMB1 use-after-free crash bug. + CVE-2017-14746 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When setting up the chain, always use 'next->' variables +not the 'req->' one. + +Bug discovered by 连一汉 + +CVE-2017-14746 + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13041 + +Signed-off-by: Jeremy Allison +--- + source3/smbd/process.c | 7 ++++--- + source3/smbd/reply.c | 5 +++++ + 2 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/source3/smbd/process.c b/source3/smbd/process.c +index 656f1c0a667..2641894d1d7 100644 +--- a/source3/smbd/process.c ++++ b/source3/smbd/process.c +@@ -1854,12 +1854,13 @@ void smb_request_done(struct smb_request *req) + + next->vuid = SVAL(req->outbuf, smb_uid); + next->tid = SVAL(req->outbuf, smb_tid); +- status = smb1srv_tcon_lookup(req->xconn, req->tid, ++ status = smb1srv_tcon_lookup(req->xconn, next->tid, + now, &tcon); ++ + if (NT_STATUS_IS_OK(status)) { +- req->conn = tcon->compat; ++ next->conn = tcon->compat; + } else { +- req->conn = NULL; ++ next->conn = NULL; + } + next->chain_fsp = req->chain_fsp; + next->inbuf = req->inbuf; +diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c +index a40ff81b240..26918b6d9d5 100644 +--- a/source3/smbd/reply.c ++++ b/source3/smbd/reply.c +@@ -921,6 +921,11 @@ void reply_tcon_and_X(struct smb_request *req) + } + + TALLOC_FREE(tcon); ++ /* ++ * This tree id is gone. Make sure we can't re-use it ++ * by accident. ++ */ ++ req->tid = 0; + } + + if ((passlen > MAX_PASS_LEN) || (passlen >= req->buflen)) { +-- +2.11.0 + + +From c1a22e59f87783d88dfbaeeb132b89be166b2754 Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Wed, 20 Sep 2017 11:04:50 -0700 +Subject: [PATCH 2/2] s3: smbd: Chain code can return uninitialized memory when + talloc buffer is grown. + +Ensure we zero out unused grown area. + +CVE-2017-15275 + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13077 + +Signed-off-by: Jeremy Allison +--- + source3/smbd/srvstr.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/source3/smbd/srvstr.c b/source3/smbd/srvstr.c +index 56dceba8c6c..c2d70b32c32 100644 +--- a/source3/smbd/srvstr.c ++++ b/source3/smbd/srvstr.c +@@ -110,6 +110,20 @@ ssize_t message_push_string(uint8_t **outbuf, const char *str, int flags) + DEBUG(0, ("srvstr_push failed\n")); + return -1; + } ++ ++ /* ++ * Ensure we clear out the extra data we have ++ * grown the buffer by, but not written to. ++ */ ++ if (buf_size + result < buf_size) { ++ return -1; ++ } ++ if (grow_size < result) { ++ return -1; ++ } ++ ++ memset(tmp + buf_size + result, '\0', grow_size - result); ++ + set_message_bcc((char *)tmp, smb_buflen(tmp) + result); + + *outbuf = tmp; +-- +2.11.0 + diff --git a/patches/source/samba/samba.SlackBuild b/patches/source/samba/samba.SlackBuild new file mode 100755 index 000000000..de6bbf45e --- /dev/null +++ b/patches/source/samba/samba.SlackBuild @@ -0,0 +1,224 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012, 2013, 2015, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2012 by Eric Hameleers for ARM port. + + +VERSION=${VERSION:-$(echo samba-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-3_slack14.2} + +if [ -e $CWD/machine.conf ]; then + . $CWD/machine.conf ] +elif [ -e /etc/slackbuild/machine.conf ]; then + . /etc/slackbuild/machine.conf ] +else + # Automatically determine the architecture we're building on: + if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac + fi + # Set CFLAGS/CXXFLAGS and LIBDIRSUFFIX: + if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" + elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + fi +fi + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-samba +rm -rf $PKG +mkdir -p $TMP $PKG + +if [ -r /usr/lib${LIBDIRSUFFIX}/libtalloc.so.? -a ! -r /var/log/packages/talloc* ]; then + echo "The Samba package needs to be removed before building to ensure that" + echo "talloc (and possibly other bundled libraries) are included in the build." + echo + echo "Removing the Samba package in 15 seconds, and then continuing with the build." + sleep 15 + removepkg samba +fi + +cd $TMP +rm -rf samba-$VERSION +tar xvf $CWD/samba-$VERSION.tar.xz || exit 1 +cd samba-$VERSION || exit 1 + +# Patch to install talloc/tevent/tdb libraries and includes: +zcat $CWD/samba.install.talloc.tevent.tdb.diff.gz | patch -p1 --verbose || exit 1 + +# Patch CVE-2017-14746 and CVE-2017-15275: +zcat $CWD/samba-4.5.14-security-2017-11-21.patch.gz | patch -p1 --verbose || exit 1 + +# Patch CVE-2018-1057: +zcat $CWD/samba-4.4.16-CVE-2018-1057.patch.gz | patch -p1 --verbose || exit 1 + +if [ ! -d source3/lib/cmdline ]; then + ( cd source3/lib + mkdir cmdline + cd cmdline + ln -sf ../../../source3/include/popt_common.h . ) +fi + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Some of these options could be auto-detected, but declaring them +# here doesn't hurt and helps document what features we're trying to +# build in. +# +# LDFLAGS are needed to avoid problems with missing symbols. +LDFLAGS="-Wl,--no-as-needed" \ +CFLAGS="$SLKCFLAGS" \ +./configure \ + --enable-fhs \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --includedir=/usr/include \ + --bindir=/usr/bin \ + --sbindir=/usr/sbin \ + --mandir=/usr/man \ + --sysconfdir=/etc \ + --with-configdir=/etc/samba \ + --with-piddir=/var/run \ + --with-privatedir=/var/lib/samba/private \ + --with-privatelibdir=/usr/lib${LIBDIRSUFFIX} \ + --with-modulesdir=/usr/lib${LIBDIRSUFFIX} \ + --with-lockdir=/var/cache/samba \ + --with-logfilebase=/var/log/samba \ + --localstatedir=/var \ + --enable-cups \ + --with-acl-support \ + --with-automount \ + --with-quotas \ + --with-syslog \ + --with-utmp \ + --with-winbind \ + --with-ldap \ + --with-ads \ + --without-pam \ + --build=$TARGET + # Gives errors: + #--builtin-libraries=replace,ccan \ + #--bundled-libraries=heimdal \ + +# -j options don't seem to work... [Yes they do! At least try to use -j below...] +JOBS=6 +MAXJOBS=6 +export JOBS MAXJOBS +make -j $MAXJOBS || make || exit 1 + +mkdir -p \ + $PKG/usr/doc/samba-$VERSION \ + $PKG/var/spool/samba \ + $PKG/var/log/samba \ + $PKG/var/lib/samba/private \ + $PKG/var/cache/samba +chmod 700 $PKG/var/lib/samba/private +chmod 1777 $PKG/var/spool/samba + +make install DESTDIR=$PKG || exit 1 + +# Install the smbprint script: +install -m0744 packaging/printing/smbprint $PKG/usr/bin/smbprint + +# Add a sample config file: +cat $CWD/smb.conf.default > $PKG/etc/samba/smb.conf-sample + +# Setup a default lmhosts file: +echo "127.0.0.1 localhost" > $PKG/etc/samba/lmhosts.new + +if [ ! -r $PKG/usr/bin/smbget ]; then + rm -f $PKG/usr/share/man/man1/smbget.1 +fi + +# We'll add rc.samba to the init directory, but chmod 644 so that it doesn't +# start by default: +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.samba > $PKG/etc/rc.d/rc.samba.new +chmod 644 $PKG/etc/rc.d/rc.samba.new + +mv $PKG/usr/share/man $PKG/usr +gzip -9 $PKG/usr/man/man?/*.? + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# PAM related stuff we don't use: +rm -r $PKG/usr/share/locale +rm -f $PKG/usr/man/man8/pam* + +cp -a \ + COPYING* MAINTAINERS Manifest PFIF.txt README* \ + Read-Manifest-Now Roadmap WHATSNEW.txt docs examples \ + $PKG/usr/doc/samba-$VERSION +# These are installed elsewhere: +rm -rf $PKG/usr/doc/samba-$VERSION/docs/htmldocs \ + $PKG/usr/doc/samba-$VERSION/docs/manpages +# Empty now? +rmdir $PKG/usr/doc/samba-$VERSION/docs 2> /dev/null +# I'm sorry, but when all this info is included in HTML, adding 7MB worth of +# PDF files just to have extra artwork is more fluff than I'll agree to. +rm -f $PKG/usr/doc/samba-$VERSION/docs/*.pdf +# Also redundant also: +rm -rf $PKG/usr/doc/samba-$VERSION/docs/docbook + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cat << EOF + +*** Be sure the package contains: + +drwxr-xr-x 2 root root 4096 May 3 15:46 /var/cache/samba/ +drwx------ 2 root root 1024 Mar 12 13:21 /var/lib/samba/private +drwxr-xr-x 2 root root 48 Aug 29 13:06 /var/log/samba/ +drwxrwxrwt 2 root root 1024 Mar 12 13:21 /var/spool/samba/ + +EOF + +cd $PKG +/sbin/makepkg -l y -c n $TMP/samba-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/samba/samba.install.talloc.tevent.tdb.diff b/patches/source/samba/samba.install.talloc.tevent.tdb.diff new file mode 100644 index 000000000..9410f2b71 --- /dev/null +++ b/patches/source/samba/samba.install.talloc.tevent.tdb.diff @@ -0,0 +1,102 @@ +--- ./lib/tevent/wscript.orig 2016-03-08 05:07:45.000000000 -0600 ++++ ./lib/tevent/wscript 2016-04-11 12:45:14.299532166 -0500 +@@ -92,11 +92,8 @@ + if bld.CONFIG_SET('HAVE_SOLARIS_PORTS'): + SRC += ' tevent_port.c' + +- if bld.env.standalone_tevent: +- bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' +- private_library = False +- else: +- private_library = True ++ bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' ++ private_library = False + + if not bld.CONFIG_SET('USING_SYSTEM_TEVENT'): + bld.SAMBA_LIBRARY('tevent', +--- ./lib/tdb/wscript.orig 2016-01-26 05:45:46.000000000 -0600 ++++ ./lib/tdb/wscript 2016-04-11 12:45:14.301532166 -0500 +@@ -117,11 +117,8 @@ + + COMMON_SRC = bld.SUBDIR('common', COMMON_FILES) + +- if bld.env.standalone_tdb: +- bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' +- private_library = False +- else: +- private_library = True ++ bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' ++ private_library = False + + if not bld.CONFIG_SET('USING_SYSTEM_TDB'): + +--- ./lib/talloc/wscript.orig 2016-04-11 12:45:14.295532166 -0500 ++++ ./lib/talloc/wscript 2016-04-11 12:45:26.761531768 -0500 +@@ -77,41 +77,39 @@ + def build(bld): + bld.RECURSE('lib/replace') + +- if bld.env.standalone_talloc: +- bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' +- bld.env.TALLOC_VERSION = VERSION +- private_library = False +- +- # should we also install the symlink to libtalloc1.so here? +- bld.SAMBA_LIBRARY('talloc-compat1-%s' % (VERSION), +- 'compat/talloc_compat1.c', +- public_deps='talloc', +- soname='libtalloc.so.1', +- pc_files=[], +- public_headers=[], +- enabled=bld.env.TALLOC_COMPAT1) +- +- testsuite_deps = 'talloc' +- if bld.CONFIG_SET('HAVE_PTHREAD'): +- testsuite_deps += ' pthread' +- +- bld.SAMBA_BINARY('talloc_testsuite', +- 'testsuite_main.c testsuite.c', +- testsuite_deps, +- install=False) +- +- bld.SAMBA_BINARY('talloc_test_magic_differs_helper', +- 'test_magic_differs_helper.c', +- 'talloc', install=False) ++ bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' ++ bld.env.TALLOC_VERSION = VERSION ++ private_library = False ++ ++ # should we also install the symlink to libtalloc1.so here? ++ bld.SAMBA_LIBRARY('talloc-compat1-%s' % (VERSION), ++ 'compat/talloc_compat1.c', ++ public_deps='talloc', ++ soname='libtalloc.so.1', ++ pc_files=[], ++ public_headers=[], ++ enabled=bld.env.TALLOC_COMPAT1) ++ ++ testsuite_deps = 'talloc' ++ if bld.CONFIG_SET('HAVE_PTHREAD'): ++ testsuite_deps += ' pthread' ++ ++ bld.SAMBA_BINARY('talloc_testsuite', ++ 'testsuite_main.c testsuite.c', ++ testsuite_deps, ++ install=False) ++ ++ bld.SAMBA_BINARY('talloc_test_magic_differs_helper', ++ 'test_magic_differs_helper.c', ++ 'talloc', install=False) + +- else: +- private_library = True + + if not bld.CONFIG_SET('USING_SYSTEM_TALLOC'): + + bld.SAMBA_LIBRARY('talloc', + 'talloc.c', + deps='replace', ++ includes='.', + abi_directory='ABI', + abi_match='talloc* _talloc*', + hide_symbols=True, diff --git a/patches/source/samba/samba.url b/patches/source/samba/samba.url new file mode 100644 index 000000000..2b35c1fb0 --- /dev/null +++ b/patches/source/samba/samba.url @@ -0,0 +1,2 @@ +https://download.samba.org/pub/samba/stable/samba-4.4.16.tar.gz +https://download.samba.org/pub/samba/stable/samba-4.4.16.tar.asc diff --git a/patches/source/samba/slack-desc b/patches/source/samba/slack-desc new file mode 100644 index 000000000..f4352c607 --- /dev/null +++ b/patches/source/samba/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +samba: samba (CIFS file and print server) +samba: +samba: Samba is a CIFS file and print server for CIFS clients. It allows +samba: you to make file space or printers on a Samba host available to CIFS +samba: clients (such as PCs running Windows). +samba: +samba: If you have any Windows file servers, you may be able to replace them +samba: or supplement them with Samba. One of Samba's big strengths is +samba: integration, so you can use it to tie together your Linux hosts and +samba: Windows PC clients. +samba: diff --git a/patches/source/samba/smb.conf.default b/patches/source/samba/smb.conf.default new file mode 100644 index 000000000..c41cfff60 --- /dev/null +++ b/patches/source/samba/smb.conf.default @@ -0,0 +1,223 @@ +# This is the main Samba configuration file. You should read the +# smb.conf(5) manual page in order to understand the options listed +# here. Samba has a huge number of configurable options (perhaps too +# many!) most of which are not shown in this example +# +# For a step to step guide on installing, configuring and using samba, +# read the Samba-HOWTO-Collection. This may be obtained from: +# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf +# +# Many working examples of smb.conf files can be found in the +# Samba-Guide which is generated daily and can be downloaded from: +# http://www.samba.org/samba/docs/Samba-Guide.pdf +# +# Any line which starts with a ; (semi-colon) or a # (hash) +# is a comment and is ignored. In this example we will use a # +# for commentry and a ; for parts of the config file that you +# may wish to enable +# +# NOTE: Whenever you modify this file you should run the command "testparm" +# to check that you have not made any basic syntactic errors. +# +#======================= Global Settings ===================================== +[global] + +# workgroup = NT-Domain-Name or Workgroup-Name, eg: LINUX2 + workgroup = MYGROUP + +# server string is the equivalent of the NT Description field + server string = Samba Server + +# Server role. Defines in which mode Samba will operate. Possible +# values are "standalone server", "member server", "classic primary +# domain controller", "classic backup domain controller", "active +# directory domain controller". +# +# Most people will want "standalone sever" or "member server". +# Running as "active directory domain controller" will require first +# running "samba-tool domain provision" to wipe databases and create a +# new domain. + server role = standalone server + +# This option is important for security. It allows you to restrict +# connections to machines which are on your local network. The +# following example restricts access to two C class networks and +# the "loopback" interface. For more examples of the syntax see +# the smb.conf man page +; hosts allow = 192.168.1. 192.168.2. 127. + +# Uncomment this if you want a guest account, you must add this to /etc/passwd +# otherwise the user "nobody" is used +; guest account = pcguest + +# this tells Samba to use a separate log file for each machine +# that connects + log file = /var/log/samba.%m + +# Put a capping on the size of the log files (in Kb). + max log size = 50 + +# Specifies the Kerberos or Active Directory realm the host is part of +; realm = MY_REALM + +# Backend to store user information in. New installations should +# use either tdbsam or ldapsam. smbpasswd is available for backwards +# compatibility. tdbsam requires no further configuration. +; passdb backend = tdbsam + +# Using the following line enables you to customise your configuration +# on a per machine basis. The %m gets replaced with the netbios name +# of the machine that is connecting. +# Note: Consider carefully the location in the configuration file of +# this line. The included file is read at that point. +; include = /usr/local/samba/lib/smb.conf.%m + +# Configure Samba to use multiple interfaces +# If you have multiple network interfaces then you must list them +# here. See the man page for details. +; interfaces = 192.168.12.2/24 192.168.13.2/24 + +# Where to store roving profiles (only for Win95 and WinNT) +# %L substitutes for this servers netbios name, %U is username +# You must uncomment the [Profiles] share below +; logon path = \\%L\Profiles\%U + +# Windows Internet Name Serving Support Section: +# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server +; wins support = yes + +# WINS Server - Tells the NMBD components of Samba to be a WINS Client +# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both +; wins server = w.x.y.z + +# WINS Proxy - Tells Samba to answer name resolution queries on +# behalf of a non WINS capable client, for this to work there must be +# at least one WINS Server on the network. The default is NO. +; wins proxy = yes + +# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names +# via DNS nslookups. The default is NO. + dns proxy = no + +# These scripts are used on a domain controller or stand-alone +# machine to add or delete corresponding unix accounts +; add user script = /usr/sbin/useradd %u +; add group script = /usr/sbin/groupadd %g +; add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u +; delete user script = /usr/sbin/userdel %u +; delete user from group script = /usr/sbin/deluser %u %g +; delete group script = /usr/sbin/groupdel %g + + +#============================ Share Definitions ============================== +[homes] + comment = Home Directories + browseable = no + writable = yes + +# Un-comment the following and create the netlogon directory for Domain Logons +; [netlogon] +; comment = Network Logon Service +; path = /usr/local/samba/lib/netlogon +; guest ok = yes +; writable = no +; share modes = no + + +# Un-comment the following to provide a specific roving profile share +# the default is to use the user's home directory +;[Profiles] +; path = /usr/local/samba/profiles +; browseable = no +; guest ok = yes + + +# NOTE: If you have a BSD-style print system there is no need to +# specifically define each individual printer +[printers] + comment = All Printers + path = /var/spool/samba + browseable = no +# Set public = yes to allow user 'guest account' to print + guest ok = no + writable = no + printable = yes + +# This one is useful for people to share files +;[tmp] +; comment = Temporary file space +; path = /tmp +; read only = no +; public = yes + +# A publicly accessible directory, but read only, except for people in +# the "staff" group +;[public] +; comment = Public Stuff +; path = /home/samba +; public = yes +; writable = no +; printable = no +; write list = @staff + +# Other examples. +# +# A private printer, usable only by fred. Spool data will be placed in fred's +# home directory. Note that fred must have write access to the spool directory, +# wherever it is. +;[fredsprn] +; comment = Fred's Printer +; valid users = fred +; path = /homes/fred +; printer = freds_printer +; public = no +; writable = no +; printable = yes + +# A private directory, usable only by fred. Note that fred requires write +# access to the directory. +;[fredsdir] +; comment = Fred's Service +; path = /usr/somewhere/private +; valid users = fred +; public = no +; writable = yes +; printable = no + +# a service which has a different directory for each machine that connects +# this allows you to tailor configurations to incoming machines. You could +# also use the %U option to tailor it by user name. +# The %m gets replaced with the machine name that is connecting. +;[pchome] +; comment = PC Directories +; path = /usr/pc/%m +; public = no +; writable = yes + +# A publicly accessible directory, read/write to all users. Note that all files +# created in the directory by users will be owned by the default user, so +# any user with access can delete any other user's files. Obviously this +# directory must be writable by the default user. Another user could of course +# be specified, in which case all files would be owned by that user instead. +;[public] +; path = /usr/somewhere/else/public +; public = yes +; only guest = yes +; writable = yes +; printable = no + +# The following two entries demonstrate how to share a directory so that two +# users can place files there that will be owned by the specific users. In this +# setup, the directory should be writable by both users and should have the +# sticky bit set on it to prevent abuse. Obviously this could be extended to +# as many users as required. +;[myshare] +; comment = Mary's and Fred's stuff +; path = /usr/somewhere/shared +; valid users = mary fred +; public = no +; writable = yes +; printable = no +; create mask = 0765 + + diff --git a/patches/source/samba/smb.conf.default.orig b/patches/source/samba/smb.conf.default.orig new file mode 100644 index 000000000..bb9c2e25e --- /dev/null +++ b/patches/source/samba/smb.conf.default.orig @@ -0,0 +1,223 @@ +# This is the main Samba configuration file. You should read the +# smb.conf(5) manual page in order to understand the options listed +# here. Samba has a huge number of configurable options (perhaps too +# many!) most of which are not shown in this example +# +# For a step to step guide on installing, configuring and using samba, +# read the Samba-HOWTO-Collection. This may be obtained from: +# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf +# +# Many working examples of smb.conf files can be found in the +# Samba-Guide which is generated daily and can be downloaded from: +# http://www.samba.org/samba/docs/Samba-Guide.pdf +# +# Any line which starts with a ; (semi-colon) or a # (hash) +# is a comment and is ignored. In this example we will use a # +# for commentry and a ; for parts of the config file that you +# may wish to enable +# +# NOTE: Whenever you modify this file you should run the command "testparm" +# to check that you have not made any basic syntactic errors. +# +#======================= Global Settings ===================================== +[global] + +# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH + workgroup = MYGROUP + +# server string is the equivalent of the NT Description field + server string = Samba Server + +# Server role. Defines in which mode Samba will operate. Possible +# values are "standalone server", "member server", "classic primary +# domain controller", "classic backup domain controller", "active +# directory domain controller". +# +# Most people will want "standalone sever" or "member server". +# Running as "active directory domain controller" will require first +# running "samba-tool domain provision" to wipe databases and create a +# new domain. + server role = standalone server + +# This option is important for security. It allows you to restrict +# connections to machines which are on your local network. The +# following example restricts access to two C class networks and +# the "loopback" interface. For more examples of the syntax see +# the smb.conf man page +; hosts allow = 192.168.1. 192.168.2. 127. + +# Uncomment this if you want a guest account, you must add this to /etc/passwd +# otherwise the user "nobody" is used +; guest account = pcguest + +# this tells Samba to use a separate log file for each machine +# that connects + log file = /usr/local/samba/var/log.%m + +# Put a capping on the size of the log files (in Kb). + max log size = 50 + +# Specifies the Kerberos or Active Directory realm the host is part of +; realm = MY_REALM + +# Backend to store user information in. New installations should +# use either tdbsam or ldapsam. smbpasswd is available for backwards +# compatibility. tdbsam requires no further configuration. +; passdb backend = tdbsam + +# Using the following line enables you to customise your configuration +# on a per machine basis. The %m gets replaced with the netbios name +# of the machine that is connecting. +# Note: Consider carefully the location in the configuration file of +# this line. The included file is read at that point. +; include = /usr/local/samba/lib/smb.conf.%m + +# Configure Samba to use multiple interfaces +# If you have multiple network interfaces then you must list them +# here. See the man page for details. +; interfaces = 192.168.12.2/24 192.168.13.2/24 + +# Where to store roving profiles (only for Win95 and WinNT) +# %L substitutes for this servers netbios name, %U is username +# You must uncomment the [Profiles] share below +; logon path = \\%L\Profiles\%U + +# Windows Internet Name Serving Support Section: +# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server +; wins support = yes + +# WINS Server - Tells the NMBD components of Samba to be a WINS Client +# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both +; wins server = w.x.y.z + +# WINS Proxy - Tells Samba to answer name resolution queries on +# behalf of a non WINS capable client, for this to work there must be +# at least one WINS Server on the network. The default is NO. +; wins proxy = yes + +# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names +# via DNS nslookups. The default is NO. + dns proxy = no + +# These scripts are used on a domain controller or stand-alone +# machine to add or delete corresponding unix accounts +; add user script = /usr/sbin/useradd %u +; add group script = /usr/sbin/groupadd %g +; add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u +; delete user script = /usr/sbin/userdel %u +; delete user from group script = /usr/sbin/deluser %u %g +; delete group script = /usr/sbin/groupdel %g + + +#============================ Share Definitions ============================== +[homes] + comment = Home Directories + browseable = no + writable = yes + +# Un-comment the following and create the netlogon directory for Domain Logons +; [netlogon] +; comment = Network Logon Service +; path = /usr/local/samba/lib/netlogon +; guest ok = yes +; writable = no +; share modes = no + + +# Un-comment the following to provide a specific roving profile share +# the default is to use the user's home directory +;[Profiles] +; path = /usr/local/samba/profiles +; browseable = no +; guest ok = yes + + +# NOTE: If you have a BSD-style print system there is no need to +# specifically define each individual printer +[printers] + comment = All Printers + path = /usr/spool/samba + browseable = no +# Set public = yes to allow user 'guest account' to print + guest ok = no + writable = no + printable = yes + +# This one is useful for people to share files +;[tmp] +; comment = Temporary file space +; path = /tmp +; read only = no +; public = yes + +# A publicly accessible directory, but read only, except for people in +# the "staff" group +;[public] +; comment = Public Stuff +; path = /home/samba +; public = yes +; writable = no +; printable = no +; write list = @staff + +# Other examples. +# +# A private printer, usable only by fred. Spool data will be placed in fred's +# home directory. Note that fred must have write access to the spool directory, +# wherever it is. +;[fredsprn] +; comment = Fred's Printer +; valid users = fred +; path = /homes/fred +; printer = freds_printer +; public = no +; writable = no +; printable = yes + +# A private directory, usable only by fred. Note that fred requires write +# access to the directory. +;[fredsdir] +; comment = Fred's Service +; path = /usr/somewhere/private +; valid users = fred +; public = no +; writable = yes +; printable = no + +# a service which has a different directory for each machine that connects +# this allows you to tailor configurations to incoming machines. You could +# also use the %U option to tailor it by user name. +# The %m gets replaced with the machine name that is connecting. +;[pchome] +; comment = PC Directories +; path = /usr/pc/%m +; public = no +; writable = yes + +# A publicly accessible directory, read/write to all users. Note that all files +# created in the directory by users will be owned by the default user, so +# any user with access can delete any other user's files. Obviously this +# directory must be writable by the default user. Another user could of course +# be specified, in which case all files would be owned by that user instead. +;[public] +; path = /usr/somewhere/else/public +; public = yes +; only guest = yes +; writable = yes +; printable = no + +# The following two entries demonstrate how to share a directory so that two +# users can place files there that will be owned by the specific users. In this +# setup, the directory should be writable by both users and should have the +# sticky bit set on it to prevent abuse. Obviously this could be extended to +# as many users as required. +;[myshare] +; comment = Mary's and Fred's stuff +; path = /usr/somewhere/shared +; valid users = mary fred +; public = no +; writable = yes +; printable = no +; create mask = 0765 + + diff --git a/patches/source/samba/smb.conf.diff b/patches/source/samba/smb.conf.diff new file mode 100644 index 000000000..b08d2b12d --- /dev/null +++ b/patches/source/samba/smb.conf.diff @@ -0,0 +1,29 @@ +--- smb.conf.default.orig 2013-06-13 04:21:02.000000000 -0500 ++++ smb.conf.default 2013-10-15 20:02:31.684043875 -0500 +@@ -22,7 +22,7 @@ + #======================= Global Settings ===================================== + [global] + +-# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH ++# workgroup = NT-Domain-Name or Workgroup-Name, eg: LINUX2 + workgroup = MYGROUP + + # server string is the equivalent of the NT Description field +@@ -52,7 +52,7 @@ + + # this tells Samba to use a separate log file for each machine + # that connects +- log file = /usr/local/samba/var/log.%m ++ log file = /var/log/samba.%m + + # Put a capping on the size of the log files (in Kb). + max log size = 50 +@@ -136,7 +136,7 @@ + # specifically define each individual printer + [printers] + comment = All Printers +- path = /usr/spool/samba ++ path = /var/spool/samba + browseable = no + # Set public = yes to allow user 'guest account' to print + guest ok = no diff --git a/patches/source/samba/talloc.pc b/patches/source/samba/talloc.pc new file mode 100644 index 000000000..125977d19 --- /dev/null +++ b/patches/source/samba/talloc.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: talloc +Description: A hierarchical pool based memory system with destructors +Version: 2.0.8 +Libs: -Wl,-rpath,/usr/lib -L${libdir} -ltalloc +Cflags: -I${includedir} +URL: http://talloc.samba.org/ diff --git a/patches/source/scim/scim-setup.desktop b/patches/source/scim/scim-setup.desktop new file mode 100644 index 000000000..a236ef291 --- /dev/null +++ b/patches/source/scim/scim-setup.desktop @@ -0,0 +1,28 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=SCIM Input Method Setup +Name[cs]=Nastavení vstupní metody SCIM +Name[de]=Einstellungen der SCIM-Eingabemethoden +Name[fr]=Configuration de la Méthode de Saisie SCIM +Name[it]=Configurazione del metodo di inserimento SCIM +Name[ja]=SCIM入力メソッドã®è¨­å®š +Name[ko]=SCIM 입력기 설정 +Name[pa]=SCIM ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਸੈਟਅੱਪ +Name[zh_CN]=SCIM 输入法设置 +Name[zh_TW]=SCIM 輸入法設定 +Comment=Setup utility for Smart Common Input Method platform +Comment[cs]=Nástroj pro nastavení Smart Common Input Method platformy +Comment[de]=Einrichtungswerkzeug für die Smart Common Input Method-Plattform +Comment[fr]=Utilitaire de configuration de la plateforme "Smart Common Input Method" +Comment[it]=Programma di configurazione per il metodo inserimento comune intelligente +Comment[ja]=Smart Common Input Method platform セットアップユーティリティ +Comment[ko]=똑똑한 공통 ìž…ë ¥ 방법 (SCIM)ì„ ìœ„í•œ 설정 프로그램 +Comment[pa]=ਸਮਾਰਟ ਕਾਮਨ ਇੰਪà©à©±à¨Ÿ ਮੈਂਥਸਡ ਪਲੇਟਫਾਰਮ ਲਈ ਸੈਟਅੱਪ ਸਹੂਲਤ +Comment[zh_CN]=智能通用输入法平å°çš„设置工具 +Comment[zh_TW]=泛用智慧型輸入法平å°çš„設定工具 +Exec=scim-setup +Icon=/usr/share/pixmaps/scim-setup.png +Terminal=false +Type=Application +StartupNotify=true +Categories=Applications;Settings; diff --git a/patches/source/scim/scim.SlackBuild b/patches/source/scim/scim.SlackBuild new file mode 100755 index 000000000..9d7e7e4e5 --- /dev/null +++ b/patches/source/scim/scim.SlackBuild @@ -0,0 +1,250 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008 Eric Hameleers, Eindhoven, NL +# Copyright 2008, 2009, 2011, 2012, 2013, 2015 Patrick J. Volkerding, Sebeka, MN USA +# All rights reserved. +# +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# ----------------------------------------------------------------------------- +# +# Slackware SlackBuild script +# =========================== +# By: Eric Hameleers +# For: scim +# Descr: Smart Common Input Method platform +# URL: http://www.scim-im.org/ +# +# ----------------------------------------------------------------------------- + + +PKGNAM=scim +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "armel" ]; then + SLKCFLAGS="-O2 -march=armv4t" + LIBDIRSUFFIX="" +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-${VERSION}.tar.?z* || exit 1 +cd ${PKGNAM}-${VERSION} || exit 1 + +./bootstrap + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +echo Building ... +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --disable-static \ + --with-gtk-version=2 \ + --with-qt4-im-module-dir=/usr/lib${LIBDIRSUFFIX}/qt/plugins/inputmethods \ + --program-prefix= \ + --program-suffix= \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make DESTDIR=$PKG install || exit 1 + +# Add a profile script that sets up the environment: +mkdir -p $PKG/etc/profile.d + +cat < $PKG/etc/profile.d/scim.sh.new +#!/bin/sh + +# SCIM (Smart Common Input Method platform). This is used to support the +# entering of text in non-US-English languages. + +# For SCIM to work, you need to use a UTF-8 locale. Make sure it ends on +# ".UTF-8", not "utf-8"! As an example, you would need to use en_US.UTF-8 +# for a US locale (export LANG=en_US.UTF-8), not en_US. +# +# The locale (LANG variable) is set in /etc/profile.d/lang.sh. + +if [ -x /usr/bin/scim ]; then + # Enable legacy X applications to use scim: + export XMODIFIERS="@im=SCIM" + # Let GTK applications like Firefox/Thunderbird use scim as + # default immodule: + export GTK_IM_MODULE="scim" + # Enable Qt/KDE applications to use scim: + export QT_IM_MODULE="scim" + # Make scim start automatically if the "magic key" Ctrl-Space is pressed: + export XIM_PROGRAM="/usr/bin/scim -d" +fi + +# This ensures scim starts when you logon. +# This will only work if you login through runlevel 4 (graphical login)!!! +# Better is to have it start through Ctrl-Space like configured higher up ^^. +#if [ ! \`ls /tmp/scim-socket*\` ]; then +# /usr/bin/scim -d +#fi + +EOT + +cat < $PKG/etc/profile.d/scim.csh.new +#!/bin/csh + +# SCIM (Smart Common Input Method platform). This is used to support the +# entering of text in non-US-English languages. + +# For SCIM to work, you need to use a UTF-8 locale. Make sure it ends on +# ".UTF-8", not "utf-8"! As an example, you would need to use en_US.UTF-8 +# for a US locale (setenv LANG en_US.UTF-8), not en_US. +# +# The locale (LANG variable) is set in /etc/profile.d/lang.csh. + +[ -x /usr/bin/scim ] +if (\$status == 0) then + # Enable legacy X applications to use scim: + setenv XMODIFIERS "@im=SCIM" + # Let GTK applications like Firefox/Thunderbird use scim as + # default immodule: + setenv GTK_IM_MODULE "scim" + # Enable Qt/KDE applications to use scim (does not work for kde4): + setenv QT_IM_MODULE "scim" + # Make scim start automatically if the "magic key" Ctrl-Space is pressed: + setenv XIM_PROGRAM "/usr/bin/scim -d" +endif + +# This ensures scim starts when you logon. +# This will only work if you login through runlevel 4 (graphical login)!!! +# Better is to have it start through Ctrl-Space like configured higher up ^^. +#[ ! \`ls /tmp/scim-socket*\` ] +#if (\$status == 0) then +# /usr/bin/scim -d +#endif + +EOT + +chmod 755 $PKG/etc/profile.d/scim.sh.new +chmod 755 $PKG/etc/profile.d/scim.csh.new + +mkdir -p $PKG/usr/share/applications +cat $CWD/scim.desktop > $PKG/usr/share/applications/scim.desktop +cat $CWD/scim-setup.desktop > $PKG/usr/share/applications/scim-setup.desktop + +# Protect config files from being overwritten: +mv $PKG/etc/scim/config{,.new} +mv $PKG/etc/scim/global{,.new} + +# Add this to the doinst.sh +mkdir -p $PKG/install +cat <> $PKG/install/doinst.sh + +# Handle the incoming configuration files: +config() { + for infile in \$1; do + NEW="\$infile" + OLD="\`dirname \$NEW\`/\`basename \$NEW .new\`" + # If there's no config file by that name, mv it over: + if [ ! -r \$OLD ]; then + mv \$NEW \$OLD + elif [ "\`cat \$OLD | md5sum\`" = "\`cat \$NEW | md5sum\`" ]; then + # toss the redundant copy + rm \$NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... + done +} + +# Prepare the new configuration files +for file in etc/scim/config.new etc/scim/global.new etc/profile.d/scim.sh.new etc/profile.d/scim.csh.new ; do + if [ -e \$(dirname \$file)/\$(basename \$file .new) -a -x \$(dirname \$file)/\$(basename \$file .new) ]; then + chmod 755 \$file + else + chmod 644 \$file + fi + config \$file +done + +# Run gtk-query-immodules so that "scim" will appear under Imput Method +# when you right- click your mouse in a text box. +if [ -x /usr/bin/update-gtk-immodules ]; then + /usr/bin/update-gtk-immodules +fi + +EOINS + +# Add documentation: +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/manual/zh_CN/figures +cp -a \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION +# Install documentation and user manual +cp -a docs/manual/zh_CN/user-manual.html \ + $PKG/usr/doc/$PKGNAM-$VERSION/manual/zh_CN/ +cp -a docs/manual/zh_CN/figures/*.png \ + $PKG/usr/doc/$PKGNAM-$VERSION/manual/zh_CN/figures/ + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Add a package description: +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg --prepend --linkadd y --chown n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz + diff --git a/patches/source/scim/scim.desktop b/patches/source/scim/scim.desktop new file mode 100644 index 000000000..7aacbcc05 --- /dev/null +++ b/patches/source/scim/scim.desktop @@ -0,0 +1,20 @@ +[Desktop Entry] +Comment=Start the Smart Common Input Method platform +Comment[zh_CN]= +Encoding=UTF-8 +Exec=scim -d +GenericName= +GenericName[zh_CN]= +Icon=/usr/share/pixmaps/scim-setup.png +MimeType= +Name=SCIM (Smart Common Input Method) startup +Name[zh_CN]= +Path= +StartupNotify=true +Terminal=false +TerminalOptions= +Type=Application +X-DCOP-ServiceType= +X-KDE-SubstituteUID=false +X-KDE-Username= +Categories=Applications;Utility; diff --git a/patches/source/scim/slack-desc b/patches/source/scim/slack-desc new file mode 100644 index 000000000..066d9f410 --- /dev/null +++ b/patches/source/scim/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +scim: scim (Smart Common Input Method platform) +scim: +scim: SCIM is an input platform for CJK and other languages. +scim: It aims to significantly reduce the difficulty of input method +scim: development. +scim: +scim: See the scim scripts in /etc/profile.d/ for setup info. +scim: +scim: scim home: http://www.scim-im.org/ +scim: +scim: diff --git a/patches/source/screen/26source_encoding.patch b/patches/source/screen/26source_encoding.patch new file mode 100644 index 000000000..1094ac518 --- /dev/null +++ b/patches/source/screen/26source_encoding.patch @@ -0,0 +1,353 @@ +Author: Ben Finney +Description: Replace the composed characters with their respective description. +--- a/process.c ++++ b/process.c +@@ -250,177 +250,177 @@ + + /* digraph table taken from old vim and rfc1345 */ + static struct digraph digraphs[MAX_DIGRAPH + 1] = { +- {{' ', ' '}, 160}, /*   */ +- {{'N', 'S'}, 160}, /*   */ +- {{'~', '!'}, 161}, /* ¡ */ +- {{'!', '!'}, 161}, /* ¡ */ +- {{'!', 'I'}, 161}, /* ¡ */ +- {{'c', '|'}, 162}, /* ¢ */ +- {{'c', 't'}, 162}, /* ¢ */ +- {{'$', '$'}, 163}, /* £ */ +- {{'P', 'd'}, 163}, /* £ */ +- {{'o', 'x'}, 164}, /* ¤ */ +- {{'C', 'u'}, 164}, /* ¤ */ +- {{'C', 'u'}, 164}, /* ¤ */ +- {{'E', 'u'}, 164}, /* ¤ */ +- {{'Y', '-'}, 165}, /* ¥ */ +- {{'Y', 'e'}, 165}, /* ¥ */ +- {{'|', '|'}, 166}, /* ¦ */ +- {{'B', 'B'}, 166}, /* ¦ */ +- {{'p', 'a'}, 167}, /* § */ +- {{'S', 'E'}, 167}, /* § */ +- {{'"', '"'}, 168}, /* ¨ */ +- {{'\'', ':'}, 168}, /* ¨ */ +- {{'c', 'O'}, 169}, /* © */ +- {{'C', 'o'}, 169}, /* © */ +- {{'a', '-'}, 170}, /* ª */ +- {{'<', '<'}, 171}, /* « */ +- {{'-', ','}, 172}, /* ¬ */ +- {{'N', 'O'}, 172}, /* ¬ */ +- {{'-', '-'}, 173}, /* ­ */ +- {{'r', 'O'}, 174}, /* ® */ +- {{'R', 'g'}, 174}, /* ® */ +- {{'-', '='}, 175}, /* ¯ */ +- {{'\'', 'm'}, 175}, /* ¯ */ +- {{'~', 'o'}, 176}, /* ° */ +- {{'D', 'G'}, 176}, /* ° */ +- {{'+', '-'}, 177}, /* ± */ +- {{'2', '2'}, 178}, /* ² */ +- {{'2', 'S'}, 178}, /* ² */ +- {{'3', '3'}, 179}, /* ³ */ +- {{'3', 'S'}, 179}, /* ³ */ +- {{'\'', '\''}, 180}, /* ´ */ +- {{'j', 'u'}, 181}, /* µ */ +- {{'M', 'y'}, 181}, /* µ */ +- {{'p', 'p'}, 182}, /* ¶ */ +- {{'P', 'I'}, 182}, /* ¶ */ +- {{'~', '.'}, 183}, /* · */ +- {{'.', 'M'}, 183}, /* · */ +- {{',', ','}, 184}, /* ¸ */ +- {{'\'', ','}, 184}, /* ¸ */ +- {{'1', '1'}, 185}, /* ¹ */ +- {{'1', 'S'}, 185}, /* ¹ */ +- {{'o', '-'}, 186}, /* º */ +- {{'>', '>'}, 187}, /* » */ +- {{'1', '4'}, 188}, /* ¼ */ +- {{'1', '2'}, 189}, /* ½ */ +- {{'3', '4'}, 190}, /* ¾ */ +- {{'~', '?'}, 191}, /* ¿ */ +- {{'?', '?'}, 191}, /* ¿ */ +- {{'?', 'I'}, 191}, /* ¿ */ +- {{'A', '`'}, 192}, /* À */ +- {{'A', '!'}, 192}, /* À */ +- {{'A', '\''}, 193}, /* Á */ +- {{'A', '^'}, 194}, /*  */ +- {{'A', '>'}, 194}, /*  */ +- {{'A', '~'}, 195}, /* à */ +- {{'A', '?'}, 195}, /* à */ +- {{'A', '"'}, 196}, /* Ä */ +- {{'A', ':'}, 196}, /* Ä */ +- {{'A', '@'}, 197}, /* Å */ +- {{'A', 'A'}, 197}, /* Å */ +- {{'A', 'E'}, 198}, /* Æ */ +- {{'C', ','}, 199}, /* Ç */ +- {{'E', '`'}, 200}, /* È */ +- {{'E', '!'}, 200}, /* È */ +- {{'E', '\''}, 201}, /* É */ +- {{'E', '^'}, 202}, /* Ê */ +- {{'E', '>'}, 202}, /* Ê */ +- {{'E', '"'}, 203}, /* Ë */ +- {{'E', ':'}, 203}, /* Ë */ +- {{'I', '`'}, 204}, /* Ì */ +- {{'I', '!'}, 204}, /* Ì */ +- {{'I', '\''}, 205}, /* Í */ +- {{'I', '^'}, 206}, /* Î */ +- {{'I', '>'}, 206}, /* Î */ +- {{'I', '"'}, 207}, /* Ï */ +- {{'I', ':'}, 207}, /* Ï */ +- {{'D', '-'}, 208}, /* Ð */ +- {{'N', '~'}, 209}, /* Ñ */ +- {{'N', '?'}, 209}, /* Ñ */ +- {{'O', '`'}, 210}, /* Ò */ +- {{'O', '!'}, 210}, /* Ò */ +- {{'O', '\''}, 211}, /* Ó */ +- {{'O', '^'}, 212}, /* Ô */ +- {{'O', '>'}, 212}, /* Ô */ +- {{'O', '~'}, 213}, /* Õ */ +- {{'O', '?'}, 213}, /* Õ */ +- {{'O', '"'}, 214}, /* Ö */ +- {{'O', ':'}, 214}, /* Ö */ +- {{'/', '\\'}, 215}, /* × */ +- {{'*', 'x'}, 215}, /* × */ +- {{'O', '/'}, 216}, /* Ø */ +- {{'U', '`'}, 217}, /* Ù */ +- {{'U', '!'}, 217}, /* Ù */ +- {{'U', '\''}, 218}, /* Ú */ +- {{'U', '^'}, 219}, /* Û */ +- {{'U', '>'}, 219}, /* Û */ +- {{'U', '"'}, 220}, /* Ü */ +- {{'U', ':'}, 220}, /* Ü */ +- {{'Y', '\''}, 221}, /* Ý */ +- {{'I', 'p'}, 222}, /* Þ */ +- {{'T', 'H'}, 222}, /* Þ */ +- {{'s', 's'}, 223}, /* ß */ +- {{'s', '"'}, 223}, /* ß */ +- {{'a', '`'}, 224}, /* à */ +- {{'a', '!'}, 224}, /* à */ +- {{'a', '\''}, 225}, /* á */ +- {{'a', '^'}, 226}, /* â */ +- {{'a', '>'}, 226}, /* â */ +- {{'a', '~'}, 227}, /* ã */ +- {{'a', '?'}, 227}, /* ã */ +- {{'a', '"'}, 228}, /* ä */ +- {{'a', ':'}, 228}, /* ä */ +- {{'a', 'a'}, 229}, /* å */ +- {{'a', 'e'}, 230}, /* æ */ +- {{'c', ','}, 231}, /* ç */ +- {{'e', '`'}, 232}, /* è */ +- {{'e', '!'}, 232}, /* è */ +- {{'e', '\''}, 233}, /* é */ +- {{'e', '^'}, 234}, /* ê */ +- {{'e', '>'}, 234}, /* ê */ +- {{'e', '"'}, 235}, /* ë */ +- {{'e', ':'}, 235}, /* ë */ +- {{'i', '`'}, 236}, /* ì */ +- {{'i', '!'}, 236}, /* ì */ +- {{'i', '\''}, 237}, /* í */ +- {{'i', '^'}, 238}, /* î */ +- {{'i', '>'}, 238}, /* î */ +- {{'i', '"'}, 239}, /* ï */ +- {{'i', ':'}, 239}, /* ï */ +- {{'d', '-'}, 240}, /* ð */ +- {{'n', '~'}, 241}, /* ñ */ +- {{'n', '?'}, 241}, /* ñ */ +- {{'o', '`'}, 242}, /* ò */ +- {{'o', '!'}, 242}, /* ò */ +- {{'o', '\''}, 243}, /* ó */ +- {{'o', '^'}, 244}, /* ô */ +- {{'o', '>'}, 244}, /* ô */ +- {{'o', '~'}, 245}, /* õ */ +- {{'o', '?'}, 245}, /* õ */ +- {{'o', '"'}, 246}, /* ö */ +- {{'o', ':'}, 246}, /* ö */ +- {{':', '-'}, 247}, /* ÷ */ +- {{'o', '/'}, 248}, /* ø */ +- {{'u', '`'}, 249}, /* ù */ +- {{'u', '!'}, 249}, /* ù */ +- {{'u', '\''}, 250}, /* ú */ +- {{'u', '^'}, 251}, /* û */ +- {{'u', '>'}, 251}, /* û */ +- {{'u', '"'}, 252}, /* ü */ +- {{'u', ':'}, 252}, /* ü */ +- {{'y', '\''}, 253}, /* ý */ +- {{'i', 'p'}, 254}, /* þ */ +- {{'t', 'h'}, 254}, /* þ */ +- {{'y', '"'}, 255}, /* ÿ */ +- {{'y', ':'}, 255}, /* ÿ */ +- {{'"', '['}, 196}, /* Ä */ +- {{'"', '\\'}, 214}, /* Ö */ +- {{'"', ']'}, 220}, /* Ü */ +- {{'"', '{'}, 228}, /* ä */ +- {{'"', '|'}, 246}, /* ö */ +- {{'"', '}'}, 252}, /* ü */ +- {{'"', '~'}, 223} /* ß */ ++ {{' ', ' '}, 0x00a0}, /* NO-BREAK SPACE */ ++ {{'N', 'S'}, 0x00a0}, /* NO-BREAK SPACE */ ++ {{'~', '!'}, 0x00a1}, /* INVERTED EXCLAMATION MARK */ ++ {{'!', '!'}, 0x00a1}, /* INVERTED EXCLAMATION MARK */ ++ {{'!', 'I'}, 0x00a1}, /* INVERTED EXCLAMATION MARK */ ++ {{'c', '|'}, 0x00a2}, /* CENT SIGN */ ++ {{'c', 't'}, 0x00a2}, /* CENT SIGN */ ++ {{'$', '$'}, 0x00a3}, /* POUND SIGN */ ++ {{'P', 'd'}, 0x00a3}, /* POUND SIGN */ ++ {{'o', 'x'}, 0x00a4}, /* CURRENCY SIGN */ ++ {{'C', 'u'}, 0x00a4}, /* CURRENCY SIGN */ ++ {{'C', 'u'}, 0x00a4}, /* CURRENCY SIGN */ ++ {{'E', 'u'}, 0x00a4}, /* CURRENCY SIGN */ ++ {{'Y', '-'}, 0x00a5}, /* YEN SIGN */ ++ {{'Y', 'e'}, 0x00a5}, /* YEN SIGN */ ++ {{'|', '|'}, 0x00a6}, /* BROKEN BAR */ ++ {{'B', 'B'}, 0x00a6}, /* BROKEN BAR */ ++ {{'p', 'a'}, 0x00a7}, /* SECTION SIGN */ ++ {{'S', 'E'}, 0x00a7}, /* SECTION SIGN */ ++ {{'"', '"'}, 0x00a8}, /* DIAERESIS */ ++ {{'\'', ':'}, 0x00a8}, /* DIAERESIS */ ++ {{'c', 'O'}, 0x00a9}, /* COPYRIGHT SIGN */ ++ {{'C', 'o'}, 0x00a9}, /* COPYRIGHT SIGN */ ++ {{'-', 'a'}, 0x00aa}, /* FEMININE ORDINAL INDICATOR */ ++ {{'<', '<'}, 0x00ab}, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ ++ {{'-', ','}, 0x00ac}, /* NOT SIGN */ ++ {{'N', 'O'}, 0x00ac}, /* NOT SIGN */ ++ {{'-', '-'}, 0x00ad}, /* SOFT HYPHEN */ ++ {{'r', 'O'}, 0x00ae}, /* REGISTERED SIGN */ ++ {{'R', 'g'}, 0x00ae}, /* REGISTERED SIGN */ ++ {{'-', '='}, 0x00af}, /* MACRON */ ++ {{'\'', 'm'}, 0x00af}, /* MACRON */ ++ {{'~', 'o'}, 0x00b0}, /* DEGREE SIGN */ ++ {{'D', 'G'}, 0x00b0}, /* DEGREE SIGN */ ++ {{'+', '-'}, 0x00b1}, /* PLUS-MINUS SIGN */ ++ {{'2', '2'}, 0x00b2}, /* SUPERSCRIPT TWO */ ++ {{'2', 'S'}, 0x00b2}, /* SUPERSCRIPT TWO */ ++ {{'3', '3'}, 0x00b3}, /* SUPERSCRIPT THREE */ ++ {{'3', 'S'}, 0x00b3}, /* SUPERSCRIPT THREE */ ++ {{'\'', '\''}, 0x00b4}, /* ACUTE ACCENT */ ++ {{'j', 'u'}, 0x00b5}, /* MICRO SIGN */ ++ {{'M', 'y'}, 0x00b5}, /* MICRO SIGN */ ++ {{'p', 'p'}, 0x00b6}, /* PILCROW SIGN */ ++ {{'P', 'I'}, 0x00b6}, /* PILCROW SIGN */ ++ {{'~', '.'}, 0x00b7}, /* MIDDLE DOT */ ++ {{'.', 'M'}, 0x00b7}, /* MIDDLE DOT */ ++ {{',', ','}, 0x00b8}, /* CEDILLA */ ++ {{'\'', ','}, 0x00b8}, /* CEDILLA */ ++ {{'1', '1'}, 0x00b9}, /* SUPERSCRIPT ONE */ ++ {{'1', 'S'}, 0x00b9}, /* SUPERSCRIPT ONE */ ++ {{'-', 'o'}, 0x00ba}, /* MASCULINE ORDINAL INDICATOR */ ++ {{'>', '>'}, 0x00bb}, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ ++ {{'1', '4'}, 0x00bc}, /* VULGAR FRACTION ONE QUARTER */ ++ {{'1', '2'}, 0x00bd}, /* VULGAR FRACTION ONE HALF */ ++ {{'3', '4'}, 0x00be}, /* VULGAR FRACTION THREE QUARTERS */ ++ {{'~', '?'}, 0x00bf}, /* INVERTED QUESTION MARK */ ++ {{'?', '?'}, 0x00bf}, /* INVERTED QUESTION MARK */ ++ {{'?', 'I'}, 0x00bf}, /* INVERTED QUESTION MARK */ ++ {{'A', '`'}, 0x00c0}, /* LATIN CAPITAL LETTER A WITH GRAVE */ ++ {{'A', '!'}, 0x00c0}, /* LATIN CAPITAL LETTER A WITH GRAVE */ ++ {{'A', '\''}, 0x00c1}, /* LATIN CAPITAL LETTER A WITH ACUTE */ ++ {{'A', '^'}, 0x00c2}, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ ++ {{'A', '>'}, 0x00c2}, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ ++ {{'A', '~'}, 0x00c3}, /* LATIN CAPITAL LETTER A WITH TILDE */ ++ {{'A', '?'}, 0x00c3}, /* LATIN CAPITAL LETTER A WITH TILDE */ ++ {{'A', '"'}, 0x00c4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */ ++ {{'A', ':'}, 0x00c4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */ ++ {{'A', '@'}, 0x00c5}, /* LATIN CAPITAL LETTER A WITH RING ABOVE */ ++ {{'A', 'A'}, 0x00c5}, /* LATIN CAPITAL LETTER A WITH RING ABOVE */ ++ {{'A', 'E'}, 0x00c6}, /* LATIN CAPITAL LETTER AE */ ++ {{'C', ','}, 0x00c7}, /* LATIN CAPITAL LETTER C WITH CEDILLA */ ++ {{'E', '`'}, 0x00c8}, /* LATIN CAPITAL LETTER E WITH GRAVE */ ++ {{'E', '!'}, 0x00c8}, /* LATIN CAPITAL LETTER E WITH GRAVE */ ++ {{'E', '\''}, 0x00c9}, /* LATIN CAPITAL LETTER E WITH ACUTE */ ++ {{'E', '^'}, 0x00ca}, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ ++ {{'E', '>'}, 0x00ca}, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ ++ {{'E', '"'}, 0x00cb}, /* LATIN CAPITAL LETTER E WITH DIAERESIS */ ++ {{'E', ':'}, 0x00cb}, /* LATIN CAPITAL LETTER E WITH DIAERESIS */ ++ {{'I', '`'}, 0x00cc}, /* LATIN CAPITAL LETTER I WITH GRAVE */ ++ {{'I', '!'}, 0x00cc}, /* LATIN CAPITAL LETTER I WITH GRAVE */ ++ {{'I', '\''}, 0x00cd}, /* LATIN CAPITAL LETTER I WITH ACUTE */ ++ {{'I', '^'}, 0x00ce}, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ ++ {{'I', '>'}, 0x00ce}, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ ++ {{'I', '"'}, 0x00cf}, /* LATIN CAPITAL LETTER I WITH DIAERESIS */ ++ {{'I', ':'}, 0x00cf}, /* LATIN CAPITAL LETTER I WITH DIAERESIS */ ++ {{'D', '-'}, 0x00d0}, /* LATIN CAPITAL LETTER ETH */ ++ {{'N', '~'}, 0x00d1}, /* LATIN CAPITAL LETTER N WITH TILDE */ ++ {{'N', '?'}, 0x00d1}, /* LATIN CAPITAL LETTER N WITH TILDE */ ++ {{'O', '`'}, 0x00d2}, /* LATIN CAPITAL LETTER O WITH GRAVE */ ++ {{'O', '!'}, 0x00d2}, /* LATIN CAPITAL LETTER O WITH GRAVE */ ++ {{'O', '\''}, 0x00d3}, /* LATIN CAPITAL LETTER O WITH ACUTE */ ++ {{'O', '^'}, 0x00d4}, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ ++ {{'O', '>'}, 0x00d4}, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ ++ {{'O', '~'}, 0x00d5}, /* LATIN CAPITAL LETTER O WITH TILDE */ ++ {{'O', '?'}, 0x00d5}, /* LATIN CAPITAL LETTER O WITH TILDE */ ++ {{'O', '"'}, 0x00d6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */ ++ {{'O', ':'}, 0x00d6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */ ++ {{'/', '\\'}, 0x00d7}, /* MULTIPLICATION SIGN */ ++ {{'*', 'x'}, 0x00d7}, /* MULTIPLICATION SIGN */ ++ {{'O', '/'}, 0x00d8}, /* LATIN CAPITAL LETTER O WITH STROKE */ ++ {{'U', '`'}, 0x00d9}, /* LATIN CAPITAL LETTER U WITH GRAVE */ ++ {{'U', '!'}, 0x00d9}, /* LATIN CAPITAL LETTER U WITH GRAVE */ ++ {{'U', '\''}, 0x00da}, /* LATIN CAPITAL LETTER U WITH ACUTE */ ++ {{'U', '^'}, 0x00db}, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ ++ {{'U', '>'}, 0x00db}, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ ++ {{'U', '"'}, 0x00dc}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */ ++ {{'U', ':'}, 0x00dc}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */ ++ {{'Y', '\''}, 0x00dd}, /* LATIN CAPITAL LETTER Y WITH ACUTE */ ++ {{'I', 'p'}, 0x00de}, /* LATIN CAPITAL LETTER THORN */ ++ {{'T', 'H'}, 0x00de}, /* LATIN CAPITAL LETTER THORN */ ++ {{'s', 's'}, 0x00df}, /* LATIN SMALL LETTER SHARP S */ ++ {{'s', '"'}, 0x00df}, /* LATIN SMALL LETTER SHARP S */ ++ {{'a', '`'}, 0x00e0}, /* LATIN SMALL LETTER A WITH GRAVE */ ++ {{'a', '!'}, 0x00e0}, /* LATIN SMALL LETTER A WITH GRAVE */ ++ {{'a', '\''}, 0x00e1}, /* LATIN SMALL LETTER A WITH ACUTE */ ++ {{'a', '^'}, 0x00e2}, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ ++ {{'a', '>'}, 0x00e2}, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ ++ {{'a', '~'}, 0x00e3}, /* LATIN SMALL LETTER A WITH TILDE */ ++ {{'a', '?'}, 0x00e3}, /* LATIN SMALL LETTER A WITH TILDE */ ++ {{'a', '"'}, 0x00e4}, /* LATIN SMALL LETTER A WITH DIAERESIS */ ++ {{'a', ':'}, 0x00e4}, /* LATIN SMALL LETTER A WITH DIAERESIS */ ++ {{'a', 'a'}, 0x00e5}, /* LATIN SMALL LETTER A WITH RING ABOVE */ ++ {{'a', 'e'}, 0x00e6}, /* LATIN SMALL LETTER AE */ ++ {{'c', ','}, 0x00e7}, /* LATIN SMALL LETTER C WITH CEDILLA */ ++ {{'e', '`'}, 0x00e8}, /* LATIN SMALL LETTER E WITH GRAVE */ ++ {{'e', '!'}, 0x00e8}, /* LATIN SMALL LETTER E WITH GRAVE */ ++ {{'e', '\''}, 0x00e9}, /* LATIN SMALL LETTER E WITH ACUTE */ ++ {{'e', '^'}, 0x00ea}, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */ ++ {{'e', '>'}, 0x00ea}, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */ ++ {{'e', '"'}, 0x00eb}, /* LATIN SMALL LETTER E WITH DIAERESIS */ ++ {{'e', ':'}, 0x00eb}, /* LATIN SMALL LETTER E WITH DIAERESIS */ ++ {{'i', '`'}, 0x00ec}, /* LATIN SMALL LETTER I WITH GRAVE */ ++ {{'i', '!'}, 0x00ec}, /* LATIN SMALL LETTER I WITH GRAVE */ ++ {{'i', '\''}, 0x00ed}, /* LATIN SMALL LETTER I WITH ACUTE */ ++ {{'i', '^'}, 0x00ee}, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ ++ {{'i', '>'}, 0x00ee}, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ ++ {{'i', '"'}, 0x00ef}, /* LATIN SMALL LETTER I WITH DIAERESIS */ ++ {{'i', ':'}, 0x00ef}, /* LATIN SMALL LETTER I WITH DIAERESIS */ ++ {{'d', '-'}, 0x00f0}, /* LATIN SMALL LETTER ETH */ ++ {{'n', '~'}, 0x00f1}, /* LATIN SMALL LETTER N WITH TILDE */ ++ {{'n', '?'}, 0x00f1}, /* LATIN SMALL LETTER N WITH TILDE */ ++ {{'o', '`'}, 0x00f2}, /* LATIN SMALL LETTER O WITH GRAVE */ ++ {{'o', '!'}, 0x00f2}, /* LATIN SMALL LETTER O WITH GRAVE */ ++ {{'o', '\''}, 0x00f3}, /* LATIN SMALL LETTER O WITH ACUTE */ ++ {{'o', '^'}, 0x00f4}, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ ++ {{'o', '>'}, 0x00f4}, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ ++ {{'o', '~'}, 0x00f5}, /* LATIN SMALL LETTER O WITH TILDE */ ++ {{'o', '?'}, 0x00f5}, /* LATIN SMALL LETTER O WITH TILDE */ ++ {{'o', '"'}, 0x00f6}, /* LATIN SMALL LETTER O WITH DIAERESIS */ ++ {{'o', ':'}, 0x00f6}, /* LATIN SMALL LETTER O WITH DIAERESIS */ ++ {{'-', ':'}, 0x00f7}, /* DIVISION SIGN */ ++ {{'o', '/'}, 0x00f8}, /* LATIN SMALL LETTER O WITH STROKE */ ++ {{'u', '`'}, 0x00f9}, /* LATIN SMALL LETTER U WITH GRAVE */ ++ {{'u', '!'}, 0x00f9}, /* LATIN SMALL LETTER U WITH GRAVE */ ++ {{'u', '\''}, 0x00fa}, /* LATIN SMALL LETTER U WITH ACUTE */ ++ {{'u', '^'}, 0x00fb}, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ ++ {{'u', '>'}, 0x00fb}, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ ++ {{'u', '"'}, 0x00fc}, /* LATIN SMALL LETTER U WITH DIAERESIS */ ++ {{'u', ':'}, 0x00fc}, /* LATIN SMALL LETTER U WITH DIAERESIS */ ++ {{'y', '\''}, 0x00fd}, /* LATIN SMALL LETTER Y WITH ACUTE */ ++ {{'i', 'p'}, 0x00fe}, /* LATIN SMALL LETTER THORN */ ++ {{'t', 'h'}, 0x00fe}, /* LATIN SMALL LETTER THORN */ ++ {{'y', '"'}, 0x00ff}, /* LATIN SMALL LETTER Y WITH DIAERESIS */ ++ {{'y', ':'}, 0x00ff}, /* LATIN SMALL LETTER Y WITH DIAERESIS */ ++ {{'"', '['}, 0x00c4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */ ++ {{'"', '\\'}, 0x00d6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */ ++ {{'"', ']'}, 0x00dc}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */ ++ {{'"', '{'}, 0x00e4}, /* LATIN SMALL LETTER A WITH DIAERESIS */ ++ {{'"', '|'}, 0x00f6}, /* LATIN SMALL LETTER O WITH DIAERESIS */ ++ {{'"', '}'}, 0x00fc}, /* LATIN SMALL LETTER U WITH DIAERESIS */ ++ {{'"', '~'}, 0x00df}, /* LATIN SMALL LETTER SHARP S */ + }; + + #define RESIZE_FLAG_H 1 diff --git a/patches/source/screen/45suppress_remap.patch b/patches/source/screen/45suppress_remap.patch new file mode 100644 index 000000000..85109a2ef --- /dev/null +++ b/patches/source/screen/45suppress_remap.patch @@ -0,0 +1,13 @@ +Author: Loic Minier +Description: Unbreak several useful keybindings. +--- a/termcap.c ++++ b/termcap.c +@@ -552,8 +552,6 @@ + else + break; + } +- if (n < KMAP_KEYS) +- domap = 1; + if (map == 0 && domap) + return 0; + if (map && !domap) diff --git a/patches/source/screen/52fix_screen_utf8_nfd.patch b/patches/source/screen/52fix_screen_utf8_nfd.patch new file mode 100644 index 000000000..0aa72d5ed --- /dev/null +++ b/patches/source/screen/52fix_screen_utf8_nfd.patch @@ -0,0 +1,41 @@ +## 52fix_screen_utf8_nfd.dpatch by Nobuhiro Iwamatsu +## +## DP: screen outputs screen "ÿ" after a connected character. +## DP: This is a character without the need. +## DP: This happens in UTF-8 environment. +## DP: Before : screen$ ruby1.9.1 -e 'puts "\u304b\u3099.."' +## DP: ã‹ã‚™Ã¿... +## DP: patch applied : screen $ ruby1.9.1 -e 'puts "\u304b\u3099.."' +## DP: ã‹ã‚™.. +## DP: Report from http://d.hatena.ne.jp/mrkn/20101014/fix_screen_utf8_nfd_bug +## DP: Copyright Kenta Murata (mrkn) +## DP: Modified by Nobuhiro Iwamatsu + +Index: screen/ansi.c +=================================================================== +--- screen.orig/ansi.c 2012-03-20 22:15:02.000000000 +0100 ++++ screen/ansi.c 2012-03-20 22:41:45.000000000 +0100 +@@ -725,6 +725,10 @@ + LPutChar(&curr->w_layer, &omc, ox, oy); + LGotoPos(&curr->w_layer, curr->w_x, curr->w_y); + } ++ if (curr->w_mbcs) ++ { ++ curr->w_rend.mbcs = curr->w_mbcs = 0; ++ } + break; + } + font = curr->w_rend.font; +Index: screen/display.c +=================================================================== +--- screen.orig/display.c 2012-03-20 22:41:28.000000000 +0100 ++++ screen/display.c 2012-03-20 22:41:45.000000000 +0100 +@@ -603,7 +603,7 @@ + D_x += D_AM ? 1 : -1; + D_mbcs = 0; + } +- else if (utf8_isdouble(c)) ++ else if (utf8_isdouble(c) || (c >= 0xd800 && c < 0xe000)) + { + D_mbcs = c; + D_x++; diff --git a/patches/source/screen/58-show-encoding-hardstatus.patch b/patches/source/screen/58-show-encoding-hardstatus.patch new file mode 100644 index 000000000..45fecdbfc --- /dev/null +++ b/patches/source/screen/58-show-encoding-hardstatus.patch @@ -0,0 +1,41 @@ +Author: rascov@rascov.tw +Date: Wed Feb 11 05:51:31 CST 2009 +Subject: show encoding in hardstatus, orginal from FreeBSD by yzlin@cs.nctu.edu.tw +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/screen/+bug/286810 +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=533498 + +Index: screen/screen.c +=================================================================== +--- screen.orig/screen.c 2014-04-28 03:14:19.195018278 +0200 ++++ screen/screen.c 2014-04-28 03:14:19.179018199 +0200 +@@ -2801,6 +2801,18 @@ + } + p += strlen(p) - 1; + break; ++ #ifdef ENCODINGS ++ case 'e': ++ *p = 0; ++ D_encoding = nwin_options.encoding > 0 ? nwin_options.encoding : 0; ++ if (win && win->w_encoding) ++ { ++ *p++ = ' '; ++ strcpy(p, EncodingName(win->w_encoding)); ++ } ++ p += strlen(p) - 1; ++ break; ++ #endif + case '{': + { + char rbuf[128]; +Index: screen/process.c +=================================================================== +--- screen.orig/process.c 2014-04-28 03:14:19.195018278 +0200 ++++ screen/process.c 2014-04-28 03:14:19.183018228 +0200 +@@ -3693,6 +3693,7 @@ + { + WinSwitchEncoding(fore, n); + ResetCharsets(fore); ++ RedisplayDisplays(0); + } + else if (i && display) + D_encoding = n; diff --git a/patches/source/screen/60-revert-screenrc-change.diff b/patches/source/screen/60-revert-screenrc-change.diff new file mode 100644 index 000000000..1f208e1df --- /dev/null +++ b/patches/source/screen/60-revert-screenrc-change.diff @@ -0,0 +1,13 @@ +--- screen-4.4.0/etc/etcscreenrc 2015-09-05 14:28:22.000000000 -0500 ++++ screen-4.2.1/etc/etcscreenrc 2014-04-25 14:08:40.000000000 -0500 +@@ -68,8 +68,8 @@ + # + # Do not use xterms alternate window buffer. + # This one would not add lines to the scrollback buffer. +-termcap xterm|xterms|xs ti=\E7\E[?47l +-terminfo xterm|xterms|xs ti=\E7\E[?47l ++#termcap xterm|xterms|xs ti=\E7\E[?47l ++#terminfo xterm|xterms|xs ti=\E7\E[?47l + + #make hp700 termcap/info better + termcap hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@' diff --git a/patches/source/screen/screen.SlackBuild b/patches/source/screen/screen.SlackBuild new file mode 100755 index 000000000..2472c7c49 --- /dev/null +++ b/patches/source/screen/screen.SlackBuild @@ -0,0 +1,158 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=screen +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-screen + +NUMJOBS=${NUMJOBS:-" -j7 "} + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf screen-$VERSION +tar xvf $CWD/screen-$VERSION.tar.?z* || exit 1 + +cd screen-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Apply patches taken from Debian: +for pf in \ + 26source_encoding.patch.gz \ + 45suppress_remap.patch.gz \ + 52fix_screen_utf8_nfd.patch.gz \ + 58-show-encoding-hardstatus.patch.gz \ + ; do zcat $CWD/$pf | patch --verbose -p1 || exit 1 +done + +# Revert a change to /etc/screenrc introduced in screen-4.3.x that prevents +# the console from being properly cleared when detaching from a screen session: +zcat $CWD/60-revert-screenrc-change.diff.gz | patch -p1 --verbose || exit 1 + +# Do not link against libelf: +zcat $CWD/screen.no_libelf.diff.gz | patch -p1 --verbose || exit 1 + +# Reconf after patching configure.ac: +autoreconf -vif + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --with-sys-screenrc=/etc/screenrc \ + --with-pty-mode=0620 \ + --with-pty-group=5 \ + --disable-pam \ + --enable-telnet \ + --disable-socket-dir \ + --enable-use-locale \ + --enable-colors256 \ + --enable-rxvt_osc \ + --build=$ARCH-slackware-linux || exit 1 + +# Substitutions: +perl -pi -e 's|.*#undef HAVE_BRAILLE.*|#define HAVE_BRAILLE 1|' config.h +perl -pi -e 's|/usr/local/etc/screenrc|/etc/screenrc|' etc/etcscreenrc doc/* +perl -pi -e 's|/local/etc/screenrc|/etc/screenrc|' doc/* + +# Build screen: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Prepare package: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Sorry, pal. Not around here. +chmod 755 $PKG/usr/bin/screen-$VERSION +mkdir -p $PKG/etc/skel +cat etc/etcscreenrc > $PKG/etc/screenrc.new +cat etc/screenrc > $PKG/etc/skel/.screenrc.new +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* +gzip -9 $PKG/usr/man/man1/* +mkdir -p $PKG/usr/doc/screen-$VERSION +chmod 644 doc/FAQ +cp -a COPYING ChangeLog HACKING INSTALL NEWS README TODO \ + doc/FAQ doc/README.DOTSCREEN \ + $PKG/usr/doc/screen-$VERSION +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat << EOF > $PKG/install/doinst.sh +#!/bin/sh +config() { + NEW="\$1" + OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r \$OLD ]; then + mv \$NEW \$OLD + elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy + rm \$NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/screenrc.new +config etc/skel/.screenrc.new +# This is probably safer than leaving the hidden .new file... maybe? +rm -f etc/skel/.screenrc.new +EOF + +# Build package: +cd $PKG +makepkg -l y -c n $TMP/screen-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/screen/screen.no_libelf.diff b/patches/source/screen/screen.no_libelf.diff new file mode 100644 index 000000000..992fb07ad --- /dev/null +++ b/patches/source/screen/screen.no_libelf.diff @@ -0,0 +1,19 @@ +--- ./configure.ac.orig 2015-06-28 16:22:55.000000000 -0500 ++++ ./configure.ac 2015-08-02 13:46:59.649097842 -0500 +@@ -202,16 +202,6 @@ + #endif + ], LIBS="$LIBS -lsocket -linet";seqptx=1) + +-oldlibs="$LIBS" +-LIBS="$LIBS -lelf" +-AC_CHECKING(SVR4) +-AC_TRY_LINK([#include +-],, +-[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN), +-[AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN))])] +-,LIBS="$oldlibs") +-AC_CHECK_HEADERS([stropts.h string.h strings.h]) +- + AC_CHECKING(for Solaris 2.x) + AC_EGREP_CPP(yes, + [#if defined(SVR4) && defined(sun) diff --git a/patches/source/screen/slack-desc b/patches/source/screen/slack-desc new file mode 100644 index 000000000..cfe3136b6 --- /dev/null +++ b/patches/source/screen/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +screen: screen (screen manager with VT100/ANSI terminal emulation) +screen: +screen: Screen is a full-screen window manager that multiplexes a physical +screen: terminal between several processes (typically interactive shells). +screen: Each virtual terminal provides the functions of a DEC VT100 terminal +screen: and several control functions from the ISO 6492 (ECMA 48, ANSI X3.64) +screen: and ISO 2022 standards (e.g. insert/delete line and support for +screen: multiple character sets). There is a scrollback history buffer for +screen: each virtual terminal and a copy-and-paste mechanism that allows +screen: moving text regions between windows. +screen: diff --git a/patches/source/sdl/SDL_mixer.usrlocal.diff b/patches/source/sdl/SDL_mixer.usrlocal.diff new file mode 100644 index 000000000..4630e9ea6 --- /dev/null +++ b/patches/source/sdl/SDL_mixer.usrlocal.diff @@ -0,0 +1,11 @@ +--- ./timidity/config.h.orig 2010-02-14 17:14:44.000000000 -0600 ++++ ./timidity/config.h 2010-02-14 17:15:45.000000000 -0600 +@@ -179,7 +179,7 @@ + #else + #define DEFAULT_PATH "/etc/timidity" + #define DEFAULT_PATH1 "/usr/share/timidity" +-#define DEFAULT_PATH2 "/usr/local/lib/timidity" ++#define DEFAULT_PATH2 "/usr/lib/timidity" + #endif + + /* These affect general volume */ diff --git a/patches/source/sdl/SDL_ttf.shaded.text.diff b/patches/source/sdl/SDL_ttf.shaded.text.diff new file mode 100644 index 000000000..549a60a48 --- /dev/null +++ b/patches/source/sdl/SDL_ttf.shaded.text.diff @@ -0,0 +1,11 @@ +--- ./SDL_ttf.c.orig 2012-01-14 22:44:08.000000000 -0600 ++++ ./SDL_ttf.c 2016-06-08 11:59:50.163770281 -0500 +@@ -1747,7 +1747,7 @@ + /* Copy the character from the pixmap */ + src = glyph->pixmap.buffer; + dst = (Uint8*) textbuf->pixels; +- for ( row = 0; row < glyph->bitmap.rows; ++row ) { ++ for ( row = 0; row < glyph->pixmap.rows; ++row ) { + memcpy( dst, src, glyph->pixmap.width ); + src += glyph->pixmap.pitch; + dst += textbuf->pitch; diff --git a/patches/source/sdl/libsdl-1.2.15-resizing.patch b/patches/source/sdl/libsdl-1.2.15-resizing.patch new file mode 100644 index 000000000..709881962 --- /dev/null +++ b/patches/source/sdl/libsdl-1.2.15-resizing.patch @@ -0,0 +1,63 @@ +Description: Revert change that breaks window corner resizing + http://bugzilla.libsdl.org/show_bug.cgi?id=1430 +Author: Andrew Caudwell +Last-Update: 2012-04-10 +Bug-Debian: http://bugs.debian.org/665779 + +diff -r c787fb1b5699 src/video/x11/SDL_x11events.c +--- a/src/video/x11/SDL_x11events.c Mon Feb 20 23:51:08 2012 -0500 ++++ b/src/video/x11/SDL_x11events.c Mon Mar 26 12:26:52 2012 +1300 +@@ -57,12 +57,6 @@ + static SDLKey MISC_keymap[256]; + SDLKey X11_TranslateKeycode(Display *display, KeyCode kc); + +-/* +- Pending resize target for ConfigureNotify (so outdated events don't +- cause inappropriate resize events) +-*/ +-int X11_PendingConfigureNotifyWidth = -1; +-int X11_PendingConfigureNotifyHeight = -1; + + #ifdef X_HAVE_UTF8_STRING + Uint32 Utf8ToUcs4(const Uint8 *utf8) +@@ -825,16 +819,6 @@ + #ifdef DEBUG_XEVENTS + printf("ConfigureNotify! (resize: %dx%d)\n", xevent.xconfigure.width, xevent.xconfigure.height); + #endif +- if ((X11_PendingConfigureNotifyWidth != -1) && +- (X11_PendingConfigureNotifyHeight != -1)) { +- if ((xevent.xconfigure.width != X11_PendingConfigureNotifyWidth) && +- (xevent.xconfigure.height != X11_PendingConfigureNotifyHeight)) { +- /* Event is from before the resize, so ignore. */ +- break; +- } +- X11_PendingConfigureNotifyWidth = -1; +- X11_PendingConfigureNotifyHeight = -1; +- } + if ( SDL_VideoSurface ) { + if ((xevent.xconfigure.width != SDL_VideoSurface->w) || + (xevent.xconfigure.height != SDL_VideoSurface->h)) { +diff -r c787fb1b5699 src/video/x11/SDL_x11events_c.h +--- a/src/video/x11/SDL_x11events_c.h Mon Feb 20 23:51:08 2012 -0500 ++++ b/src/video/x11/SDL_x11events_c.h Mon Mar 26 12:26:52 2012 +1300 +@@ -27,8 +27,3 @@ + extern void X11_InitOSKeymap(_THIS); + extern void X11_PumpEvents(_THIS); + extern void X11_SetKeyboardState(Display *display, const char *key_vec); +- +-/* Variables to be exported */ +-extern int X11_PendingConfigureNotifyWidth; +-extern int X11_PendingConfigureNotifyHeight; +- +diff -r c787fb1b5699 src/video/x11/SDL_x11video.c +--- a/src/video/x11/SDL_x11video.c Mon Feb 20 23:51:08 2012 -0500 ++++ b/src/video/x11/SDL_x11video.c Mon Mar 26 12:26:52 2012 +1300 +@@ -1182,8 +1182,6 @@ + current = NULL; + goto done; + } +- X11_PendingConfigureNotifyWidth = width; +- X11_PendingConfigureNotifyHeight = height; + } else { + if (X11_CreateWindow(this,current,width,height,bpp,flags) < 0) { + current = NULL; diff --git a/patches/source/sdl/sdl-1.2.14-fix-mouse-clicking.patch b/patches/source/sdl/sdl-1.2.14-fix-mouse-clicking.patch new file mode 100644 index 000000000..7d3e5acfc --- /dev/null +++ b/patches/source/sdl/sdl-1.2.14-fix-mouse-clicking.patch @@ -0,0 +1,23 @@ +--- SDL-1.2.14/src/video/x11/SDL_x11events.c.orig 2010-04-08 11:57:05.003169834 -0700 ++++ SDL-1.2.14/src/video/x11/SDL_x11events.c 2010-04-08 12:33:51.690926340 -0700 +@@ -423,12 +423,15 @@ + if ( xevent.xcrossing.mode == NotifyUngrab ) + printf("Mode: NotifyUngrab\n"); + #endif +- if ( this->input_grab == SDL_GRAB_OFF ) { +- posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS); ++ if ( (xevent.xcrossing.mode != NotifyGrab) && ++ (xevent.xcrossing.mode != NotifyUngrab) ) { ++ if ( this->input_grab == SDL_GRAB_OFF ) { ++ posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS); ++ } ++ posted = SDL_PrivateMouseMotion(0, 0, ++ xevent.xcrossing.x, ++ xevent.xcrossing.y); + } +- posted = SDL_PrivateMouseMotion(0, 0, +- xevent.xcrossing.x, +- xevent.xcrossing.y); + } + break; + diff --git a/patches/source/sdl/sdl.SlackBuild b/patches/source/sdl/sdl.SlackBuild new file mode 100755 index 000000000..b506e7f96 --- /dev/null +++ b/patches/source/sdl/sdl.SlackBuild @@ -0,0 +1,255 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2013, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +VERSION=${VERSION:-$(echo SDL-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +IMAGE=${IMAGE:-$(echo SDL_image-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +MIXER=${MIXER:-$(echo SDL_mixer-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +NET=${NET:-$(echo SDL_net-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +TTF=${TTF:-$(echo SDL_ttf-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} + +BUILD=${BUILD:-5_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-sdl + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf sdl-$VERSION +tar xf $CWD/SDL-$VERSION.tar.?z* || exit 1 +cd SDL-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/libsdl-1.2.15-resizing.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/sdl-1.2.14-fix-mouse-clicking.patch.gz | patch -p1 --verbose || exit 1 + +# We must use --disable-x11-shared or programs linked with SDL will +# crash on machines that use the closed source nVidia drivers. + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --disable-arts \ + --disable-esd \ + --enable-shared=yes \ + --enable-static=no \ + --disable-x11-shared + +make $NUMJOBS || make || exit 1 + +# Spam /, for mixer/image later on: +make install +# install to package: +make install DESTDIR=$PKG || exit 1 +mkdir -p $PKG/usr/doc/SDL-$VERSION/html +cp -a docs/index.html $PKG/usr/doc/SDL-$VERSION +cp -a docs/html/*.html $PKG/usr/doc/SDL-$VERSION/html +cp -a \ + BUGS COPYING CREDITS INSTALL README* TODO WhatsNew \ + $PKG/usr/doc/SDL-$VERSION + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Add SDL_image: +cd $TMP +rm -rf SDL_image-$IMAGE +tar xf $CWD/SDL_image-$IMAGE.tar.?z* || exit 1 +cd SDL_image-$IMAGE +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# we don't want sdl to load the libs with dlopen(), gcc is smarter... +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --enable-shared=yes \ + --enable-static=no \ + --enable-jpg-shared=no \ + --enable-png-shared=no \ + --enable-tif-shared=no + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 +mkdir -p $PKG/usr/doc/SDL_image-$IMAGE +cp -a \ + CHANGES COPYING README \ + $PKG/usr/doc/SDL_image-$IMAGE + +# Add SDL_mixer: +cd $TMP +rm -rf SDL_mixer-$MIXER +tar xf $CWD/SDL_mixer-$MIXER.tar.?z* || exit 1 +cd SDL_mixer-$MIXER + +# Fix default library path. Don't use /usr/local, and use lib64 where needed: +sed -i "s,usr/local/lib,usr/lib${LIBDIRSUFFIX},g" timidity/config.h + +# Install patched static libmikmod: +tar xf $CWD/libmikmod-3.1.20.tar.xz +( cd libmikmod-3.1.20 + CFLAGS="$SLKCFLAGS" \ + ./configure \ + --prefix=/usr/local \ + --libdir=/usr/local/lib${LIBDIRSUFFIX} \ + --with-pic \ + --enable-shared=no \ + --enable-static=yes || exit 1 + make $NUMJOBS || make || exit 1 + make install || exit 1 +) || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --enable-music-mod \ + --enable-shared=yes \ + --enable-static=no + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/usr/doc/SDL_mixer-$MIXER +cp -a \ + CHANGES COPYING README \ + $PKG/usr/doc/SDL_mixer-$MIXER + +# We do not want to try to pull in -lmikmod, since that was linked static: +sed -i -e "s/ -lmikmod//g" $PKG/usr/lib${LIBDIRSUFFIX}/libSDL_mixer.la + +# Add SDL_net: +cd $TMP +rm -rf SDL_net-$NET +tar xf $CWD/SDL_net-$NET.tar.?z* || exit 1 +cd SDL_net-$NET +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --enable-shared=yes \ + --enable-static=no + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/usr/doc/SDL_net-$NET +cp -a \ + CHANGES COPYING README \ + $PKG/usr/doc/SDL_net-$NET + +# Add SDL_ttf: +cd $TMP +rm -rf SDL_ttf-$TTF +tar xf $CWD/SDL_ttf-$TTF.tar.?z* || exit 1 +cd SDL_ttf-$TTF + +#zcat $CWD/SDL_ttf-2.0.8-noftinternals.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/SDL_ttf.shaded.text.diff.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --enable-shared=yes \ + --enable-static=no + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/usr/doc/SDL_ttf-$TTF +cp -a \ + CHANGES COPYING README \ + $PKG/usr/doc/SDL_ttf-$TTF + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +gzip -9 $PKG/usr/man/man?/*.? + +cd $PKG +/sbin/makepkg -l y -c n $TMP/sdl-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/sdl/slack-desc b/patches/source/sdl/slack-desc new file mode 100644 index 000000000..e4c7502b6 --- /dev/null +++ b/patches/source/sdl/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +sdl: sdl (Simple DirectMedia Layer library) +sdl: +sdl: This is the Simple DirectMedia Layer, a generic API that provides low +sdl: level access to audio, keyboard, mouse, joystick, 3D hardware via +sdl: OpenGL, and 2D framebuffer across multiple platforms. +sdl: +sdl: SDL links against alsa-lib, audiofile, esound, and the X11 libraries. +sdl: Make sure all of these are installed if you're planning to use SDL +sdl: (a full installation will cover all of the prerequisites). +sdl: +sdl: diff --git a/patches/source/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch b/patches/source/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch new file mode 100644 index 000000000..5e7b23113 --- /dev/null +++ b/patches/source/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch @@ -0,0 +1,504 @@ +Submitted By: Ken Moffat +Date: 2016-06-11 +Initial Package Version: 2.13 +Upstream Status: Version is historic and unmaintained. +Origin: Found at fedora, plus fixes for LFS. +Description: All of the patches currently used by fedora, except for +the patch which ensures gawk is used in preference to mawk (we do not +install mawk). For LFS: we put mktemp in /usr/bin not /bin, remove +the install-info target because that will overwrite standards.info +with an old version (fedora always use a DESTDIR), and change the +man and info dirs to ${datadir}/ i.e. /usr/share (an empty /usr/info +will otherwise be created). + +diff -Naur a/acgeneral.m4 b/acgeneral.m4 +--- a/acgeneral.m4 1999-01-05 13:27:37.000000000 +0000 ++++ b/acgeneral.m4 2016-06-11 00:18:24.429043947 +0100 +@@ -1817,10 +1817,6 @@ + [cat > conftest.$ac_ext </dev/null +@@ -1988,12 +1984,12 @@ + AC_MSG_CHECKING(size of $1) + AC_CACHE_VAL(AC_CV_NAME, + [AC_TRY_RUN([#include +-main() ++int main() + { + FILE *f=fopen("conftestval", "w"); +- if (!f) exit(1); ++ if (!f) return(1); + fprintf(f, "%d\n", sizeof($1)); +- exit(0); ++ return(0); + }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl + AC_MSG_RESULT($AC_CV_NAME) + AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) +@@ -2160,20 +2156,38 @@ + dnl AC_OUTPUT_MAKE_DEFS() + define(AC_OUTPUT_MAKE_DEFS, + [# Transform confdefs.h into DEFS. +-dnl Using a here document instead of a string reduces the quoting nightmare. + # Protect against shell expansion while executing Makefile rules. + # Protect against Makefile macro expansion. +-cat > conftest.defs <<\EOF ++# ++# If the first sed substitution is executed (which looks for macros that ++# take arguments), then we branch to the quote section. Otherwise, ++# look for a macro that doesn't take arguments. ++cat >confdef2opt.sed <<\_ACEOF + changequote(<<, >>)dnl +-s%<<#define>> \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +-s%[ `~<<#>>$^&*(){}\\|;'"<>?]%\\&%g +-s%\[%\\&%g +-s%\]%\\&%g +-s%\$%$$%g ++t clear ++: clear ++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g ++t quote ++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g ++t quote ++d ++: quote ++s,[ `~#$^&*(){}\\|;'"<>?],\\&,g ++s,\[,\\&,g ++s,\],\\&,g ++s,\$,$$,g ++p + changequote([, ])dnl +-EOF +-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +-rm -f conftest.defs ++_ACEOF ++# We use echo to avoid assuming a particular line-breaking character. ++# The extra dot is to prevent the shell from consuming trailing ++# line-breaks from the sub-command output. A line-break within ++# single-quotes doesn't work because, if this script is created in a ++# platform that uses two characters for line-breaks (e.g., DOS), tr ++# would break. ++ac_LF_and_DOT=`echo; echo .` ++DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` ++rm -f confdef2opt.sed + ]) + + dnl Do the variable substitutions to create the Makefiles or whatever. +diff -Naur a/acspecific.m4 b/acspecific.m4 +--- a/acspecific.m4 1999-01-05 13:27:52.000000000 +0000 ++++ b/acspecific.m4 2016-06-11 00:18:17.533078644 +0100 +@@ -152,8 +152,41 @@ + CXXFLAGS= + fi + fi ++ ++AC_PROG_CXX_EXIT_DECLARATION + ]) + ++ ++# AC_PROG_CXX_EXIT_DECLARATION ++# ----------------------------- ++# Find a valid prototype for exit and declare it in confdefs.h. ++AC_DEFUN(AC_PROG_CXX_EXIT_DECLARATION, ++[for ac_declaration in \ ++ ''\ ++ '#include ' \ ++ 'extern "C" void std::exit (int) throw (); using std::exit;' \ ++ 'extern "C" void std::exit (int); using std::exit;' \ ++ 'extern "C" void exit (int) throw ();' \ ++ 'extern "C" void exit (int);' \ ++ 'void exit (int);' ++do ++ AC_TRY_COMPILE([#include ++$ac_declaration], ++ [exit (42);], ++ [], ++ [continue]) ++ AC_TRY_COMPILE([$ac_declaration], ++ [exit (42);], ++ [break]) ++done ++if test -n "$ac_declaration"; then ++ echo '#ifdef __cplusplus' >>confdefs.h ++ echo $ac_declaration >>confdefs.h ++ echo '#endif' >>confdefs.h ++fi ++])# AC_PROG_CXX_EXIT_DECLARATION ++ ++ + dnl Determine a Fortran 77 compiler to use. If `F77' is not already set + dnl in the environment, check for `g77', `f77' and `f2c', in that order. + dnl Set the output variable `F77' to the name of the compiler found. +@@ -1010,7 +1043,7 @@ + ]) + + AC_DEFUN(AC_FUNC_MMAP, +-[AC_CHECK_HEADERS(unistd.h) ++[AC_CHECK_HEADERS(stdlib.h unistd.h sys/stat.h sys/types.h) + AC_CHECK_FUNCS(getpagesize) + AC_CACHE_CHECK(for working mmap, ac_cv_func_mmap_fixed_mapped, + [AC_TRY_RUN([ +@@ -1039,11 +1072,24 @@ + #include + #include + ++#if HAVE_SYS_TYPES_H ++# include ++#endif ++ ++#if HAVE_STDLIB_H ++# include ++#endif ++ ++#if HAVE_SYS_STAT_H ++# include ++#endif ++ ++#if HAVE_UNISTD_H ++# include ++#endif ++ + /* This mess was copied from the GNU getpagesize.h. */ + #ifndef HAVE_GETPAGESIZE +-# ifdef HAVE_UNISTD_H +-# include +-# endif + + /* Assume that all systems that can run configure have sys/param.h. */ + # ifndef HAVE_SYS_PARAM_H +@@ -1373,6 +1419,8 @@ + r.ru_majflt = r.ru_minflt = 0; + switch (fork()) { + case 0: /* Child. */ ++ /* Unless we actually _do_ something, the kernel sometimes doesn't chalk up any system time to this process. */ ++ if(fork()) { i = 123; wait(NULL); } else { i = 234; exit(0); } + sleep(1); /* Give up the CPU. */ + _exit(0); + case -1: _exit(0); /* What can we do? */ +diff -Naur a/autoconf.sh b/autoconf.sh +--- a/autoconf.sh 1999-01-05 13:27:53.000000000 +0000 ++++ b/autoconf.sh 2016-06-11 00:22:17.351872133 +0100 +@@ -45,20 +45,20 @@ + esac + + : ${TMPDIR=/tmp} +-tmpout=${TMPDIR}/acout.$$ ++tmpout=`/usr/bin/mktemp ${TMPDIR}/acout.XXXXXX` + localdir= + show_version=no + + while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) +- echo "${usage}" 1>&2; exit 0 ;; ++ echo "${usage}" 1>&2; rm -f $tmpout ; exit 0 ;; + --localdir=* | --l*=* ) + localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -l | --localdir | --l*) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $tmpout; exit 1; } + localdir="${1}" + shift ;; + --macrodir=* | --m*=* ) +@@ -66,7 +66,7 @@ + shift ;; + -m | --macrodir | --m* ) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $tmpout; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --v* ) +@@ -76,7 +76,7 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "${usage}" 1>&2; exit 1 ;; ++ echo "${usage}" 1>&2; rm -f $tmpout; exit 1 ;; + * ) + break ;; + esac +@@ -86,23 +86,25 @@ + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" ++ rm -f $tmpout + exit 0 + fi + + case $# in + 0) infile=configure.in ;; + 1) infile="$1" ;; +- *) echo "$usage" >&2; exit 1 ;; ++ *) echo "$usage" >&2; rm -f $tmpout; exit 1 ;; + esac + + trap 'rm -f $tmpin $tmpout; exit 1' 1 2 15 + +-tmpin=${TMPDIR}/acin.$$ # Always set this, to avoid bogus errors from some rm's. ++tmpin=`/usr/bin/mktemp ${TMPDIR}/acin.XXXXXX` ++# Always set this, to avoid bogus errors from some rm's. + if test z$infile = z-; then + infile=$tmpin +- cat > $infile + elif test ! -r "$infile"; then + echo "autoconf: ${infile}: No such file or directory" >&2 ++ rm -f $tmpin $tmpout + exit 1 + fi + +@@ -111,6 +113,8 @@ + else + use_localdir= + fi ++# Make sure we don't leave those around - they are annoying ++trap 'rm -f $tmpin $tmpout' 0 + + # Use the frozen version of Autoconf if available. + r= f= +@@ -118,7 +122,7 @@ + case `$M4 --help < /dev/null 2>&1` in + *reload-state*) test -r $AC_MACRODIR/autoconf.m4f && { r=--reload f=f; } ;; + *traditional*) ;; +-*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin; exit 1 ;; ++*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin $tmpout; exit 1 ;; + esac + + $M4 -I$AC_MACRODIR $use_localdir $r autoconf.m4$f $infile > $tmpout || +@@ -154,6 +158,6 @@ + /__oline__/s/^\([0-9][0-9]*\):\(.*\)__oline__/\2\1/ + ' >&4 + +-rm -f $tmpout ++rm -f $tmpout $tmpin + + exit $status +diff -Naur a/autoconf.texi b/autoconf.texi +--- a/autoconf.texi 1999-01-05 13:28:37.000000000 +0000 ++++ b/autoconf.texi 2016-06-11 00:18:46.360933604 +0100 +@@ -1,7 +1,7 @@ + \input texinfo @c -*-texinfo-*- + @c %**start of header +-@setfilename autoconf.info +-@settitle Autoconf ++@setfilename autoconf.info ++@settitle Autoconf + @c For double-sided printing, uncomment: + @c @setchapternewpage odd + @c %**end of header +@@ -17,7 +17,8 @@ + @ifinfo + @format + START-INFO-DIR-ENTRY +-* Autoconf: (autoconf). Create source code configuration scripts. ++* Autoconf: (autoconf). Create source code configuration scripts. ++ This is a legacy version of autoconf. + END-INFO-DIR-ENTRY + @end format + +diff -Naur a/autoheader.sh b/autoheader.sh +--- a/autoheader.sh 1999-01-05 13:28:39.000000000 +0000 ++++ b/autoheader.sh 2016-06-11 00:22:17.351872133 +0100 +@@ -194,9 +194,9 @@ + # Some fgrep's have limits on the number of lines that can be in the + # pattern on the command line, so use a temporary file containing the + # pattern. +- (fgrep_tmp=${TMPDIR-/tmp}/autoh$$ ++ (fgrep_tmp=`/usr/bin/mktemp ${TMPDIR-/tmp}/autoh$$.XXXXXX` + trap "rm -f $fgrep_tmp; exit 1" 1 2 15 +- cat > $fgrep_tmp <> $fgrep_tmp <&2; exit 0 ;; ++ echo "${usage}" 1>&2; rm -f $sedtmp; exit 0 ;; + --macrodir=* | --m*=* ) + AC_MACRODIR="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -m | --macrodir | --m* ) + shift +- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } ++ test $# -eq 0 && { echo "${usage}" 1>&2; rm -f $sedtmp; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --versio | --versi | --vers) +@@ -51,7 +51,7 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "${usage}" 1>&2; exit 1 ;; ++ echo "${usage}" 1>&2; rm -f $sedtmp; exit 1 ;; + * ) + break ;; + esac +@@ -61,6 +61,7 @@ + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" ++ rm -f $sedtmp + exit 0 + fi + +@@ -68,6 +69,7 @@ + + tmpout=acupo.$$ + trap 'rm -f $sedtmp $tmpout; exit 1' 1 2 15 ++trap 'rm -f $sedtmp' 0 + case $# in + 0) infile=configure.in; out="> $tmpout" + # Make sure $infile can be read, and $tmpout has the same permissions. +diff -Naur a/configure b/configure +--- a/configure 1999-01-05 13:28:57.000000000 +0000 ++++ b/configure 2016-06-11 00:50:57.771231914 +0100 +@@ -43,8 +43,8 @@ + libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++infodir='${datadir}/info' ++mandir='${datadir}/man' + + # Initialize some other variables. + subdirs= +diff -Naur a/Makefile.in b/Makefile.in +--- a/Makefile.in 1999-01-05 13:27:16.000000000 +0000 ++++ b/Makefile.in 2016-06-11 00:29:34.005678107 +0100 +@@ -49,7 +49,7 @@ + + # Directory in which to install library files. + datadir = @datadir@ +-acdatadir = $(datadir)/autoconf ++acdatadir = $(datadir)/autoconf-2.13 + + # Directory in which to install documentation info files. + infodir = @infodir@ +@@ -68,8 +68,8 @@ + DISTFILES = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL \ + Makefile.in NEWS README TODO $(M4FILES) \ + acconfig.h acfunctions acheaders acidentifiers \ +- acmakevars acprograms autoconf.info* \ +- autoconf.sh autoconf.texi install.texi \ ++ acmakevars acprograms autoconf.info* \ ++ autoconf.sh autoconf.texi install.texi \ + autoheader.sh autoscan.pl autoreconf.sh autoupdate.sh ifnames.sh \ + config.guess config.sub configure configure.in \ + install-sh mkinstalldirs texinfo.tex \ +@@ -106,11 +106,11 @@ + autoconf.m4f: autoconf.m4 acgeneral.m4 acspecific.m4 acoldnames.m4 + autoheader.m4f: autoheader.m4 acgeneral.m4 acspecific.m4 acoldnames.m4 + +-info: autoconf.info @standards_info@ INSTALL ++info: autoconf.info @standards_info@ INSTALL + + # Use --no-split to avoid creating filenames > 14 chars. +-autoconf.info: autoconf.texi install.texi +- $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@ ++autoconf.info: autoconf.texi install.texi ++ $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@ + + INSTALL: install.texi + $(MAKEINFO) -I$(srcdir) $(srcdir)/install.texi --output=$@ \ +@@ -121,8 +121,8 @@ + + dvi: autoconf.dvi @standards_dvi@ + +-autoconf.dvi: autoconf.texi +- $(TEXI2DVI) $(srcdir)/autoconf.texi ++autoconf.dvi: autoconf.texi ++ $(TEXI2DVI) $(srcdir)/autoconf.texi + + standards.dvi: standards.texi make-stds.texi + $(TEXI2DVI) $(srcdir)/standards.texi +@@ -137,35 +137,35 @@ + cd testsuite && ${MAKE} AUTOCONF=${bindir}/autoconf $@ + + installdirs: +- $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(acdatadir) ++ $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)/$(bindir) $(DESTDIR)/$(infodir) $(DESTDIR)/$(acdatadir) + +-install: all $(M4FILES) acconfig.h installdirs install-info ++install: all $(M4FILES) acconfig.h installdirs + for p in $(ASCRIPTS); do \ +- $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ ++ $(INSTALL_PROGRAM) $$p $(DESTDIR)/$(bindir)/`echo $$p|sed '$(transform)'`; \ + done + for i in $(M4FROZEN); do \ +- $(INSTALL_DATA) $$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(acdatadir)/$$i; \ + done + for i in $(M4FILES) acconfig.h; do \ +- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)/$(acdatadir)/$$i; \ + done + -if test -f autoscan; then \ +- $(INSTALL_PROGRAM) autoscan $(bindir)/`echo autoscan|sed '$(transform)'`; \ ++ $(INSTALL_PROGRAM) autoscan $(DESTDIR)/$(bindir)/`echo autoscan|sed '$(transform)'`; \ + for i in acfunctions acheaders acidentifiers acprograms \ + acmakevars; do \ +- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \ ++ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)/$(acdatadir)/$$i; \ + done; \ + else :; fi + + # Don't cd, to avoid breaking install-sh references. + install-info: info installdirs +- if test -f autoconf.info; then \ ++ if test -f autoconf.info; then \ + for i in *.info*; do \ +- $(INSTALL_DATA) $$i $(infodir)/$$i; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(infodir)/$$i; \ + done; \ + else \ + for i in $(srcdir)/*.info*; do \ +- $(INSTALL_DATA) $$i $(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)/$(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ + done; \ + fi + +@@ -174,7 +174,7 @@ + rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ + done + rm -fr $(acdatadir) +- cd $(infodir) && rm -f autoconf.info* ++ cd $(infodir) && rm -f autoconf.info* + if test -f standards.info || test -f $(srcdir)/standards.info; \ + then cd $(infodir) && rm -f standards.info*; fi + +diff -Naur a/testsuite/autoconf.s/syntax.exp b/testsuite/autoconf.s/syntax.exp +--- a/testsuite/autoconf.s/syntax.exp 1999-01-05 13:29:54.000000000 +0000 ++++ b/testsuite/autoconf.s/syntax.exp 2016-06-11 00:18:51.996905247 +0100 +@@ -2,7 +2,7 @@ + + send_user "Checking for syntax errors in the specific tests...\n" + set script {s/^AC_DEFUN(\([^,]*\).*/\1/p} +-set macros [exec sed -n $script $srcdir/../acspecific.m4] ++set macros [exec sed -n $script $srcdir/../acspecific.m4 | grep -v -e AC_FUNC_GETLOADAVG -e F77] + + foreach mac $macros { + send_user "$mac\n" diff --git a/patches/source/seamonkey/autoconf/autoconf.build b/patches/source/seamonkey/autoconf/autoconf.build new file mode 100755 index 000000000..7dae1bad1 --- /dev/null +++ b/patches/source/seamonkey/autoconf/autoconf.build @@ -0,0 +1,81 @@ +#!/bin/sh + +# Copyright 2005-2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=autoconf +VERSION=2.13 +BUILD=${BUILD:-1} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-autoconf + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf autoconf-$VERSION +tar xvf $CWD/autoconf-$VERSION.tar.xz || exit 1 +cd autoconf-$VERSION + +zcat $CWD/autoconf-2.13-consolidated_fixes-1.patch.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Build a temporary copy of autoconf-2.13 only to be used to compile +# Firefox, since it somewhat inexplicably requires this ancient version: + +rm -rf $TMP/autoconf-tmp +mkdir -p $TMP/autoconf-tmp +# This will be at the beginning of the $PATH, so protect against nonsense +# happening in /tmp: +chmod 700 $TMP/autoconf-tmp +rm -rf $TMP/autoconf-tmp/* +mkdir -p $TMP/autoconf-tmp/usr + +./configure \ + --prefix=$TMP/autoconf-tmp/usr \ + --program-suffix=-2.13 \ + --infodir=$TMP/autoconf-tmp/usr/info \ + --mandir=$TMP/autoconf-tmp/usr/man \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install || exit 1 + diff --git a/patches/source/seamonkey/doinst.sh b/patches/source/seamonkey/doinst.sh new file mode 100644 index 000000000..c236bea5c --- /dev/null +++ b/patches/source/seamonkey/doinst.sh @@ -0,0 +1,11 @@ +# If there's no mozilla here, then take over: +if [ ! -r usr/bin/mozilla ]; then + ( cd usr/bin ; ln -sf seamonkey mozilla ) +fi +# Hopefully this won't break everything. ;-) +if ! grep /usr/lib/seamonkey etc/ld.so.conf 1> /dev/null 2> /dev/null ; then + echo "/usr/lib/seamonkey" >> etc/ld.so.conf +fi +if [ -x /sbin/ldconfig ]; then + /sbin/ldconfig 2> /dev/null +fi diff --git a/patches/source/seamonkey/gold/gold b/patches/source/seamonkey/gold/gold new file mode 100755 index 000000000..8c86d3b06 --- /dev/null +++ b/patches/source/seamonkey/gold/gold @@ -0,0 +1,2 @@ +#!/bin/bash +/usr/bin/ld.gold "$@" diff --git a/patches/source/seamonkey/gold/ld b/patches/source/seamonkey/gold/ld new file mode 120000 index 000000000..78a06a2a1 --- /dev/null +++ b/patches/source/seamonkey/gold/ld @@ -0,0 +1 @@ +gold \ No newline at end of file diff --git a/patches/source/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc b/patches/source/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc new file mode 100644 index 000000000..e5053267d --- /dev/null +++ b/patches/source/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=/usr +libdir=/usr/@LIB@/seamonkey-@VERSION@ +includedir=/usr/include/seamonkey-@VERSION@ + +Name: Mozilla Gtk Embedding Widget +Description: Mozilla Embedding Widget for Gtk+ +Version: @VERSION@ +Requires: seamonkey-xpcom = @VERSION@ +Libs: -L${libdir} -lgtkembedmoz +Cflags: -I${includedir}/gtkembedmoz diff --git a/patches/source/seamonkey/pkgconfig/seamonkey-libxul.pc b/patches/source/seamonkey/pkgconfig/seamonkey-libxul.pc new file mode 100644 index 000000000..0c9900420 --- /dev/null +++ b/patches/source/seamonkey/pkgconfig/seamonkey-libxul.pc @@ -0,0 +1,11 @@ +prefix=/usr +libdir=/usr/@LIB@/seamonkey-@VERSION@ +includedir=/usr/include/seamonkey-@VERSION@ +idldir=/usr/share/idl/seamonkey-@VERSION@ + +Name: libxul +Description: The Mozilla Runtime and Embedding Engine +Version: @VERSION@ +Requires: seamonkey-nspr >= 4.7.1 +Libs: -L${libdir} -lxul -lxpcom +Cflags: -I${includedir} -fshort-wchar diff --git a/patches/source/seamonkey/pkgconfig/seamonkey-nspr.pc b/patches/source/seamonkey/pkgconfig/seamonkey-nspr.pc new file mode 100644 index 000000000..756e996d6 --- /dev/null +++ b/patches/source/seamonkey/pkgconfig/seamonkey-nspr.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=/usr +libdir=/usr/@LIB@/seamonkey-@VERSION@ +includedir=/usr/include/seamonkey-@VERSION@ + +Name: NSPR +Description: The Netscape Portable Runtime +Version: 4.7.1 +Libs: -L/usr/@LIB@/seamonkey-@VERSION@ -lplds4 -lplc4 -lnspr4 -lpthread -ldl +Cflags: -I/usr/include/seamonkey-@VERSION@/nspr + + diff --git a/patches/source/seamonkey/pkgconfig/seamonkey-nss.pc b/patches/source/seamonkey/pkgconfig/seamonkey-nss.pc new file mode 100644 index 000000000..f5bf09935 --- /dev/null +++ b/patches/source/seamonkey/pkgconfig/seamonkey-nss.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=/usr +libdir=/usr/@LIB@/seamonkey-@VERSION@ +includedir=/usr/include/seamonkey-@VERSION@ + +Name: NSS +Description: Mozilla Network Security Services +Version: @VERSION@ +Requires: seamonkey-nspr >= 4.7.1 +Libs: -L${libdir} -lnss3 -lsmime3 -lssl3 -lsoftokn3 -lnssutil3 +Cflags: -I${includedir}/nss diff --git a/patches/source/seamonkey/pkgconfig/seamonkey-plugin.pc b/patches/source/seamonkey/pkgconfig/seamonkey-plugin.pc new file mode 100644 index 000000000..bbdb1f417 --- /dev/null +++ b/patches/source/seamonkey/pkgconfig/seamonkey-plugin.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=/usr +libdir=/usr/@LIB@/seamonkey-@VERSION@ +includedir=/usr/include/seamonkey-@VERSION@ + +Name: Mozilla Plug-In API +Description: Mozilla Plug-In API +Version: @VERSION@ +Requires: seamonkey-nspr >= 4.7.1 +Cflags: -I${includedir}/java -I${includedir}/plugin -DXP_UNIX diff --git a/patches/source/seamonkey/pkgconfig/seamonkey-xpcom.pc b/patches/source/seamonkey/pkgconfig/seamonkey-xpcom.pc new file mode 100644 index 000000000..532005671 --- /dev/null +++ b/patches/source/seamonkey/pkgconfig/seamonkey-xpcom.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=/usr +libdir=/usr/@LIB@/seamonkey-@VERSION@ +includedir=/usr/include/seamonkey-@VERSION@ +idldir=/usr/share/idl/seamonkey-@VERSION@ + +Name: XPCOM +Description: The Mozilla Cross Platform Component Library +Version: @VERSION@ +Requires: seamonkey-nspr >= 4.7.1 +Libs: -L${libdir} -lxpcom +Cflags: -I${includedir} -I${includedir}/xpcom -I${includedir}/string diff --git a/patches/source/seamonkey/seamonkey-icon.png b/patches/source/seamonkey/seamonkey-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..824ab7a50518f217e71da0d00e40c160e17e3010 GIT binary patch literal 12796 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 O0000)^mS#w%*DiO z%J+3z#!H}(rl*TzNX4Awga+n|7cK~}tqff~jiGa@CQneXa`1vXD+9d~gdCXG@Ubw= XW#f-zT64D%sENVT)z4*}Q$iB}(Lpr& literal 0 HcmV?d00001 diff --git a/patches/source/seamonkey/seamonkey-mail.desktop b/patches/source/seamonkey/seamonkey-mail.desktop new file mode 100644 index 000000000..1e0b62b1b --- /dev/null +++ b/patches/source/seamonkey/seamonkey-mail.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=SeaMonkey Mail +Comment=Read Mail with SeaMonkey +Exec=/usr/bin/seamonkey -mail +Icon=/usr/share/pixmaps/seamonkey-mail-icon.png +Terminal=0 +Type=Application +Categories=Application;Network; diff --git a/patches/source/seamonkey/seamonkey.SlackBuild b/patches/source/seamonkey/seamonkey.SlackBuild new file mode 100755 index 000000000..58dc6a751 --- /dev/null +++ b/patches/source/seamonkey/seamonkey.SlackBuild @@ -0,0 +1,289 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +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:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + LIBDIRSUFFIX="" + OPTIMIZE_FLAG="-O1" +elif [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" + OPTIMIZE_FLAG="-O1" +else + LIBDIRSUFFIX="" + OPTIMIZE_FLAG="-O1" +fi + +# Link using gold. This avoids running out of memory on 32-bit systems, and +# avoids a recurring build failure with GNU ld on other systems. +PATH="$(pwd)/gold:$PATH" +export CC="gcc -B$(pwd)/gold" +export CXX="g++ -B$(pwd)/gold" + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-seamonkey +rm -rf $PKG +mkdir -p $TMP $PKG/usr + +# We need to use the incredibly ancient autoconf-2.13 for this :/ +( cd $CWD/autoconf ; ./autoconf.build ) +PATH=/tmp/autoconf-tmp/usr/bin:$PATH + +cd $TMP +rm -rf seamonkey-${TARBALLVER} +# Unpack this in a subdirectory to prevent changing permissions on /tmp: +rm -rf seamonkey-unpack +mkdir seamonkey-unpack +cd seamonkey-unpack +tar xvf $CWD/seamonkey-${TARBALLVER}.source.tar.?z* || exit 1 +mv * .. +cd .. +rm -rf seamonkey-unpack +cd seamonkey-${TARBALLVER} || exit 1 + +# Make sure the perms/ownerships are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +chown -R root:root . + +# Our building options, in a configure-like display ;) +OPTIONS="\ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --enable-optimize=$OPTIMIZE_FLAG \ + --enable-cpp-rtti \ + --enable-default-toolkit=cairo-gtk2 \ + --enable-startup-notification \ + --enable-alsa \ + --disable-debug \ + --with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION} \ + --enable-strip \ + --disable-tests \ + --disable-crashreporter \ + --enable-safe-browsing \ + --disable-updater \ + --enable-chrome-format=omni \ + --disable-necko-wifi \ + --enable-extensions=default,irc \ + --without-system-nspr \ + --with-system-zlib \ + --enable-application=suite \ + --with-pthreads \ + --host=$ARCH-slackware-linux \ + --target=$ARCH-slackware-linux" + +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +export MOZ_MAKE_FLAGS="$NUMJOBS" + +# Clear some variables that could break the build +unset DBUS_SESSION_BUS_ADDRESS ORBIT_SOCKETDIR SESSION_MANAGER \ + XDG_SESSION_COOKIE XAUTHORITY MAKEFLAGS + +# Assemble our .mozconfig: +echo > .mozconfig + +# Mozilla devs enforce using an objdir for building +# https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir +mkdir obj +echo "mk_add_options MOZ_OBJDIR=$(pwd)/obj" >> .mozconfig +# This directory is also needed or the build will fail: +mkdir -p mozilla/obj + +# Write in it the options above +for option in $OPTIONS; do echo "ac_add_options $option" >> .mozconfig; done + +echo "ac_add_options --disable-tests" >> .mozconfig +make -f client.mk build || exit 1 +make -f client.mk install DESTDIR=$PKG || exit 1 + +# Keep the "obsolete" nspr headers: +if [ ! -d mozilla/dist/include/nspr/obsolete ]; then + mkdir -p mozilla/dist/include/nspr/obsolete + cp -a mozilla/nsprpub/pr/include/obsolete/*.h mozilla/dist/include/nspr/obsolete +fi + +# Install nspr/nss headers. +for includedir in nspr nspr/obsolete nspr/private ; do + mkdir -p $PKG/usr/include/seamonkey-${VERSION}/$includedir + cp -aL mozilla/dist/include/${includedir}/*.h $PKG/usr/include/seamonkey-${VERSION}/$includedir +done +cp -aL mozilla/dist/include/*.tbl mozilla/dist/include/*.msg $PKG/usr/include/seamonkey-${VERSION} +cp -aL mozilla/dist/include/*.h $PKG/usr/include/seamonkey-${VERSION} +cp -aL mozilla/dist/sdk/include/* $PKG/usr/include/seamonkey-${VERSION} +# compat symlinks +( cd $PKG/usr/include/seamonkey-${VERSION} + # Relocate anything that might be in the nss directory, and replace the directory with a symlink. + # make install was putting an empty directory here, which was breaking other compiles. + if [ -d nss ]; then + mv nss/* . + rmdir nss + fi + ln -sf . nss + ln -sf . plugin + ln -sf . xpcom +) + +# We don't need this stuff in the package: +rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/seamonkey-devel-$VERSION + +chown -R root:root $PKG/usr/include/seamonkey-${VERSION} +find $PKG/usr/include/seamonkey-${VERSION} -name "*.h" -type f -exec chmod 644 {} \; +# Create a more generic include files symlink: +( cd $PKG/usr/include + if [ ! -e seamonkey ]; then + ln -sf seamonkey-${VERSION} seamonkey + fi +) + +# Install pkgconfig files: +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig +for file in $CWD/pkgconfig/* ; do +cat $file \ + | sed -e "s/@LIB@/lib${LIBDIRSUFFIX}/" \ + -e "s/@VERSION@/$VERSION/" \ + > $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/$(basename $file) +done + +# Add symlinks for the pkgconfig files: +( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig + ln -s seamonkey-libxul.pc libxul.pc + ln -s seamonkey-plugin.pc plugin.pc + ln -s seamonkey-xpcom.pc xpcom.pc + # These are now provided by the mozilla-nss package: + #ln -s seamonkey-nspr.pc nspr.pc + #ln -s seamonkey-nss.pc nss.pc +) + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Strip files: +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# This remains the standard plugin directory for all browsers. +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins + +# This is traditional. +( cd $PKG/usr/lib${LIBDIRSUFFIX} + if [ ! -e seamonkey ]; then + ln -sf seamonkey-${VERSION} seamonkey + fi +) + +mkdir -p $PKG/usr/share/applications +cp -a $CWD/*.desktop $PKG/usr/share/applications +chown -R root:root $PKG/usr/share/applications +chmod 644 $PKG/usr/share/applications/* +mkdir -p $PKG/usr/share/pixmaps +cp -a $CWD/*.png $PKG/usr/share/pixmaps +chown -R root:root $PKG/usr/share/pixmaps +chmod 644 $PKG/usr/share/pixmaps/* + +mkdir -p $PKG/usr/doc/seamonkey-$VERSION +( cd mozilla + cp -a \ + LEGAL LICENSE README.txt \ + $PKG/usr/doc/seamonkey-$VERSION +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + > $PKG/install/doinst.sh + +cd $TMP/package-seamonkey +/sbin/makepkg -l y -c n -p $TMP/seamonkey-$TARBALLVER-$ARCH-$BUILD.txz + +# Create a standalone seamonkey-solibs package for RPM, gxine, etc. +rm -r $TMP/package-seamonkey-solibs +mkdir -p $TMP/package-seamonkey-solibs/usr/doc +cp -a $PKG/usr/doc/seamonkey-$VERSION $TMP/package-seamonkey-solibs/usr/doc +mkdir -p $TMP/package-seamonkey-solibs/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION} +for file in libfreebl3.chk libfreebl3.so libmozsqlite3.so \ + libnspr4.so libnss* libplc4.so libplds4.so libsmime3.so libsoftokn3.chk \ + libsoftokn3.so libssl3.so ; do + cp -a $PKG/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION}/$file \ + $TMP/package-seamonkey-solibs/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION} +done +mkdir $TMP/package-seamonkey-solibs/install +cat << EOF | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $TMP/package-seamonkey-solibs/install/doinst.sh +( cd usr/lib ; rm -rf seamonkey ) +( cd usr/lib ; ln -sf seamonkey-$VERSION seamonkey ) +if ! grep /usr/lib/seamonkey etc/ld.so.conf 1> /dev/null 2> /dev/null ; then + echo "/usr/lib/seamonkey" >> etc/ld.so.conf +fi +if [ -x /sbin/ldconfig ]; then + /sbin/ldconfig 2> /dev/null +fi +EOF +cat << EOF > $TMP/package-seamonkey-solibs/install/slack-desc + |-----handy-ruler------------------------------------------------------| +seamonkey-solibs: seamonkey-solibs (Shared libraries from Seamonkey) +seamonkey-solibs: +seamonkey-solibs: This package contains a subset of the shared libraries from Seamonkey +seamonkey-solibs: to provide runtime support for various programs. +seamonkey-solibs: This package is built from the Seamonkey sources and is provided +seamonkey-solibs: as a standalone runtime package for people who do not want to install +seamonkey-solibs: the entire seamonkey package (as for server use). +seamonkey-solibs: +seamonkey-solibs: This package is runtime only. The include files and other files for +seamonkey-solibs: development can be found in the seamonkey package. +seamonkey-solibs: +EOF +cd $TMP/package-seamonkey-solibs +/sbin/makepkg -l y -c n -p $TMP/seamonkey-solibs-$TARBALLVER-$ARCH-$BUILD.txz + diff --git a/patches/source/seamonkey/seamonkey.desktop b/patches/source/seamonkey/seamonkey.desktop new file mode 100644 index 000000000..eaf81ddff --- /dev/null +++ b/patches/source/seamonkey/seamonkey.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=SeaMonkey +Comment=Web Browser +Exec=/usr/bin/seamonkey +Icon=/usr/share/pixmaps/seamonkey-icon.png +Terminal=0 +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +Categories=Application;Network; diff --git a/patches/source/seamonkey/slack-desc b/patches/source/seamonkey/slack-desc new file mode 100644 index 000000000..af6ee2408 --- /dev/null +++ b/patches/source/seamonkey/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +seamonkey: SeaMonkey (an open-source web browser suite) +seamonkey: +seamonkey: The SeaMonkey browser suite. SeaMonkey features a state-of-the-art +seamonkey: web browser and powerful email client, as well as a WYSIWYG web page +seamonkey: composer and a feature-rich IRC chat client. +seamonkey: +seamonkey: +seamonkey: +seamonkey: Visit the SeaMonkey project at this URL: +seamonkey: http://www.mozilla.org/projects/seamonkey/ +seamonkey: diff --git a/patches/source/squashfs-tools/0001-kfreebsd.patch b/patches/source/squashfs-tools/0001-kfreebsd.patch new file mode 100644 index 000000000..7ce6cd5b5 --- /dev/null +++ b/patches/source/squashfs-tools/0001-kfreebsd.patch @@ -0,0 +1,123 @@ +Author: Cyril Brulebois +Description: Fixes FTBFS on kfreebsd (Closes: #557174). +Last-Update: 2015-09-06 + +--- squashfs-tools-4.3.orig/squashfs-tools/mksquashfs.c ++++ squashfs-tools-4.3/squashfs-tools/mksquashfs.c +@@ -51,7 +51,7 @@ + #include + #include + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +@@ -4105,7 +4105,7 @@ void initialise_threads(int readq, int f + BAD_ERROR("Failed to set signal mask in intialise_threads\n"); + + if(processors == -1) { +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + int mib[2]; + size_t len = sizeof(processors); + +--- squashfs-tools-4.3.orig/squashfs-tools/read_fs.c ++++ squashfs-tools-4.3/squashfs-tools/read_fs.c +@@ -35,7 +35,7 @@ + #include + #include + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/read_xattrs.c ++++ squashfs-tools-4.3/squashfs-tools/read_xattrs.c +@@ -31,7 +31,7 @@ + #include + #include + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/swap.c ++++ squashfs-tools-4.3/squashfs-tools/swap.c +@@ -19,7 +19,7 @@ + * swap.c + */ + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/unsquashfs.c ++++ squashfs-tools-4.3/squashfs-tools/unsquashfs.c +@@ -2190,7 +2190,7 @@ void initialise_threads(int fragment_buf + "\n"); + + if(processors == -1) { +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + int mib[2]; + size_t len = sizeof(processors); + +--- squashfs-tools-4.3.orig/squashfs-tools/unsquashfs.h ++++ squashfs-tools-4.3/squashfs-tools/unsquashfs.h +@@ -47,7 +47,7 @@ + #include + #include + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/xz_wrapper.h ++++ squashfs-tools-4.3/squashfs-tools/xz_wrapper.h +@@ -24,7 +24,7 @@ + * + */ + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/gzip_wrapper.h ++++ squashfs-tools-4.3/squashfs-tools/gzip_wrapper.h +@@ -24,7 +24,7 @@ + * + */ + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/lz4_wrapper.h ++++ squashfs-tools-4.3/squashfs-tools/lz4_wrapper.h +@@ -24,7 +24,7 @@ + * + */ + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN +--- squashfs-tools-4.3.orig/squashfs-tools/lzo_wrapper.h ++++ squashfs-tools-4.3/squashfs-tools/lzo_wrapper.h +@@ -24,7 +24,7 @@ + * + */ + +-#ifndef linux ++#if !defined(linux) && !defined(__GLIBC__) + #define __BYTE_ORDER BYTE_ORDER + #define __BIG_ENDIAN BIG_ENDIAN + #define __LITTLE_ENDIAN LITTLE_ENDIAN diff --git a/patches/source/squashfs-tools/0002-fix_phys_mem_calculation.patch b/patches/source/squashfs-tools/0002-fix_phys_mem_calculation.patch new file mode 100644 index 000000000..20f9005b6 --- /dev/null +++ b/patches/source/squashfs-tools/0002-fix_phys_mem_calculation.patch @@ -0,0 +1,159 @@ +From 55f7ba830d40d438f0b0663a505e0c227fc68b6b Mon Sep 17 00:00:00 2001 +From: Phillip Lougher +Date: Tue, 10 Jun 2014 21:51:52 +0100 +Subject: [PATCH] mksquashfs: fix phys mem calculation for 32-bit processes on + PAE/64-bit kernels + +When adding the code to base default memory usage on physical memory +(by default use 25% of physical memory), I made an oversight. I assumed +the process would be able to address 25% of physical memory. + +However, for 32-bit processes running on a PAE kernel or 64-bit kernel, +25% of physical memory can easily exceed the addressible memory for a +32-bit process, e.g. if a machine has 24 GB of physical memory, the +code would asume the process could easily use 6 GB. + +A 32-bit process by definition can only address 4 GB (32-bit pointers). +But, due to the typical kernel/user-space split (1GB/3GB, or 2GB/2GB) +on PAE kernels, a 32-bit process may only be able to address 2 GB. + +So, if Mksquashfs is a 32-bit application running on a PAE/64-bit kernel, +the code assumes it can address much more memory than it really can, which +means it runs out of memory. + +The fix is to impose a maximum default limit on 32-bit kernels, or +otherwise to never use a value more than 25% of the address space. If +we assume the maximum address space is 2 GB, then the maximum becomes +512 MB. But, given most kernels used the 1GB/3GB split, that may be +unduely conservative, and 25% of 3 GB (756 MB) may be better. This +patch compromises on 640 MB, which is mid-way between the 512 MB and 756 MB +values. It is also the fixed default value previously used by Mksquashfs. + +This patch also alters the code which imposes a maximum size. Previously +it was believed limiting to the physical memory size was adequate. But +obviously this needs to be updated to take into account a 32-bit process +may only be able to address 2 GB. In the process I've also taken the +opportunity to limit all requests to no more than 75% of physical memory. + +Signed-off-by: Phillip Lougher +--- + squashfs-tools/mksquashfs.c | 78 ++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 70 insertions(+), 8 deletions(-) + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index 86f82bb..5370ecf 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -304,7 +304,7 @@ void restorefs(); + struct dir_info *scan1_opendir(char *pathname, char *subpath, int depth); + void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad); + unsigned short get_checksum_mem(char *buff, int bytes); +-int get_physical_memory(); ++void check_usable_phys_mem(int total_mem); + + + void prep_exit() +@@ -4053,11 +4053,7 @@ void initialise_threads(int readq, int fragq, int bwriteq, int fwriteq, + BAD_ERROR("Queue sizes rediculously too large\n"); + total_mem += fwriteq; + +- if(total_mem > get_physical_memory()) { +- ERROR("Total queue sizes larger than physical memory.\n"); +- ERROR("Mksquashfs will exhaust physical memory and thrash.\n"); +- BAD_ERROR("Queues too large\n"); +- } ++ check_usable_phys_mem(total_mem); + + /* + * convert from queue size in Mbytes to queue size in +@@ -4879,6 +4875,72 @@ int get_physical_memory() + } + + ++void check_usable_phys_mem(int total_mem) ++{ ++ /* ++ * We want to allow users to use as much of their physical ++ * memory as they wish. However, for practical reasons there are ++ * limits which need to be imposed, to protect users from themselves ++ * and to prevent people from using Mksquashfs as a DOS attack by using ++ * all physical memory. Mksquashfs uses memory to cache data from disk ++ * to optimise performance. It is pointless to ask it to use more ++ * than 75% of physical memory, as this causes thrashing and it is thus ++ * self-defeating. ++ */ ++ int mem = get_physical_memory(); ++ ++ mem = (mem >> 1) + (mem >> 2); /* 75% */ ++ ++ if(total_mem > mem) { ++ ERROR("Total memory requested is more than 75%% of physical " ++ "memory.\n"); ++ ERROR("Mksquashfs uses memory to cache data from disk to " ++ "optimise performance.\n"); ++ ERROR("It is pointless to ask it to use more than this amount " ++ "of memory, as this\n"); ++ ERROR("causes thrashing and it is thus self-defeating.\n"); ++ BAD_ERROR("Requested memory size too large\n"); ++ } ++ ++ if(sizeof(void *) == 4 && total_mem > 2048) { ++ /* ++ * If we're running on a kernel with PAE or on a 64-bit kernel, ++ * then the 75% physical memory limit can still easily exceed ++ * the addressable memory by this process. ++ * ++ * Due to the typical kernel/user-space split (1GB/3GB, or ++ * 2GB/2GB), we have to conservatively assume the 32-bit ++ * processes can only address 2-3GB. So refuse if the user ++ * tries to allocate more than 2GB. ++ */ ++ ERROR("Total memory requested may exceed maximum " ++ "addressable memory by this process\n"); ++ BAD_ERROR("Requested memory size too large\n"); ++ } ++} ++ ++ ++int get_default_phys_mem() ++{ ++ int mem = get_physical_memory() / SQUASHFS_TAKE; ++ ++ if(sizeof(void *) == 4 && mem > 640) { ++ /* ++ * If we're running on a kernel with PAE or on a 64-bit kernel, ++ * the default memory usage can exceed the addressable ++ * memory by this process. ++ * Due to the typical kernel/user-space split (1GB/3GB, or ++ * 2GB/2GB), we have to conservatively assume the 32-bit ++ * processes can only address 2-3GB. So limit the default ++ * usage to 640M, which gives room for other data. ++ */ ++ mem = 640; ++ } ++ ++ return mem; ++} ++ ++ + void calculate_queue_sizes(int mem, int *readq, int *fragq, int *bwriteq, + int *fwriteq) + { +@@ -4890,7 +4952,7 @@ void calculate_queue_sizes(int mem, int *readq, int *fragq, int *bwriteq, + + + #define VERSION() \ +- printf("mksquashfs version 4.3 (2014/05/12)\n");\ ++ printf("mksquashfs version 4.3-git (2014/06/09)\n");\ + printf("copyright (C) 2014 Phillip Lougher "\ + "\n\n"); \ + printf("This program is free software; you can redistribute it and/or"\ +@@ -4918,7 +4980,7 @@ int main(int argc, char *argv[]) + int fragq; + int bwriteq; + int fwriteq; +- int total_mem = get_physical_memory() / SQUASHFS_TAKE; ++ int total_mem = get_default_phys_mem(); + int progress = TRUE; + int force_progress = FALSE; + struct file_buffer **fragment = NULL; diff --git a/patches/source/squashfs-tools/0003-CVE-2015-4645_and_CVE-2015-4646.patch b/patches/source/squashfs-tools/0003-CVE-2015-4645_and_CVE-2015-4646.patch new file mode 100644 index 000000000..d81639f63 --- /dev/null +++ b/patches/source/squashfs-tools/0003-CVE-2015-4645_and_CVE-2015-4646.patch @@ -0,0 +1,76 @@ +From 6777e08cc38bc780d27c69c1d8c272867b74524f Mon Sep 17 00:00:00 2001 +From: Giancarlo Canales Barreto +Date: Wed, 17 Jun 2015 00:22:19 -0400 +Subject: [PATCH] Update unsquash-4.c + +There seems to be a stack overflow in read_fragment_table_4 at via what seems to be an integer overflow. Still looking into this problem, it seems like two or three different problems combined. + +The first problem overflows the bytes variable, so that the allocation is enormous. +```c +int bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); +``` + +If we fix this by making the variable size_t, we run into an unrelated problem in which the stack VLA allocation of fragment_table_index can easily exceed RLIMIT_STACK. +```c +long long fragment_table_index[indexes]; +``` + +In the case of my system, the RLIMIT_STACK is 8388608, and VLA is asking for 15728648. Plus the stack probably already has a bunch of other things. This is what I believe ultimately leads to the stack overflow. + +Afterwards, the heap allocation seems to succeed, and the disastrous call to read_fs_bytes is made, which initiates transfer from the squashfs image to the stack. At this stage, a stack overflow appears to be in full effect. + +```c + res = read_fs_bytes(fd, sBlk.s.fragment_table_start, + SQUASHFS_FRAGMENT_INDEX_BYTES(sBlk.s.fragments), + fragment_table_index); +``` +This problem is also present in other read_fragment_table_N functions, and in in the original squashfs-tools. + +``` +Parallel unsquashfs: Using 8 processors +ASAN:SIGSEGV +================================================================= +==8221==ERROR: AddressSanitizer: stack-overflow on address 0x7ffef3ae9608 (pc 0x000000559011 bp 0x7ffef49e9670 sp 0x7ffef3ae9610 T0) + #0 0x559010 in read_fragment_table_4 /home/septimus/vr/squashfs-vr/squashfs-tools/unsquash-4.c:40:9 + #1 0x525073 in main /home/septimus/vr/squashfs-vr/squashfs-tools/unsquashfs.c:2763:5 + #2 0x7fb56c533a3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20a3f) + #3 0x418468 in _start (/home/septimus/vr/squashfs-vr/squashfs-tools/unsquashfs+0x418468) +SUMMARY: AddressSanitizer: stack-overflow /home/septimus/vr/squashfs-vr/squashfs-tools/unsquash-4.c:40:9 in read_fragment_table_4 +==8221==ABORTING +``` + +Perhaps we should avoid using VLA altogether, and allocate fragment_table_index to the heap? +This pull request is an example implementation of the fix for unsquash-4, but I don't have enough test vectors to verify it will not break anything. +--- + unsquash-4.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c +index ecdaac7..2c0cf63 100644 +--- a/squashfs-tools/unsquash-4.c ++++ b/squashfs-tools/unsquash-4.c +@@ -31,9 +31,9 @@ static unsigned int *id_table; + int read_fragment_table_4(long long *directory_table_end) + { + int res, i; +- int bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); +- int indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); +- long long fragment_table_index[indexes]; ++ size_t bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); ++ size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); ++ long long *fragment_table_index; + + TRACE("read_fragment_table: %d fragments, reading %d fragment indexes " + "from 0x%llx\n", sBlk.s.fragments, indexes, +@@ -44,6 +44,11 @@ int read_fragment_table_4(long long *directory_table_end) + return TRUE; + } + ++ fragment_table_index = malloc(indexes*sizeof(long long)); ++ if(fragment_table_index == NULL) ++ EXIT_UNSQUASH("read_fragment_table: failed to allocate " ++ "fragment table index\n"); ++ + fragment_table = malloc(bytes); + if(fragment_table == NULL) + EXIT_UNSQUASH("read_fragment_table: failed to allocate " diff --git a/patches/source/squashfs-tools/0004-unsquashfs-add-support-for-LZMA-magics.patch b/patches/source/squashfs-tools/0004-unsquashfs-add-support-for-LZMA-magics.patch new file mode 100644 index 000000000..258416bfa --- /dev/null +++ b/patches/source/squashfs-tools/0004-unsquashfs-add-support-for-LZMA-magics.patch @@ -0,0 +1,102 @@ +From c2dc60a94b01a1fff4a22db1c0569651afa6c959 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Wed, 19 Oct 2011 11:44:57 +0200 +Subject: [PATCH] unsquashfs: add support for LZMA magics +X-Face: z*RaLf`X<@C75u6Ig9}{oW$H;1_\2t5)({*|jhM/Vb;]yA5\I~93>J<_`<4)A{':UrE + +Some vendor (e.g. Thomson/Technicolor) use a different super block magic +to indicate LZMA compression: + + qshs (0x71736873) - LZMA compression + shsq (0x73687371) - LZMA compression, SWAPPED fields + +Add support for detecting this and enable extraction for filesystems +from those firmwares. + +Signed-off-by: Jonas Gorski +Tested-by: Antonio Ospite +--- + squashfs-tools/squashfs_fs.h | 6 ++++++ + squashfs-tools/unsquashfs.c | 24 ++++++++++++++++++------ + 2 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/squashfs-tools/squashfs_fs.h b/squashfs-tools/squashfs_fs.h +index d4fba1b..8462a6b 100644 +--- a/squashfs-tools/squashfs_fs.h ++++ b/squashfs-tools/squashfs_fs.h +@@ -30,6 +30,12 @@ + #define SQUASHFS_MAGIC_SWAP 0x68737173 + #define SQUASHFS_START 0 + ++/* ++ * Squashfs + LZMA ++ */ ++#define SQUASHFS_MAGIC_LZMA 0x71736873 ++#define SQUASHFS_MAGIC_LZMA_SWAP 0x73687371 ++ + /* size of metadata (inode and directory) blocks */ + #define SQUASHFS_METADATA_SIZE 8192 + #define SQUASHFS_METADATA_LOG 13 +diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c +index 320bead..7869a38 100644 +--- a/squashfs-tools/unsquashfs.c ++++ b/squashfs-tools/unsquashfs.c +@@ -1516,10 +1516,12 @@ int read_super(char *source) + */ + read_fs_bytes(fd, SQUASHFS_START, sizeof(struct squashfs_super_block), + &sBlk_4); +- swap = sBlk_4.s_magic != SQUASHFS_MAGIC; ++ swap = (sBlk_4.s_magic != SQUASHFS_MAGIC && ++ sBlk_4.s_magic != SQUASHFS_MAGIC_LZMA); + SQUASHFS_INSWAP_SUPER_BLOCK(&sBlk_4); + +- if(sBlk_4.s_magic == SQUASHFS_MAGIC && sBlk_4.s_major == 4 && ++ if((sBlk_4.s_magic == SQUASHFS_MAGIC || ++ sBlk_4.s_magic == SQUASHFS_MAGIC_LZMA) && sBlk_4.s_major == 4 && + sBlk_4.s_minor == 0) { + s_ops.squashfs_opendir = squashfs_opendir_4; + s_ops.read_fragment = read_fragment_4; +@@ -1532,7 +1534,11 @@ int read_super(char *source) + /* + * Check the compression type + */ +- comp = lookup_compressor_id(sBlk.s.compression); ++ if (sBlk_4.s_magic == SQUASHFS_MAGIC_LZMA) ++ comp = lookup_compressor("lzma"); ++ else ++ comp = lookup_compressor_id(sBlk.s.compression); ++ + return TRUE; + } + +@@ -1547,8 +1553,10 @@ int read_super(char *source) + * Check it is a SQUASHFS superblock + */ + swap = 0; +- if(sBlk_3.s_magic != SQUASHFS_MAGIC) { +- if(sBlk_3.s_magic == SQUASHFS_MAGIC_SWAP) { ++ if(sBlk_3.s_magic != SQUASHFS_MAGIC && ++ sBlk_3.s_magic != SQUASHFS_MAGIC_LZMA) { ++ if(sBlk_3.s_magic == SQUASHFS_MAGIC_SWAP || ++ sBlk_3.s_magic == SQUASHFS_MAGIC_LZMA_SWAP) { + squashfs_super_block_3 sblk; + ERROR("Reading a different endian SQUASHFS filesystem " + "on %s\n", source); +@@ -1626,7 +1634,11 @@ int read_super(char *source) + /* + * 1.x, 2.x and 3.x filesystems use gzip compression. + */ +- comp = lookup_compressor("gzip"); ++ if (sBlk.s.s_magic == SQUASHFS_MAGIC_LZMA) ++ comp = lookup_compressor("lzma"); ++ else ++ comp = lookup_compressor("gzip"); ++ + return TRUE; + + failed_mount: +-- +1.7.10.4 + diff --git a/patches/source/squashfs-tools/0006-uptream-fix-race.patch b/patches/source/squashfs-tools/0006-uptream-fix-race.patch new file mode 100644 index 000000000..3cefbe5b7 --- /dev/null +++ b/patches/source/squashfs-tools/0006-uptream-fix-race.patch @@ -0,0 +1,54 @@ +commit de03266983ceb62e5365aac84fcd3b2fd4d16e6f +Author: Phillip Lougher +Date: Thu Sep 18 01:28:11 2014 +0100 + + mksquashfs: fix rare race in fragment waiting in filesystem finalisation + + Fix a rare race condition in fragment waiting when finalising the + filesystem. This is a race condition that was initially fixed in 2009, + but inadvertantly re-introduced in the latest release when the code + was rewritten. + + Background: + + When finalising the filesystem, the main control thread needs to ensure + all the in-flight fragments have been queued to the writer thread before + asking the writer thread to finish, and then writing the metadata. + + It does this by waiting on the fragments_outstanding counter. Once this + counter reaches 0, it synchronises with the writer thread, waiting until + the writer thread reports no outstanding data to be written. + + However, the main thread can race with the fragment deflator thread(s) + because the fragment deflator thread(s) decrement the fragments_outstanding + counter and release the mutex before queueing the compressed fragment + to the writer thread, i.e. the offending code is: + + fragments_outstanding --; + pthread_mutex_unlock(&fragment_mutex); + queue_put(to_writer, write_buffer); + + In extremely rare circumstances, the main thread may see the + fragments_outstanding counter is zero before the fragment + deflator sends the fragment buffer to the writer thread, and synchronise + with the writer thread, and finalise before the fragment has been written. + + The fix is to ensure the fragment is queued to the writer thread + before releasing the mutex. + + Signed-off-by: Phillip Lougher + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index 87b7d86..f1fcff1 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -2445,8 +2445,8 @@ void *frag_deflator(void *arg) + write_buffer->block = bytes; + bytes += compressed_size; + fragments_outstanding --; +- pthread_mutex_unlock(&fragment_mutex); + queue_put(to_writer, write_buffer); ++ pthread_mutex_unlock(&fragment_mutex); + TRACE("Writing fragment %lld, uncompressed size %d, " + "compressed size %d\n", file_buffer->block, + file_buffer->size, compressed_size); diff --git a/patches/source/squashfs-tools/0007-fix-2GB-limit-in-mksquashfs.patch b/patches/source/squashfs-tools/0007-fix-2GB-limit-in-mksquashfs.patch new file mode 100644 index 000000000..c689a3a94 --- /dev/null +++ b/patches/source/squashfs-tools/0007-fix-2GB-limit-in-mksquashfs.patch @@ -0,0 +1,27 @@ +From 9c1db6d13a51a2e009f0027ef336ce03624eac0d Mon Sep 17 00:00:00 2001 +From: "Guan, Xin" +Date: Sat, 13 Sep 2014 13:15:26 +0200 +Subject: [PATCH] Fix 2GB-limit of the is_fragment(...) function. + +Applies to squashfs-tools 4.3. + +Reported-by: Bruno Wolff III +Signed-off-by: Guan, Xin +Signed-off-by: Phillip Lougher +--- + squashfs-tools/mksquashfs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index f1fcff1..d221c35 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -2055,7 +2055,7 @@ struct file_info *duplicate(long long file_size, long long bytes, + + inline int is_fragment(struct inode_info *inode) + { +- int file_size = inode->buf.st_size; ++ off_t file_size = inode->buf.st_size; + + /* + * If this block is to be compressed differently to the diff --git a/patches/source/squashfs-tools/slack-desc b/patches/source/squashfs-tools/slack-desc new file mode 100644 index 000000000..681a66300 --- /dev/null +++ b/patches/source/squashfs-tools/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +squashfs-tools: squashfs-tools (squashed read-only filesystem for Linux) +squashfs-tools: +squashfs-tools: Squashfs is a highly compressed read-only filesystem for Linux. +squashfs-tools: Squashfs compresses both files, inodes and directories, and +squashfs-tools: supports block sizes up to 1Mbytes for greater compression. +squashfs-tools: It is implemented as a kernel module under VFS. +squashfs-tools: The package contains tools for manipulation of squashfs bundles. +squashfs-tools: +squashfs-tools: +squashfs-tools: squashfs-tools home: http://squashfs.sourceforge.net/ +squashfs-tools: diff --git a/patches/source/squashfs-tools/squashfs-tools.SlackBuild b/patches/source/squashfs-tools/squashfs-tools.SlackBuild new file mode 100755 index 000000000..1b010d0e0 --- /dev/null +++ b/patches/source/squashfs-tools/squashfs-tools.SlackBuild @@ -0,0 +1,122 @@ +#!/bin/sh + +# Copyright 2015 Eric Hameleers, Eindhoven, NL +# Copyright 2017 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=squashfs-tools +VERSION=${VERSION:-$(echo squashfs*.tar.xz | cut -b9- | rev | cut -f3- -d . | rev)} +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf squashfs${VERSION} +tar xvf $CWD/squashfs${VERSION}.tar.xz || exit 1 +cd squashfs${VERSION} || exit 1 + +zcat $CWD/0001-kfreebsd.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0002-fix_phys_mem_calculation.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0003-CVE-2015-4645_and_CVE-2015-4646.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0004-unsquashfs-add-support-for-LZMA-magics.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0006-uptream-fix-race.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/0007-fix-2GB-limit-in-mksquashfs.patch.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +cd squashfs-tools || exit 1 + +# Build: +CFLAGS="$SLKCFLAGS" \ +make $NUMJOBS \ + GZIP_SUPPORT="1" \ + XZ_SUPPORT="1" \ + LZO_SUPPORT="1" \ + LZMA_XZ_SUPPORT="1" \ + COMP_DEFAULT="xz" || exit 1 + +# Install: +make install INSTALL_DIR=$PKG/usr/bin || exit 1 + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +( cd .. + cp -a \ + ACKNOWLEDGEMENTS CHANGES COPYING DONATIONS INSTALL \ + README* PERFORMANCE.README *.example \ + $PKG/usr/doc/${PKGNAM}-$VERSION +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/stunnel/doinst.sh b/patches/source/stunnel/doinst.sh new file mode 100644 index 000000000..21f004b02 --- /dev/null +++ b/patches/source/stunnel/doinst.sh @@ -0,0 +1,12 @@ +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/stunnel/openssl.cnf.new diff --git a/patches/source/stunnel/generate-stunnel-key.sh b/patches/source/stunnel/generate-stunnel-key.sh new file mode 100644 index 000000000..b24b4ba8a --- /dev/null +++ b/patches/source/stunnel/generate-stunnel-key.sh @@ -0,0 +1,13 @@ +#!/bin/sh +USE_DH=0 + +openssl req -new -x509 -days 365 -nodes \ + -config ./openssl.cnf -out stunnel.pem -keyout stunnel.pem + +test $USE_DH -eq 0 || openssl gendh >> stunnel.pem + +openssl x509 -subject -dates -fingerprint -noout \ + -in stunnel.pem + +chmod 600 stunnel.pem +rm -f stunnel.rnd diff --git a/patches/source/stunnel/slack-desc b/patches/source/stunnel/slack-desc new file mode 100644 index 000000000..f8ee5bc47 --- /dev/null +++ b/patches/source/stunnel/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +stunnel: stunnel (Universal SSL tunnel) +stunnel: +stunnel: The stunnel program is designed to work as an SSL encryption wrapper +stunnel: between remote client and local (inetd-startable) or remote servers. +stunnel: The goal is to facilitate SSL encryption and authentication for +stunnel: non-SSL-aware programs. +stunnel: +stunnel: stunnel can be used to add SSL functionality to commonly used inetd +stunnel: daemons like POP-2, POP-3 and IMAP servers without any changes in the +stunnel: programs' code. +stunnel: diff --git a/patches/source/stunnel/stunnel.SlackBuild b/patches/source/stunnel/stunnel.SlackBuild new file mode 100755 index 000000000..9797f3bcc --- /dev/null +++ b/patches/source/stunnel/stunnel.SlackBuild @@ -0,0 +1,140 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=stunnel +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-stunnel + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf stunnel-$VERSION +tar xvf $CWD/stunnel-$VERSION.tar.?z || exit 1 +cd stunnel-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --exec-prefix= \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --mandir=/usr/man \ + --sbindir=/usr/sbin \ + --bindir=/usr/bin \ + --localstatedir=/var \ + --build=$ARCH-slackware-linux + +make $NUMJOBS || make || exit 1 + +# This used to be installed in /usr/sbin, so it would probably be nice to +# link from there: +mkdir -p $PKG/usr/sbin +( cd $PKG/usr/sbin + ln -sf ../bin/stunnel . + ln -sf ../bin/stunnel3 . +) + +mkdir -p $PKG/var/run/stunnel +# This will produce a useless key. +make -i install DESTDIR=$PKG +# Get rid of key, so nobody tries to use it: +rm -f $PKG/etc/stunnel/stunnel.pem +# Add cnf: +cat tools/openssl.cnf > $PKG/etc/stunnel/openssl.cnf.new +cat $CWD/generate-stunnel-key.sh > $PKG/etc/stunnel/generate-stunnel-key.sh +chmod 755 $PKG/etc/stunnel/generate-stunnel-key.sh + +mkdir -p $PKG/usr/doc/stunnel-$VERSION +mv $PKG/usr/share/doc/stunnel/* $PKG/usr/doc/stunnel-$VERSION +rmdir $PKG/usr/share/doc/stunnel +rmdir $PKG/usr/share/doc +rmdir $PKG/usr/share + +mkdir -p $PKG/usr/man/pl/man8 +mv $PKG/usr/man/man8/stunnel.pl.8 $PKG/usr/man/pl/man8/stunnel.8 +mkdir -p $PKG/usr/man/fr/man8 +mv $PKG/usr/man/man8/stunnel.fr.8 $PKG/usr/man/fr/man8/stunnel.8 +gzip -9 $PKG/usr/man/*/man?/*.? $PKG/usr/man/man?/*.? + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# The 4.15 version of stunnel caused some bizarre perms, so +# we'll protect against that: +chmod 0755 $PKG/var/lib +chown root:root $PKG/var/lib + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/stunnel-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/subversion/get-svn-book.sh b/patches/source/subversion/get-svn-book.sh new file mode 100755 index 000000000..e88530d32 --- /dev/null +++ b/patches/source/subversion/get-svn-book.sh @@ -0,0 +1,9 @@ +#!/bin/sh +CWD=`pwd` + +# Add the latest copy of the Subversion book: +( cd $CWD + lftpget http://svnbook.red-bean.com/en/1.7/svn-book-html.tar.bz2 + chmod 644 svn-book-html.tar.bz2 +) + diff --git a/patches/source/subversion/slack-desc b/patches/source/subversion/slack-desc new file mode 100644 index 000000000..af2ef0b61 --- /dev/null +++ b/patches/source/subversion/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +subversion: subversion (a version control system) +subversion: +subversion: Subversion is a version control system which allows you to keep old +subversion: versions of files and directories (usually source code), and keep a +subversion: log of who, when, and why changes occurred, similar to other such +subversion: systems like CVS, RCS or SCCS. Subversion keeps all the information +subversion: to permit extracting previous versions of those files at any time. +subversion: +subversion: For more information about the Subversion project, visit: +subversion: http://subversion.apache.org +subversion: diff --git a/patches/source/subversion/subversion.SlackBuild b/patches/source/subversion/subversion.SlackBuild new file mode 100755 index 000000000..83c397b9e --- /dev/null +++ b/patches/source/subversion/subversion.SlackBuild @@ -0,0 +1,174 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2015 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo subversion-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-subversion + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf subversion-$VERSION +tar xvf $CWD/subversion-$VERSION.tar.?z* || exit 1 +cd subversion-$VERSION || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --with-apache-libexecdir=/usr/lib${LIBDIRSUFFIX}/httpd/modules \ + --mandir=/usr/man \ + --docdir=/usr/doc/subversion-$VERSION \ + --enable-shared \ + --disable-static \ + --with-apr=/usr \ + --with-apr-util=/usr \ + --with-apxs=/usr/bin/apxs \ + --with-zlib=/usr \ + --with-pic \ + --with-kwallet \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 +make install-tools DESTDIR=$PKG || exit 1 +make install-docs DESTDIR=$PKG || exit 1 + +# Install python bindings +make swig-py +make install-swig-py DESTDIR=$PKG +PYTHON_VER=$(python -c 'import sys; print "%d.%d" % sys.version_info[:2]') +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/python${PYTHON_VER}/site-packages +mv $PKG/usr/lib${LIBDIRSUFFIX}/svn-python/* \ + $PKG/usr/lib${LIBDIRSUFFIX}/python${PYTHON_VER}/site-packages +rmdir $PKG/usr/lib${LIBDIRSUFFIX}/svn-python + +# Perl bindings +make swig-pl-lib +make install-swig-pl-lib DESTDIR=$PKG +( cd subversion/bindings/swig/perl/native + perl Makefile.PL + make install_vendor DESTDIR=$PKG +) +eval $(perl '-V:archlib') +mv $PKG/$archlib/perllocal.pod $PKG/$archlib/subversion.pod + +# Ruby bindings +make swig-rb +make install-swig-rb DESTDIR=$PKG + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +rm -rf $PKG/usr/info +# Something doesn't honor --mandir +mv $PKG/usr/share/man/man3 $PKG/usr/man +gzip -9 $PKG/usr/man/man?/* +rmdir $PKG/usr/share/man + +# What is this junk for? Since I don't know, I'll erase it. :-) +rm -rf $PKG/usr/build + +mkdir -p $PKG/usr/doc/subversion-$VERSION +cp -a \ + BUGS COMMITTERS COPYING* HACKING INSTALL README TRANSLATING doc \ + $PKG/usr/doc/subversion-$VERSION +# too big && useless for most || if you think not, can be found in the source tarball +rm -rf $PKG/usr/doc/subversion-$VERSION/doc/tools +# Add the HTML svn book: +( cd $PKG/usr/doc/subversion-$VERSION + tar xf $CWD/svn-book-html.tar.bz2 + mv svn-book-html book + cd book + chown -R root:root . + find . -type d -exec chmod 0755 {} \; + find . -type f -exec chmod 0644 {} \; + find . -perm 2755 -exec chmod 0755 {} \; + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +) + +# If there's a CHANGES file, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r CHANGES ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES + touch -r CHANGES $DOCSDIR/CHANGES +fi + +# This removes our DESTDIR from the packlist filenames, to keep perl's +# internal inventories consistent and correct. +find $PKG -name .packlist | while read plist ; do + sed -e "s%$PKG%%g" \ + -e "s%/share/man%/man%g" \ + -re "s%\.([1-9]n?|3pm)$%&.gz%g # extend man filenames for .gz" \ + ${plist} > ${plist}.new + mv -f ${plist}.new ${plist} +done + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/subversion-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/sudo/doinst.sh b/patches/source/sudo/doinst.sh new file mode 100644 index 000000000..01e3d173e --- /dev/null +++ b/patches/source/sudo/doinst.sh @@ -0,0 +1,14 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/sudoers.new +rm -f etc/sudoers.new diff --git a/patches/source/sudo/slack-desc b/patches/source/sudo/slack-desc new file mode 100644 index 000000000..66f1aa8c9 --- /dev/null +++ b/patches/source/sudo/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +sudo: sudo (give limited root privileges to certain users) +sudo: +sudo: 'sudo' is a command that allows users to execute some commands as +sudo: root. The /etc/sudoers file (edited with 'visudo') specifies which +sudo: users have access to sudo and which commands they can run. 'sudo' +sudo: logs all its activities to /var/log/ so the system administrator +sudo: can keep an eye on things. +sudo: +sudo: +sudo: +sudo: diff --git a/patches/source/sudo/sudo.SlackBuild b/patches/source/sudo/sudo.SlackBuild new file mode 100755 index 000000000..7611ad065 --- /dev/null +++ b/patches/source/sudo/sudo.SlackBuild @@ -0,0 +1,125 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2011, 2012, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=sudo +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-sudo + +rm -rf $PKG +mkdir -p $TMP $PKG/var/db + +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mcpu=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi + +cd $TMP +rm -rf sudo-$VERSION +tar xvf $CWD/sudo-$VERSION.tar.?z* || exit 1 +cd sudo-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sbindir=/usr/sbin \ + --mandir=/usr/man \ + --docdir=/usr/doc/sudo-$VERSION \ + --with-env-editor \ + --disable-pam-session \ + --with-pam=no \ + --with-rundir=/var/db/sudo \ + --with-insults \ + --with-all-insults \ + --with-pc-insults \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +( cd $PKG/usr/bin + chmod 4711 sudo + ln -sf sudo sudoedit +) +chmod 755 $PKG/usr/sbin/visudo + +rm -f $PKG/usr/man/man8/sudoedit.8 +gzip -9 $PKG/usr/man/man?/*.? +( cd $PKG/usr/man/man8 ; ln -sf sudo.8.gz sudoedit.8.gz ) + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mv $PKG/etc/sudoers $PKG/etc/sudoers.new + +rm -r $PKG/usr/doc/sudo-$VERSION +mkdir -p $PKG/usr/doc/sudo-$VERSION +cp -a \ + INSTALL NEWS README* \ + doc/{CONTRIBUTORS,HISTORY,LICENSE,TROUBLESHOOTING,UPGRADE} \ + $PKG/usr/doc/sudo-$VERSION +chmod 644 $PKG/usr/doc/sudo-$VERSION/* + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/sudo-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/tcpdump/slack-desc b/patches/source/tcpdump/slack-desc new file mode 100644 index 000000000..5e9696434 --- /dev/null +++ b/patches/source/tcpdump/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +tcpdump: tcpdump (network monitoring tool) +tcpdump: +tcpdump: Tcpdump is a tool for network monitoring and data acquisition. You +tcpdump: can use it to dump information on all the packets on a network that +tcpdump: match a boolean expression. Tcpdump uses libpcap, a system +tcpdump: independent interface for user-level packet capture. +tcpdump: +tcpdump: Project homepage: http://www.tcpdump.org +tcpdump: +tcpdump: +tcpdump: diff --git a/patches/source/tcpdump/tcpdump.SlackBuild b/patches/source/tcpdump/tcpdump.SlackBuild new file mode 100755 index 000000000..dab4848c8 --- /dev/null +++ b/patches/source/tcpdump/tcpdump.SlackBuild @@ -0,0 +1,104 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=tcpdump +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-tcpdump + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf tcpdump-$VERSION + +# To (try to) avoid weird errors, take an axe to this: +rm -rf $TMP/libpcap-?.?.? + +tar xvf $CWD/tcpdump-$VERSION.tar.xz || exit 1 +cd tcpdump-$VERSION || exit 1 +find . -type d -name CVS -depth -exec rm -rf {} \; +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --docdir=/usr/doc/tcpdump-$VERSION \ + --enable-ipv6 \ + --build=$ARCH-slackware-linux +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Strange, two identical files: +( cd $PKG/usr/sbin + rm -f tcpdump + ln -s tcpdump.$VERSION tcpdump +) || exit 1 + +mkdir -p $PKG/usr/doc/tcpdump-$VERSION +cp -a \ + CHANGES CREDITS FILES INSTALL.txt LICENSE README* VERSION \ + $PKG/usr/doc/tcpdump-$VERSION + +find $PKG | xargs file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Compress man pages +( cd $PKG/usr/man + find . -type f -exec gzip -9 {} \; + for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/tcpdump-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/wget/doinst.sh b/patches/source/wget/doinst.sh new file mode 100644 index 000000000..dd81eb507 --- /dev/null +++ b/patches/source/wget/doinst.sh @@ -0,0 +1,14 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/wgetrc.new + diff --git a/patches/source/wget/slack-desc b/patches/source/wget/slack-desc new file mode 100644 index 000000000..d023ea373 --- /dev/null +++ b/patches/source/wget/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +wget: wget (a non-interactive network retriever) +wget: +wget: GNU Wget is a free network utility to retrieve files from the +wget: World Wide Web using HTTP and FTP, the two most widely used Internet +wget: protocols. It works non-interactively, thus enabling work in the +wget: background after having logged off. +wget: +wget: The author of Wget is Hrvoje Niksic . +wget: +wget: +wget: diff --git a/patches/source/wget/wget.SlackBuild b/patches/source/wget/wget.SlackBuild new file mode 100755 index 000000000..7519418b3 --- /dev/null +++ b/patches/source/wget/wget.SlackBuild @@ -0,0 +1,109 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012, 2013, 2014, 2015 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo wget-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:-" -j7 "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-wget + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf wget-$VERSION +tar xvf $CWD/wget-$VERSION.tar.?z || exit 1 +cd wget-$VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --docdir=/usr/doc/wget-$VERSION \ + --with-ssl=openssl \ + --build=${ARCH}-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mv $PKG/etc/wgetrc $PKG/etc/wgetrc.new + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* $PKG/usr/man/man?/* + +mkdir -p $PKG/usr/doc/wget-$VERSION +cp -a \ + AUTHORS COPYING* MAILING-LIST NEWS PATCHES README* TODO \ + $PKG/usr/doc/wget-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/wget-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch new file mode 100644 index 000000000..727684865 --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch @@ -0,0 +1,174 @@ +From cf4cab804c7afd5c45505528a8d16e46163243a2 Mon Sep 17 00:00:00 2001 +From: Mathy Vanhoef +Date: Fri, 14 Jul 2017 15:15:35 +0200 +Subject: [PATCH 1/8] hostapd: Avoid key reinstallation in FT handshake + +Do not reinstall TK to the driver during Reassociation Response frame +processing if the first attempt of setting the TK succeeded. This avoids +issues related to clearing the TX/RX PN that could result in reusing +same PN values for transmitted frames (e.g., due to CCM nonce reuse and +also hitting replay protection on the receiver) and accepting replayed +frames on RX side. + +This issue was introduced by the commit +0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in +authenticator') which allowed wpa_ft_install_ptk() to be called multiple +times with the same PTK. While the second configuration attempt is +needed with some drivers, it must be done only if the first attempt +failed. + +Signed-off-by: Mathy Vanhoef +--- + src/ap/ieee802_11.c | 16 +++++++++++++--- + src/ap/wpa_auth.c | 11 +++++++++++ + src/ap/wpa_auth.h | 3 ++- + src/ap/wpa_auth_ft.c | 10 ++++++++++ + src/ap/wpa_auth_i.h | 1 + + 5 files changed, 37 insertions(+), 4 deletions(-) + +diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c +index 4e04169..333035f 100644 +--- a/src/ap/ieee802_11.c ++++ b/src/ap/ieee802_11.c +@@ -1841,6 +1841,7 @@ static int add_associated_sta(struct hostapd_data *hapd, + { + struct ieee80211_ht_capabilities ht_cap; + struct ieee80211_vht_capabilities vht_cap; ++ int set = 1; + + /* + * Remove the STA entry to ensure the STA PS state gets cleared and +@@ -1848,9 +1849,18 @@ static int add_associated_sta(struct hostapd_data *hapd, + * FT-over-the-DS, where a station re-associates back to the same AP but + * skips the authentication flow, or if working with a driver that + * does not support full AP client state. ++ * ++ * Skip this if the STA has already completed FT reassociation and the ++ * TK has been configured since the TX/RX PN must not be reset to 0 for ++ * the same key. + */ +- if (!sta->added_unassoc) ++ if (!sta->added_unassoc && ++ (!(sta->flags & WLAN_STA_AUTHORIZED) || ++ !wpa_auth_sta_ft_tk_already_set(sta->wpa_sm))) { + hostapd_drv_sta_remove(hapd, sta->addr); ++ wpa_auth_sm_event(sta->wpa_sm, WPA_DRV_STA_REMOVED); ++ set = 0; ++ } + + #ifdef CONFIG_IEEE80211N + if (sta->flags & WLAN_STA_HT) +@@ -1873,11 +1883,11 @@ static int add_associated_sta(struct hostapd_data *hapd, + sta->flags & WLAN_STA_VHT ? &vht_cap : NULL, + sta->flags | WLAN_STA_ASSOC, sta->qosinfo, + sta->vht_opmode, sta->p2p_ie ? 1 : 0, +- sta->added_unassoc)) { ++ set)) { + hostapd_logger(hapd, sta->addr, + HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE, + "Could not %s STA to kernel driver", +- sta->added_unassoc ? "set" : "add"); ++ set ? "set" : "add"); + + if (sta->added_unassoc) { + hostapd_drv_sta_remove(hapd, sta->addr); +diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c +index 3587086..707971d 100644 +--- a/src/ap/wpa_auth.c ++++ b/src/ap/wpa_auth.c +@@ -1745,6 +1745,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event) + #else /* CONFIG_IEEE80211R */ + break; + #endif /* CONFIG_IEEE80211R */ ++ case WPA_DRV_STA_REMOVED: ++ sm->tk_already_set = FALSE; ++ return 0; + } + + #ifdef CONFIG_IEEE80211R +@@ -3250,6 +3253,14 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm) + } + + ++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm) ++{ ++ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt)) ++ return 0; ++ return sm->tk_already_set; ++} ++ ++ + int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm, + struct rsn_pmksa_cache_entry *entry) + { +diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h +index 0de8d97..97461b0 100644 +--- a/src/ap/wpa_auth.h ++++ b/src/ap/wpa_auth.h +@@ -267,7 +267,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth, + u8 *data, size_t data_len); + enum wpa_event { + WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH, +- WPA_REAUTH_EAPOL, WPA_ASSOC_FT ++ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED + }; + void wpa_remove_ptk(struct wpa_state_machine *sm); + int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event); +@@ -280,6 +280,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm); + int wpa_auth_get_pairwise(struct wpa_state_machine *sm); + int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm); + int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm); ++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm); + int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm, + struct rsn_pmksa_cache_entry *entry); + struct rsn_pmksa_cache_entry * +diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c +index 42242a5..e63b99a 100644 +--- a/src/ap/wpa_auth_ft.c ++++ b/src/ap/wpa_auth_ft.c +@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm) + return; + } + ++ if (sm->tk_already_set) { ++ /* Must avoid TK reconfiguration to prevent clearing of TX/RX ++ * PN in the driver */ ++ wpa_printf(MSG_DEBUG, ++ "FT: Do not re-install same PTK to the driver"); ++ return; ++ } ++ + /* FIX: add STA entry to kernel/driver here? The set_key will fail + * most likely without this.. At the moment, STA entry is added only + * after association has been completed. This function will be called +@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm) + + /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */ + sm->pairwise_set = TRUE; ++ sm->tk_already_set = TRUE; + } + + +@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm, + + sm->pairwise = pairwise; + sm->PTK_valid = TRUE; ++ sm->tk_already_set = FALSE; + wpa_ft_install_ptk(sm); + + buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) + +diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h +index 72b7eb3..7fd8f05 100644 +--- a/src/ap/wpa_auth_i.h ++++ b/src/ap/wpa_auth_i.h +@@ -65,6 +65,7 @@ struct wpa_state_machine { + struct wpa_ptk PTK; + Boolean PTK_valid; + Boolean pairwise_set; ++ Boolean tk_already_set; + int keycount; + Boolean Pair; + struct wpa_key_replay_counter { +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch new file mode 100644 index 000000000..1802d664a --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch @@ -0,0 +1,250 @@ +From 927f891007c402fefd1ff384645b3f07597c3ede Mon Sep 17 00:00:00 2001 +From: Mathy Vanhoef +Date: Wed, 12 Jul 2017 16:03:24 +0200 +Subject: [PATCH 2/8] Prevent reinstallation of an already in-use group key + +Track the current GTK and IGTK that is in use and when receiving a +(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do +not install the given key if it is already in use. This prevents an +attacker from trying to trick the client into resetting or lowering the +sequence counter associated to the group key. + +Signed-off-by: Mathy Vanhoef +--- + src/common/wpa_common.h | 11 +++++ + src/rsn_supp/wpa.c | 116 ++++++++++++++++++++++++++++++------------------ + src/rsn_supp/wpa_i.h | 4 ++ + 3 files changed, 87 insertions(+), 44 deletions(-) + +diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h +index af1d0f0..d200285 100644 +--- a/src/common/wpa_common.h ++++ b/src/common/wpa_common.h +@@ -217,6 +217,17 @@ struct wpa_ptk { + size_t tk_len; + }; + ++struct wpa_gtk { ++ u8 gtk[WPA_GTK_MAX_LEN]; ++ size_t gtk_len; ++}; ++ ++#ifdef CONFIG_IEEE80211W ++struct wpa_igtk { ++ u8 igtk[WPA_IGTK_MAX_LEN]; ++ size_t igtk_len; ++}; ++#endif /* CONFIG_IEEE80211W */ + + /* WPA IE version 1 + * 00-50-f2:1 (OUI:OUI type) +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index 3c47879..95bd7be 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -714,6 +714,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + const u8 *_gtk = gd->gtk; + u8 gtk_buf[32]; + ++ /* Detect possible key reinstallation */ ++ if (sm->gtk.gtk_len == (size_t) gd->gtk_len && ++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) { ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)", ++ gd->keyidx, gd->tx, gd->gtk_len); ++ return 0; ++ } ++ + wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len); + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)", +@@ -748,6 +757,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + } + os_memset(gtk_buf, 0, sizeof(gtk_buf)); + ++ sm->gtk.gtk_len = gd->gtk_len; ++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len); ++ + return 0; + } + +@@ -854,6 +866,48 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm, + } + + ++#ifdef CONFIG_IEEE80211W ++static int wpa_supplicant_install_igtk(struct wpa_sm *sm, ++ const struct wpa_igtk_kde *igtk) ++{ ++ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher); ++ u16 keyidx = WPA_GET_LE16(igtk->keyid); ++ ++ /* Detect possible key reinstallation */ ++ if (sm->igtk.igtk_len == len && ++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) { ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)", ++ keyidx); ++ return 0; ++ } ++ ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x", ++ keyidx, MAC2STR(igtk->pn)); ++ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len); ++ if (keyidx > 4095) { ++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, ++ "WPA: Invalid IGTK KeyID %d", keyidx); ++ return -1; ++ } ++ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher), ++ broadcast_ether_addr, ++ keyidx, 0, igtk->pn, sizeof(igtk->pn), ++ igtk->igtk, len) < 0) { ++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, ++ "WPA: Failed to configure IGTK to the driver"); ++ return -1; ++ } ++ ++ sm->igtk.igtk_len = len; ++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len); ++ ++ return 0; ++} ++#endif /* CONFIG_IEEE80211W */ ++ ++ + static int ieee80211w_set_keys(struct wpa_sm *sm, + struct wpa_eapol_ie_parse *ie) + { +@@ -864,30 +918,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm, + if (ie->igtk) { + size_t len; + const struct wpa_igtk_kde *igtk; +- u16 keyidx; ++ + len = wpa_cipher_key_len(sm->mgmt_group_cipher); + if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len) + return -1; ++ + igtk = (const struct wpa_igtk_kde *) ie->igtk; +- keyidx = WPA_GET_LE16(igtk->keyid); +- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d " +- "pn %02x%02x%02x%02x%02x%02x", +- keyidx, MAC2STR(igtk->pn)); +- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", +- igtk->igtk, len); +- if (keyidx > 4095) { +- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, +- "WPA: Invalid IGTK KeyID %d", keyidx); +- return -1; +- } +- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher), +- broadcast_ether_addr, +- keyidx, 0, igtk->pn, sizeof(igtk->pn), +- igtk->igtk, len) < 0) { +- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, +- "WPA: Failed to configure IGTK to the driver"); ++ if (wpa_supplicant_install_igtk(sm, igtk) < 0) + return -1; +- } + } + + return 0; +@@ -2307,7 +2345,7 @@ void wpa_sm_deinit(struct wpa_sm *sm) + */ + void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + { +- int clear_ptk = 1; ++ int clear_keys = 1; + + if (sm == NULL) + return; +@@ -2333,11 +2371,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + /* Prepare for the next transition */ + wpa_ft_prepare_auth_request(sm, NULL); + +- clear_ptk = 0; ++ clear_keys = 0; + } + #endif /* CONFIG_IEEE80211R */ + +- if (clear_ptk) { ++ if (clear_keys) { + /* + * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if + * this is not part of a Fast BSS Transition. +@@ -2347,6 +2385,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + os_memset(&sm->ptk, 0, sizeof(sm->ptk)); + sm->tptk_set = 0; + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); ++ os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++#ifdef CONFIG_IEEE80211W ++ os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++#endif /* CONFIG_IEEE80211W */ + } + + #ifdef CONFIG_TDLS +@@ -2877,6 +2919,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm) + os_memset(sm->pmk, 0, sizeof(sm->pmk)); + os_memset(&sm->ptk, 0, sizeof(sm->ptk)); + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); ++ os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++#ifdef CONFIG_IEEE80211W ++ os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++#endif /* CONFIG_IEEE80211W */ + #ifdef CONFIG_IEEE80211R + os_memset(sm->xxkey, 0, sizeof(sm->xxkey)); + os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0)); +@@ -2949,29 +2995,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf) + os_memset(&gd, 0, sizeof(gd)); + #ifdef CONFIG_IEEE80211W + } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) { +- struct wpa_igtk_kde igd; +- u16 keyidx; +- +- os_memset(&igd, 0, sizeof(igd)); +- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher); +- os_memcpy(igd.keyid, buf + 2, 2); +- os_memcpy(igd.pn, buf + 4, 6); +- +- keyidx = WPA_GET_LE16(igd.keyid); +- os_memcpy(igd.igtk, buf + 10, keylen); +- +- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)", +- igd.igtk, keylen); +- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher), +- broadcast_ether_addr, +- keyidx, 0, igd.pn, sizeof(igd.pn), +- igd.igtk, keylen) < 0) { +- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in " +- "WNM mode"); +- os_memset(&igd, 0, sizeof(igd)); ++ const struct wpa_igtk_kde *igtk; ++ ++ igtk = (const struct wpa_igtk_kde *) (buf + 2); ++ if (wpa_supplicant_install_igtk(sm, igtk) < 0) + return -1; +- } +- os_memset(&igd, 0, sizeof(igd)); + #endif /* CONFIG_IEEE80211W */ + } else { + wpa_printf(MSG_DEBUG, "Unknown element id"); +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index f653ba6..afc9e37 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -31,6 +31,10 @@ struct wpa_sm { + u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN]; + int rx_replay_counter_set; + u8 request_counter[WPA_REPLAY_COUNTER_LEN]; ++ struct wpa_gtk gtk; ++#ifdef CONFIG_IEEE80211W ++ struct wpa_igtk igtk; ++#endif /* CONFIG_IEEE80211W */ + + struct eapol_sm *eapol; /* EAPOL state machine from upper level code */ + +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch new file mode 100644 index 000000000..e2937b851 --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch @@ -0,0 +1,184 @@ +From 8280294e74846ea342389a0cd17215050fa5afe8 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sun, 1 Oct 2017 12:12:24 +0300 +Subject: [PATCH 3/8] Extend protection of GTK/IGTK reinstallation of WNM-Sleep + Mode cases + +This extends the protection to track last configured GTK/IGTK value +separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a +corner case where these two different mechanisms may get used when the +GTK/IGTK has changed and tracking a single value is not sufficient to +detect a possible key reconfiguration. + +Signed-off-by: Jouni Malinen +--- + src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++--------------- + src/rsn_supp/wpa_i.h | 2 ++ + 2 files changed, 40 insertions(+), 15 deletions(-) + +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index 95bd7be..7a2c68d 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -709,14 +709,17 @@ struct wpa_gtk_data { + + static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + const struct wpa_gtk_data *gd, +- const u8 *key_rsc) ++ const u8 *key_rsc, int wnm_sleep) + { + const u8 *_gtk = gd->gtk; + u8 gtk_buf[32]; + + /* Detect possible key reinstallation */ +- if (sm->gtk.gtk_len == (size_t) gd->gtk_len && +- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) { ++ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len && ++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) || ++ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len && ++ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk, ++ sm->gtk_wnm_sleep.gtk_len) == 0)) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)", + gd->keyidx, gd->tx, gd->gtk_len); +@@ -757,8 +760,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + } + os_memset(gtk_buf, 0, sizeof(gtk_buf)); + +- sm->gtk.gtk_len = gd->gtk_len; +- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len); ++ if (wnm_sleep) { ++ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len; ++ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk, ++ sm->gtk_wnm_sleep.gtk_len); ++ } else { ++ sm->gtk.gtk_len = gd->gtk_len; ++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len); ++ } + + return 0; + } +@@ -852,7 +861,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm, + (wpa_supplicant_check_group_cipher(sm, sm->group_cipher, + gtk_len, gtk_len, + &gd.key_rsc_len, &gd.alg) || +- wpa_supplicant_install_gtk(sm, &gd, key_rsc))) { ++ wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0))) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "RSN: Failed to install GTK"); + os_memset(&gd, 0, sizeof(gd)); +@@ -868,14 +877,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm, + + #ifdef CONFIG_IEEE80211W + static int wpa_supplicant_install_igtk(struct wpa_sm *sm, +- const struct wpa_igtk_kde *igtk) ++ const struct wpa_igtk_kde *igtk, ++ int wnm_sleep) + { + size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher); + u16 keyidx = WPA_GET_LE16(igtk->keyid); + + /* Detect possible key reinstallation */ +- if (sm->igtk.igtk_len == len && +- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) { ++ if ((sm->igtk.igtk_len == len && ++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) || ++ (sm->igtk_wnm_sleep.igtk_len == len && ++ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk, ++ sm->igtk_wnm_sleep.igtk_len) == 0)) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)", + keyidx); +@@ -900,8 +913,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm, + return -1; + } + +- sm->igtk.igtk_len = len; +- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len); ++ if (wnm_sleep) { ++ sm->igtk_wnm_sleep.igtk_len = len; ++ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk, ++ sm->igtk_wnm_sleep.igtk_len); ++ } else { ++ sm->igtk.igtk_len = len; ++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len); ++ } + + return 0; + } +@@ -924,7 +943,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm, + return -1; + + igtk = (const struct wpa_igtk_kde *) ie->igtk; +- if (wpa_supplicant_install_igtk(sm, igtk) < 0) ++ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0) + return -1; + } + +@@ -1574,7 +1593,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm, + if (wpa_supplicant_rsc_relaxation(sm, key->key_rsc)) + key_rsc = null_rsc; + +- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc) || ++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0) || + wpa_supplicant_send_2_of_2(sm, key, ver, key_info) < 0) + goto failed; + os_memset(&gd, 0, sizeof(gd)); +@@ -2386,8 +2405,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + sm->tptk_set = 0; + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); + os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep)); + #ifdef CONFIG_IEEE80211W + os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep)); + #endif /* CONFIG_IEEE80211W */ + } + +@@ -2920,8 +2941,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm) + os_memset(&sm->ptk, 0, sizeof(sm->ptk)); + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); + os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep)); + #ifdef CONFIG_IEEE80211W + os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep)); + #endif /* CONFIG_IEEE80211W */ + #ifdef CONFIG_IEEE80211R + os_memset(sm->xxkey, 0, sizeof(sm->xxkey)); +@@ -2986,7 +3009,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf) + + wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)", + gd.gtk, gd.gtk_len); +- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) { ++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) { + os_memset(&gd, 0, sizeof(gd)); + wpa_printf(MSG_DEBUG, "Failed to install the GTK in " + "WNM mode"); +@@ -2998,7 +3021,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf) + const struct wpa_igtk_kde *igtk; + + igtk = (const struct wpa_igtk_kde *) (buf + 2); +- if (wpa_supplicant_install_igtk(sm, igtk) < 0) ++ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0) + return -1; + #endif /* CONFIG_IEEE80211W */ + } else { +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index afc9e37..9a54631 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -32,8 +32,10 @@ struct wpa_sm { + int rx_replay_counter_set; + u8 request_counter[WPA_REPLAY_COUNTER_LEN]; + struct wpa_gtk gtk; ++ struct wpa_gtk gtk_wnm_sleep; + #ifdef CONFIG_IEEE80211W + struct wpa_igtk igtk; ++ struct wpa_igtk igtk_wnm_sleep; + #endif /* CONFIG_IEEE80211W */ + + struct eapol_sm *eapol; /* EAPOL state machine from upper level code */ +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch new file mode 100644 index 000000000..22ee21794 --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch @@ -0,0 +1,79 @@ +From 8f82bc94e8697a9d47fa8774dfdaaede1084912c Mon Sep 17 00:00:00 2001 +From: Mathy Vanhoef +Date: Fri, 29 Sep 2017 04:22:51 +0200 +Subject: [PATCH 4/8] Prevent installation of an all-zero TK + +Properly track whether a PTK has already been installed to the driver +and the TK part cleared from memory. This prevents an attacker from +trying to trick the client into installing an all-zero TK. + +This fixes the earlier fix in commit +ad00d64e7d8827b3cebd665a0ceb08adabf15e1e ('Fix TK configuration to the +driver in EAPOL-Key 3/4 retry case') which did not take into account +possibility of an extra message 1/4 showing up between retries of +message 3/4. + +Signed-off-by: Mathy Vanhoef +--- + src/common/wpa_common.h | 1 + + src/rsn_supp/wpa.c | 5 ++--- + src/rsn_supp/wpa_i.h | 1 - + 3 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h +index d200285..1021ccb 100644 +--- a/src/common/wpa_common.h ++++ b/src/common/wpa_common.h +@@ -215,6 +215,7 @@ struct wpa_ptk { + size_t kck_len; + size_t kek_len; + size_t tk_len; ++ int installed; /* 1 if key has already been installed to driver */ + }; + + struct wpa_gtk { +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index 7a2c68d..0550a41 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -510,7 +510,6 @@ static void wpa_supplicant_process_1_of_4(struct wpa_sm *sm, + os_memset(buf, 0, sizeof(buf)); + } + sm->tptk_set = 1; +- sm->tk_to_set = 1; + + kde = sm->assoc_wpa_ie; + kde_len = sm->assoc_wpa_ie_len; +@@ -615,7 +614,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm, + enum wpa_alg alg; + const u8 *key_rsc; + +- if (!sm->tk_to_set) { ++ if (sm->ptk.installed) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Do not re-install same PTK to the driver"); + return 0; +@@ -659,7 +658,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm, + + /* TK is not needed anymore in supplicant */ + os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN); +- sm->tk_to_set = 0; ++ sm->ptk.installed = 1; + + if (sm->wpa_ptk_rekey) { + eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL); +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index 9a54631..41f371f 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -24,7 +24,6 @@ struct wpa_sm { + struct wpa_ptk ptk, tptk; + int ptk_set, tptk_set; + unsigned int msg_3_of_4_ok:1; +- unsigned int tk_to_set:1; + u8 snonce[WPA_NONCE_LEN]; + u8 anonce[WPA_NONCE_LEN]; /* ANonce from the last 1/4 msg */ + int renew_snonce; +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch new file mode 100644 index 000000000..c19c4c710 --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch @@ -0,0 +1,64 @@ +From 12fac09b437a1dc8a0f253e265934a8aaf4d2f8b Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sun, 1 Oct 2017 12:32:57 +0300 +Subject: [PATCH 5/8] Fix PTK rekeying to generate a new ANonce + +The Authenticator state machine path for PTK rekeying ended up bypassing +the AUTHENTICATION2 state where a new ANonce is generated when going +directly to the PTKSTART state since there is no need to try to +determine the PMK again in such a case. This is far from ideal since the +new PTK would depend on a new nonce only from the supplicant. + +Fix this by generating a new ANonce when moving to the PTKSTART state +for the purpose of starting new 4-way handshake to rekey PTK. + +Signed-off-by: Jouni Malinen +--- + src/ap/wpa_auth.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c +index 707971d..bf10cc1 100644 +--- a/src/ap/wpa_auth.c ++++ b/src/ap/wpa_auth.c +@@ -1901,6 +1901,21 @@ SM_STATE(WPA_PTK, AUTHENTICATION2) + } + + ++static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm) ++{ ++ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) { ++ wpa_printf(MSG_ERROR, ++ "WPA: Failed to get random data for ANonce"); ++ sm->Disconnect = TRUE; ++ return -1; ++ } ++ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce, ++ WPA_NONCE_LEN); ++ sm->TimeoutCtr = 0; ++ return 0; ++} ++ ++ + SM_STATE(WPA_PTK, INITPMK) + { + u8 msk[2 * PMK_LEN]; +@@ -2458,9 +2473,12 @@ SM_STEP(WPA_PTK) + SM_ENTER(WPA_PTK, AUTHENTICATION); + else if (sm->ReAuthenticationRequest) + SM_ENTER(WPA_PTK, AUTHENTICATION2); +- else if (sm->PTKRequest) +- SM_ENTER(WPA_PTK, PTKSTART); +- else switch (sm->wpa_ptk_state) { ++ else if (sm->PTKRequest) { ++ if (wpa_auth_sm_ptk_update(sm) < 0) ++ SM_ENTER(WPA_PTK, DISCONNECTED); ++ else ++ SM_ENTER(WPA_PTK, PTKSTART); ++ } else switch (sm->wpa_ptk_state) { + case WPA_PTK_INITIALIZE: + break; + case WPA_PTK_DISCONNECT: +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch new file mode 100644 index 000000000..e1bd5a572 --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch @@ -0,0 +1,132 @@ +From 6c4bed4f47d1960ec04981a9d50e5076aea5223d Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Fri, 22 Sep 2017 11:03:15 +0300 +Subject: [PATCH 6/8] TDLS: Reject TPK-TK reconfiguration + +Do not try to reconfigure the same TPK-TK to the driver after it has +been successfully configured. This is an explicit check to avoid issues +related to resetting the TX/RX packet number. There was already a check +for this for TPK M2 (retries of that message are ignored completely), so +that behavior does not get modified. + +For TPK M3, the TPK-TK could have been reconfigured, but that was +followed by immediate teardown of the link due to an issue in updating +the STA entry. Furthermore, for TDLS with any real security (i.e., +ignoring open/WEP), the TPK message exchange is protected on the AP path +and simple replay attacks are not feasible. + +As an additional corner case, make sure the local nonce gets updated if +the peer uses a very unlikely "random nonce" of all zeros. + +Signed-off-by: Jouni Malinen +--- + src/rsn_supp/tdls.c | 38 ++++++++++++++++++++++++++++++++++++-- + 1 file changed, 36 insertions(+), 2 deletions(-) + +diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c +index e424168..9eb9738 100644 +--- a/src/rsn_supp/tdls.c ++++ b/src/rsn_supp/tdls.c +@@ -112,6 +112,7 @@ struct wpa_tdls_peer { + u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */ + } tpk; + int tpk_set; ++ int tk_set; /* TPK-TK configured to the driver */ + int tpk_success; + int tpk_in_progress; + +@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer) + u8 rsc[6]; + enum wpa_alg alg; + ++ if (peer->tk_set) { ++ /* ++ * This same TPK-TK has already been configured to the driver ++ * and this new configuration attempt (likely due to an ++ * unexpected retransmitted frame) would result in clearing ++ * the TX/RX sequence number which can break security, so must ++ * not allow that to happen. ++ */ ++ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR ++ " has already been configured to the driver - do not reconfigure", ++ MAC2STR(peer->addr)); ++ return -1; ++ } ++ + os_memset(rsc, 0, 6); + + switch (peer->cipher) { +@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer) + return -1; + } + ++ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR, ++ MAC2STR(peer->addr)); + if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1, + rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) { + wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the " + "driver"); + return -1; + } ++ peer->tk_set = 1; + return 0; + } + +@@ -696,7 +714,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer) + peer->cipher = 0; + peer->qos_info = 0; + peer->wmm_capable = 0; +- peer->tpk_set = peer->tpk_success = 0; ++ peer->tk_set = peer->tpk_set = peer->tpk_success = 0; + peer->chan_switch_enabled = 0; + os_memset(&peer->tpk, 0, sizeof(peer->tpk)); + os_memset(peer->inonce, 0, WPA_NONCE_LEN); +@@ -1159,6 +1177,7 @@ skip_rsnie: + wpa_tdls_peer_free(sm, peer); + return -1; + } ++ peer->tk_set = 0; /* A new nonce results in a new TK */ + wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake", + peer->inonce, WPA_NONCE_LEN); + os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN); +@@ -1751,6 +1770,19 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer, + } + + ++static int tdls_nonce_set(const u8 *nonce) ++{ ++ int i; ++ ++ for (i = 0; i < WPA_NONCE_LEN; i++) { ++ if (nonce[i]) ++ return 1; ++ } ++ ++ return 0; ++} ++ ++ + static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr, + const u8 *buf, size_t len) + { +@@ -2004,7 +2036,8 @@ skip_rsn: + peer->rsnie_i_len = kde.rsn_ie_len; + peer->cipher = cipher; + +- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) { ++ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 || ++ !tdls_nonce_set(peer->inonce)) { + /* + * There is no point in updating the RNonce for every obtained + * TPK M1 frame (e.g., retransmission due to timeout) with the +@@ -2020,6 +2053,7 @@ skip_rsn: + "TDLS: Failed to get random data for responder nonce"); + goto error; + } ++ peer->tk_set = 0; /* A new nonce results in a new TK */ + } + + #if 0 +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch new file mode 100644 index 000000000..85ea1d62b --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch @@ -0,0 +1,43 @@ +From 53c5eb58e95004f86e65ee9fbfccbc291b139057 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Fri, 22 Sep 2017 11:25:02 +0300 +Subject: [PATCH 7/8] WNM: Ignore WNM-Sleep Mode Response without pending + request + +Commit 03ed0a52393710be6bdae657d1b36efa146520e5 ('WNM: Ignore WNM-Sleep +Mode Response if WNM-Sleep Mode has not been used') started ignoring the +response when no WNM-Sleep Mode Request had been used during the +association. This can be made tighter by clearing the used flag when +successfully processing a response. This adds an additional layer of +protection against unexpected retransmissions of the response frame. + +Signed-off-by: Jouni Malinen +--- + wpa_supplicant/wnm_sta.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c +index 1b3409c..67a07ff 100644 +--- a/wpa_supplicant/wnm_sta.c ++++ b/wpa_supplicant/wnm_sta.c +@@ -260,7 +260,7 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s, + + if (!wpa_s->wnmsleep_used) { + wpa_printf(MSG_DEBUG, +- "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode has not been used in this association"); ++ "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode operation has not been requested"); + return; + } + +@@ -299,6 +299,8 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s, + return; + } + ++ wpa_s->wnmsleep_used = 0; ++ + if (wnmsleep_ie->status == WNM_STATUS_SLEEP_ACCEPT || + wnmsleep_ie->status == WNM_STATUS_SLEEP_EXIT_ACCEPT_GTK_UPDATE) { + wpa_printf(MSG_DEBUG, "Successfully recv WNM-Sleep Response " +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch new file mode 100644 index 000000000..b9678f681 --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch @@ -0,0 +1,82 @@ +From b372ab0b7daea719749194dc554b26e6367603f2 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Fri, 22 Sep 2017 12:06:37 +0300 +Subject: [PATCH 8/8] FT: Do not allow multiple Reassociation Response frames + +The driver is expected to not report a second association event without +the station having explicitly request a new association. As such, this +case should not be reachable. However, since reconfiguring the same +pairwise or group keys to the driver could result in nonce reuse issues, +be extra careful here and do an additional state check to avoid this +even if the local driver ends up somehow accepting an unexpected +Reassociation Response frame. + +Signed-off-by: Jouni Malinen +--- + src/rsn_supp/wpa.c | 3 +++ + src/rsn_supp/wpa_ft.c | 8 ++++++++ + src/rsn_supp/wpa_i.h | 1 + + 3 files changed, 12 insertions(+) + +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index 0550a41..2a53c6f 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -2440,6 +2440,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm) + #ifdef CONFIG_TDLS + wpa_tdls_disassoc(sm); + #endif /* CONFIG_TDLS */ ++#ifdef CONFIG_IEEE80211R ++ sm->ft_reassoc_completed = 0; ++#endif /* CONFIG_IEEE80211R */ + + /* Keys are not needed in the WPA state machine anymore */ + wpa_sm_drop_sa(sm); +diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c +index 205793e..d45bb45 100644 +--- a/src/rsn_supp/wpa_ft.c ++++ b/src/rsn_supp/wpa_ft.c +@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len, + u16 capab; + + sm->ft_completed = 0; ++ sm->ft_reassoc_completed = 0; + + buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) + + 2 + sm->r0kh_id_len + ric_ies_len + 100; +@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies, + return -1; + } + ++ if (sm->ft_reassoc_completed) { ++ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission"); ++ return 0; ++ } ++ + if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) { + wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs"); + return -1; +@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies, + return -1; + } + ++ sm->ft_reassoc_completed = 1; ++ + if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0) + return -1; + +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index 41f371f..56f88dc 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -128,6 +128,7 @@ struct wpa_sm { + size_t r0kh_id_len; + u8 r1kh_id[FT_R1KH_ID_LEN]; + int ft_completed; ++ int ft_reassoc_completed; + int over_the_ds_in_progress; + u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */ + int set_ptk_after_assoc; +-- +2.7.4 + diff --git a/patches/source/wpa_supplicant/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt b/patches/source/wpa_supplicant/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt new file mode 100644 index 000000000..5ccb5098c --- /dev/null +++ b/patches/source/wpa_supplicant/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt @@ -0,0 +1,226 @@ +WPA packet number reuse with replayed messages and key reinstallation + +Published: October 16, 2017 +Identifiers: +- CERT case ID: VU#228519 +- CVE-2017-13077 +- CVE-2017-13078 +- CVE-2017-13079 +- CVE-2017-13080 +- CVE-2017-13081 +- CVE-2017-13082 +- CVE-2017-13084 (not applicable) +- CVE-2017-13086 +- CVE-2017-13087 +- CVE-2017-13088 +Latest version available from: https://w1.fi/security/2017-1/ + + +Vulnerability + +A vulnerability was found in how a number of implementations can be +triggered to reconfigure WPA/WPA2/RSN keys (TK, GTK, or IGTK) by +replaying a specific frame that is used to manage the keys. Such +reinstallation of the encryption key can result in two different types +of vulnerabilities: disabling replay protection and significantly +reducing the security of encryption to the point of allowing frames to +be decrypted or some parts of the keys to be determined by an attacker +depending on which cipher is used. + +This document focuses on the cases that apply to systems using hostapd +(AP) or wpa_supplicant (station), but it should be noted that the +generic vulnerability itself is applicable to other implementations and +may have different impact in other cases. + +This vulnerability can in theory apply to any case where a TK (the +pairwise/unicast encryption key used with TKIP, CCMP, GCMP), a GTK +(group/multicast encryption key), or an IGTK (group management frame +integrity protection key) is configured by the Authentication/Supplicant +component to the WLAN driver/firmware taking care of the TX/RX path and +encryption/decryption of frames. + +If the same key is configured multiple times, it is likely that the +transmit and receive packet numbers (PN, IPN, RSC/TSC, etc.) are cleared +to a smaller value (zero in case of pairwise keys, zero or at least a +smaller value than the last used value in case of group keys). When this +happens with the same key, this breaks replay protection on RX side and +can result in reuse of packet numbers on TX side. The former may allow +replaying of previously delivered packets (without the attacker being +able to decrypt them or modify their contents) while the latter may +result in more severe issues on the TX side due to resulting CCM nonce +replay and related issues with GCMP and TKIP. The TX side issue may make +it significantly easier for the attacker to decrypt frames and determine +some parts of the keys (e.g., a Michael MIC key in case of TKIP). + +Impact on AP/hostapd + +On the AP side, this generic issue has been determined to be applicable +in the case where hostapd is used to operate an RSN/WPA2 network with FT +(Fast BSS Transition from IEEE 802.11r) enabled. Replaying of the +Reassociation Request frame can be used to get the AP reinstalling the +TK which results in the AP accepting previously delivered unicast frames +from the station and the AP reusing previously used packet numbers +(local TX packet number gets reset to zero). This latter issue on the TX +side can result in CCM nonce reuse which invalidates CCMP security +properties. In case of TKIP this can result in the attacker being able +to determine part of the TK more easily and with GCMP, result in similar +issues. + +It should be noted that the AP side issue with FT would be close to +applying to FILS authentication (from IEEE 802.11ai) in hostapd with +replaying of (Re)Association Request frames. However, due to a different +handling of the repeated association processing with FILS, this would +actually result in the station getting immediately disconnected which +prevents this attack in practice. In addition, the FILS implementation +in the current hostapd version is still experimental and documented as +being discouraged in production use cases. + +Another area of potentially reduced security was identified when looking +into these issues. When AP/Authenticator implementation in hostapd is +requested to rekey the PTK without performing EAP reauthentication +(either through local periodic rekeying or due to a request from an +association station), the ANonce value does not get updated. This +results in the new 4-way handshake depending on the station/supplicant +side generating a new, unique (for the current PMK/PSK) SNonce for the +PTK derivation to result in a new key. While a properly working +supplicant would do so, if there is a supplicant implementation that +does not, this combination could result in deriving the same PTK +again. When the TK from that PTK gets configured in the driver, this +would result in reinstalling the same key and the same issues as +described above for the FT protocol case. + +Impact on station/wpa_supplicant + +On the station side, this generic issue has been determined to be +applicable in the cases where wpa_supplicant processes a group key (GTK +or IGTK) update from the AP. An attacker that is able to limit access +to frame delivery may be able to extract two update messages and deliver +those to the station with significant time delay between them. When +wpa_supplicant processes the second message, it may end up reinstalling +the same key to the driver and when doing this, clear the RX packet +number to an old value. This would allow the attacker to replay all +group-addressed frames that the AP sent between the time the key update +message was originally sent and the time when the attacker forwarded the +second frame to the station. The attacker would not be able to decrypt +or modify the frames based on this vulnerability, though. There is an +exception to this with older wpa_supplicant versions as noted below in +version specific notes. + +For the current wpa_supplicant version (v2.6), there is also an +additional EAPOL-Key replay sequence where an additional forged +EAPOL-Key message can be used to bypass the existing protection for the +pairwise key reconfiguration in a manner that ends up configuring a +known TK that an attacker could use to decrypt any frame sent by the +station and to inject arbitrary unicast frames. Similar issues are +reachable in older versions as noted below. + +PeerKey / TDLS PeerKey + +As far as the related CVE-2017-13084 (reinstallation of the STK key in +the PeerKey handshake) is concerned, it should be noted that PeerKey +implementation in wpa_supplicant is not fully functional and the actual +installation of the key into the driver does not work. As such, this +item is not applicable in practice. Furthermore, the PeerKey handshake +for IEEE 802.11e DLS is obsolete and not known to have been deployed. + +As far as the TDLS PeerKey handshake is concerned (CVE-2017-13086), +wpa_supplicant implementation is already rejecting TPK M2 retries, so +the reconfiguration issue cannot apply for it. For TPK M3, there is a +theoretical impact. However, if that frame is replayed, the current +wpa_supplicant implementation ends up tearing down the TDLS link +immediately and as such, there is no real window for performing the +attack. Furthermore, TPK M3 goes through the AP path and if RSN is used +there, that frame has replay protection, so the attacker could not +perform the attack. If the AP path were to use WEP, the frame could be +replayed, though. That said, if WEP is used on the AP path, it would be +fair to assume that there is no security in the network, so a new attack +vector would be of small additional value. + +With older wpa_supplicant versions, it may be possible for an attacker +to cause TPK M2 to be retransmitted with delay that would be able to +trigger reinstallation of TK on the peer receiving TPK M2 +(CVE-2017-13086). This may open a short window for the attack with v2.3, +v2.4, and v2.5; and a longer window with older versions. + +Vulnerable versions/configurations + +For the AP/Authenticator TK (unicast) reinstallation in FT protocol +(CVE-2017-13082): + +hostapd v0.7.2 and newer with FT enabled (i.e., practically all versions +that include full FT implementation). FT needs to be enabled in the +runtime configuration to make this applicable. + +For the AP/Authenticator missing ANonce during PTK rekeying: + +All hostapd versions. + +For the station/Supplicant side GTK/IGTK reinstallation and TK +configuration: + +All wpa_supplicant versions. The impact on older versions can be more +severe due to earlier changes in this area: v2.3 and older can also +reinstall the pairwise key and as such have similar impact as the AP FT +case (CVE-2017-13077); v2.4 and v2.5 end up configuring an all-zero TK +which breaks the normal data path, but could allow an attacker to +decrypt all following frames from the station and to inject arbitrary +frames to the station. In addition, a different message sequence +involving 4-way handshake can result in configuration of an all-zero TK +in v2.6 and the current snapshot of the development repository as of the +publication of this advisory. + + +Acknowledgments + +Thanks to Mathy Vanhoef of the imec-DistriNet research group of KU +Leuven for discovering and reporting this issue. Thanks to John A. Van +Boxtel for finding additional issues related to this topic. + + +Possible mitigation steps + +- For AP/hostapd and FT replay issue (CVE-2017-13082), it is possible to + prevent the issue temporarily by disabling FT in runtime + configuration, if needed before being able to update the + implementations. + +- Merge the following commits to hostapd/wpa_supplicant and rebuild them: + + hostapd and replayed FT reassociation request frame (CVE-2017-13082): + hostapd: Avoid key reinstallation in FT handshake + + hostapd PTK rekeying and ANonce update: + Fix PTK rekeying to generate a new ANonce + + wpa_supplicant and GTK/IGTK rekeying (CVE-2017-13078, CVE-2017-13079, + CVE-2017-13080, CVE-2017-13081, CVE-2017-13087, CVE-2017-13088): + Prevent reinstallation of an already in-use group key + Extend protection of GTK/IGTK reinstallation of WNM-Sleep Mode cases + + wpa_supplicant (v2.6 or newer snapshot) and known TK issue: + Prevent installation of an all-zero TK + + Additional protection steps for wpa_supplicant: + TDLS: Reject TPK-TK reconfiguration + WNM: Ignore WNM-Sleep Mode Response without pending request + FT: Do not allow multiple Reassociation Response frames + + These patches are available from https://w1.fi/security/2017-1/ + (both against the snapshot of hostap.git master branch and rebased on + top of the v2.6 release) + + For the TDLS TPK M2 retransmission issue (CVE-2017-13086) with older + wpa_supplicant versions, consider updating to the latest version or + merge in a commit that is present in v2.6: + https://w1.fi/cgit/hostap/commit/?id=dabdef9e048b17b22b1c025ad592922eab30dda8 + ('TDLS: Ignore incoming TDLS Setup Response retries') + +- Update to hostapd/wpa_supplicant v2.7 or newer, once available + * it should be noted that there are number of additional changes in + the related areas of the implementation to provide extra layer of + protection for potential unknown issues; these changes are not + included in this advisory as they have not been identified to be + critical for preventing any of the identified security + vulnerabilities; however, users of hostapd/wpa_supplicant are + encouraged to consider merging such changes even if not fully + moving to v2.7 diff --git a/patches/source/wpa_supplicant/README.slackware b/patches/source/wpa_supplicant/README.slackware new file mode 100644 index 000000000..7ab40a289 --- /dev/null +++ b/patches/source/wpa_supplicant/README.slackware @@ -0,0 +1,55 @@ +================================================= +How do I get my card to use WPA-PSK in Slackware? +================================================= + +First off: wpa_supplicant REQUIRES the AP to broadcast the SSID. When the AP +hides its SSID, all you will get out of wpa_supplicant is the message: +"No suitable AP found" + +Also, read the MADwifi FAQ (http://madwifi.sourceforge.net/dokuwiki/doku.php) +since it contains a wealth of information. + +This being said, you'll have to do the following (as root): +Edit the file named /etc/wpa_supplicant.conf and add these lines: + +network={ + scan_ssid=0 + proto=WPA + key_mgmt=WPA-PSK + pairwise=CCMP TKIP + group=CCMP TKIP WEP104 WEP40 +} + +Then execute: + +/usr/sbin/wpa_passphrase YOURSSID passphrase + +with the SSID of your AP and the passphrase you've entered in its WPA-PSK configuration. You'll receive an output, which looks like this: + +network={ + ssid="YOURSSID" + #psk="passphrase" + +psk=66a4bfb03de5656cf26cfa03a116097546046f4aea11ee044b841171207d8308 +} + +Copy the three lines within the network-tag into your own entry in wpa_supplicant.conf and change the permissions after you've finished editing: + +chmod 640 /etc/wpa_supplicant.conf + +To get your network device up and running, execute: + +### /usr/sbin/wpa_supplicant -Bw -c/etc/wpa_supplicant.conf -iath0 -Dmadwifi ### +### you don't have to run the above command by hand, because it will ### +### be executed by the rc.inet1 command that you run: ### + +/etc/rc.d/rc.inet1 ath0_start + +In case you want to see the wpa_supplicant in action, start it on the command line before enabling the wireless device, by running: +/usr/sbin/wpa_supplicant -dw -c/etc/wpa_supplicant.conf -iath0 -Dmadwifi +The terminal where you've started the wpa_supplicant should now show the communication between your wlan card and the AP. If you got everything up and running you can let Slackware's init script take over by killing wpa_supplicant and running: + +/etc/rc.d/rc.inet1 ath0_restart + +Studying the wpa_supplicant README is also highly recommended for further insight! + diff --git a/patches/source/wpa_supplicant/config/dot.config b/patches/source/wpa_supplicant/config/dot.config new file mode 100644 index 000000000..45593ac6f --- /dev/null +++ b/patches/source/wpa_supplicant/config/dot.config @@ -0,0 +1,37 @@ +CONFIG_AP=y +CONFIG_BACKEND=file +CONFIG_BGSCAN_SIMPLE=y +CONFIG_CTRL_IFACE=y +CONFIG_CTRL_IFACE_DBUS=y +CONFIG_CTRL_IFACE_DBUS_INTRO=y +CONFIG_CTRL_IFACE_DBUS_NEW=y +CONFIG_DEBUG_FILE=y +CONFIG_DRIVER_NL80211=y +CONFIG_DRIVER_WEXT=y +CONFIG_DRIVER_WIRED=y +CONFIG_EAP_AKA=y +CONFIG_EAP_FAST=y +CONFIG_EAP_GPSK=y +CONFIG_EAP_GPSK_SHA256=y +CONFIG_EAP_GTC=y +CONFIG_EAP_IKEV2=y +CONFIG_EAP_LEAP=y +CONFIG_EAP_MD5=y +CONFIG_EAP_MSCHAPV2=y +CONFIG_EAP_OTP=y +CONFIG_EAP_PAX=y +CONFIG_EAP_PEAP=y +CONFIG_EAP_SAKE=y +CONFIG_EAP_TLS=y +CONFIG_EAP_TNC=y +CONFIG_EAP_TTLS=y +CONFIG_IBSS_RSN=y +CONFIG_IEEE8021X_EAPOL=y +CONFIG_LIBNL32=y +CONFIG_P2P=y +CONFIG_PEERKEY=y +CONFIG_PKCS12=y +CONFIG_READLINE=y +CONFIG_SMARTCARD=y +CONFIG_WPS=y + diff --git a/patches/source/wpa_supplicant/config/wpa_gui.desktop b/patches/source/wpa_supplicant/config/wpa_gui.desktop new file mode 100644 index 000000000..31b8b6b01 --- /dev/null +++ b/patches/source/wpa_supplicant/config/wpa_gui.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=wpa_gui +Comment[en]=Wpa_supplicant management +Exec=kdesu wpa_gui +Icon=wpa_gui +Type=Application +Categories=Qt;Network; diff --git a/patches/source/wpa_supplicant/config/wpa_gui.png b/patches/source/wpa_supplicant/config/wpa_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..a72f35691ef16708077316278ac8c6e0e2628268 GIT binary patch literal 5124 zcmWky1z1!|7~Q2G2uOzuEU-wppaQORr?hl;H_|2DumVp|Bm@L>0g(`-85c`F zP@$kpEkZs6hwS5?>2J#^slf5STq8F>8m3Di8vXnrDG5u|SUCvtrZUH?ydDFC^ z-_f>B232MT$TDqy%U%EC;exH@<`s?_Y#VmDImql!cxM~0_)AFqO44;P<+$DG@;+F*zhKi36jwVMp}s7<-PR4Ey!KhcT(b7 zF&H%j?dPGPo}G!(`;J5Z4vGj14~b`p^bfK`8yhlYsu5{vY5gGO2#@Mbq*gREB!7IZ z{zI1d!tBbq^9hVpSr0xey#7m!oPt8n!eS((eYrc@n4Z|U#;V}ypR-?zd*7=St*tqT z!TzKs1AaO~d8FiX# zVpK+z3{;7Pfvs$yN4-jyX|)h~Q&!gP)ufo?=mSgS(a5n`{N$T&MJ~GPXsV*Bsyevb z9wst0Gz5W^@NwO_LqU}oiy?rrB`d+zY3*uXkcbZY(j(Vmki+WZ4t_CkW~0h!j2^$R zv2f0)Q!HPKj~MJ3 zcRQXD(zS>0!5%{)AP6NBd>5COoa(e&pRD{o2fZ3qk)QQIfo4)|G-L{9s+@jwX+$6Y zh=e7T#|X(-8aM5O-r$>2){C3mja%|coOUA~KmI&6mcWG!w9@9L1;nQCy_A!-s0r)z#(H!rJ_{hUN|q4sI{e@S&5Zle467&7LQNZ=pUy~*;Hriw& zf@lcn4GiOv!^|?_VirP7w8?P^v7udYWHIorUH|ojTV8T{dNg32M?phn8o5Wu5CRpMN|^TxFq_>E_|xryuRb}(^2qCqr=s<(H| zz)o$8PRHPeZ&FE8LxZSAdniK;{B?aj9mwXClGWAj*x<9Z#O~A6Q&~pxc%Q33ArOF% z*P+bmDr>2zvi3i zD!X;_3kwv6hI)E>Q1vW0?&QRaB3@x;|yc-*6SrrWp3gR*0=zB@nkd*EY#x&?b zC@;5to7aQX#_X#Gfnr?V=ItQ+(Oi5)u;dKD+z4 z(^LJ4+ZO1-jiX>GR!p7ahpx)XO5fj`>VM9$MXVcd?iLgjysfEG1(XxRj^hMw`M!*Ag3uFjQx(X*5!Sjr(t4K13m+<%~-iz^z z)wr9=%F4l;nW~Sqe>AN`_5!+@`1Y-2F8D>X^Cf9iULI?{>{IrY$V)*+L9@8~_5&|6 z@Mjz7(#lGT&Og63vdrc^P!Ks$*7#|+vd%%f`$tG)@eD--ZSjifqs#}QfU)kj9Vt9o zl??pZ^}X8M_x!hGI-Os&p&q>`3T1b^J$m-De*AGpv&Wq9S$GG6L+&OKW(@4J{jK13 zZ*APOC}&B+sEVRUi7mwU_m-*lgBcTF>TQyW-eUy({QPd-AfdTIvUYslb=<}ebub-R z>rMQ1u~$<8yWFiPDqk=Yb|xsavCmbO?^L%@UbL&#{VFwH`sovMx6N1oqpjiG(y}t1 zFJgW$(wdo6fB<_y^5qe63Y-QY1)USxba0=_%SncF1bb5$?x>ViR9H`S%KB}p(K9jG zW5)_`Y<8PCb9cz9Rw?Z1E?@0GuCA{9l#3d7+v5@v5)c{3QfSG;HoCI1vQL)>t@^ay zeMvN*u!UiOQAofPlly!NSg;7a$B+Fcs?enD!4P(IqF>SMt-o2-&~a9T(TX~6D$`w5 zfxoFKi<`UqgVuYdIcukvwN9g~ixHyR7k{i(sHOF>#I zmY;lzojAHuWbT}_6)wa{D6KFkM^El5`TEwb$vKY~_JgF!ibBK0X?b{fm{A_HD}hcR zqPmYC$F#Lc&EK{C98E}iG^r!|GBi4{)snCfZ+}C4oRJpun4b6;JN~d>_42T@sG%Bg zYM*;e`w2S4-@EM>iLi)B_P|`D=c`>w@KnVy?*yCvQ7FO9qdMfP7!W!#g<{>uUu}24 zl@SuSd3yFYKf&r+TBe_zoD>j#e0p_`efO7hRk8Rc6`O>^Y-D!~aRVDgA)bebJJXrF zSf+@&R27Yatq$Mqe4~=y_5_rz3V*eZ%LB=u3r*C;x=BmPf@8zOy(P-2_ngOIy{9qV z@a^#;bWP`#*+#&@Ts0kT|H%QIu>gqht;74QiRxgmlcQ0CsX zMtR7(enX_64v`p91{9WIO8A&11FLKYE3^w9`KjF2$|LGr@t%zYDJAB!3JD0D9g>hE zrDpE~*r2>Ty8Qb>%-1f98~68gXp6#BP06YyD^|$G@c8EczSvkXygiwy12N! zMme7zESc2W#TN_FF>rq@FCXx+plwL&x69iZkJ6_475~J~Pcxu!tEGgmJmFyEr3mZw z)tqw?G4yH%AyOE!&BEH5>&Wu_`SXMbM@Pp3$NjVtKEPcM)1h@r4?mt+1Qy+L8ei)I>Vl<#lNhT2Qc3iI(gzb?TD6!3AzygW;15mDhj0lTQ~`A9?K0XF#j z{5&DTvLjqP`G_%fD{tHL$L5ZPzJ7M`#4QPbzNBa_J8N@ucd=b_uV!Kf1_u9CKssv~ zk_TM{LCgO@&H%mm{#sW~-{-vE9R}&^;-73#ubA1`*r*L*amr^RS#M)G14QYP59*lj zk177e(7kGPPma(X&hU%f3i{U=jM&qwHYag=N-ueN=t1kDjG`Q`cK+A6w}3h2<)dvE z0D0WtuB{OIBbQ%OSt)`q#2rT9r;W?k8$*tr&cbCzStQIYg_vMeq(IZf0NP$?DB@Pl zK-_mG(zev&;O6cl8S)!vXE!p~Tv!F?FOQNrY|ro>u+ zL;)E|?CeMP+;{dLoyXbZde;#467~Z(dQW7p&bUeXL+br5aIU>86ciMc0s9~Z_xJBS ze8}_)XJ6XYflk7!DlU+Y~Lqh}NU7o2+ zbxVs`ed#2x&W)5~hdsAI8=HpA^WVdF^{lMC<~hWRe}%Rmffg(!y5Ijc9LSK_)}Wd- zl|)B~`N`pmcgq;{=kx9;(kLdYV9wopG1w4~g+@w_2wY|{jhnZ3MLrOHKFtEM`-F|F-Sf`;%)S{fT3|fi@3dWU74xv}v z)&{FIs_x-<`X~C1@%wz~P#j;Q$DG0wf3^9fB`?xJUp_%WOHiW4SqFrG;0y_AF4y_K zn%B<|bhw-j-e9(yKxV6=*$p28wFVH^4YW#o`_eOJZk4nyP|PSv_kRAg_~5hFqllo3 zL2%Ua+ihl7Z}Rc8qbEm%P#@DbA(;g%;;w8c59YxAd3>;w(>AL9j4cfHnc(*OqYL~V zDR!B*w+V=i-fQ56sGjHMa&vRXCNzv>(U~sUbJuN3EmdX7gv)R=daqE4tRA+XvMUsS zeQkmNSDPvZlNNumGz3I91;+dFj# zGPM^7NlI*_mV`Gh4A`W?u!H7*d4*QOk13r-^BmRGN^b}#Kv1<^NsxM{(Vh%8NtKsS z(kP&4xoDGbgl41O3JOXVV=w}}WU0%~9ZNrW)In|~+4Pzrp}4pg553t@p7TVd$Krw0 z=OB$Ku^!~hnxgsvb?!4ly`KE$>=C$$H(kY727@lvW49TB=m$on?czrz|DeE~JH3U{ zVI&WN8p%|O-Rm_yP(7`l3n(Drr0`Sv<)|oWF0MpU52O~y{o6z~&4oZ;(RP8_9V=+w z_(I6}-ISS)eychv!PF#4`YU{G$44yff&2FtUec!bjp%uHec}u$BIe&=FfQ)yBE%h` zc(?zdp0|NFSZp+_7M**!A$Ejd%F$GzS02rJvqJKN|MClO(JClhiuU%U+xhK4R`bid zyhc*C&t_|4fC9Y@Z9ZKN zrEot`k|=jL9vCFnh1;vi57^)8qc&>m>auQM)^*|gCVBaGk9TlHx`qstl$2+{ab(Ao zsq8fu?g2Rq{421;#E>@?72JY?lnTI5029-Guj^P!NpDKCZ)Ar?dU8+bALnf6_V*P8 zH99;Z=2s*XK!1Hz^8u_bel|BZw<^s}%>=~T=_SCG>u;G~{iG>duXy0~efG`oWSyL- zIdF56RXcl=Ya?l|B0Ea>dYtP2cU3d(N{^z&4(!xHDJ+Vt+y-2Yl)o_0XEj~V$Pm%-YR3(3n2wnv8E>#j z_)q#{@LV zN?(_kGcq!$=;`TKPZqofM<1@F?Y(c!c)X%upYA7& z-STeBJPwwc4;t~W0w)I3)6;I2mTW*)>zSLU0$1qo@2|^ck;-|Y!&r#5t)JUrr~~Ad z#xBhY$XE`3Q_j|w)0v(X`xpv9F*-Wx77-yWAt|{V@lg%&+nO61w*mH9C^vQa`Z%tdHYK&e$-wc1PwNsmZm@nB%SdF}mode == WPAS_MODE_IBSS ? 10 : 5; ++ timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10; + } else if (wpa_s->conf->ap_scan == 1) { + /* give IBSS a bit more time */ +- timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10; ++ timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 20; + } + wpa_supplicant_req_auth_timeout(wpa_s, timeout, 0); + } diff --git a/patches/source/wpa_supplicant/patches/dbus-service-file-args.diff b/patches/source/wpa_supplicant/patches/dbus-service-file-args.diff new file mode 100644 index 000000000..7e2449f2e --- /dev/null +++ b/patches/source/wpa_supplicant/patches/dbus-service-file-args.diff @@ -0,0 +1,20 @@ +diff -Nur wpa_supplicant-1.0-rc3.orig/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in wpa_supplicant-1.0-rc3/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in +--- wpa_supplicant-1.0-rc3.orig/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in 2012-04-16 15:15:40.000000000 -0500 ++++ wpa_supplicant-1.0-rc3/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in 2012-05-06 01:07:44.523999837 -0500 +@@ -1,5 +1,5 @@ + [D-BUS Service] + Name=fi.epitest.hostap.WPASupplicant +-Exec=@BINDIR@/wpa_supplicant -u ++Exec=@BINDIR@/wpa_supplicant -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid + User=root + SystemdService=wpa_supplicant.service +diff -Nur wpa_supplicant-1.0-rc3.orig/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in wpa_supplicant-1.0-rc3/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in +--- wpa_supplicant-1.0-rc3.orig/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in 2012-04-16 15:15:40.000000000 -0500 ++++ wpa_supplicant-1.0-rc3/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in 2012-05-06 01:06:59.528589953 -0500 +@@ -1,5 +1,5 @@ + [D-BUS Service] + Name=fi.w1.wpa_supplicant1 +-Exec=@BINDIR@/wpa_supplicant -u ++Exec=@BINDIR@/wpa_supplicant -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid + User=root + SystemdService=wpa_supplicant.service diff --git a/patches/source/wpa_supplicant/patches/flush-debug-output.diff b/patches/source/wpa_supplicant/patches/flush-debug-output.diff new file mode 100644 index 000000000..7d6af7b39 --- /dev/null +++ b/patches/source/wpa_supplicant/patches/flush-debug-output.diff @@ -0,0 +1,50 @@ +diff -Nur wpa_supplicant-2.0.orig/src/utils/wpa_debug.c wpa_supplicant-2.0/src/utils/wpa_debug.c +--- wpa_supplicant-2.0.orig/src/utils/wpa_debug.c 2013-01-12 09:42:53.000000000 -0600 ++++ wpa_supplicant-2.0/src/utils/wpa_debug.c 2013-05-11 14:10:37.886101742 -0500 +@@ -75,6 +75,7 @@ + if (out_file) { + fprintf(out_file, "%ld.%06u: ", (long) tv.sec, + (unsigned int) tv.usec); ++ fflush(out_file); + } else + #endif /* CONFIG_DEBUG_FILE */ + printf("%ld.%06u: ", (long) tv.sec, (unsigned int) tv.usec); +@@ -221,6 +222,7 @@ + if (out_file) { + vfprintf(out_file, fmt, ap); + fprintf(out_file, "\n"); ++ fflush(out_file); + } else { + #endif /* CONFIG_DEBUG_FILE */ + vprintf(fmt, ap); +@@ -357,6 +359,7 @@ + fprintf(out_file, " [REMOVED]"); + } + fprintf(out_file, "\n"); ++ fflush(out_file); + } else { + #endif /* CONFIG_DEBUG_FILE */ + printf("%s - hexdump(len=%lu):", title, (unsigned long) len); +@@ -425,12 +428,14 @@ + fprintf(out_file, + "%s - hexdump_ascii(len=%lu): [REMOVED]\n", + title, (unsigned long) len); ++ fflush(out_file); + return; + } + if (buf == NULL) { + fprintf(out_file, + "%s - hexdump_ascii(len=%lu): [NULL]\n", + title, (unsigned long) len); ++ fflush(out_file); + return; + } + fprintf(out_file, "%s - hexdump_ascii(len=%lu):\n", +@@ -455,6 +460,7 @@ + pos += llen; + len -= llen; + } ++ fflush(out_file); + } else { + #endif /* CONFIG_DEBUG_FILE */ + if (!show) { diff --git a/patches/source/wpa_supplicant/patches/quiet-scan-results-message.diff b/patches/source/wpa_supplicant/patches/quiet-scan-results-message.diff new file mode 100644 index 000000000..7f85e8102 --- /dev/null +++ b/patches/source/wpa_supplicant/patches/quiet-scan-results-message.diff @@ -0,0 +1,16 @@ +--- ./wpa_supplicant/events.c.orig 2017-01-05 11:29:16.968898845 -0600 ++++ ./wpa_supplicant/events.c 2017-01-05 11:31:13.515907254 -0600 +@@ -1555,11 +1555,11 @@ + if (wpa_s->last_scan_req == MANUAL_SCAN_REQ && + wpa_s->manual_scan_use_id && wpa_s->own_scan_running && + own_request && !(data && data->scan_info.external_scan)) { +- wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_RESULTS "id=%u", ++ wpa_msg_ctrl(wpa_s, MSG_DEBUG, WPA_EVENT_SCAN_RESULTS "id=%u", + wpa_s->manual_scan_id); + wpa_s->manual_scan_use_id = 0; + } else { +- wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_RESULTS); ++ wpa_msg_ctrl(wpa_s, MSG_DEBUG, WPA_EVENT_SCAN_RESULTS); + } + wpas_notify_scan_results(wpa_s); + diff --git a/patches/source/wpa_supplicant/slack-desc b/patches/source/wpa_supplicant/slack-desc new file mode 100644 index 000000000..4313b3783 --- /dev/null +++ b/patches/source/wpa_supplicant/slack-desc @@ -0,0 +1,18 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + |-----handy-ruler------------------------------------------------------| +wpa_supplicant: wpa_supplicant (WPA/WPA2/IEEE 802.1X Supplicant) +wpa_supplicant: +wpa_supplicant: wpa_supplicant is a WPA Supplicant for Linux with support for WPA and +wpa_supplicant: WPA2 (IEEE 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA +wpa_supplicant: component that is used in the client stations. It implements key +wpa_supplicant: negotiation with a WPA Authenticator and it controls the roaming and +wpa_supplicant: IEEE 802.11 authentication/association of the wlan driver. +wpa_supplicant: +wpa_supplicant: More info: http://hostap.epitest.fi/wpa_supplicant/ +wpa_supplicant: +wpa_supplicant: diff --git a/patches/source/wpa_supplicant/wpa_supplicant.SlackBuild b/patches/source/wpa_supplicant/wpa_supplicant.SlackBuild new file mode 100755 index 000000000..d00d7eaea --- /dev/null +++ b/patches/source/wpa_supplicant/wpa_supplicant.SlackBuild @@ -0,0 +1,181 @@ +#!/bin/sh + +# Copyright 2004-2008 Eric Hameleers, Eindhoven, NL +# Copyright 2008-2015 Patrick J. Volkerding, Sebeka, MN, USA +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# ----------------------------------------------------------------------------- + +PKGNAM=wpa_supplicant +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +SRCVERSION=$(printf $VERSION | tr _ -) + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "armel" ]; then + SLKCFLAGS="-O2 -march=armv4t" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf ${PKGNAM}-${SRCVERSION} +tar xvf $CWD/${PKGNAM}-${SRCVERSION}.tar.?z* || exit 1 +cd ${PKGNAM}-${SRCVERSION} +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + + +zcat $CWD/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch.gz | patch -p1 || exit 1 +zcat $CWD/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch.gz | patch -p1 || exit 1 + +# Fixup various paths in the dbus service file +cat $CWD/patches/dbus-service-file-args.diff | patch -p1 --verbose || exit 1 + +# Eliminate some logspam +cat $CWD/patches/quiet-scan-results-message.diff | patch -p1 --verbose || exit 1 + +# Apply a couple of other patches from Fedora +cat $CWD/patches/assoc-timeout.diff | patch -p1 --verbose || exit 1 +cat $CWD/patches/flush-debug-output.diff | patch -p1 --verbose || exit 1 + +cd wpa_supplicant + +# Create the configuration file for building wpa_supplicant: +cat $CWD/config/dot.config > .config + +# Build the usual binaries +CFLAGS="$SLKCFLAGS" \ +make $NUMJOBS \ + BINDIR=/usr/sbin \ + LIBDIR=/usr/lib${LIBDIRSUFFIX} || exit 1 + +# Build the Qt4 GUI client +CFLAGS="$SLKCFLAGS" \ +make $NUMJOBS \ + wpa_gui-qt4 \ + BINDIR=/usr/sbin \ + LIBDIR=/usr/lib${LIBDIRSUFFIX} || exit 1 + +# Make sure man pages are built +make -C doc/docbook man + +# This goes into the doc directory later on: +mv wpa_supplicant.conf wpa_supplicant.conf.sample + +# Install binaries: +mkdir -p $PKG/usr/sbin $PKG/usr/bin +cp wpa_supplicant wpa_passphrase wpa_cli $PKG/usr/sbin/ +cp wpa_gui-qt4/wpa_gui $PKG/usr/bin/ + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Install dbus configuration file: +mkdir -p $PKG/etc/dbus-1/system.d/ +cp dbus/dbus-wpa_supplicant.conf \ + $PKG/etc/dbus-1/system.d/dbus-wpa_supplicant.conf + +mkdir -p $PKG/usr/share/dbus-1/system-services +install -m644 dbus/*.service $PKG/usr/share/dbus-1/system-services/ + +# Install a .desktop file and icon for wpa_gui: +# (converted from the wpa_gui.svg in the source) +mkdir -p $PKG/usr/share/{applications,pixmaps} +cat $CWD/config/wpa_gui.desktop > $PKG/usr/share/applications/wpa_gui.desktop +cat $CWD/config/wpa_gui.png > $PKG/usr/share/pixmaps/wpa_gui.png + +# Install a logrotate config +mkdir -p $PKG/etc/logrotate.d +cat $CWD/config/wpa_supplicant.logrotate > $PKG/etc/logrotate.d/wpa_supplicant.new + +# Install man pages: +for m in 5 8; do + mkdir -p $PKG/usr/man/man${m} + cp doc/docbook/*.${m} $PKG/usr/man/man${m}/ +done +find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; + +# Install a default configuration file (only readable by root): +mkdir -p $PKG/etc +cat $CWD/config/wpa_supplicant.conf > $PKG/etc/wpa_supplicant.conf.new +chmod 600 $PKG/etc/wpa_supplicant.conf.new + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + ChangeLog ../COPYING README README-{P2P,WPS} examples *.txt *.sample $CWD/README.slackware \ + $PKG/usr/doc/$PKGNAM-$VERSION +chown -R root:root $PKG/usr/doc/$PKGNAM-$VERSION/* +chmod -R a-w $PKG/usr/doc/$PKGNAM-$VERSION/* + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz >> $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz diff --git a/patches/source/xfce4-weather-plugin/slack-desc b/patches/source/xfce4-weather-plugin/slack-desc new file mode 100644 index 000000000..7d9b0675f --- /dev/null +++ b/patches/source/xfce4-weather-plugin/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +xfce4-weather-plugin: xfce4-weather-plugin (weather plugin for the Xfce panel) +xfce4-weather-plugin: +xfce4-weather-plugin: The weather plugin displays current weather conditions and forecasts. +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: +xfce4-weather-plugin: diff --git a/patches/source/xfce4-weather-plugin/xfce4-weather-plugin.SlackBuild b/patches/source/xfce4-weather-plugin/xfce4-weather-plugin.SlackBuild new file mode 100755 index 000000000..4a38b44e9 --- /dev/null +++ b/patches/source/xfce4-weather-plugin/xfce4-weather-plugin.SlackBuild @@ -0,0 +1,107 @@ +#!/bin/sh + +# Slackware build script for xfce4-weather-plugin + +# Copyright 2006-2012 Robby Workman, Northport, Alabama, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=xfce4-weather-plugin +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +GEONAMES_USERNAME="slackware" \ +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc/xfce \ + --enable-shared=yes \ + --enable-static=no \ + --enable-debug=no \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL NEWS README* TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/xfce4-weather-plugin/xfce4-weather-plugin.url b/patches/source/xfce4-weather-plugin/xfce4-weather-plugin.url new file mode 100644 index 000000000..9ee0ef010 --- /dev/null +++ b/patches/source/xfce4-weather-plugin/xfce4-weather-plugin.url @@ -0,0 +1 @@ +http://archive.xfce.org/src/panel-plugins/xfce4-weather-plugin/ diff --git a/patches/source/xorg-server/arch.use.flags b/patches/source/xorg-server/arch.use.flags new file mode 100644 index 000000000..f28a6ccab --- /dev/null +++ b/patches/source/xorg-server/arch.use.flags @@ -0,0 +1,7 @@ +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi diff --git a/patches/source/xorg-server/build/xorg-server b/patches/source/xorg-server/build/xorg-server new file mode 100644 index 000000000..36bf3dc06 --- /dev/null +++ b/patches/source/xorg-server/build/xorg-server @@ -0,0 +1 @@ +5_slack14.2 diff --git a/patches/source/xorg-server/configure/xorg-server b/patches/source/xorg-server/configure/xorg-server new file mode 100644 index 000000000..755b565dd --- /dev/null +++ b/patches/source/xorg-server/configure/xorg-server @@ -0,0 +1,53 @@ +# Servers to build: +BUILD_SERVERS="--enable-xorg \ + --enable-dmx \ + --enable-xvfb \ + --enable-xnest \ + --enable-glamor \ + --enable-kdrive \ + --enable-xephyr \ + --enable-xfbdev \ + --enable-config-udev \ + --enable-kdrive-evdev \ + --enable-kdrive-kbd \ + --enable-kdrive-mouse \ + --disable-config-hal \ + --disable-systemd-logind" + +#MESA_VERSION=${MESA_VERSION:-7.5} # unused in 1.7+ + +# Default font paths to be used by the X server +DEF_FONTPATH="/usr/share/fonts/local,/usr/share/fonts/TTF,/usr/share/fonts/OTF,/usr/share/fonts/Type1,/usr/share/fonts/misc,/usr/share/fonts/CID,/usr/share/fonts/75dpi/:unscaled,/usr/share/fonts/100dpi/:unscaled,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/cyrillic" + +# Reconf (don't remove this plz): +autoreconf -vif + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --disable-static \ + --with-pic \ + --enable-suid-wrapper \ + --with-int10=x86emu \ + --with-default-font-path="${DEF_FONTPATH}" \ + --with-module-dir=/usr/lib${LIBDIRSUFFIX}/xorg/modules \ + --with-os-name="Slackware 14.2" \ + --with-os-vendor="Slackware Linux Project" \ + --with-xkb-path=/etc/X11/xkb \ + --with-xkb-output=/var/lib/xkb \ + $BUILD_SERVERS \ + --build=$ARCH-slackware-linux + +# --with-dri-driver-path=/usr/lib${LIBDIRSUFFIX}/xorg/modules/dri + +if [ "$ARCH" = "x86_64" ]; then + # To prevent the error "No rule to make target `-ldl'" + sed -i -e 's#-ldl##' hw/xfree86/Makefile + sed -i -e 's#-lm#-lm -ldl#' hw/xfree86/Makefile +fi + diff --git a/patches/source/xorg-server/makepkg/xorg-server b/patches/source/xorg-server/makepkg/xorg-server new file mode 100644 index 000000000..13d601edc --- /dev/null +++ b/patches/source/xorg-server/makepkg/xorg-server @@ -0,0 +1,47 @@ + +rm -r ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest/usr/bin +mv $PKG/usr/bin/Xnest ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest/usr/bin +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest/usr/man/man1 +mv $PKG/usr/man/man1/Xnest.1.gz ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest/usr/man/man1 +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest/install +cat $CWD/slack-desc/xorg-server-xnest > ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest/install/slack-desc +cd ${SLACK_X_BUILD_DIR}/package-xorg-server-xnest +/sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/xorg-server-xnest-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + +rm -r ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb/usr/bin +mv $PKG/usr/bin/Xvfb ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb/usr/bin +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb/usr/man/man1 +mv $PKG/usr/man/man1/Xvfb.1.gz ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb/usr/man/man1 +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb/install +cat $CWD/slack-desc/xorg-server-xvfb > ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb/install/slack-desc +cd ${SLACK_X_BUILD_DIR}/package-xorg-server-xvfb +/sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/xorg-server-xvfb-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + +rm -r ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr/usr/bin +mv $PKG/usr/bin/Xephyr ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr/usr/bin +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr/usr/man/man1 +mv $PKG/usr/man/man1/Xephyr.1.gz ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr/usr/man/man1 +mkdir -p ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr/install +cat $CWD/slack-desc/xorg-server-xephyr > ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr/install/slack-desc +cd ${SLACK_X_BUILD_DIR}/package-xorg-server-xephyr +/sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/xorg-server-xephyr-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + +# Build the main xorg-server package: +cd $PKG +/sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/xorg-server-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + +if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/xorg-server-xnest-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/xorg-server-xvfb-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/xorg-server-xephyr-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/xorg-server-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz +elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/xorg-server-xnest-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/xorg-server-xvfb-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/xorg-server-xephyr-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/xorg-server-${MODULAR_PACKAGE_VERSION}-$ARCH-$BUILD.txz +fi + diff --git a/patches/source/xorg-server/modularize b/patches/source/xorg-server/modularize new file mode 100644 index 000000000..d6eb2f68a --- /dev/null +++ b/patches/source/xorg-server/modularize @@ -0,0 +1,265 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. + +appres +bdftopcf +beforelight +bigreqsproto +bitmap +compiz +compositeproto +damageproto +dmxproto +dri2proto +editres +encodings +evieext +fixesproto +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-util +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +fonttosfnt +fslsfonts +fstobdf +gccmakedep +glproto +iceauth +ico +imake +inputproto +intel-gpu-tools +kbproto +libFS +libICE +libSM +libX11 +libXScrnSaver +libXau +libXaw +libXaw3d +libXcm +libXcomposite +libXcursor +libXdamage +libXdmcp +libXevie +libXext +libXfixes +libXfont +libXfontcache +libXft +libXi +libXinerama +libXmu +libXp +libXpm +libXrandr +libXrender +libXres +libXt +libXtst +libXv +libXvMC +libXxf86dga +libXxf86misc +libXxf86vm +libdmx +libfontenc +libpciaccess +libpthread-stubs +libxcb +libxkbfile +listres +lndir +luit +makedepend +mkcomposecache +mkfontdir +mkfontscale +oclock +pixman +printproto +randrproto +recordproto +rendercheck +renderproto +resourceproto +rgb +scrnsaverproto +sessreg +setxkbmap +showfont +smproxy +twm +util-macros +videoproto +viewres +x11perf +xauth +xbacklight +xbiff +xbitmaps +xcalc +xcb-proto +xcb-util +xcb-util-image +xcb-util-keysyms +xcb-util-renderutil +xcb-util-wm +xclipboard +xclock +xcmiscproto +xcmsdb +xcompmgr +xconsole +xcursor-themes +xcursorgen +xdbedizzy +xditview +xdm +xdpyinfo +xdriinfo +xedit +xev +xextproto +xeyes +xf86-input-acecad +xf86-input-aiptek +xf86-input-evdev +xf86-input-joystick +xf86-input-penmount +xf86-input-synaptics +xf86-input-vmmouse +xf86-input-void +xf86-input-wacom +xf86-video-apm +xf86-video-ark +xf86-video-ast +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-geode +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +xf86-video-intel +xf86-video-mach64 +xf86-video-mga +xf86-video-modesetting +xf86-video-neomagic +xf86-video-nouveau +xf86-video-nv +xf86-video-openchrome +xf86-video-qxl +xf86-video-r128 +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +xf86-video-tdfx +xf86-video-tga +xf86-video-trident +xf86-video-tseng +xf86-video-v4l +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-video-xgi +xf86bigfontproto +xf86dga +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xfd +xfontsel +xfs +xfsinfo +xgamma +xgc +xhost +xineramaproto +xinit +xinput +xkbcomp +xkbevd +xkbprint +xkbutils +xkeyboard-config +xkill +xload +xlogo +xlsatoms +xlsclients +xlsfonts +xmag +xman +xmessage +xmh +xmodmap +xmore +xorg-cf-files +xorg-docs +xorg-server +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-sgml-doctools +xpr +xprop +xproto +xpyb +xrandr +xrdb +xrefresh +xscope +xset +xsetroot +xsm +xstdcmap +xtrans +xvidtune +xvinfo +xwd +xwininfo +xwud diff --git a/patches/source/xorg-server/noarch b/patches/source/xorg-server/noarch new file mode 100644 index 000000000..480ffc26c --- /dev/null +++ b/patches/source/xorg-server/noarch @@ -0,0 +1,76 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: +bigreqsproto +compositeproto +damageproto +dejavu-ttf +dmxproto +encodings +evieext +font-adobe-100dpi +font-adobe-75dpi +font-adobe-utopia-100dpi +font-adobe-utopia-75dpi +font-adobe-utopia-type1 +font-alias +font-arabic-misc +font-bh-100dpi +font-bh-75dpi +font-bh-lucidatypewriter-100dpi +font-bh-lucidatypewriter-75dpi +font-bh-ttf +font-bh-type1 +font-bitstream-100dpi +font-bitstream-75dpi +font-bitstream-speedo +font-bitstream-type1 +font-cronyx-cyrillic +font-cursor-misc +font-daewoo-misc +font-dec-misc +font-ibm-type1 +font-isas-misc +font-jis-misc +font-micro-misc +font-misc-cyrillic +font-misc-ethiopic +font-misc-meltho +font-misc-misc +font-mutt-misc +font-schumacher-misc +font-screen-cyrillic +font-sony-misc +font-sun-misc +font-winitzki-cyrillic +font-xfree86-type1 +fontcacheproto +fontsproto +gccmakedep +glproto +inputproto +kbproto +libpthread-stubs +mkfontdir +printproto +randrproto +recordproto +renderproto +resourceproto +scrnsaverproto +ttf-indic-fonts +util-macros +videoproto +x11-skel +xcmiscproto +xcursor-themes +xf86bigfontproto +xf86dgaproto +xf86driproto +xf86miscproto +xf86vidmodeproto +xineramaproto +xkeyboard-config +xorg-cf-files +xorg-docs +xproto +xtrans diff --git a/patches/source/xorg-server/package-blacklist b/patches/source/xorg-server/package-blacklist new file mode 100644 index 000000000..377624999 --- /dev/null +++ b/patches/source/xorg-server/package-blacklist @@ -0,0 +1,39 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +# MacOS related packages: +applewmproto +windowswmproto +libAppleWM +libWindowsWM + +# Sun video cards: +xf86-video-sunbw2 +xf86-video-suncg14 +xf86-video-suncg3 +xf86-video-suncg6 +xf86-video-sunffb +xf86-video-sunleo +xf86-video-suntcx + +# Obsolete packages: +liboldX +xf86-video-amd +xf86-video-via +xkbdata +xphelloworld +xrx + +# Not applicable to us +grandr +constype + +# CAREFUL NOT TO "SHIP" THE STUFF BELOW IN THE MAIN X PACKAGES DIR! + +# This is probably obsolete, and kills "X -configure" too +xf86-video-nsc + +# We don't want this one, as it causes failure of X with no xorg.conf +xf86-video-fbdev + diff --git a/patches/source/xorg-server/patch/xorg-server.patch b/patches/source/xorg-server/patch/xorg-server.patch new file mode 100644 index 000000000..527305187 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server.patch @@ -0,0 +1,15 @@ +zcat $CWD/patch/xorg-server/x11.startwithblackscreen.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-10971.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-10972.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-13721.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-13723.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12176.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12177.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12178.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12183.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +zcat $CWD/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff.gz | patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; } + diff --git a/patches/source/xorg-server/patch/xorg-server/x11.startwithblackscreen.diff b/patches/source/xorg-server/patch/xorg-server/x11.startwithblackscreen.diff new file mode 100644 index 000000000..8c0e3b546 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/x11.startwithblackscreen.diff @@ -0,0 +1,14 @@ +diff -Nur xorg-server-1.12.1.orig/dix/window.c xorg-server-1.12.1/dix/window.c +--- xorg-server-1.12.1.orig/dix/window.c 2012-03-29 21:57:25.000000000 -0500 ++++ xorg-server-1.12.1/dix/window.c 2012-04-13 22:01:24.456073603 -0500 +@@ -145,8 +145,8 @@ + + Bool bgNoneRoot = FALSE; + +-static unsigned char _back_lsb[4] = { 0x88, 0x22, 0x44, 0x11 }; +-static unsigned char _back_msb[4] = { 0x11, 0x44, 0x22, 0x88 }; ++static unsigned char _back_lsb[4] = { 0x00, 0x00, 0x00, 0x00 }; ++static unsigned char _back_msb[4] = { 0x00, 0x00, 0x00, 0x00 }; + + static Bool WindowParentHasDeviceCursor(WindowPtr pWin, + DeviceIntPtr pDev, CursorPtr pCurs); diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10971.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10971.diff new file mode 100644 index 000000000..00ed28ac3 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10971.diff @@ -0,0 +1,40 @@ +From ba336b24052122b136486961c82deac76bbde455 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:42 +0300 +Subject: Xi: Do not try to swap GenericEvent. + +The SProcXSendExtensionEvent must not attempt to swap GenericEvent because +it is assuming that the event has fixed size and gives the swapping function +xEvent-sized buffer. + +A GenericEvent would be later rejected by ProcXSendExtensionEvent anyway. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 5e63bfc..5c2e0fc 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -95,9 +95,17 @@ SProcXSendExtensionEvent(ClientPtr client) + + eventP = (xEvent *) &stuff[1]; + for (i = 0; i < stuff->num_events; i++, eventP++) { ++ if (eventP->u.u.type == GenericEvent) { ++ client->errorValue = eventP->u.u.type; ++ return BadValue; ++ } ++ + proc = EventSwapVector[eventP->u.u.type & 0177]; +- if (proc == NotImplemented) /* no swapping proc; invalid event type? */ ++ /* no swapping proc; invalid event type? */ ++ if (proc == NotImplemented) { ++ client->errorValue = eventP->u.u.type; + return BadValue; ++ } + (*proc) (eventP, &eventT); + *eventP = eventT; + } +-- +cgit v0.10.2 diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10972.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10972.diff new file mode 100644 index 000000000..edddc8d66 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10972.diff @@ -0,0 +1,36 @@ +From 05442de962d3dc624f79fc1a00eca3ffc5489ced Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:39 +0300 +Subject: Xi: Zero target buffer in SProcXSendExtensionEvent. + +Make sure that the xEvent eventT is initialized with zeros, the same way as +in SProcSendEvent. + +Some event swapping functions do not overwrite all 32 bytes of xEvent +structure, for example XSecurityAuthorizationRevoked. Two cooperating +clients, one swapped and the other not, can send +XSecurityAuthorizationRevoked event to each other to retrieve old stack data +from X server. This can be potentialy misused to go around ASLR or +stack-protector. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 11d8202..1cf118a 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -78,7 +78,7 @@ SProcXSendExtensionEvent(ClientPtr client) + { + CARD32 *p; + int i; +- xEvent eventT; ++ xEvent eventT = { .u.u.type = 0 }; + xEvent *eventP; + EventSwapPtr proc; + +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12176.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12176.diff new file mode 100644 index 000000000..9caf31247 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12176.diff @@ -0,0 +1,31 @@ +From b747da5e25be944337a9cd1415506fc06b70aa81 Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Fri, 9 Jan 2015 10:15:46 -0500 +Subject: Unvalidated extra length in ProcEstablishConnection (CVE-2017-12176) + +Reviewed-by: Julien Cristau +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/dix/dispatch.c b/dix/dispatch.c +index 8b371b6..176c7a0 100644 +--- a/dix/dispatch.c ++++ b/dix/dispatch.c +@@ -3702,7 +3702,12 @@ ProcEstablishConnection(ClientPtr client) + prefix = (xConnClientPrefix *) ((char *) stuff + sz_xReq); + auth_proto = (char *) prefix + sz_xConnClientPrefix; + auth_string = auth_proto + pad_to_int32(prefix->nbytesAuthProto); +- if ((prefix->majorVersion != X_PROTOCOL) || ++ ++ if ((client->req_len << 2) != sz_xReq + sz_xConnClientPrefix + ++ pad_to_int32(prefix->nbytesAuthProto) + ++ pad_to_int32(prefix->nbytesAuthString)) ++ reason = "Bad length"; ++ else if ((prefix->majorVersion != X_PROTOCOL) || + (prefix->minorVersion != X_PROTOCOL_REVISION)) + reason = "Protocol version mismatch"; + else +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12177.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12177.diff new file mode 100644 index 000000000..4a3eaa9e9 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12177.diff @@ -0,0 +1,41 @@ +From 4ca68b878e851e2136c234f40a25008297d8d831 Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Fri, 9 Jan 2015 10:09:14 -0500 +Subject: dbe: Unvalidated variable-length request in ProcDbeGetVisualInfo + (CVE-2017-12177) + +v2: Protect against integer overflow (Alan Coopersmith) + +Reviewed-by: Alan Coopersmith +Reviewed-by: Jeremy Huddleston Sequoia +Reviewed-by: Julien Cristau +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/dbe/dbe.c b/dbe/dbe.c +index 9a0c7a7..292a223 100644 +--- a/dbe/dbe.c ++++ b/dbe/dbe.c +@@ -574,6 +574,9 @@ ProcDbeGetVisualInfo(ClientPtr client) + XdbeScreenVisualInfo *pScrVisInfo; + + REQUEST_AT_LEAST_SIZE(xDbeGetVisualInfoReq); ++ if (stuff->n > UINT32_MAX / sizeof(CARD32)) ++ return BadLength; ++ REQUEST_FIXED_SIZE(xDbeGetVisualInfoReq, stuff->n * sizeof(CARD32)); + + if (stuff->n > UINT32_MAX / sizeof(DrawablePtr)) + return BadAlloc; +@@ -924,7 +927,7 @@ SProcDbeSwapBuffers(ClientPtr client) + + swapl(&stuff->n); + if (stuff->n > UINT32_MAX / sizeof(DbeSwapInfoRec)) +- return BadAlloc; ++ return BadLength; + REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, stuff->n * sizeof(xDbeSwapInfo)); + + if (stuff->n != 0) { +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12178.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12178.diff new file mode 100644 index 000000000..8177c119d --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12178.diff @@ -0,0 +1,29 @@ +From 859b08d523307eebde7724fd1a0789c44813e821 Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Wed, 24 Dec 2014 16:22:18 -0500 +Subject: Xi: fix wrong extra length check in ProcXIChangeHierarchy + (CVE-2017-12178) + +Reviewed-by: Alan Coopersmith +Reviewed-by: Jeremy Huddleston Sequoia +Reviewed-by: Julien Cristau +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c +index 87f191f..cbdd912 100644 +--- a/Xi/xichangehierarchy.c ++++ b/Xi/xichangehierarchy.c +@@ -423,7 +423,7 @@ ProcXIChangeHierarchy(ClientPtr client) + if (!stuff->num_changes) + return rc; + +- len = ((size_t)stuff->length << 2) - sizeof(xXIAnyHierarchyChangeInfo); ++ len = ((size_t)stuff->length << 2) - sizeof(xXIChangeHierarchyReq); + + any = (xXIAnyHierarchyChangeInfo *) &stuff[1]; + while (stuff->num_changes--) { +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff new file mode 100644 index 000000000..0b3734642 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff @@ -0,0 +1,42 @@ +From 211e05ac85a294ef361b9f80d689047fa52b9076 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Fri, 7 Jul 2017 17:21:46 +0200 +Subject: Xi: Test exact size of XIBarrierReleasePointer + +Otherwise a client can send any value of num_barriers and cause reading or swapping of values on heap behind the receive buffer. + +Signed-off-by: Peter Hutterer + +diff --git a/Xi/xibarriers.c b/Xi/xibarriers.c +index af1562e..d82ecb6 100644 +--- a/Xi/xibarriers.c ++++ b/Xi/xibarriers.c +@@ -830,10 +830,13 @@ SProcXIBarrierReleasePointer(ClientPtr client) + REQUEST(xXIBarrierReleasePointerReq); + int i; + +- info = (xXIBarrierReleasePointerInfo*) &stuff[1]; +- + swaps(&stuff->length); ++ REQUEST_AT_LEAST_SIZE(xXIBarrierReleasePointerReq); ++ + swapl(&stuff->num_barriers); ++ REQUEST_FIXED_SIZE(xXIBarrierReleasePointerReq, stuff->num_barriers * sizeof(xXIBarrierReleasePointerInfo)); ++ ++ info = (xXIBarrierReleasePointerInfo*) &stuff[1]; + for (i = 0; i < stuff->num_barriers; i++, info++) { + swaps(&info->deviceid); + swapl(&info->barrier); +@@ -853,7 +856,7 @@ ProcXIBarrierReleasePointer(ClientPtr client) + xXIBarrierReleasePointerInfo *info; + + REQUEST(xXIBarrierReleasePointerReq); +- REQUEST_AT_LEAST_SIZE(xXIBarrierReleasePointerReq); ++ REQUEST_FIXED_SIZE(xXIBarrierReleasePointerReq, stuff->num_barriers * sizeof(xXIBarrierReleasePointerInfo)); + + info = (xXIBarrierReleasePointerInfo*) &stuff[1]; + for (i = 0; i < stuff->num_barriers; i++, info++) { +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff new file mode 100644 index 000000000..346756033 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff @@ -0,0 +1,46 @@ +From d088e3c1286b548a58e62afdc70bb40981cdb9e8 Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Fri, 9 Jan 2015 10:04:41 -0500 +Subject: Xi: integer overflow and unvalidated length in + (S)ProcXIBarrierReleasePointer + +[jcristau: originally this patch fixed the same issue as commit + 211e05ac85 "Xi: Test exact size of XIBarrierReleasePointer", with the + addition of these checks] + +This addresses CVE-2017-12179 + +Reviewed-by: Alan Coopersmith +Reviewed-by: Jeremy Huddleston Sequoia +Reviewed-by: Julien Cristau +Signed-off-by: Jeremy Huddleston Sequoia +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/Xi/xibarriers.c b/Xi/xibarriers.c +index d82ecb6..d0be701 100644 +--- a/Xi/xibarriers.c ++++ b/Xi/xibarriers.c +@@ -834,6 +834,8 @@ SProcXIBarrierReleasePointer(ClientPtr client) + REQUEST_AT_LEAST_SIZE(xXIBarrierReleasePointerReq); + + swapl(&stuff->num_barriers); ++ if (stuff->num_barriers > UINT32_MAX / sizeof(xXIBarrierReleasePointerInfo)) ++ return BadLength; + REQUEST_FIXED_SIZE(xXIBarrierReleasePointerReq, stuff->num_barriers * sizeof(xXIBarrierReleasePointerInfo)); + + info = (xXIBarrierReleasePointerInfo*) &stuff[1]; +@@ -856,6 +858,9 @@ ProcXIBarrierReleasePointer(ClientPtr client) + xXIBarrierReleasePointerInfo *info; + + REQUEST(xXIBarrierReleasePointerReq); ++ REQUEST_AT_LEAST_SIZE(xXIBarrierReleasePointerReq); ++ if (stuff->num_barriers > UINT32_MAX / sizeof(xXIBarrierReleasePointerInfo)) ++ return BadLength; + REQUEST_FIXED_SIZE(xXIBarrierReleasePointerReq, stuff->num_barriers * sizeof(xXIBarrierReleasePointerInfo)); + + info = (xXIBarrierReleasePointerInfo*) &stuff[1]; +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff new file mode 100644 index 000000000..70ebee8c2 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff @@ -0,0 +1,601 @@ +From 1b1d4c04695dced2463404174b50b3581dbd857b Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Sun, 21 Dec 2014 01:10:03 -0500 +Subject: hw/xfree86: unvalidated lengths + +This addresses: +CVE-2017-12180 in XFree86-VidModeExtension +CVE-2017-12181 in XFree86-DGA +CVE-2017-12182 in XFree86-DRI + +Reviewed-by: Jeremy Huddleston Sequoia +Reviewed-by: Julien Cristau +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/Xext/vidmode.c b/Xext/vidmode.c +index 8ba919a..6e4a7c7 100644 +--- a/Xext/vidmode.c ++++ b/Xext/vidmode.c +@@ -454,6 +454,20 @@ ProcVidModeAddModeLine(ClientPtr client) + DEBUG_P("XF86VidModeAddModeline"); + + ver = ClientMajorVersion(client); ++ ++ if (ver < 2) { ++ REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86OldVidModeAddModeLineReq)); ++ } ++ else { ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86VidModeAddModeLineReq)); ++ } ++ + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -501,18 +515,6 @@ ProcVidModeAddModeLine(ClientPtr client) + stuff->after_vsyncend, stuff->after_vtotal, + (unsigned long) stuff->after_flags); + +- if (ver < 2) { +- REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86OldVidModeAddModeLineReq)); +- } +- else { +- REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86VidModeAddModeLineReq)); +- } + if (len != stuff->privsize) + return BadLength; + +@@ -622,6 +624,20 @@ ProcVidModeDeleteModeLine(ClientPtr client) + DEBUG_P("XF86VidModeDeleteModeline"); + + ver = ClientMajorVersion(client); ++ ++ if (ver < 2) { ++ REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86OldVidModeDeleteModeLineReq)); ++ } ++ else { ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq)); ++ } ++ + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -649,18 +665,6 @@ ProcVidModeDeleteModeLine(ClientPtr client) + stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, + (unsigned long) stuff->flags); + +- if (ver < 2) { +- REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86OldVidModeDeleteModeLineReq)); +- } +- else { +- REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq)); +- } + if (len != stuff->privsize) { + DebugF("req_len = %ld, sizeof(Req) = %d, privsize = %ld, " + "len = %d, length = %d\n", +@@ -744,6 +748,20 @@ ProcVidModeModModeLine(ClientPtr client) + DEBUG_P("XF86VidModeModModeline"); + + ver = ClientMajorVersion(client); ++ ++ if (ver < 2) { ++ REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86OldVidModeModModeLineReq)); ++ } ++ else { ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86VidModeModModeLineReq)); ++ } ++ + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -768,18 +786,6 @@ ProcVidModeModModeLine(ClientPtr client) + stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, + stuff->vtotal, (unsigned long) stuff->flags); + +- if (ver < 2) { +- REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86OldVidModeModModeLineReq)); +- } +- else { +- REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86VidModeModModeLineReq)); +- } + if (len != stuff->privsize) + return BadLength; + +@@ -877,6 +883,19 @@ ProcVidModeValidateModeLine(ClientPtr client) + DEBUG_P("XF86VidModeValidateModeline"); + + ver = ClientMajorVersion(client); ++ ++ if (ver < 2) { ++ REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); ++ len = client->req_len - ++ bytes_to_int32(sizeof(xXF86OldVidModeValidateModeLineReq)); ++ } ++ else { ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86VidModeValidateModeLineReq)); ++ } ++ + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -905,17 +924,6 @@ ProcVidModeValidateModeLine(ClientPtr client) + stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, + (unsigned long) stuff->flags); + +- if (ver < 2) { +- REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); +- len = client->req_len - +- bytes_to_int32(sizeof(xXF86OldVidModeValidateModeLineReq)); +- } +- else { +- REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86VidModeValidateModeLineReq)); +- } + if (len != stuff->privsize) + return BadLength; + +@@ -1027,6 +1035,20 @@ ProcVidModeSwitchToMode(ClientPtr client) + DEBUG_P("XF86VidModeSwitchToMode"); + + ver = ClientMajorVersion(client); ++ ++ if (ver < 2) { ++ REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86OldVidModeSwitchToModeReq)); ++ } ++ else { ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq); ++ len = ++ client->req_len - ++ bytes_to_int32(sizeof(xXF86VidModeSwitchToModeReq)); ++ } ++ + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -1055,18 +1077,6 @@ ProcVidModeSwitchToMode(ClientPtr client) + stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, + (unsigned long) stuff->flags); + +- if (ver < 2) { +- REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86OldVidModeSwitchToModeReq)); +- } +- else { +- REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq); +- len = +- client->req_len - +- bytes_to_int32(sizeof(xXF86VidModeSwitchToModeReq)); +- } + if (len != stuff->privsize) + return BadLength; + +@@ -1457,6 +1467,7 @@ ProcVidModeSetGammaRamp(ClientPtr client) + VidModePtr pVidMode; + + REQUEST(xXF86VidModeSetGammaRampReq); ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); + + if (stuff->screen >= screenInfo.numScreens) + return BadValue; +diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c +index 95434e8..505b019 100644 +--- a/hw/xfree86/common/xf86DGA.c ++++ b/hw/xfree86/common/xf86DGA.c +@@ -1272,13 +1272,14 @@ ProcXDGAOpenFramebuffer(ClientPtr client) + char *deviceName; + int nameSize; + ++ REQUEST_SIZE_MATCH(xXDGAOpenFramebufferReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (!DGAAvailable(stuff->screen)) + return DGAErrorBase + XF86DGANoDirectVideoMode; + +- REQUEST_SIZE_MATCH(xXDGAOpenFramebufferReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1305,14 +1306,14 @@ ProcXDGACloseFramebuffer(ClientPtr client) + { + REQUEST(xXDGACloseFramebufferReq); + ++ REQUEST_SIZE_MATCH(xXDGACloseFramebufferReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (!DGAAvailable(stuff->screen)) + return DGAErrorBase + XF86DGANoDirectVideoMode; + +- REQUEST_SIZE_MATCH(xXDGACloseFramebufferReq); +- + DGACloseFramebuffer(stuff->screen); + + return Success; +@@ -1328,10 +1329,11 @@ ProcXDGAQueryModes(ClientPtr client) + xXDGAModeInfo info; + XDGAModePtr mode; + ++ REQUEST_SIZE_MATCH(xXDGAQueryModesReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + +- REQUEST_SIZE_MATCH(xXDGAQueryModesReq); + rep.type = X_Reply; + rep.length = 0; + rep.number = 0; +@@ -1443,11 +1445,12 @@ ProcXDGASetMode(ClientPtr client) + ClientPtr owner; + int size; + ++ REQUEST_SIZE_MATCH(xXDGASetModeReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + owner = DGA_GETCLIENT(stuff->screen); + +- REQUEST_SIZE_MATCH(xXDGASetModeReq); + rep.type = X_Reply; + rep.length = 0; + rep.offset = 0; +@@ -1533,14 +1536,14 @@ ProcXDGASetViewport(ClientPtr client) + { + REQUEST(xXDGASetViewportReq); + ++ REQUEST_SIZE_MATCH(xXDGASetViewportReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGASetViewportReq); +- + DGASetViewport(stuff->screen, stuff->x, stuff->y, stuff->flags); + + return Success; +@@ -1554,14 +1557,14 @@ ProcXDGAInstallColormap(ClientPtr client) + + REQUEST(xXDGAInstallColormapReq); + ++ REQUEST_SIZE_MATCH(xXDGAInstallColormapReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGAInstallColormapReq); +- + rc = dixLookupResourceByType((void **) &cmap, stuff->cmap, RT_COLORMAP, + client, DixInstallAccess); + if (rc != Success) +@@ -1575,14 +1578,14 @@ ProcXDGASelectInput(ClientPtr client) + { + REQUEST(xXDGASelectInputReq); + ++ REQUEST_SIZE_MATCH(xXDGASelectInputReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGASelectInputReq); +- + if (DGA_GETCLIENT(stuff->screen) == client) + DGASelectInput(stuff->screen, client, stuff->mask); + +@@ -1594,14 +1597,14 @@ ProcXDGAFillRectangle(ClientPtr client) + { + REQUEST(xXDGAFillRectangleReq); + ++ REQUEST_SIZE_MATCH(xXDGAFillRectangleReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGAFillRectangleReq); +- + if (Success != DGAFillRect(stuff->screen, stuff->x, stuff->y, + stuff->width, stuff->height, stuff->color)) + return BadMatch; +@@ -1614,14 +1617,14 @@ ProcXDGACopyArea(ClientPtr client) + { + REQUEST(xXDGACopyAreaReq); + ++ REQUEST_SIZE_MATCH(xXDGACopyAreaReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGACopyAreaReq); +- + if (Success != DGABlitRect(stuff->screen, stuff->srcx, stuff->srcy, + stuff->width, stuff->height, stuff->dstx, + stuff->dsty)) +@@ -1635,14 +1638,14 @@ ProcXDGACopyTransparentArea(ClientPtr client) + { + REQUEST(xXDGACopyTransparentAreaReq); + ++ REQUEST_SIZE_MATCH(xXDGACopyTransparentAreaReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGACopyTransparentAreaReq); +- + if (Success != DGABlitTransRect(stuff->screen, stuff->srcx, stuff->srcy, + stuff->width, stuff->height, stuff->dstx, + stuff->dsty, stuff->key)) +@@ -1657,13 +1660,14 @@ ProcXDGAGetViewportStatus(ClientPtr client) + REQUEST(xXDGAGetViewportStatusReq); + xXDGAGetViewportStatusReply rep; + ++ REQUEST_SIZE_MATCH(xXDGAGetViewportStatusReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGAGetViewportStatusReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1680,13 +1684,14 @@ ProcXDGASync(ClientPtr client) + REQUEST(xXDGASyncReq); + xXDGASyncReply rep; + ++ REQUEST_SIZE_MATCH(xXDGASyncReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGASyncReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1725,13 +1730,14 @@ ProcXDGAChangePixmapMode(ClientPtr client) + xXDGAChangePixmapModeReply rep; + int x, y; + ++ REQUEST_SIZE_MATCH(xXDGAChangePixmapModeReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGAChangePixmapModeReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1755,14 +1761,14 @@ ProcXDGACreateColormap(ClientPtr client) + REQUEST(xXDGACreateColormapReq); + int result; + ++ REQUEST_SIZE_MATCH(xXDGACreateColormapReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXDGACreateColormapReq); +- + if (!stuff->mode) + return BadValue; + +@@ -1791,10 +1797,11 @@ ProcXF86DGAGetVideoLL(ClientPtr client) + int num, offset, flags; + char *name; + ++ REQUEST_SIZE_MATCH(xXF86DGAGetVideoLLReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + +- REQUEST_SIZE_MATCH(xXF86DGAGetVideoLLReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1831,9 +1838,10 @@ ProcXF86DGADirectVideo(ClientPtr client) + + REQUEST(xXF86DGADirectVideoReq); + ++ REQUEST_SIZE_MATCH(xXF86DGADirectVideoReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; +- REQUEST_SIZE_MATCH(xXF86DGADirectVideoReq); + + if (!DGAAvailable(stuff->screen)) + return DGAErrorBase + XF86DGANoDirectVideoMode; +@@ -1889,10 +1897,11 @@ ProcXF86DGAGetViewPortSize(ClientPtr client) + REQUEST(xXF86DGAGetViewPortSizeReq); + xXF86DGAGetViewPortSizeReply rep; + ++ REQUEST_SIZE_MATCH(xXF86DGAGetViewPortSizeReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + +- REQUEST_SIZE_MATCH(xXF86DGAGetViewPortSizeReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1917,14 +1926,14 @@ ProcXF86DGASetViewPort(ClientPtr client) + { + REQUEST(xXF86DGASetViewPortReq); + ++ REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq); +- + if (!DGAAvailable(stuff->screen)) + return DGAErrorBase + XF86DGANoDirectVideoMode; + +@@ -1944,10 +1953,11 @@ ProcXF86DGAGetVidPage(ClientPtr client) + REQUEST(xXF86DGAGetVidPageReq); + xXF86DGAGetVidPageReply rep; + ++ REQUEST_SIZE_MATCH(xXF86DGAGetVidPageReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + +- REQUEST_SIZE_MATCH(xXF86DGAGetVidPageReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -1962,11 +1972,11 @@ ProcXF86DGASetVidPage(ClientPtr client) + { + REQUEST(xXF86DGASetVidPageReq); + ++ REQUEST_SIZE_MATCH(xXF86DGASetVidPageReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + +- REQUEST_SIZE_MATCH(xXF86DGASetVidPageReq); +- + /* silently fail */ + + return Success; +@@ -1980,14 +1990,14 @@ ProcXF86DGAInstallColormap(ClientPtr client) + + REQUEST(xXF86DGAInstallColormapReq); + ++ REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq); +- + if (!DGAActive(stuff->screen)) + return DGAErrorBase + XF86DGADirectNotActivated; + +@@ -2008,10 +2018,11 @@ ProcXF86DGAQueryDirectVideo(ClientPtr client) + REQUEST(xXF86DGAQueryDirectVideoReq); + xXF86DGAQueryDirectVideoReply rep; + ++ REQUEST_SIZE_MATCH(xXF86DGAQueryDirectVideoReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + +- REQUEST_SIZE_MATCH(xXF86DGAQueryDirectVideoReq); + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; +@@ -2030,14 +2041,14 @@ ProcXF86DGAViewPortChanged(ClientPtr client) + REQUEST(xXF86DGAViewPortChangedReq); + xXF86DGAViewPortChangedReply rep; + ++ REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq); ++ + if (stuff->screen >= screenInfo.numScreens) + return BadValue; + + if (DGA_GETCLIENT(stuff->screen) != client) + return DGAErrorBase + XF86DGADirectNotActivated; + +- REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq); +- + if (!DGAActive(stuff->screen)) + return DGAErrorBase + XF86DGADirectNotActivated; + +diff --git a/hw/xfree86/dri/xf86dri.c b/hw/xfree86/dri/xf86dri.c +index 8f3c2d6..d356db9 100644 +--- a/hw/xfree86/dri/xf86dri.c ++++ b/hw/xfree86/dri/xf86dri.c +@@ -570,6 +570,7 @@ static int _X_COLD + SProcXF86DRIQueryDirectRenderingCapable(register ClientPtr client) + { + REQUEST(xXF86DRIQueryDirectRenderingCapableReq); ++ REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq); + swaps(&stuff->length); + swapl(&stuff->screen); + return ProcXF86DRIQueryDirectRenderingCapable(client); +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12183.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12183.diff new file mode 100644 index 000000000..b88ba950e --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12183.diff @@ -0,0 +1,95 @@ +From 55caa8b08c84af2b50fbc936cf334a5a93dd7db5 Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Fri, 9 Jan 2015 11:43:05 -0500 +Subject: xfixes: unvalidated lengths (CVE-2017-12183) + +v2: Use before swap (Jeremy Huddleston Sequoia) + +v3: Fix wrong XFixesCopyRegion checks (Alan Coopersmith) + +Reviewed-by: Alan Coopersmith +Reviewed-by: Jeremy Huddleston Sequoia +Reviewed-by: Julien Cristau +Signed-off-by: Jeremy Huddleston Sequoia +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/xfixes/cursor.c b/xfixes/cursor.c +index c1ab3be..dc447ed 100644 +--- a/xfixes/cursor.c ++++ b/xfixes/cursor.c +@@ -281,6 +281,7 @@ int _X_COLD + SProcXFixesSelectCursorInput(ClientPtr client) + { + REQUEST(xXFixesSelectCursorInputReq); ++ REQUEST_SIZE_MATCH(xXFixesSelectCursorInputReq); + + swaps(&stuff->length); + swapl(&stuff->window); +@@ -414,7 +415,7 @@ ProcXFixesSetCursorName(ClientPtr client) + REQUEST(xXFixesSetCursorNameReq); + Atom atom; + +- REQUEST_AT_LEAST_SIZE(xXFixesSetCursorNameReq); ++ REQUEST_FIXED_SIZE(xXFixesSetCursorNameReq, stuff->nbytes); + VERIFY_CURSOR(pCursor, stuff->cursor, client, DixSetAttrAccess); + tchar = (char *) &stuff[1]; + atom = MakeAtom(tchar, stuff->nbytes, TRUE); +@@ -1007,6 +1008,8 @@ SProcXFixesCreatePointerBarrier(ClientPtr client) + int i; + CARD16 *in_devices = (CARD16 *) &stuff[1]; + ++ REQUEST_AT_LEAST_SIZE(xXFixesCreatePointerBarrierReq); ++ + swaps(&stuff->length); + swaps(&stuff->num_devices); + REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, pad_to_int32(stuff->num_devices)); +diff --git a/xfixes/region.c b/xfixes/region.c +index e773701..7c0a7d2 100644 +--- a/xfixes/region.c ++++ b/xfixes/region.c +@@ -359,6 +359,7 @@ ProcXFixesCopyRegion(ClientPtr client) + RegionPtr pSource, pDestination; + + REQUEST(xXFixesCopyRegionReq); ++ REQUEST_SIZE_MATCH(xXFixesCopyRegionReq); + + VERIFY_REGION(pSource, stuff->source, client, DixReadAccess); + VERIFY_REGION(pDestination, stuff->destination, client, DixWriteAccess); +@@ -375,7 +376,7 @@ SProcXFixesCopyRegion(ClientPtr client) + REQUEST(xXFixesCopyRegionReq); + + swaps(&stuff->length); +- REQUEST_AT_LEAST_SIZE(xXFixesCopyRegionReq); ++ REQUEST_SIZE_MATCH(xXFixesCopyRegionReq); + swapl(&stuff->source); + swapl(&stuff->destination); + return (*ProcXFixesVector[stuff->xfixesReqType]) (client); +diff --git a/xfixes/saveset.c b/xfixes/saveset.c +index 2043153..fd9c7a1 100644 +--- a/xfixes/saveset.c ++++ b/xfixes/saveset.c +@@ -62,6 +62,7 @@ int _X_COLD + SProcXFixesChangeSaveSet(ClientPtr client) + { + REQUEST(xXFixesChangeSaveSetReq); ++ REQUEST_SIZE_MATCH(xXFixesChangeSaveSetReq); + + swaps(&stuff->length); + swapl(&stuff->window); +diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c +index 77efd64..248bf02 100644 +--- a/xfixes/xfixes.c ++++ b/xfixes/xfixes.c +@@ -160,6 +160,7 @@ static _X_COLD int + SProcXFixesQueryVersion(ClientPtr client) + { + REQUEST(xXFixesQueryVersionReq); ++ REQUEST_SIZE_MATCH(xXFixesQueryVersionReq); + + swaps(&stuff->length); + swapl(&stuff->majorVersion); +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff new file mode 100644 index 000000000..d29956864 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff @@ -0,0 +1,139 @@ +From cad5a1050b7184d828aef9c1dd151c3ab649d37e Mon Sep 17 00:00:00 2001 +From: Nathan Kidd +Date: Fri, 9 Jan 2015 09:57:23 -0500 +Subject: Unvalidated lengths + +v2: Add overflow check and remove unnecessary check (Julien Cristau) + +This addresses: +CVE-2017-12184 in XINERAMA +CVE-2017-12185 in MIT-SCREEN-SAVER +CVE-2017-12186 in X-Resource +CVE-2017-12187 in RENDER + +Reviewed-by: Jeremy Huddleston Sequoia +Reviewed-by: Julien Cristau +Signed-off-by: Nathan Kidd +Signed-off-by: Julien Cristau + +diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c +index 209df29..844ea49 100644 +--- a/Xext/panoramiX.c ++++ b/Xext/panoramiX.c +@@ -988,10 +988,11 @@ ProcPanoramiXGetScreenSize(ClientPtr client) + xPanoramiXGetScreenSizeReply rep; + int rc; + ++ REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); ++ + if (stuff->screen >= PanoramiXNumScreens) + return BadMatch; + +- REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); + rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); + if (rc != Success) + return rc; +diff --git a/Xext/saver.c b/Xext/saver.c +index 0949761..f6090d8 100644 +--- a/Xext/saver.c ++++ b/Xext/saver.c +@@ -1186,6 +1186,8 @@ ProcScreenSaverUnsetAttributes(ClientPtr client) + PanoramiXRes *draw; + int rc, i; + ++ REQUEST_SIZE_MATCH(xScreenSaverUnsetAttributesReq); ++ + rc = dixLookupResourceByClass((void **) &draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (rc != Success) +diff --git a/Xext/xres.c b/Xext/xres.c +index 21239f5..0242158 100644 +--- a/Xext/xres.c ++++ b/Xext/xres.c +@@ -947,6 +947,8 @@ ProcXResQueryResourceBytes (ClientPtr client) + ConstructResourceBytesCtx ctx; + + REQUEST_AT_LEAST_SIZE(xXResQueryResourceBytesReq); ++ if (stuff->numSpecs > UINT32_MAX / sizeof(ctx.specs[0])) ++ return BadLength; + REQUEST_FIXED_SIZE(xXResQueryResourceBytesReq, + stuff->numSpecs * sizeof(ctx.specs[0])); + +@@ -1052,8 +1054,8 @@ SProcXResQueryResourceBytes (ClientPtr client) + int c; + xXResResourceIdSpec *specs = (void*) ((char*) stuff + sizeof(*stuff)); + +- swapl(&stuff->numSpecs); + REQUEST_AT_LEAST_SIZE(xXResQueryResourceBytesReq); ++ swapl(&stuff->numSpecs); + REQUEST_FIXED_SIZE(xXResQueryResourceBytesReq, + stuff->numSpecs * sizeof(specs[0])); + +diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c +index d99d3d4..5232b37 100644 +--- a/Xext/xvdisp.c ++++ b/Xext/xvdisp.c +@@ -1493,12 +1493,14 @@ XineramaXvShmPutImage(ClientPtr client) + { + REQUEST(xvShmPutImageReq); + PanoramiXRes *draw, *gc, *port; +- Bool send_event = stuff->send_event; ++ Bool send_event; + Bool isRoot; + int result, i, x, y; + + REQUEST_SIZE_MATCH(xvShmPutImageReq); + ++ send_event = stuff->send_event; ++ + result = dixLookupResourceByClass((void **) &draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) +diff --git a/hw/dmx/dmxpict.c b/hw/dmx/dmxpict.c +index 1f1022e..63caec9 100644 +--- a/hw/dmx/dmxpict.c ++++ b/hw/dmx/dmxpict.c +@@ -716,6 +716,8 @@ dmxProcRenderSetPictureFilter(ClientPtr client) + filter = (char *) (stuff + 1); + params = (XFixed *) (filter + ((stuff->nbytes + 3) & ~3)); + nparams = ((XFixed *) stuff + client->req_len) - params; ++ if (nparams < 0) ++ return BadLength; + + XRenderSetPictureFilter(dmxScreen->beDisplay, + pPictPriv->pict, filter, params, nparams); +diff --git a/pseudoramiX/pseudoramiX.c b/pseudoramiX/pseudoramiX.c +index d8b2593..95f6e10 100644 +--- a/pseudoramiX/pseudoramiX.c ++++ b/pseudoramiX/pseudoramiX.c +@@ -297,10 +297,11 @@ ProcPseudoramiXGetScreenSize(ClientPtr client) + + TRACE; + ++ REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); ++ + if (stuff->screen >= pseudoramiXNumScreens) + return BadMatch; + +- REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); + rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); + if (rc != Success) + return rc; +diff --git a/render/render.c b/render/render.c +index ccae49a..7d94bd5 100644 +--- a/render/render.c ++++ b/render/render.c +@@ -1757,6 +1757,9 @@ ProcRenderSetPictureFilter(ClientPtr client) + name = (char *) (stuff + 1); + params = (xFixed *) (name + pad_to_int32(stuff->nbytes)); + nparams = ((xFixed *) stuff + client->req_len) - params; ++ if (nparams < 0) ++ return BadLength; ++ + result = SetPictureFilter(pPicture, name, stuff->nbytes, params, nparams); + return result; + } +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13721.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13721.diff new file mode 100644 index 000000000..8341a3372 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13721.diff @@ -0,0 +1,27 @@ +From b95f25af141d33a65f6f821ea9c003f66a01e1f1 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Fri, 28 Jul 2017 16:27:10 +0200 +Subject: Xext/shm: Validate shmseg resource id (CVE-2017-13721) + +Otherwise it can belong to a non-existing client and abort X server with +FatalError "client not in use", or overwrite existing segment of another +existing client. + +Signed-off-by: Julien Cristau + +diff --git a/Xext/shm.c b/Xext/shm.c +index 91ea90b..2f9a788 100644 +--- a/Xext/shm.c ++++ b/Xext/shm.c +@@ -1238,6 +1238,7 @@ ProcShmCreateSegment(ClientPtr client) + }; + + REQUEST_SIZE_MATCH(xShmCreateSegmentReq); ++ LEGAL_NEW_RESOURCE(stuff->shmseg, client); + if ((stuff->readOnly != xTrue) && (stuff->readOnly != xFalse)) { + client->errorValue = stuff->readOnly; + return BadValue; +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13723.diff b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13723.diff new file mode 100644 index 000000000..6e37be485 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13723.diff @@ -0,0 +1,116 @@ +From 94f11ca5cf011ef123bd222cabeaef6f424d76ac Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Thu, 27 Jul 2017 10:08:32 -0700 +Subject: xkb: Handle xkb formated string output safely (CVE-2017-13723) + +Generating strings for XKB data used a single shared static buffer, +which offered several opportunities for errors. Use a ring of +resizable buffers instead, to avoid problems when strings end up +longer than anticipated. + +Reviewed-by: Michal Srb +Signed-off-by: Keith Packard +Signed-off-by: Julien Cristau + +diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c +index ead2b1a..d2a2567 100644 +--- a/xkb/xkbtext.c ++++ b/xkb/xkbtext.c +@@ -47,23 +47,27 @@ + + /***====================================================================***/ + +-#define BUFFER_SIZE 512 +- +-static char textBuffer[BUFFER_SIZE]; +-static int tbNext = 0; ++#define NUM_BUFFER 8 ++static struct textBuffer { ++ int size; ++ char *buffer; ++} textBuffer[NUM_BUFFER]; ++static int textBufferIndex; + + static char * + tbGetBuffer(unsigned size) + { +- char *rtrn; ++ struct textBuffer *tb; + +- if (size >= BUFFER_SIZE) +- return NULL; +- if ((BUFFER_SIZE - tbNext) <= size) +- tbNext = 0; +- rtrn = &textBuffer[tbNext]; +- tbNext += size; +- return rtrn; ++ tb = &textBuffer[textBufferIndex]; ++ textBufferIndex = (textBufferIndex + 1) % NUM_BUFFER; ++ ++ if (size > tb->size) { ++ free(tb->buffer); ++ tb->buffer = xnfalloc(size); ++ tb->size = size; ++ } ++ return tb->buffer; + } + + /***====================================================================***/ +@@ -79,8 +83,6 @@ XkbAtomText(Atom atm, unsigned format) + int len; + + len = strlen(atmstr) + 1; +- if (len > BUFFER_SIZE) +- len = BUFFER_SIZE - 2; + rtrn = tbGetBuffer(len); + strlcpy(rtrn, atmstr, len); + } +@@ -128,8 +130,6 @@ XkbVModIndexText(XkbDescPtr xkb, unsigned ndx, unsigned format) + len = strlen(tmp) + 1; + if (format == XkbCFile) + len += 4; +- if (len >= BUFFER_SIZE) +- len = BUFFER_SIZE - 1; + rtrn = tbGetBuffer(len); + if (format == XkbCFile) { + strcpy(rtrn, "vmod_"); +@@ -140,6 +140,8 @@ XkbVModIndexText(XkbDescPtr xkb, unsigned ndx, unsigned format) + return rtrn; + } + ++#define VMOD_BUFFER_SIZE 512 ++ + char * + XkbVModMaskText(XkbDescPtr xkb, + unsigned modMask, unsigned mask, unsigned format) +@@ -147,7 +149,7 @@ XkbVModMaskText(XkbDescPtr xkb, + register int i, bit; + int len; + char *mm, *rtrn; +- char *str, buf[BUFFER_SIZE]; ++ char *str, buf[VMOD_BUFFER_SIZE]; + + if ((modMask == 0) && (mask == 0)) { + rtrn = tbGetBuffer(5); +@@ -173,7 +175,7 @@ XkbVModMaskText(XkbDescPtr xkb, + len = strlen(tmp) + 1 + (str == buf ? 0 : 1); + if (format == XkbCFile) + len += 4; +- if ((str - (buf + len)) <= BUFFER_SIZE) { ++ if ((str - (buf + len)) <= VMOD_BUFFER_SIZE) { + if (str != buf) { + if (format == XkbCFile) + *str++ = '|'; +@@ -199,8 +201,6 @@ XkbVModMaskText(XkbDescPtr xkb, + len = 0; + if (str) + len += strlen(str) + (mm == NULL ? 0 : 1); +- if (len >= BUFFER_SIZE) +- len = BUFFER_SIZE - 1; + rtrn = tbGetBuffer(len + 1); + rtrn[0] = '\0'; + +-- +cgit v0.10.2 + + diff --git a/patches/source/xorg-server/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch b/patches/source/xorg-server/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch new file mode 100644 index 000000000..83f673030 --- /dev/null +++ b/patches/source/xorg-server/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch @@ -0,0 +1,49 @@ +--- b/Xi/exevents.c 2013-12-27 19:38:52.000000000 +0200 ++++ a/Xi/exevents.c 2014-03-04 19:44:15.228721619 +0200 +@@ -665,7 +665,8 @@ + DeepCopyFeedbackClasses(from, to); + + if ((dce->flags & DEVCHANGE_KEYBOARD_EVENT)) +- DeepCopyKeyboardClasses(from, to); ++ /* We need to copy to MASTER_KEYBOARD. Didn't worked with 'to'. */ ++ DeepCopyKeyboardClasses(from, GetMaster(from, MASTER_KEYBOARD)); + if ((dce->flags & DEVCHANGE_POINTER_EVENT)) + DeepCopyPointerClasses(from, to); + } +--- b/dix/getevents.c 2013-12-27 19:38:52.000000000 +0200 ++++ a/dix/getevents.c 2014-03-04 19:46:50.126336327 +0200 +@@ -706,12 +706,19 @@ + { + DeviceIntPtr master; + +- master = +- GetMaster(dev, +- (type & DEVCHANGE_POINTER_EVENT) ? MASTER_POINTER : +- MASTER_KEYBOARD); ++ /* Don't guess the master upon the event type. Use MASTER_ATTACHED, ++ * otherwise we'll never get a DeviceChangedEvent(reason:SlaveSwith). */ ++ master = GetMaster(dev, MASTER_ATTACHED); ++ /* Need to track the slave event type. Other we'le never get a ++ * DeviceChangedEvent(reason:SlaveSwith) for the 'keyboard' if the ++ * 'pointer' has been touched before. */ ++ int slave_type = (type & DEVCHANGE_KEYBOARD_EVENT) | ++ (type & DEVCHANGE_POINTER_EVENT); + +- if (master && master->last.slave != dev) { ++ if (master && ++ ((master->last.slave != dev) || ++ (master->last.slave == dev && master->last.slave_type != slave_type))) { ++ master->last.slave_type = slave_type; + CreateClassesChangedEvent(events, master, dev, + type | DEVCHANGE_SLAVE_SWITCH); + if (IsPointerDevice(master)) { +--- b/include/inputstr.h 2013-12-27 19:38:52.000000000 +0200 ++++ a/include/inputstr.h 2014-03-04 19:47:28.074051116 +0200 +@@ -577,6 +577,7 @@ + double valuators[MAX_VALUATORS]; + int numValuators; + DeviceIntPtr slave; ++ int slave_type; + ValuatorMask *scroll; + int num_touches; /* size of the touches array */ + DDXTouchPointInfoPtr touches; diff --git a/patches/source/xorg-server/post-install/xorg-server.post-install b/patches/source/xorg-server/post-install/xorg-server.post-install new file mode 100644 index 000000000..e21a0f03a --- /dev/null +++ b/patches/source/xorg-server/post-install/xorg-server.post-install @@ -0,0 +1,66 @@ +# Create the configuration directories for xorg-server 1.9.x +mkdir -p $PKG/etc/X11/xorg.conf.d $PKG/usr/share/X11/xorg.conf.d + +# Create a sample keyboard layout +# Enable zapping by default +cat << EOF > $PKG/usr/share/X11/xorg.conf.d/90-keyboard-layout.conf +Section "InputClass" + Identifier "keyboard-all" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" + Option "XkbLayout" "us" + #Option "XkbVariant" "" + Option "XkbOptions" "terminate:ctrl_alt_bksp" +EndSection + +# READ THIS FOR CUSTOM KEYBOARD INFORMATION +# +# If you want to add a custom model/layout/variant to X, you will need to COPY +# this file to /etc/X11/xorg.conf.d/ and edit that copy. After editing it to +# suit, you will need to restart X. +# +# Here's an example of the lines from above: +# +# Section "InputClass" +# Identifier "keyboard-all" +# MatchIsKeyboard "on" +# MatchDevicePath "/dev/input/event*" +# Driver "evdev" +# Option "XkbLayout" "us" +# Option "XkbVariant" "intl" +# Option "XkbOptions" "compose:rwin,terminate:ctrl_alt_bksp" +# EndSection +# +# Many desktop environments, including KDE and Xfce, have their own methods to +# configure keyboard layouts and such if you'd like to use them. +# +# If you prefer to use the "old" way of configuring keyboards (without input +# device hotplugging), then you'll need to add the following lines to the +# ServerFlags section of /etc/X11/xorg.conf: +# Option "AllowEmptyInput" "false" +# Option "AutoAddDevices" "false" +# Option "AutoEnableDevices" "false" +# Alternatively, you can break this up into separate "stubs" in the xorg.conf.d/ +# directory, but that's your call. Assuming you elect to keep a monolithic +# /etc/X11/xorg.conf file, you can now edit the Keyboard section as usual. + +EOF + +# Add COPYING file: +mkdir -p $PKG/usr/doc/xorg-server-$MODULAR_PACKAGE_VERSION +cp -a COPYING $PKG/usr/doc/xorg-server-$MODULAR_PACKAGE_VERSION + +# Don't mess with my /var/log/ permissions: +rmdir $PKG/var/log +rmdir $PKG/var + +# While I hate to have X11 take over another generic-sounding +# piece of prime filesystem real estate, this symlink will +# direct (for now) proprietary X drivers into the corrent +# location: + +( cd $PKG/usr/lib + rm -rf modules + ln -sf xorg/modules . +) diff --git a/patches/source/xorg-server/slack-desc/xorg-server b/patches/source/xorg-server/slack-desc/xorg-server new file mode 100644 index 000000000..9d25b405d --- /dev/null +++ b/patches/source/xorg-server/slack-desc/xorg-server @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +xorg-server: xorg-server (The Xorg server, the core of the X Window System) +xorg-server: +xorg-server: Xorg is a full featured X server that was originally designed for UNIX +xorg-server: and UNIX-like operating systems running on Intel x86 hardware. It now +xorg-server: runs on a wider range of hardware and OS platforms. This work was +xorg-server: derived by the X.Org Foundation from the XFree86 Project's XFree86 +xorg-server: 4.4rc2 release. The XFree86 release was originally derived from X386 +xorg-server: 1.2 by Thomas Roell which was contributed to X11R5 by Snitily Graphics +xorg-server: Consulting Service. +xorg-server: +xorg-server: The home page for the X project is: http://www.x.org diff --git a/patches/source/xorg-server/slack-desc/xorg-server-xephyr b/patches/source/xorg-server/slack-desc/xorg-server-xephyr new file mode 100644 index 000000000..640f3d189 --- /dev/null +++ b/patches/source/xorg-server/slack-desc/xorg-server-xephyr @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +xorg-server-xephyr: xorg-server-xephyr (Improved nested X server/client) +xorg-server-xephyr: +xorg-server-xephyr: Xephyr is a nested X-Client like Xnest, but with some additional +xorg-server-xephyr: features like XRender support. +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: +xorg-server-xephyr: diff --git a/patches/source/xorg-server/slack-desc/xorg-server-xnest b/patches/source/xorg-server/slack-desc/xorg-server-xnest new file mode 100644 index 000000000..393f93bdd --- /dev/null +++ b/patches/source/xorg-server/slack-desc/xorg-server-xnest @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +xorg-server-xnest: xorg-server-xnest (a nested X server) +xorg-server-xnest: +xorg-server-xnest: Xnest is an experimental nested server for X that acts as both a +xorg-server-xnest: client and a server. Xnest is a client of the real server which +xorg-server-xnest: manages windows and graphics requests on its behalf. Xnest is a +xorg-server-xnest: server to its own clients. Xnest manages windows and graphics +xorg-server-xnest: requests on their behalf. To these clients Xnest appears to be a +xorg-server-xnest: conventional server. +xorg-server-xnest: +xorg-server-xnest: +xorg-server-xnest: diff --git a/patches/source/xorg-server/slack-desc/xorg-server-xvfb b/patches/source/xorg-server/slack-desc/xorg-server-xvfb new file mode 100644 index 000000000..aff9c642c --- /dev/null +++ b/patches/source/xorg-server/slack-desc/xorg-server-xvfb @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +xorg-server-xvfb: xorg-server-xvfb (virtual framebuffer X server) +xorg-server-xvfb: +xorg-server-xvfb: Xvfb is an X server that can run on machines with no display hardware +xorg-server-xvfb: and no physical input devices. It emulates a dumb framebuffer using +xorg-server-xvfb: virtual memory. The primary use of this server is intended to be +xorg-server-xvfb: server testing. The mfb or cfb code for any depth can be exercised +xorg-server-xvfb: with this server without the need for real hardware that supports the +xorg-server-xvfb: desired depths. A secondary use is testing clients against unusual +xorg-server-xvfb: depths and screen configurations. +xorg-server-xvfb: +xorg-server-xvfb: diff --git a/patches/source/xorg-server/x11.SlackBuild b/patches/source/xorg-server/x11.SlackBuild new file mode 100755 index 000000000..d2d75e4f0 --- /dev/null +++ b/patches/source/xorg-server/x11.SlackBuild @@ -0,0 +1,381 @@ +#!/bin/sh +# Copyright 2007-2014 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# To build only a single package group, specify it as $1, like: +# ./x11.SlackBuild lib +# To build only a single package, specify both the source directory +# and the name of the package, like: +# ./x11.SlackBuild lib libX11 + +# Upgrade packages as they are built. +# Default is to upgrade new packages (UPGRADE_PACKAGES=yes). +# To install ALL newly built packages (even if they are already installed), +# use UPGRADE_PACKAGES=always +# To not upgrade, pass UPGRADE_PACKAGES=no +UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-yes} + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# A lot of this stuff just controls the package names this time: +VERSION=${VERSION:-7.5} +BUILD=${BUILD:-1} +PKGARCH=$ARCH +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# Set up a few useful functions: + +fix_perms() { + chown -R root:root . + find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +# Set the compile options for the $ARCH being used: +. $CWD/arch.use.flags + +SLACK_X_BUILD_DIR=$TMP/x11-build +mkdir -p $SLACK_X_BUILD_DIR + +# Better have some binaries installed first, as this may not be +# in the "magic order". I built mine by hand through trial-and-error +# before getting this script to work. It wasn't that hard... I think. ;-) +( cd src + for x_source_dir in proto data util xcb lib app doc xserver driver font ; do + # See if $1 is a source directory like "lib": + if [ ! -z "$1" ]; then + if [ ! "$1" = "${x_source_dir}" ]; then + continue + fi + fi + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + rm -rf $PKG + mkdir -p $PKG + ( cd $x_source_dir + for x_pkg in *.tar.?z* ; do + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + PKGNAME=$(echo $x_pkg | rev | cut -f 2- -d - | rev) + # Perhaps $PKGARCH should be something different: + if grep -wq "^$PKGNAME" ${CWD}/noarch ; then + PKGARCH=noarch + fi + if grep -wq "^$PKGNAME" ${CWD}/package-blacklist ; then + continue + fi + cd $SLACK_X_BUILD_DIR + # If $2 is set, we only want to build one package: + if [ ! -z "$2" ]; then + if [ "$2" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${x_pkg}" + echo + fi + if grep -wq "^$PKGNAME" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_X_BUILD_DIR/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $x_pkg | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $x_pkg) + tar xf $CWD/src/${x_source_dir}/${x_pkg} || exit 1 + cd $(pkgbase $x_pkg) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch + fi + + # I heard somewhere that -O2 breaks some chipset or another. If you encounter + # problems, please contact volkerdi@slackware.com. Thanks! :-) + + # ./configure, using custom configure script if needed: + if [ -r $CWD/configure/${PKGNAME} ]; then + . $CWD/configure/${PKGNAME} + else + # This is the default configure script: + . $CWD/configure/configure + fi + + if ! make $NUMJOBS ; then + touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed + continue + fi + + make install DESTDIR=$PKG + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + cp -a \ + AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + + # If there's a ChangeLog, installing at least part of the recent history + # is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \; + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries: + ( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + ) + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/${PKGNAME}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_X_BUILD_DIR/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + fi + fi + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_X_BUILD_DIR}/package-${x_source_dir} + + done + + # Nothing here? Must have been fully modular. :-) + if [ ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/etc -a \ + ! -d ${SLACK_X_BUILD_DIR}/package-${x_source_dir}/usr ]; then + continue + fi + + # Build an "x11-" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + PKGARCH=$ARCH + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/x11-${x_source_dir}.post-install ]; then + RUNSCRIPT=$(mktemp -p $TMP) || exit 1 + cat $CWD/post-install/x11-${x_source_dir}.post-install \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" > $RUNSCRIPT + . $RUNSCRIPT + rm -f $RUNSCRIPT + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/x11-${x_source_dir} ]; then + cat $CWD/slack-desc/x11-${x_source_dir} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/x11-${x_source_dir} ]; then + cat $CWD/doinst.sh/x11-${x_source_dir} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/x11-${PKGNAME} ]; then + SRCDIRBUILD=$(cat $CWD/build/x11-${PKGNAME}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + if [ "$UPGRADE_PACKAGES" = "yes" ]; then + /sbin/upgradepkg --install-new ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + elif [ "$UPGRADE_PACKAGES" = "always" ]; then + /sbin/upgradepkg --install-new --reinstall ${SLACK_X_BUILD_DIR}/x11-${x_source_dir}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}.txz + fi + fi + ) + done +) + +exit 0 + +# I don't think I'll be using the following stuff, since I went for the latest in +# "individual", rather than a release. That was mostly because version 7.1 depends +# on a version of Mesa that won't build against kernel headers this new (&etc.). + +# If environment variable "REFRESH" is exported, start by refreshing the source tree: +# export REFRESH yes +if [ ! -z "$REFRESH" ]; then + # Only works once, unless you uncomment above. + unset REFRESH + ( cd patches + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/patches + mirror --delete --dereference . + exit" + chmod 644 * + ) + ( cd src + mkdir -p update everything + for dir in app data deprecated doc driver extras font lib proto util xserver ; do + # We won't really download "update", as problems ensue. Plus, --dereference is + # bringing us updated files when needed, so it's redundant (like "everything"). + if [ ! -d $dir ]; then + mkdir $dir + fi + ( cd $dir + lftp -c \ + "lftp ftp://ftp.x.org:/pub/X11R7.1/src/$dir + mirror -c --delete --dereference --include-glob "*.tar.bz2" . + exit" + chmod 644 * + ) + done + ) +fi + diff --git a/patches/source/xorg-server/xorg-server.SlackBuild b/patches/source/xorg-server/xorg-server.SlackBuild new file mode 100755 index 000000000..688448ec4 --- /dev/null +++ b/patches/source/xorg-server/xorg-server.SlackBuild @@ -0,0 +1,2 @@ +UPGRADE_PACKAGES=no ./x11.SlackBuild xserver xorg-server +mv /tmp/x11-build/*txz /tmp diff --git a/patches/source/xscreensaver/dump.android.osx.sources.sh b/patches/source/xscreensaver/dump.android.osx.sources.sh new file mode 100755 index 000000000..3993f510b --- /dev/null +++ b/patches/source/xscreensaver/dump.android.osx.sources.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Repacks the xscreensaver tarball to remove the unneeded OSX sources. + +VERSION=${VERSION:-$(echo xscreensaver-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} + +tar xf xscreensaver-${VERSION}.tar.xz || exit 1 +mv xscreensaver-${VERSION}.tar.xz xscreensaver-${VERSION}.tar.xz.orig +rm -r xscreensaver-${VERSION}/OSX/* +rm -r xscreensaver-${VERSION}/android/* +tar cf xscreensaver-${VERSION}.tar xscreensaver-${VERSION} +rm -r xscreensaver-${VERSION} +xz -9 xscreensaver-${VERSION}.tar +touch -r xscreensaver-${VERSION}.tar.xz.orig xscreensaver-${VERSION}.tar.xz +rm xscreensaver-${VERSION}.tar.xz.orig diff --git a/patches/source/xscreensaver/setuid.c b/patches/source/xscreensaver/setuid.c new file mode 100644 index 000000000..343dcf097 --- /dev/null +++ b/patches/source/xscreensaver/setuid.c @@ -0,0 +1,274 @@ +/* setuid.c --- management of runtime privileges. + * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include /* not used for much... */ + +/* This file doesn't need the Xt headers, so stub these types out... */ +#undef XtPointer +#define XtAppContext void* +#define XrmDatabase void* +#define XtIntervalId void* +#define XtPointer void* +#define Widget void* + +#include "xscreensaver.h" + +#ifndef EPERM +#include +#endif + +#include /* for getpwnam() and struct passwd */ +#include /* for getgrgid() and struct group */ + +static const char * +uid_gid_string (uid_t uid, gid_t gid) +{ + static char buf[255]; + struct passwd *p = 0; + struct group *g = 0; + p = getpwuid (uid); + g = getgrgid (gid); + sprintf (buf, "%s/%s (%ld/%ld)", + (p && p->pw_name ? p->pw_name : "???"), + (g && g->gr_name ? g->gr_name : "???"), + (long) uid, (long) gid); + return buf; +} + + +void +describe_uids (saver_info *si, FILE *out) +{ + uid_t uid = getuid(); + gid_t gid = getgid(); + uid_t euid = geteuid(); + gid_t egid = getegid(); + char *s1 = strdup (uid_gid_string (uid, gid)); + char *s2 = strdup (uid_gid_string (euid, egid)); + + if (si->orig_uid && *si->orig_uid && + (!!strcmp (si->orig_uid, s1) || + !!strcmp (si->orig_uid, s2))) + fprintf (out, "%s: initial effective uid/gid was %s\n", blurb(), + si->orig_uid); + + fprintf (out, "%s: running as %s", blurb(), s1); + if (uid != euid || gid != egid) + fprintf (out, "; effectively %s", s2); + fprintf(out, "\n"); + free(s1); + free(s2); +} + + +static int +set_ids_by_number (uid_t uid, gid_t gid, char **message_ret) +{ + int uid_errno = 0; + int gid_errno = 0; + struct passwd *p = getpwuid (uid); + struct group *g = getgrgid (gid); + + if (message_ret) + *message_ret = 0; + + /* Rumor has it that some implementations of of setuid() do nothing + when called with -1; therefore, if the "nobody" user has a uid of + -1, then that would be Really Bad. Rumor further has it that such + systems really ought to be using -2 for "nobody", since that works. + So, if we get a uid (or gid, for good measure) of -1, switch to -2 + instead. Note that this must be done after we've looked up the + user/group names with getpwuid(-1) and/or getgrgid(-1). + */ + if (gid == (gid_t) -1) gid = (gid_t) -2; + if (uid == (uid_t) -1) uid = (uid_t) -2; + + errno = 0; + if (setgid (gid) != 0) + gid_errno = errno ? errno : -1; + + errno = 0; + if (setuid (uid) != 0) + uid_errno = errno ? errno : -1; + + if (uid_errno == 0 && gid_errno == 0) + { + static char buf [1024]; + sprintf (buf, "changed uid/gid to %s/%s (%ld/%ld).", + (p && p->pw_name ? p->pw_name : "???"), + (g && g->gr_name ? g->gr_name : "???"), + (long) uid, (long) gid); + if (message_ret) + *message_ret = buf; + return 0; + } + else + { + char buf [1024]; + if (gid_errno) + { + sprintf (buf, "%s: couldn't set gid to %s (%ld)", + blurb(), + (g && g->gr_name ? g->gr_name : "???"), + (long) gid); + if (gid_errno == -1) + fprintf(stderr, "%s: unknown error\n", buf); + else + perror(buf); + } + + if (uid_errno) + { + sprintf (buf, "%s: couldn't set uid to %s (%ld)", + blurb(), + (p && p->pw_name ? p->pw_name : "???"), + (long) uid); + if (uid_errno == -1) + fprintf(stderr, "%s: unknown error\n", buf); + else + perror(buf); + } + + return -1; + } +} + + +/* If we've been run as setuid or setgid to someone else (most likely root) + turn off the extra permissions so that random user-specified programs + don't get special privileges. (On some systems it is necessary to install + this program as setuid root in order to read the passwd file to implement + lock-mode.) + + *** WARNING: DO NOT DISABLE ANY OF THE FOLLOWING CODE! + If you do so, you will open a security hole. See the sections + of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", + and "USING XDM". + */ +void +hack_uid (saver_info *si) +{ + + /* Discard privileges, and set the effective user/group ids to the + real user/group ids. That is, give up our "chmod +s" rights. + */ + { + uid_t euid = geteuid(); + gid_t egid = getegid(); + uid_t uid = getuid(); + gid_t gid = getgid(); + + si->orig_uid = strdup (uid_gid_string (euid, egid)); + + if (uid != euid || gid != egid) + if (set_ids_by_number (uid, gid, &si->uid_message) != 0) + saver_exit (si, 1, 0); + } + + + /* Locking can't work when running as root, because we have no way of + knowing what the user id of the logged in user is (so we don't know + whose password to prompt for.) + + *** WARNING: DO NOT DISABLE THIS CODE! + If you do so, you will open a security hole. See the sections + of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", + and "USING XDM". + */ + if (getuid() == (uid_t) 0) + { + si->locking_disabled_p = True; + si->nolock_reason = "running as root"; + } + + + /* If we're running as root, switch to a safer user. This is above and + beyond the fact that we've disabling locking, above -- the theory is + that running graphics demos as root is just always a stupid thing + to do, since they have probably never been security reviewed and are + more likely to be buggy than just about any other kind of program. + (And that assumes non-malicious code. There are also attacks here.) + + *** WARNING: DO NOT DISABLE THIS CODE! + If you do so, you will open a security hole. See the sections + of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", + and "USING XDM". + */ + if (getuid() == (uid_t) 0) + { + struct passwd *p; + + p = getpwnam ("nobody"); + if (! p) p = getpwnam ("noaccess"); + if (! p) p = getpwnam ("daemon"); + if (! p) + { + fprintf (stderr, + "%s: running as root, and couldn't find a safer uid.\n", + blurb()); + saver_exit(si, 1, 0); + } + + if (set_ids_by_number (p->pw_uid, p->pw_gid, &si->uid_message) != 0) + saver_exit (si, -1, 0); + } + + + /* If there's anything even remotely funny looking about the passwd struct, + or if we're running as some other user from the list below (a + non-comprehensive selection of users known to be privileged in some way, + and not normal end-users) then disable locking. If it was possible, + switching to "nobody" would be the thing to do, but only root itself has + the privs to do that. + + *** WARNING: DO NOT DISABLE THIS CODE! + If you do so, you will open a security hole. See the sections + of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", + and "USING XDM". + */ + { + uid_t uid = getuid (); /* get it again */ + struct passwd *p = getpwuid (uid); /* get it again */ + + if (!p || + uid == (uid_t) 0 || + uid == (uid_t) -1 || + uid == (uid_t) -2 || + p->pw_uid == (uid_t) 0 || + p->pw_uid == (uid_t) -1 || + p->pw_uid == (uid_t) -2 || + !p->pw_name || + !*p->pw_name || + !strcmp (p->pw_name, "root") || + !strcmp (p->pw_name, "nobody") || + !strcmp (p->pw_name, "noaccess") || + !strcmp (p->pw_name, "operator") || + !strcmp (p->pw_name, "daemon") || + !strcmp (p->pw_name, "bin") || + !strcmp (p->pw_name, "adm") || + !strcmp (p->pw_name, "sys") || + !strcmp (p->pw_name, "games")) + { + static char buf [1024]; + sprintf (buf, "running as %s", + (p && p->pw_name && *p->pw_name + ? p->pw_name : "")); + si->nolock_reason = buf; + si->locking_disabled_p = True; + si->dangerous_uid_p = True; + } + } +} diff --git a/patches/source/xscreensaver/slack-desc b/patches/source/xscreensaver/slack-desc new file mode 100644 index 000000000..ea0efe024 --- /dev/null +++ b/patches/source/xscreensaver/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +xscreensaver: xscreensaver (a screen saver and locker for X) +xscreensaver: +xscreensaver: A modular screen saver and locker for the X Window System. Highly +xscreensaver: customizable: allows the use of any program that can draw on the +xscreensaver: root window as a display mode. More than 100 display modes are +xscreensaver: included in this package. +xscreensaver: +xscreensaver: Homepage: http://www.jwz.org/xscreensaver +xscreensaver: +xscreensaver: +xscreensaver: diff --git a/patches/source/xscreensaver/xscreensaver-getimage-file-5.14 b/patches/source/xscreensaver/xscreensaver-getimage-file-5.14 new file mode 100644 index 000000000..bc7bcbd9e --- /dev/null +++ b/patches/source/xscreensaver/xscreensaver-getimage-file-5.14 @@ -0,0 +1,555 @@ +#!/usr/bin/perl -w +# Copyright © 2001-2011 Jamie Zawinski . +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation. No representations are made about the suitability of this +# software for any purpose. It is provided "as is" without express or +# implied warranty. +# +# This program chooses a random file from under the given directory, and +# prints its name. The file will be an image file whose dimensions are +# larger than a certain minimum size. +# +# The various xscreensaver hacks that manipulate images ("jigsaw", etc.) get +# the image to manipulate by running the "xscreensaver-getimage" program. +# +# Under X11, the "xscreensaver-getimage" program invokes this script, +# depending on the value of the "chooseRandomImages" and "imageDirectory" +# settings in the ~/.xscreensaver file (or .../app-defaults/XScreenSaver). +# The screen savers invoke "xscreensaver-getimage" via utils/grabclient.c, +# which then invokes this script. +# +# Under Cocoa, this script lives inside the .saver bundle, and is invoked +# directly from utils/grabclient.c. +# +# Created: 12-Apr-01. + +require 5; +#use diagnostics; # Fails on some MacOS 10.5 systems +use strict; + +use POSIX; +use Fcntl; + +use Fcntl ':flock'; # import LOCK_* constants + +use POSIX ':fcntl_h'; # S_ISDIR was here in Perl 5.6 +import Fcntl ':mode' unless defined &S_ISUID; # but it is here in Perl 5.8 + # but in Perl 5.10, both of these load, and cause errors! + # So we have to check for S_ISUID instead of S_ISDIR? WTF? + +use bytes; # Larry can take Unicode and shove it up his ass sideways. + # Perl 5.8.0 causes us to start getting incomprehensible + # errors about UTF-8 all over the place without this. + +my $progname = $0; $progname =~ s@.*/@@g; +my $version = q{ $Revision: 1.29 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; + +my $verbose = 0; + +# Whether to use MacOS X's Spotlight to generate the list of files. +# When set to -1, uses Spotlight if "mdfind" exists. +# +# (In my experience, this isn't actually any faster, and might not find +# everything if your Spotlight index is out of date, which happens often.) +# +my $use_spotlight_p = 0; + +# Whether to cache the results of the last run. +# +my $cache_p = 1; + +# Regenerate the cache if it is older than this many seconds. +# +my $cache_max_age = 60 * 60 * 3; # 3 hours + + +# This matches files that we are allowed to use as images (case-insensitive.) +# Anything not matching this is ignored. This is so you can point your +# imageDirectory at directory trees that have things other than images in +# them, but it assumes that you gave your images sensible file extensions. +# +my @good_extensions = ('jpg', 'jpeg', 'pjpeg', 'pjpg', 'png', 'gif', + 'tif', 'tiff', 'xbm', 'xpm'); +my $good_file_re = '\.(' . join("|", @good_extensions) . ')$'; + +# This matches file extensions that might occur in an image directory, +# and that are never used in the name of a subdirectory. This is an +# optimization that prevents us from having to stat() those files to +# tell whether they are directories or not. (It speeds things up a +# lot. Don't give your directories stupid names.) +# +my @nondir_extensions = ('ai', 'bmp', 'bz2', 'cr2', 'crw', 'db', + 'dmg', 'eps', 'gz', 'hqx', 'htm', 'html', 'icns', 'ilbm', 'mov', + 'nef', 'pbm', 'pdf', 'pl', 'ppm', 'ps', 'psd', 'sea', 'sh', 'shtml', + 'tar', 'tgz', 'thb', 'txt', 'xcf', 'xmp', 'Z', 'zip' ); +my $nondir_re = '\.(' . join("|", @nondir_extensions) . ')$'; + + +# JPEG, GIF, and PNG files that are are smaller than this are rejected: +# this is so that you can use an image directory that contains both big +# images and thumbnails, and have it only select the big versions. +# +my $min_image_width = 255; +my $min_image_height = 255; + +my @all_files = (); # list of "good" files we've collected +my %seen_inodes; # for breaking recursive symlink loops + +# For diagnostic messages: +# +my $dir_count = 1; # number of directories seen +my $stat_count = 0; # number of files/dirs stat'ed +my $skip_count_unstat = 0; # number of files skipped without stat'ing +my $skip_count_stat = 0; # number of files skipped after stat + +sub find_all_files($); +sub find_all_files($) { + my ($dir) = @_; + + print STDERR "$progname: + reading dir $dir/...\n" if ($verbose > 1); + + my $dd; + if (! opendir ($dd, $dir)) { + print STDERR "$progname: couldn't open $dir: $!\n" if ($verbose); + return; + } + my @files = readdir ($dd); + closedir ($dd); + + my @dirs = (); + + foreach my $file (@files) { + next if ($file =~ m/^\./); # silently ignore dot files/dirs + + if ($file =~ m/[~%\#]$/) { # ignore backup files (and dirs...) + $skip_count_unstat++; + print STDERR "$progname: - skip file $file\n" if ($verbose > 1); + } + + $file = "$dir/$file"; + + if ($file =~ m/$good_file_re/io) { + # + # Assume that files ending in .jpg exist and are not directories. + # + push @all_files, $file; + print STDERR "$progname: - found file $file\n" if ($verbose > 1); + + } elsif ($file =~ m/$nondir_re/io) { + # + # Assume that files ending in .html are not directories. + # + $skip_count_unstat++; + print STDERR "$progname: -- skip file $file\n" if ($verbose > 1); + + } else { + # + # Now we need to stat the file to see if it's a subdirectory. + # + # Note: we could use the trick of checking "nlinks" on the parent + # directory to see if this directory contains any subdirectories, + # but that would exclude any symlinks to directories. + # + my @st = stat($file); + my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, + $atime,$mtime,$ctime,$blksize,$blocks) = @st; + + $stat_count++; + + if ($#st == -1) { + if ($verbose) { + my $ll = readlink $file; + if (defined ($ll)) { + print STDERR "$progname: + dangling symlink: $file -> $ll\n"; + } else { + print STDERR "$progname: + unreadable: $file\n"; + } + } + next; + } + + next if ($seen_inodes{"$dev:$ino"}); # break symlink loops + $seen_inodes{"$dev:$ino"} = 1; + + if (S_ISDIR($mode)) { + push @dirs, $file; + $dir_count++; + print STDERR "$progname: + found dir $file\n" if ($verbose > 1); + + } else { + $skip_count_stat++; + print STDERR "$progname: + skip file $file\n" if ($verbose > 1); + } + } + } + + foreach (@dirs) { + find_all_files ($_); + } +} + + +sub spotlight_all_files($) { + my ($dir) = @_; + + my @terms = (); + # "public.image" matches all (indexed) images, including Photoshop, etc. +# push @terms, "kMDItemContentTypeTree == 'public.image'"; + foreach (@good_extensions) { + + # kMDItemFSName hits the file system every time: much worse than "find". +# push @terms, "kMDItemFSName == '*.$_'"; + + # kMDItemDisplayName matches against the name in the Spotlight index, + # but won't find files that (for whatever reason) didn't get indexed. + push @terms, "kMDItemDisplayName == '*.$_'"; + } + + $dir =~ s@([^-_/a-z\d.,])@\\$1@gsi; # quote for sh + my $cmd = "mdfind -onlyin $dir \"" . join (' || ', @terms) . "\""; + + print STDERR "$progname: executing: $cmd\n" if ($verbose > 1); + @all_files = split (/[\r\n]+/, `$cmd`); +} + + +# If we're using cacheing, read the cache file and return its contents, +# if any. This also holds an exclusive lock on the cache file, which +# has the additional benefit that if two copies of this program are +# running at once, one will wait for the other, instead of both of +# them spanking the same file system at the same time. +# +my $cache_fd = undef; +my $cache_file_name = undef; +my $read_cache_p = 0; + +sub read_cache($) { + my ($dir) = @_; + + return () unless ($cache_p); + + my $dd = "$ENV{HOME}/Library/Caches"; # MacOS location + if (-d $dd) { + $cache_file_name = "$dd/org.jwz.xscreensaver.getimage.cache"; + } elsif (-d "$ENV{HOME}/tmp") { + $cache_file_name = "$ENV{HOME}/tmp/.xscreensaver-getimage.cache"; + } else { + $cache_file_name = "$ENV{HOME}/.xscreensaver-getimage.cache"; + } + + print STDERR "$progname: awaiting lock: $cache_file_name\n" + if ($verbose > 1); + + my $file = $cache_file_name; + open ($cache_fd, '+>>', $file) || error ("unable to write $file: $!"); + flock ($cache_fd, LOCK_EX) || error ("unable to lock $file: $!"); + seek ($cache_fd, 0, 0) || error ("unable to rewind $file: $!"); + + my $mtime = (stat($cache_fd))[9]; + + if ($mtime + $cache_max_age < time) { + print STDERR "$progname: cache is too old\n" if ($verbose); + return (); + } + + my $odir = <$cache_fd>; + $odir =~ s/[\r\n]+$//s if defined ($odir); + if (!defined ($odir) || ($dir ne $odir)) { + print STDERR "$progname: cache is for $odir, not $dir\n" + if ($verbose && $odir); + return (); + } + + my @files = (); + while (<$cache_fd>) { + s/[\r\n]+$//s; + push @files, "$odir/$_"; + } + + print STDERR "$progname: " . ($#files+1) . " files in cache\n" + if ($verbose); + + $read_cache_p = 1; + return @files; +} + + +sub write_cache($) { + my ($dir) = @_; + + return unless ($cache_p); + + # If we read the cache, just close it without rewriting it. + # If we didn't read it, then write it now. + + if (! $read_cache_p) { + + truncate ($cache_fd, 0) || + error ("unable to truncate $cache_file_name: $!"); + seek ($cache_fd, 0, 0) || + error ("unable to rewind $cache_file_name: $!"); + + if ($#all_files >= 0) { + print $cache_fd "$dir\n"; + foreach (@all_files) { + my $f = $_; # stupid Perl. do this to avoid modifying @all_files! + $f =~ s@^\Q$dir\L/@@so || die; # remove $dir from front + print $cache_fd "$f\n"; + } + } + + print STDERR "$progname: cached " . ($#all_files+1) . " files\n" + if ($verbose); + } + + flock ($cache_fd, LOCK_UN) || + error ("unable to unlock $cache_file_name: $!"); + close ($cache_fd); + $cache_fd = undef; +} + + +sub find_random_file($) { + my ($dir) = @_; + + if ($use_spotlight_p == -1) { + $use_spotlight_p = 0; + if (-x '/usr/bin/mdfind') { + $use_spotlight_p = 1; + } + } + + @all_files = read_cache ($dir); + + if ($#all_files >= 0) { + # got it from the cache... + + } elsif ($use_spotlight_p) { + print STDERR "$progname: spotlighting $dir...\n" if ($verbose); + spotlight_all_files ($dir); + print STDERR "$progname: found " . ($#all_files+1) . + " file" . ($#all_files == 0 ? "" : "s") . + " via Spotlight\n" + if ($verbose); + } else { + print STDERR "$progname: recursively reading $dir...\n" if ($verbose); + find_all_files ($dir); + print STDERR "$progname: " . + "f=" . ($#all_files+1) . "; " . + "d=$dir_count; " . + "s=$stat_count; " . + "skip=${skip_count_unstat}+$skip_count_stat=" . + ($skip_count_unstat + $skip_count_stat) . + ".\n" + if ($verbose); + } + + write_cache ($dir); + +# @all_files = sort(@all_files); + + if ($#all_files < 0) { + print STDERR "$progname: no files in $dir\n"; + exit 1; + } + + my $max_tries = 50; + for (my $i = 0; $i < $max_tries; $i++) { + + my $n = int (rand ($#all_files + 1)); + my $file = $all_files[$n]; + if (large_enough_p ($file)) { + $file =~ s@^\Q$dir\L/@@so || die; # remove $dir from front + return $file; + } + } + + print STDERR "$progname: no suitable images in $dir " . + "(after $max_tries tries)\n"; + exit 1; +} + + +sub large_enough_p($) { + my ($file) = @_; + + my ($w, $h) = image_file_size ($file); + + if (!defined ($h)) { + print STDERR "$progname: $file: unable to determine image size\n" + if ($verbose); + # Assume that unknown files are of good sizes: this will happen if + # they matched $good_file_re, but we don't have code to parse them. + # (This will also happen if the file is junk...) + return 1; + } + + if ($w < $min_image_width || $h < $min_image_height) { + print STDERR "$progname: $file: too small ($w x $h)\n" if ($verbose); + return 0; + } + + print STDERR "$progname: $file: $w x $h\n" if ($verbose); + return 1; +} + + + +# Given the raw body of a GIF document, returns the dimensions of the image. +# +sub gif_size($) { + my ($body) = @_; + my $type = substr($body, 0, 6); + my $s; + return () unless ($type =~ /GIF8[7,9]a/); + $s = substr ($body, 6, 10); + my ($a,$b,$c,$d) = unpack ("C"x4, $s); + return (($b<<8|$a), ($d<<8|$c)); +} + +# Given the raw body of a JPEG document, returns the dimensions of the image. +# +sub jpeg_size($) { + my ($body) = @_; + my $i = 0; + my $L = length($body); + + my $c1 = substr($body, $i, 1); $i++; + my $c2 = substr($body, $i, 1); $i++; + return () unless (ord($c1) == 0xFF && ord($c2) == 0xD8); + + my $ch = "0"; + while (ord($ch) != 0xDA && $i < $L) { + # Find next marker, beginning with 0xFF. + while (ord($ch) != 0xFF) { + return () if (length($body) <= $i); + $ch = substr($body, $i, 1); $i++; + } + # markers can be padded with any number of 0xFF. + while (ord($ch) == 0xFF) { + return () if (length($body) <= $i); + $ch = substr($body, $i, 1); $i++; + } + + # $ch contains the value of the marker. + my $marker = ord($ch); + + if (($marker >= 0xC0) && + ($marker <= 0xCF) && + ($marker != 0xC4) && + ($marker != 0xCC)) { # it's a SOFn marker + $i += 3; + return () if (length($body) <= $i); + my $s = substr($body, $i, 4); $i += 4; + my ($a,$b,$c,$d) = unpack("C"x4, $s); + return (($c<<8|$d), ($a<<8|$b)); + + } else { + # We must skip variables, since FFs in variable names aren't + # valid JPEG markers. + return () if (length($body) <= $i); + my $s = substr($body, $i, 2); $i += 2; + my ($c1, $c2) = unpack ("C"x2, $s); + my $length = ($c1 << 8) | $c2; + return () if ($length < 2); + $i += $length-2; + } + } + return (); +} + +# Given the raw body of a PNG document, returns the dimensions of the image. +# +sub png_size($) { + my ($body) = @_; + return () unless ($body =~ m/^\211PNG\r/s); + my ($bits) = ($body =~ m/^.{12}(.{12})/s); + return () unless defined ($bits); + return () unless ($bits =~ /^IHDR/); + my ($ign, $w, $h) = unpack("a4N2", $bits); + return ($w, $h); +} + + +# Given the raw body of a GIF, JPEG, or PNG document, returns the dimensions +# of the image. +# +sub image_size($) { + my ($body) = @_; + return () if (length($body) < 10); + my ($w, $h) = gif_size ($body); + if ($w && $h) { return ($w, $h); } + ($w, $h) = jpeg_size ($body); + if ($w && $h) { return ($w, $h); } + # #### TODO: need image parsers for TIFF, XPM, XBM. + return png_size ($body); +} + +# Returns the dimensions of the image file. +# +sub image_file_size($) { + my ($file) = @_; + my $in; + if (! open ($in, '<', $file)) { + print STDERR "$progname: $file: $!\n" if ($verbose); + return undef; + } + binmode ($in); # Larry can take Unicode and shove it up his ass sideways. + my $body = ''; + sysread ($in, $body, 1024 * 50); # The first 50k should be enough. + close $in; # (It's not for certain huge jpegs... + return image_size ($body); # but we know they're huge!) +} + + +sub error($) { + my ($err) = @_; + print STDERR "$progname: $err\n"; + exit 1; +} + +sub usage() { + print STDERR "usage: $progname [--verbose] directory\n" . + " Prints the name of a randomly-selected image file. The directory\n" . + " is searched recursively. Images smaller than " . + "${min_image_width}x${min_image_height} are excluded.\n"; + exit 1; +} + +sub main() { + my $dir = undef; + + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif ($_ eq "--name") { } # ignored, for compatibility + elsif ($_ eq "--spotlight") { $use_spotlight_p = 1; } + elsif ($_ eq "--no-spotlight") { $use_spotlight_p = 0; } + elsif ($_ eq "--cache") { $cache_p = 1; } + elsif ($_ eq "--no-cache") { $cache_p = 0; } + elsif (m/^-./) { usage; } + elsif (!defined($dir)) { $dir = $_; } + else { usage; } + } + + usage unless (defined($dir)); + + $dir =~ s@^~/@$ENV{HOME}/@s; # allow literal "~/" + $dir =~ s@/+$@@s; # omit trailing / + + if (! -d $dir) { + print STDERR "$progname: $dir: not a directory\n"; + usage; + } + + my $file = find_random_file ($dir); + print STDOUT "$file\n"; +} + +main; +exit 0; diff --git a/patches/source/xscreensaver/xscreensaver.SlackBuild b/patches/source/xscreensaver/xscreensaver.SlackBuild new file mode 100755 index 000000000..3846d5327 --- /dev/null +++ b/patches/source/xscreensaver/xscreensaver.SlackBuild @@ -0,0 +1,141 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012, 2013, 2014, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +VERSION=${VERSION:-$(echo xscreensaver-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-xscreensaver + +rm -rf $PKG +mkdir -p $TMP $PKG + +cd $TMP +rm -rf xscreensaver-$VERSION +tar xvf $CWD/xscreensaver-$VERSION.tar.?z* || exit 1 +cd xscreensaver-$VERSION + +# Allow xscreensaver to work setgid shadow. I'd rather avoid requiring +# setuid root on this if at all possible... +zcat $CWD/xscreensaver.setuid.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + +# Add support for the electricsheep distributed screensaver: +zcat $CWD/xscreensaver.electricsheep.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + +# Remove a feature that pops up a nag screen claiming the version is old +# after one year. Just don't send in bug reports on an old version, OK folks? +# I hate to swim against upstream, but with all respect this feature is not +# helpful to distributions. +zcat $CWD/xscreensaver.no.expiration.date.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +xml_config=/usr/bin/xml-config xml2_config=/usr/bin/xml2-config \ +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --with-x-app-defaults=/etc/X11/app-defaults \ + --with-text-file=/usr/doc/netdate/COPYRIGHT \ + --with-shadow \ + --with-jpeg \ + --with-gl \ + --build=$ARCH-slackware-linux || exit 1 + +# Build: +make $NUMJOBS || make || exit 1 +make install_prefix=$PKG install-strip || exit 1 + +# Needed for password unlock: +chown root:shadow $PKG/usr/bin/xscreensaver +chmod 2751 $PKG/usr/bin/xscreensaver + +# This is needed for the menus: +mkdir -p $PKG/usr/share/pixmaps +mkdir -p $PKG/etc +mkdir -p $PKG/usr/doc/xscreensaver-$VERSION +cp -a \ + README* \ + $PKG/usr/doc/xscreensaver-$VERSION + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1 | grep -v '\.gz$') ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Insert an older version of xscreensaver-getimage-file to avoid depending +# on libwww-perl. Maybe we'll eventually add this, but bundling 14 perl +# modules is a lot of maintainance just to get slidescreen working again. +# This restores the functionality that we had before without all that. +cat $CWD/xscreensaver-getimage-file-5.14 > $PKG/usr/bin/xscreensaver-getimage-file + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/xscreensaver-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/xscreensaver/xscreensaver.electricsheep.diff b/patches/source/xscreensaver/xscreensaver.electricsheep.diff new file mode 100644 index 000000000..27b11961c --- /dev/null +++ b/patches/source/xscreensaver/xscreensaver.electricsheep.diff @@ -0,0 +1,20 @@ +--- ./driver/XScreenSaver_ad.h.orig 2008-12-28 01:59:19.000000000 -0600 ++++ ./driver/XScreenSaver_ad.h 2009-05-15 16:22:44.000000000 -0500 +@@ -138,6 +138,7 @@ + squiral -root \\n\ + wander -root \\n\ + - webcollage -root \\n\ ++ electricsheep --root 1 \\n\ + xflame -root \\n\ + xmatrix -root \\n\ + GL: gflux -root \\n\ +--- ./driver/XScreenSaver.ad.in.orig 2008-12-28 01:33:15.000000000 -0600 ++++ ./driver/XScreenSaver.ad.in 2009-05-15 16:22:04.000000000 -0500 +@@ -239,6 +239,7 @@ + squiral -root \n\ + wander -root \n\ + - webcollage -root \n\ ++ electricsheep --root 1 \n\ + xflame -root \n\ + xmatrix -root \n\ + @GL_KLUDGE@ GL: gflux -root \n\ diff --git a/patches/source/xscreensaver/xscreensaver.no.expiration.date.diff b/patches/source/xscreensaver/xscreensaver.no.expiration.date.diff new file mode 100644 index 000000000..bdbcbe1d1 --- /dev/null +++ b/patches/source/xscreensaver/xscreensaver.no.expiration.date.diff @@ -0,0 +1,29 @@ +--- ./driver/prefs.c.orig 2016-05-23 22:08:27.000000000 -0500 ++++ ./driver/prefs.c 2016-05-30 15:29:36.446721679 -0500 +@@ -1734,6 +1734,17 @@ + shipping the last version with the old license and then never + upgrading it again -- which would be the worst possible outcome for + everyone involved, most especially the users. ++ ++ --- ++ ++ NOTE: This feature is disabled by Slackware... we do not ship multi-year ++ old versions, nor do we think it is a good idea to include nag screens ++ that activate when an expiration date is reached. In this case, the ++ nag screen was activated after only one year, which practically insures ++ that this will be seen before the next stable Slackware release. ++ If there's a problem that needs fixing, we'll issue a fix. ++ No nag screens please. Thanks for possibly reconsidering this! ++ + */ + + time_t now = time ((time_t *) 0); /* */ +@@ -1766,5 +1777,7 @@ + months = ((((tm->tm_year + 1900) * 12) + tm->tm_mon) - /* h */ + (y * 12 + m)); /* p */ + /* . */ +- return (months >= 17); /* */ ++ /* Disable date checking for Slackware: */ /* \ö/ */ ++ /* return (months >= 17); */ /* */ ++ return ( 0 ); + } diff --git a/patches/source/xscreensaver/xscreensaver.setuid.diff b/patches/source/xscreensaver/xscreensaver.setuid.diff new file mode 100644 index 000000000..c6810af55 --- /dev/null +++ b/patches/source/xscreensaver/xscreensaver.setuid.diff @@ -0,0 +1,179 @@ +--- ./driver/setuid.c.orig 2006-02-08 20:28:38.000000000 -0600 ++++ ./driver/setuid.c 2006-04-04 16:48:08.000000000 -0500 +@@ -1,5 +1,5 @@ + /* setuid.c --- management of runtime privileges. +- * xscreensaver, Copyright (c) 1993-1998, 2005 Jamie Zawinski ++ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that +@@ -41,7 +41,7 @@ + struct group *g = 0; + p = getpwuid (uid); + g = getgrgid (gid); +- sprintf (buf, "%.100s/%.100s (%ld/%ld)", ++ sprintf (buf, "%s/%s (%ld/%ld)", + (p && p->pw_name ? p->pw_name : "???"), + (g && g->gr_name ? g->gr_name : "???"), + (long) uid, (long) gid); +@@ -74,50 +74,11 @@ + } + + +-/* Returns true if we need to call setgroups(). +- +- Without calling setgroups(), the process will retain any supplementary +- gids associated with the uid, e.g.: +- +- % groups root +- root : root bin daemon sys adm disk wheel +- +- However, setgroups() can only be called by root, and returns EPERM +- for other users even if the call would be a no-op (e.g., setting the +- group list to the current list.) So, to avoid that spurious error, +- before calling setgroups() we first check whether the current list +- of groups contains only one element, our target group. If so, we +- don't need to call setgroups(). +- */ +-static int +-setgroups_needed_p (uid_t target_group) +-{ +- gid_t groups[1024]; +- int n, size; +- size = sizeof(groups) / sizeof(gid_t); +- n = getgroups (size - 1, groups); +- if (n < 0) +- { +- char buf [1024]; +- sprintf (buf, "%s: getgroups(%ld, ...)", blurb(), (long int)(size - 1)); +- perror (buf); +- return 1; +- } +- else if (n == 0) /* an empty list means only egid is in effect. */ +- return 0; +- else if (n == 1 && groups[0] == target_group) /* one element, the target */ +- return 0; +- else /* more than one, or the wrong one. */ +- return 1; +-} +- +- + static int + set_ids_by_number (uid_t uid, gid_t gid, char **message_ret) + { + int uid_errno = 0; + int gid_errno = 0; +- int sgs_errno = 0; + struct passwd *p = getpwuid (uid); + struct group *g = getgrgid (gid); + +@@ -136,11 +97,6 @@ + if (uid == (uid_t) -1) uid = (uid_t) -2; + + errno = 0; +- if (setgroups_needed_p (gid) && +- setgroups (1, &gid) < 0) +- sgs_errno = errno ? errno : -1; +- +- errno = 0; + if (setgid (gid) != 0) + gid_errno = errno ? errno : -1; + +@@ -148,10 +104,10 @@ + if (setuid (uid) != 0) + uid_errno = errno ? errno : -1; + +- if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0) ++ if (uid_errno == 0 && gid_errno == 0) + { + static char buf [1024]; +- sprintf (buf, "changed uid/gid to %.100s/%.100s (%ld/%ld).", ++ sprintf (buf, "changed uid/gid to %s/%s (%ld/%ld).", + (p && p->pw_name ? p->pw_name : "???"), + (g && g->gr_name ? g->gr_name : "???"), + (long) uid, (long) gid); +@@ -162,71 +118,28 @@ + else + { + char buf [1024]; +- gid_t groups[1024]; +- int n, size; +- +- if (sgs_errno) +- { +- sprintf (buf, "%s: couldn't setgroups to %.100s (%ld)", +- blurb(), +- (g && g->gr_name ? g->gr_name : "???"), +- (long) gid); +- if (sgs_errno == -1) +- fprintf(stderr, "%s: unknown error\n", buf); +- else +- { +- errno = sgs_errno; +- perror(buf); +- } +- +- fprintf (stderr, "%s: effective group list: ", blurb()); +- size = sizeof(groups) / sizeof(gid_t); +- n = getgroups (size - 1, groups); +- if (n < 0) +- fprintf (stderr, "unknown!\n"); +- else +- { +- int i; +- fprintf (stderr, "["); +- for (i = 0; i < n; i++) +- { +- g = getgrgid (groups[i]); +- if (i > 0) fprintf (stderr, ", "); +- if (g && g->gr_name) fprintf (stderr, "%s", g->gr_name); +- else fprintf (stderr, "%ld", (long) groups[i]); +- } +- fprintf (stderr, "]\n"); +- } +- } +- + if (gid_errno) + { +- sprintf (buf, "%s: couldn't set gid to %.100s (%ld)", ++ sprintf (buf, "%s: couldn't set gid to %s (%ld)", + blurb(), + (g && g->gr_name ? g->gr_name : "???"), + (long) gid); + if (gid_errno == -1) + fprintf(stderr, "%s: unknown error\n", buf); + else +- { +- errno = gid_errno; +- perror(buf); +- } ++ perror(buf); + } + + if (uid_errno) + { +- sprintf (buf, "%s: couldn't set uid to %.100s (%ld)", ++ sprintf (buf, "%s: couldn't set uid to %s (%ld)", + blurb(), + (p && p->pw_name ? p->pw_name : "???"), + (long) uid); + if (uid_errno == -1) + fprintf(stderr, "%s: unknown error\n", buf); + else +- { +- errno = uid_errno; +- perror(buf); +- } ++ perror(buf); + } + + return -1; +@@ -350,7 +263,7 @@ + !strcmp (p->pw_name, "games")) + { + static char buf [1024]; +- sprintf (buf, "running as %.100s", ++ sprintf (buf, "running as %s", + (p && p->pw_name && *p->pw_name + ? p->pw_name : "")); + si->nolock_reason = buf; diff --git a/recompress.sh b/recompress.sh index d0d13cb61..ef75c899c 100755 --- a/recompress.sh +++ b/recompress.sh @@ -3,979 +3,1201 @@ # Run this script in the root directory of the repository to re-compress # all patches and scripts that were un-compressed to make a better git commit: # -gzip ./extra/source/emacspeak/emacspeak.tcl8.6.diff -gzip ./extra/source/brltty/brltty.brlapi.pyx.diff -gzip ./extra/source/brltty/brltty.fix.blanks.diff gzip ./extra/source/bittorrent/doinst.sh gzip ./extra/source/bittorrent/bittorrent-xterm.sh -gzip ./extra/source/wicd/curses_bitrate_fix.patch -gzip ./extra/source/wicd/wicd-1.7.3-urwid-1.3.0.patch -gzip ./extra/source/wicd/wicd-1421918.patch -gzip ./extra/source/wicd/doinst.sh -gzip ./extra/source/wicd/manually-compile-translations.diff +gzip ./extra/source/emacspeak/emacspeak.tcl8.6.diff +gzip ./extra/source/brltty/brltty.fix.blanks.diff +gzip ./extra/source/brltty/brltty.brlapi.pyx.diff +gzip ./extra/source/bittornado/doinst.sh +gzip ./extra/source/bittornado/btdownloadxterm.sh gzip ./extra/source/fltk/Fl_XFont_On_Demand.patch +gzip ./extra/source/wicd/curses_bitrate_fix.patch +gzip ./extra/source/wicd/doinst.sh +gzip ./extra/source/wicd/wicd-1421918.patch +gzip ./extra/source/wicd/wicd-1.7.3-urwid-1.3.0.patch +gzip ./extra/source/wicd/manually-compile-translations.diff +gzip ./extra/source/bash-completion/patches/0002-test-suite-Add-tar-xvf-filename-test-case.patch gzip ./extra/source/bash-completion/patches/0001-tar-Don-t-write-to-tmp-jetel.patch gzip ./extra/source/bash-completion/patches/0006-Remove-mplayer-aliased-completion.patch gzip ./extra/source/bash-completion/patches/0004-tar-Remove-unused-variable.patch -gzip ./extra/source/bash-completion/patches/0002-test-suite-Add-tar-xvf-filename-test-case.patch gzip ./extra/source/bash-completion/patches/0003-tar-Fix-GNU-tar-help-output-parsing-regex-fixes-15.patch gzip ./extra/source/bash-completion/patches/0005-tar-Detect-GNU-other-from-version-only-once-per-sess.patch gzip ./extra/source/bash-completion/fixup-sh-script-completions.diff -gzip ./extra/source/bittornado/btdownloadxterm.sh -gzip ./extra/source/bittornado/doinst.sh -gzip ./source/xfce/xfce4-pulseaudio-plugin/xfce4-pulseaudio-plugin-0.2.4-gtk3_theme.patch -gzip ./source/xfce/xfce4-pulseaudio-plugin/xfce4-pulseaudio-plugin-0.2.4-gtk3_theme_clean.patch -gzip ./source/xfce/xfce4-panel/libxfce4panel.max_blinking_count.8.diff -gzip ./source/xfce/xfce4-notifyd/doinst.sh -gzip ./source/xfce/xfce4-screenshooter/doinst.sh -gzip ./source/xfce/xfce4-clipman-plugin/doinst.sh -gzip ./source/xfce/xfce4-settings/xfce4-settings.theme.diff -gzip ./source/xfce/xfce4-settings/xfce4-settings.xft.defaults.diff -gzip ./source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff -gzip ./source/xfce/xfce4-power-manager/doinst.sh -gzip ./source/xfce/Thunar/0001-Deactivate-SEND_MOVED-code-paths.patch -gzip ./source/xfce/xfce4-taskmanager/doinst.sh -gzip ./source/a/mcelog/doinst.sh -gzip ./source/a/mcelog/mcelog.init.diff -gzip ./source/a/kbd/sources/kbd-1.15-unicode_start.patch -gzip ./source/a/kbd/sources/speakupmap.map -gzip ./source/a/kbd/sources/kbd-1.15-keycodes-man.patch -gzip ./source/a/kbd/sources/kbd-1.15.2-po.patch -gzip ./source/a/kbd/sources/kbd-1.15.3-fix-es-translation.patch -gzip ./source/a/kbd/sources/kbd-1.15-resizecon-x86_64.patch -gzip ./source/a/kbd/sources/nl.euro.diff -gzip ./source/a/udisks/udisks.no.pci-db.diff -gzip ./source/a/pcmciautils/doinst.sh -gzip ./source/a/dialog/dialog.smaller.min.height.diff -gzip ./source/a/splitvt/splitvt_1.6.5-9.diff -gzip ./source/a/grub/grub.e75fdee420a7ad95e9a465c9699adc2e2e970440.terminate.efi.several.times.diff -gzip ./source/a/grub/0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch -gzip ./source/a/grub/grub.dejavusansmono.gfxterm.font.diff -gzip ./source/a/grub/initrd_naming.patch -gzip ./source/a/grub/doinst.sh -gzip ./source/a/grub/txtHRnXiHYUrM.txt -gzip ./source/a/infozip/unzip.git.archive.fix.diff -gzip ./source/a/infozip/unzip.process.c.diff -gzip ./source/a/infozip/unzip.use.system.libbz2.diff -gzip ./source/a/bin/scripts/xx -gzip ./source/a/bin/scripts/diskcopy -gzip ./source/a/lha/lha_1.14i-10.1.diff -gzip ./source/a/bash/doinst.sh -gzip ./source/a/tcsh/tcsh.nobuiltincolorls.diff -gzip ./source/a/tcsh/doinst.sh -gzip ./source/a/elvis/elvis.ref.c.getline.diff -gzip ./source/a/dbus/dbus-1.10.x-allow_root_globally.diff -gzip ./source/a/dbus/rc.messagebus -gzip ./source/a/dbus/doinst.sh -gzip ./source/a/usb_modeswitch/device_reference.txt -gzip ./source/a/usb_modeswitch/doinst.sh -gzip ./source/a/efibootmgr/efibootmgr-0.5.4-support-4k-sectors.patch -gzip ./source/a/efibootmgr/efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch -gzip ./source/a/efibootmgr/efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch -gzip ./source/a/efibootmgr/efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch -gzip ./source/a/minicom/minicom.users -gzip ./source/a/minicom/lrzsz_0.12.21-5.diff -gzip ./source/a/minicom/config.sub-x86_64.diff -gzip ./source/a/minicom/doinst.sh -gzip ./source/a/sysvinit-scripts/doinst.sh -gzip ./source/a/acpid/rc.acpid -gzip ./source/a/acpid/default -gzip ./source/a/acpid/doinst.sh -gzip ./source/a/acpid/acpi_handler.sh -gzip ./source/a/utempter/doinst.sh -gzip ./source/a/glibc-zoneinfo/doinst.sh -gzip ./source/a/lvm2/doinst.sh -gzip ./source/a/lvm2/create-dm-run-dir.diff -gzip ./source/a/sysvinit-functions/doinst.sh -gzip ./source/a/logrotate/logrotate.conf -gzip ./source/a/logrotate/logrotate.cron -gzip ./source/a/logrotate/doinst.sh -gzip ./source/a/logrotate/logrotate.slackware.diff -gzip ./source/a/etc/nsswitch.conf -gzip ./source/a/etc/termcap-BSD -gzip ./source/a/file/file.short.diff -gzip ./source/a/file/file.crdaregbin.magic -gzip ./source/a/file/file.zisofs.magic -gzip ./source/a/file/file.quiet.diff -gzip ./source/a/file/file.etc.file.diff -gzip ./source/a/file/file.xz.magic -gzip ./source/a/file/recompile_magic.mgc.sh -gzip ./source/a/file/doinst.sh -gzip ./source/a/pciutils/pciutils.dontcompress.diff -gzip ./source/a/tar/tar.nolonezero.diff -gzip ./source/a/tar/tar-1.13.bzip2.diff -gzip ./source/a/less/lesspipe.sh -gzip ./source/a/lrzip/doinst.sh -gzip ./source/a/util-linux/net-tools.config.h -gzip ./source/a/util-linux/bsdstrings-util-linux_overflow.diff -gzip ./source/a/util-linux/setserial-undef_TIOCGHAYESESP.diff -gzip ./source/a/util-linux/util-linux.fdisk-no-solaris.diff -gzip ./source/a/util-linux/setserial-rc.serial.diff -gzip ./source/a/util-linux/ziptool-fix_build.patch -gzip ./source/a/util-linux/doinst.sh -gzip ./source/a/util-linux/adjtimex_1.29-2.2.diff -gzip ./source/a/floppy/fdutils-5.5-20081027.diff -gzip ./source/a/floppy/fdutils.mediaprm.diff -gzip ./source/a/isapnptools/isapnptools_1.26-5.diff -gzip ./source/a/slocate/slocate.bigfile.diff -gzip ./source/a/slocate/slocate.CVE-2007-0277.diff -gzip ./source/a/gpm/inputattach.c -gzip ./source/a/gpm/mouseconfig -gzip ./source/a/gpm/setup.mouse -gzip ./source/a/gpm/gpm-1.20.1-select-1.patch -gzip ./source/a/gpm/gpm-1.20.1-lib-silent.patch -gzip ./source/a/gpm/gpm-1.20.5-close-fds.patch -gzip ./source/a/gpm/gpm-1.20.1-weak-wgetch.patch -gzip ./source/a/shadow/shadow.CVE-2005-4890.relax.diff -gzip ./source/a/shadow/useradd -gzip ./source/a/shadow/login.defs -gzip ./source/a/shadow/doinst.sh -gzip ./source/a/libcgroup/libcgroup.conf.diff -gzip ./source/a/libcgroup/libcgroup.init.diff -gzip ./source/a/libcgroup/doinst.sh -gzip ./source/a/upower/patches/linux-Clamp-percentage-for-overfull-batteries.patch -gzip ./source/a/upower/patches/rules-support-Logitech-Unifying-in-Linux-3.19.patch -gzip ./source/a/upower/patches/Update-UPower-HID-rules-supported-devices-list.patch -gzip ./source/a/upower/patches/rules-Add-support-for-Logitech-G700s-G700-Gaming-Mou.patch -gzip ./source/a/upower/patches/linux-Properly-detect-bluetooth-mice-and-keyboards-t.patch -gzip ./source/a/upower/patches/linux-Detect-docked-docking-stations-correctly.patch -gzip ./source/a/upower/patches/upower-pm-utils-0.9.23-fix-segfault.patch -gzip ./source/a/upower/patches/Fix-HID-rules-header-as-per-discussions.patch -gzip ./source/a/upower/doinst.sh -gzip ./source/a/bzip2/bzip2.saneso.diff -gzip ./source/a/e2fsprogs/e2fsprogs.no.64bit.by.default.diff -gzip ./source/a/e2fsprogs/doinst.sh -gzip ./source/a/smartmontools/doinst.sh -gzip ./source/a/dcron/defs.h.TMPDIR.diff -gzip ./source/a/dcron/run-parts.8 -gzip ./source/a/dcron/crontab.c.O_EXCL.diff -gzip ./source/a/dcron/dcron.update.during.long.running.jobs.diff -gzip ./source/a/dcron/crontab.root -gzip ./source/a/dcron/defs.h._DEFAULT_SOURCE.diff -gzip ./source/a/dcron/doinst.sh -gzip ./source/a/dcron/run-parts -gzip ./source/a/getty-ps/getty.bugfixes.diff -gzip ./source/a/quota/quota.lwrap.needs.lnsl.diff -gzip ./source/a/sysvinit/sysvinit.paths.diff -gzip ./source/a/sysvinit/doinst.sh -gzip ./source/a/dosfstools/dosfstools.paths.diff -gzip ./source/a/sysklogd/sysklogd.allow.repeated.messages.diff -gzip ./source/a/sysklogd/use_memmove_not_strcpy.diff -gzip ./source/a/sysklogd/doinst.sh -gzip ./source/a/eject/eject.spaces.diff -gzip ./source/a/eject/eject.CDROM_DRIVE_STATUS.diff -gzip ./source/a/genpower/genpower.halt.diff -gzip ./source/a/genpower/genpower.var.diff -gzip ./source/a/lilo/lilo.ignore.usable.memory.above.4G.diff -gzip ./source/a/coreutils/DIR_COLORS -gzip ./source/a/coreutils/coreutils-dircolors.csh -gzip ./source/a/coreutils/no_ls_quoting.patch -gzip ./source/a/coreutils/coreutils.uname.diff -gzip ./source/a/coreutils/doinst.sh -gzip ./source/a/coreutils/coreutils-dircolors.sh -gzip ./source/a/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff -gzip ./source/a/mt-st/mt-st.man.diff -gzip ./source/a/mt-st/mt-st.config.diff -gzip ./source/a/mt-st/mt-st.sdlt.diff -gzip ./source/a/devs/makedev_2.3.1-46.2.diff -gzip ./source/a/devs/makedev_2.3.1.slack.diff -gzip ./source/a/devs/makedev_2.3.1.hd.diff -gzip ./source/a/devs/makedev.hd.diff -gzip ./source/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch -gzip ./source/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch -gzip ./source/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch -gzip ./source/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch -gzip ./source/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch -gzip ./source/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch -gzip ./source/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch -gzip ./source/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch -gzip ./source/a/rpm2tgz/patches/0001-fix-d-handling.patch -gzip ./source/a/mdadm/doinst.sh -gzip ./source/a/findutils/findutils.no.default.options.warnings.diff -gzip ./source/a/findutils/findutils.nolocate.diff -gzip ./source/a/udisks2/doinst.sh -gzip ./source/a/os-prober/os-prober.reiserfs.diff -gzip ./source/a/eudev/60-cdrom_id.rules.diff -gzip ./source/a/eudev/0002-src-udev-udevd.c-add-eudev-startup-message-for-kmsg.patch -gzip ./source/a/eudev/doinst.sh -gzip ./source/a/eudev/0001-Remove-obsolete-udev_root-references.patch -gzip ./source/a/unarj/Makefile -gzip ./source/n/httpd/httpd.runasapache.diff -gzip ./source/n/httpd/doinst.sh -gzip ./source/n/dnsmasq/dnsmasq.leasedir.diff -gzip ./source/n/dnsmasq/rc.dnsmasq -gzip ./source/n/dnsmasq/doinst.sh -gzip ./source/n/htdig/htdig.conf.diff -gzip ./source/n/htdig/htdig-3.2.0b6.diff -gzip ./source/n/htdig/doinst.sh -gzip ./source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch -gzip ./source/n/rpcbind/0002-Fix-memory-corruption-in-PMAP_CALLIT-code.patch -gzip ./source/n/rpcbind/01.rpcbind-manpage-statefile-explanation.patch -gzip ./source/n/rpcbind/rpcbind.lwrap.needs.lnsl.diff -gzip ./source/n/rpcbind/0003-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch -gzip ./source/n/rpcbind/0001-security.c-removed-warning.patch -gzip ./source/n/rpcbind/rc.rpc -gzip ./source/n/rpcbind/doinst.sh -gzip ./source/n/lftp/doinst.sh -gzip ./source/n/irssi/doinst.sh -gzip ./source/n/openssh/openssh-7.2p1-libwrap.diff -gzip ./source/n/openssh/doinst.sh -gzip ./source/n/bluez/bluez-5.30-obexd_without_systemd-1.patch -gzip ./source/n/bluez/doinst.sh -gzip ./source/n/mailx/heirloom-mailx-12.5-fixes-1.patch -gzip ./source/n/mailx/doinst.sh -gzip ./source/n/nfs-utils/nfs-utils.lwrap.needs.lnsl.diff -gzip ./source/n/nfs-utils/doinst.sh -gzip ./source/n/nfs-utils/ignore_unsupported_address_types_in_nfssvc_setfds.diff -gzip ./source/n/ModemManager/WeDoNotHaveSystemD.patch -gzip ./source/n/network-scripts/doinst.sh -gzip ./source/n/netkit-timed/netkit-timed-0.17.diff -gzip ./source/n/ytalk/doinst.sh -gzip ./source/n/stunnel/doinst.sh -gzip ./source/n/netatalk/netatalk.etc2ps.diff -gzip ./source/n/netatalk/doinst.sh -gzip ./source/n/icmpinfo/icmpinfo-1.11.diff -gzip ./source/n/icmpinfo/icmpinfo-1.11-time.diff -gzip ./source/n/netwrite/netwrite-0.17.diff -gzip ./source/n/bsd-finger/bsd-finger-0.17.diff -gzip ./source/n/netkit-routed/routed.18.candidate.final.patch -gzip ./source/n/netkit-routed/netkit-routed-0.17.diff -gzip ./source/n/net-tools/net-tools.config.h -gzip ./source/n/inetd/inetd.loopingdos.diff -gzip ./source/n/inetd/fix-x86_64-daytime-segfault.diff -gzip ./source/n/inetd/inetd-OpenBSD-1.79.diff -gzip ./source/n/openldap-client/doinst.sh -gzip ./source/n/netwatch/netwatch.makefile.diff -gzip ./source/n/netwatch/netwatch.phonemyself.diff -gzip ./source/n/wpa_supplicant/doinst.sh -gzip ./source/n/procmail/procmail_3.22-5.diff -gzip ./source/n/procmail/procmail.lfs.diff -gzip ./source/n/rp-pppoe/doinst.sh -gzip ./source/n/ebtables/doinst.sh -gzip ./source/n/pidentd/pidentd.conf.diff -gzip ./source/n/pidentd/doinst.sh -gzip ./source/n/dhcpcd/COPYRIGHT -gzip ./source/n/dhcpcd/doinst.sh -gzip ./source/n/sendmail/Build -gzip ./source/n/popa3d/popa3d.diff -gzip ./source/n/popa3d/doinst.sh -gzip ./source/n/nc/nc-110-21.diff -gzip ./source/n/nc/nc.diff -gzip ./source/n/dhcp/doinst.sh -gzip ./source/n/dhcp/dhclient-script.PATH.diff -gzip ./source/n/rdist/rdist-6.1.5-06.maxargs.diff -gzip ./source/n/rdist/rdist-6.1.5-04.bison.diff -gzip ./source/n/rdist/rdist-6.1.5-05.varargs.diff -gzip ./source/n/rdist/rdist-6.1.5-10.ssh.diff -gzip ./source/n/rdist/rdist-6.1.5-01.links.diff -gzip ./source/n/rdist/rdist-6.1.5-07.lfs.diff -gzip ./source/n/rdist/rdist-6.1.5-12.stat64.diff -gzip ./source/n/rdist/rdist-6.1.5-00.linux.diff -gzip ./source/n/rdist/rdist-6.1.5-11.mkstemp.diff -gzip ./source/n/rdist/rdist-6.1.5-08.cleanup.diff -gzip ./source/n/rdist/rdist-6.1.5-14.fix-msgsndnotify-loop.diff -gzip ./source/n/rdist/rdist-6.1.5-03.hardlink.diff -gzip ./source/n/rdist/rdist-6.1.5-09.svr4.diff -gzip ./source/n/netdate/netdate.diff -gzip ./source/n/netdate/netdate.diff2 -gzip ./source/n/wget/doinst.sh -gzip ./source/n/dirmngr/dirmngr-pth-fix.patch -gzip ./source/n/gpa/doinst.sh -gzip ./source/n/samba/doinst.sh -gzip ./source/n/samba/smb.conf.diff -gzip ./source/n/samba/samba.install.talloc.tevent.tdb.diff -gzip ./source/n/php/php-fpm.conf.diff -gzip ./source/n/php/php.ini-development.diff -gzip ./source/n/php/doinst.sh -gzip ./source/n/alpine/alpine.manpage.diff -gzip ./source/n/alpine/pinepgp-0.18.0-makefile-sed-fix.diff -gzip ./source/n/alpine/pinepgp.pinegpgp.in.diff -gzip ./source/n/mobile-broadband-provider-info/mobile-broadband-provider-info.pc.diff -gzip ./source/n/nn/nn.diff -gzip ./source/n/nn/nntpserver -gzip ./source/n/nn/nn.destdir.diff -gzip ./source/n/nn/m-x86_64.h -gzip ./source/n/nn/nn.badnntphost.diff -gzip ./source/n/nn/doinst.sh -gzip ./source/n/nn/NNTP -gzip ./source/n/net-snmp/snmpd.conf -gzip ./source/n/net-snmp/net-snmp.net-snmp-create-v3-user.etc.snmpd.conf.diff -gzip ./source/n/net-snmp/doinst.sh -gzip ./source/n/trn/config.sh -gzip ./source/n/trn/config.x86_64.sh -gzip ./source/n/libtirpc/doinst.sh -gzip ./source/n/iproute2/doinst.sh -gzip ./source/n/ulogd/doinst.sh -gzip ./source/n/biff+comsat/biff+comsat.offset.diff -gzip ./source/n/biff+comsat/biff+comsat-0.17.diff -gzip ./source/n/biff+comsat/biff+comsat.badutmp.diff -gzip ./source/n/telnet/netkit-telnet-0.17.diff -gzip ./source/n/telnet/telnet-OpenBSD-014_telnet.diff -gzip ./source/n/telnet/netkit-telnet-0.17-ayt.patch -gzip ./source/n/telnet/telnet-OpenBSD-20020321.diff -gzip ./source/n/bootp/bootptab -gzip ./source/n/bootp/bootp_2.4.3-15.diff -gzip ./source/n/bridge-utils/bridge-utils-1.5-linux_3.8.x.patch -gzip ./source/n/netkit-rwho/rwhod_getloadavg.diff -gzip ./source/n/netkit-rwho/netkit-rwho-0.17.diff -gzip ./source/n/mutt/doinst.sh -gzip ./source/n/bind/bind.so_bsdcompat.diff -gzip ./source/n/bind/doinst.sh -gzip ./source/n/openssl/doinst.sh-openssl -gzip ./source/n/openssl/doinst.sh-openssl-solibs -gzip ./source/n/openssl/certwatch -gzip ./source/n/metamail/metamail.uue.getline.diff -gzip ./source/n/wireless-tools/wireless_tools.nowhine.diff -gzip ./source/n/wireless-tools/doinst.sh -gzip ./source/n/wireless-tools/wireless_tools.static.diff -gzip ./source/n/yptools/rc.yp -gzip ./source/n/yptools/nsswitch.conf-nis -gzip ./source/n/yptools/yp-tools-2.14-glibc217-crypt.diff -gzip ./source/n/lynx/lynx.cfg.diff -gzip ./source/n/ppp/pppsetup-1.98.slack.diff -gzip ./source/n/ppp/realms -gzip ./source/n/ppp/ppp.CVE-2015-3310.diff -gzip ./source/n/ppp/pppsetup-1.98.pppoff.diff -gzip ./source/n/ppp/options.new -gzip ./source/n/ppp/ppp.slack.diff -gzip ./source/n/ppp/pppsetup-1.98.backupfiles.diff -gzip ./source/n/ppp/doinst.sh -gzip ./source/n/ppp/pppsetup-1.98.moredevs.diff -gzip ./source/n/ppp/radius.msdict -gzip ./source/n/autofs/autofs.sasl.diff -gzip ./source/n/autofs/doinst.sh -gzip ./source/n/obexftp/patches/obexftp-0.24-fix-absurd-install-path.patch -gzip ./source/n/obexftp/patches/obexftp-pkgconfig_requires.patch -gzip ./source/n/obexftp/patches/obexftp-norpath.patch -gzip ./source/n/obexftp/patches/obexftp-0.24-fuse.patch -gzip ./source/n/ca-certificates/patches/fixup_DESTDIR.diff -gzip ./source/n/ca-certificates/patches/fixup_update-ca-certificates.diff -gzip ./source/n/ca-certificates/doinst.sh -gzip ./source/n/cyrus-sasl/cyrus-sasl-2.1.26-size_t.patch -gzip ./source/n/cyrus-sasl/rc.saslauthd -gzip ./source/n/cyrus-sasl/doinst.sh -gzip ./source/n/cyrus-sasl/cyrus-sasl-2.1.26-null-crypt.patch -gzip ./source/n/vsftpd/vsftpd.log -gzip ./source/n/vsftpd/vsftpd.crypt.diff -gzip ./source/n/vsftpd/vsftpd.conf.diff -gzip ./source/n/vsftpd/doinst.sh -gzip ./source/n/vsftpd/vsftpd.builddefs.diff -gzip ./source/n/netkit-rusers/netkit-rusers-0.17.diff -gzip ./source/n/slrn/doinst.sh -gzip ./source/n/uucp/policy.h.diff -gzip ./source/n/proftpd/doinst.sh -gzip ./source/n/netkit-ntalk/netkit-ntalk-0.11.diff -gzip ./source/n/netkit-ntalk/ntalk-0.17-slackware-alt-talkd.patch -gzip ./source/n/netkit-ntalk/netkit-ntalk-0.17.diff -gzip ./source/n/ntp/ntp.nano.diff -gzip ./source/n/ntp/doinst.sh -gzip ./source/installer/dhcpcd/config.h.diff -gzip ./source/installer/dhcpcd/dhcpcd.sh.diff -gzip ./source/installer/busybox.wget.P.diff -gzip ./source/installer/busybox.fix.perms.64bit.platforms.diff -gzip ./source/installer/busybox.glibc217.diff -gzip ./source/installer/busybox.2.6.32.2.diff -gzip ./source/ap/hplip/setup.py.lc_all.c.diff -gzip ./source/ap/hplip/doinst.sh -gzip ./source/ap/hplip/hplip.no.upgrade.diff -gzip ./source/ap/gutenprint/doinst.sh -gzip ./source/ap/screen/52fix_screen_utf8_nfd.patch -gzip ./source/ap/screen/screen.no_libelf.diff -gzip ./source/ap/screen/26source_encoding.patch -gzip ./source/ap/screen/58-show-encoding-hardstatus.patch -gzip ./source/ap/screen/45suppress_remap.patch -gzip ./source/ap/cups-filters/doinst.sh -gzip ./source/ap/sysstat/doinst.sh -gzip ./source/ap/soma/doinst.sh -gzip ./source/ap/cdrdao/cdrdao-1.2.3-stat.patch -gzip ./source/ap/ghostscript-fonts-std/doinst.sh -gzip ./source/ap/slackpkg/files/README -gzip ./source/ap/slackpkg/files/pkglist.awk -gzip ./source/ap/slackpkg/files/mirrors-s390.sample -gzip ./source/ap/slackpkg/files/cutpkg.awk -gzip ./source/ap/slackpkg/files/slackpkg.8 -gzip ./source/ap/slackpkg/files/mirrors-arm.sample -gzip ./source/ap/slackpkg/files/ChangeLog -gzip ./source/ap/slackpkg/files/install-new.awk -gzip ./source/ap/slackpkg/files/post-functions.sh -gzip ./source/ap/slackpkg/files/mirrors-x86.sample -gzip ./source/ap/slackpkg/files/core-functions.sh -gzip ./source/ap/slackpkg/files/slackpkg -gzip ./source/ap/slackpkg/files/slackpkg.conf.new -gzip ./source/ap/slackpkg/files/blacklist.new -gzip ./source/ap/slackpkg/files/slackpkg.conf.5 -gzip ./source/ap/slackpkg/files/GPL -gzip ./source/ap/slackpkg/files/dialog-functions.sh -gzip ./source/ap/slackpkg/files/filelist.awk -gzip ./source/ap/slackpkg/files/mirrors-x86_64.sample -gzip ./source/ap/slackpkg/doinst.sh -gzip ./source/ap/groff/groff.man.mdoc.local -gzip ./source/ap/cdrtools/doinst.sh -gzip ./source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch -gzip ./source/ap/diffutils/diffutils.mkdir_p.diff -gzip ./source/ap/diffutils/doinst.sh -gzip ./source/ap/diffutils/diffutils-sdiff-no-waitpid.patch -gzip ./source/ap/acct/581421-sa-hz-division.patch -gzip ./source/ap/acct/acct.logdir.fhs.diff -gzip ./source/ap/amp/amp-gcc34.diff -gzip ./source/ap/ispell/ispell.diff -gzip ./source/ap/seejpeg/seejpeg-1.10.diff -gzip ./source/ap/libx86/libx86-mmap-offset.patch -gzip ./source/ap/libx86/libx86-add-pkgconfig.patch -gzip ./source/ap/man-pages/doinst.sh -gzip ./source/ap/terminus-font/terminus-font.Makefile.paths.diff -gzip ./source/ap/terminus-font/doinst.sh -gzip ./source/ap/alsa-utils/alsa-utils.alsaconf.diff -gzip ./source/ap/alsa-utils/rc.alsa-oss -gzip ./source/ap/alsa-utils/rc.alsa -gzip ./source/ap/alsa-utils/doinst.sh -gzip ./source/ap/workbone/workbone_2.40-9.diff -gzip ./source/ap/workbone/workbone.1.diff -gzip ./source/ap/cgmanager/doinst.sh -gzip ./source/ap/cgmanager/cgmanager-0.39-remove-pam-requirement.patch -gzip ./source/ap/sudo/doinst.sh -gzip ./source/ap/dvd+rw-tools/dvd+rw-tools.limits.h.diff -gzip ./source/ap/texinfo/dir -gzip ./source/ap/texinfo/doinst.sh -gzip ./source/ap/usbmuxd/doinst.sh -gzip ./source/ap/usbmuxd/39-usbmuxd.rules -gzip ./source/ap/jove/jove.makefile.diff -gzip ./source/ap/sc/sc-7.16-3.diff -gzip ./source/ap/man/man-1.6f.nroff.mandoc.diff -gzip ./source/ap/man/makewhatis.bzcat.bugfix.diff -gzip ./source/ap/man/doinst.sh -gzip ./source/ap/madplay/madplay-0.15.2b-fix-segfault.patch -gzip ./source/ap/ash/patches/ash-freebsd.patch -gzip ./source/ap/ash/patches/ash-setmode.patch -gzip ./source/ap/ash/patches/ash-syntax.patch -gzip ./source/ap/ash/patches/ash-makefile.patch -gzip ./source/ap/ash/patches/ash-kill.patch -gzip ./source/ap/ash/patches/ash-test.patch -gzip ./source/ap/ash/patches/ash-echo.patch -gzip ./source/ap/ash/patches/ash-debian.patch -gzip ./source/ap/ash/patches/ash-getcwd.patch -gzip ./source/ap/ash/patches/ash-getopt.patch -gzip ./source/ap/ash/patches/ash-hetio.patch -gzip ./source/ap/ash/patches/ash-glob.patch -gzip ./source/ap/ash/patches/ash-manpage.patch -gzip ./source/ap/ash/patches/ash-ppid.patch -gzip ./source/ap/ash/patches/ash-times.patch -gzip ./source/ap/ash/patches/ash-sighup.patch -gzip ./source/ap/ash/patches/ash-memout.patch -gzip ./source/ap/ash/patches/ash-misc.patch -gzip ./source/ap/ash/patches/ash-builtin.patch -gzip ./source/ap/ash/patches/ash-redir.patch -gzip ./source/ap/ash/patches/ash-jobs.patch -gzip ./source/ap/mariadb/rc.mysqld -gzip ./source/ap/mariadb/doinst.sh -gzip ./source/ap/dmidecode/patches/0005-Fix-No-SMBIOS-nor-DMI-entry-point-found-on-SMBIOS3.patch -gzip ./source/ap/dmidecode/patches/0002-Avoid-SIGBUS-on-mmap-failure.patch -gzip ./source/ap/dmidecode/patches/0004-dmidecode-Handle-OEM-specific-types-in-group-associa.patch -gzip ./source/ap/dmidecode/patches/0008-dmidecode-Use-read_file-to-read-the-DMI-table-from-s.patch -gzip ./source/ap/dmidecode/patches/0006-dmidecode-Introduce-SYS_FIRMWARE_DIR.patch -gzip ./source/ap/dmidecode/patches/0007-Let-read_file-return-the-actual-data-size.patch -gzip ./source/ap/dmidecode/patches/0009-dmidecode-Check-sysfs-entry-point-length.patch -gzip ./source/ap/dmidecode/patches/0001-Add-no-sysfs-option-description-to-h-output.patch -gzip ./source/ap/dmidecode/patches/0003-Fix-error-paths-in-mem_chunk.patch -gzip ./source/ap/cdparanoia/cdparanoia-III-10.2_cdda_private.patch -gzip ./source/ap/nano/doinst.sh -gzip ./source/ap/pm-utils/patches/fix-wrong-path-in-intel-audio-powersave.patch -gzip ./source/ap/pm-utils/patches/log-line-spacing-fix.patch -gzip ./source/ap/pm-utils/patches/add-in-kernel-suspend-to-both.patch -gzip ./source/ap/pm-utils/patches/use_more_sane_harddrive_defaults.patch -gzip ./source/ap/pm-utils/patches/hook-exit-code-log.patch -gzip ./source/ap/pm-utils/patches/init-logfile-append.patch -gzip ./source/ap/sqlite/COPYRIGHT -gzip ./source/ap/ghostscript/cidfmap -gzip ./source/ap/rpm/doinst.sh -gzip ./source/ap/rpm/Packages -gzip ./source/ap/at/doinst.sh -gzip ./source/ap/ksh93/patches/ksh-20120801-argvfix.patch -gzip ./source/ap/ksh93/patches/ksh-20140301-fikspand.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-tpstl.patch -gzip ./source/ap/ksh93/patches/ksh-20100826-fixregr.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-tabfix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-rmdirfix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-nomulti.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-manfix4.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-mtty.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-cdfix2.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-covsfix.patch -gzip ./source/ap/ksh93/patches/ksh-20070328-builtins.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-memlik.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-kshmfix.patch -gzip ./source/ap/ksh93/patches/ksh-20140801-arraylen.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-xufix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-diskfull.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-cdfork.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-forkbomb.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-cdfix.patch -gzip ./source/ap/ksh93/patches/ksh-20140415-hokaido.patch -gzip ./source/ap/ksh93/patches/ksh-20100621-manfix3.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-noexeccdfix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-fununset.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-memlik3.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-lexfix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-fd2lost.patch -gzip ./source/ap/ksh93/patches/ksh-20080202-manfix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-roundit.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-trapcom.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-heresub.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-nohupfork.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-sufix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-retfix.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-crash.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-alarmifs.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-cdfix3.patch -gzip ./source/ap/ksh93/patches/ksh-20140929-safefd.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-locking.patch -gzip ./source/ap/ksh93/patches/ksh-20100621-fdstatus.patch -gzip ./source/ap/ksh93/patches/ksh-20130628-longer.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-filecomsubst.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-emptyarrayinit.patch -gzip ./source/ap/ksh93/patches/ksh-20130214-fixkill.patch -gzip ./source/ap/ksh93/patches/ksh-20130613-cdfix4.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-assoc-unset-leak.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-macro.patch -gzip ./source/ap/ksh93/patches/ksh-20120801-mlikfiks.patch -gzip ./source/ap/ksh93/patches/ksh-20100202-pathvar.patch -gzip ./source/ap/mc/mc.image.sh.geeqie.diff -gzip ./source/ap/mc/mc-3605-extfs.c-fix-buffer-overflow.patch -gzip ./source/ap/mc/mc-syntax-error.patch -gzip ./source/ap/mc/mc-3611-fish-fix-perl-ls-helper.patch -gzip ./source/ap/zsh/doinst.sh -gzip ./source/ap/cups/doinst.sh -gzip ./source/ap/flac/flac.man.diff -gzip ./source/ap/vim/vim.vimrc.diff -gzip ./source/ap/vim/doinst.sh -gzip ./source/ap/a2ps/a2ps.diff -gzip ./source/ap/a2ps/psutils.destdir.diff -gzip ./source/ap/a2ps/psutils.diff -gzip ./source/ap/a2ps/a2ps.a2ps_cfg.in.diff -gzip ./source/d/autoconf/doinst.sh -gzip ./source/d/distcc/doinst.sh -gzip ./source/d/cvs/cvs.getline64.diff -gzip ./source/d/cvs/cvs.crypt-2.diff -gzip ./source/d/mercurial/doinst.sh -gzip ./source/d/intltool/intltool-0.51.0-perl-5.22.patch -gzip ./source/d/libtool/libtool.no.moved.warning.diff -gzip ./source/d/libtool/doinst.sh -gzip ./source/d/clisp/ffcall-arm.patch -gzip ./source/d/automake/automake-1.15-perl-escape-curly-bracket.patch -gzip ./source/d/automake/doinst.sh -gzip ./source/d/binutils/patches/binutils.no-config-h-check.diff -gzip ./source/d/binutils/patches/binutils-2.26-fix-compile-warnings.patch -gzip ./source/d/binutils/patches/binutils-2.20.51.0.2-libtool-lib64.patch -gzip ./source/d/binutils/patches/binutils-2.24-ldforcele.patch -gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-ppc64-pie.patch -gzip ./source/d/binutils/patches/binutils.export.demangle.h.diff -gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-copy-osabi.patch -gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch -gzip ./source/d/binutils/patches/binutils-2.26-formatting.patch -gzip ./source/d/binutils/patches/binutils-2.26-lto.patch -gzip ./source/d/binutils/patches/binutils-2.26-Bsymbolic_PIE.patch -gzip ./source/d/binutils/patches/binutils-2.25.1-cleansweep.patch -gzip ./source/d/binutils/patches/binutils-2.23.52.0.1-addr2line-dynsymtab.patch -gzip ./source/d/binutils/patches/binutils-2.26-fix-GOT-offset-calculation.patch -gzip ./source/d/binutils/patches/binutils-2.25-set-long-long.patch -gzip ./source/d/binutils/patches/binutils-2.22.52.0.1-relro-on-by-default.patch -gzip ./source/d/binutils/patches/binutils-2.25-version.patch -gzip ./source/d/binutils/patches/binutils-rh1312151.patch -gzip ./source/d/python/python.no-static-library.diff -gzip ./source/d/python/python.readline.set_pre_input_hook.diff -gzip ./source/d/python/python.x86_64.diff -gzip ./source/d/pmake/pmake.strerror.strdup.diff -gzip ./source/d/pmake/pmake.txt -gzip ./source/d/pmake/pmake_1.111-1.diff -gzip ./source/d/pkg-config/doinst.sh -gzip ./source/d/llvm/clang.toolchains.i586.triple.diff -gzip ./source/d/gcc/gcc.66782.diff -gzip ./source/d/gcc/gcc.69140.diff -gzip ./source/d/gcc/fastjar-patches/1004-fastjar-man.patch -gzip ./source/d/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch -gzip ./source/d/gcc/fastjar-patches/1000-fastjar-0.97-segfault.patch -gzip ./source/d/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch -gzip ./source/d/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch -gzip ./source/d/gcc/gcc-no_fixincludes.diff -gzip ./source/d/p2c/p2c_1.21alpha2-2.1.diff -gzip ./source/d/p2c/p2c.examples.diff -gzip ./source/d/p2c/p2c_time.diff -gzip ./source/d/perl/perl.configure.multilib.patch -gzip ./source/xap/rxvt/rxvt.utempter.diff -gzip ./source/xap/xmms/xmms.alsa.default.diff -gzip ./source/xap/xmms/xmms.gtk.doublesize.diff -gzip ./source/xap/xmms/xmms.wmxmms_vis_depth_workaround.diff -gzip ./source/xap/gftp/gftp.desktop -gzip ./source/xap/gv/gv-xft.patch -gzip ./source/xap/MPlayer/MPlayer.demux_lavf.flac.diff -gzip ./source/xap/MPlayer/include-samba-4.0.patch -gzip ./source/xap/imagemagick/policy.xml.diff -gzip ./source/xap/imagemagick/doinst.sh -gzip ./source/xap/fluxbox/xinitrc.fluxbox -gzip ./source/xap/fluxbox/fluxbox.startfluxbox.dbus.diff -gzip ./source/xap/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch -gzip ./source/xap/geeqie/doinst.sh -gzip ./source/xap/gkrellm/gkrellm.theme.defaults.diff -gzip ./source/xap/x3270/doinst.sh -gzip ./source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch -gzip ./source/xap/blackbox/textpropertytostring-unconditional.diff -gzip ./source/xap/blackbox/xinitrc.blackbox -gzip ./source/xap/blackbox/startblackbox -gzip ./source/xap/windowmaker/wmmenugen.c.diff -gzip ./source/xap/windowmaker/wmaker.inst.diff -gzip ./source/xap/windowmaker/WindowMaker.noopensusemenu.diff -gzip ./source/xap/windowmaker/xinitrc.wmaker -gzip ./source/xap/audacious/doinst.sh -gzip ./source/xap/electricsheep/electricsheep.mplayer.diff -gzip ./source/xap/gucharmap/doinst.sh -gzip ./source/xap/pidgin/doinst.sh -gzip ./source/xap/pidgin/fix-gmain_h-compile-error.diff -gzip ./source/xap/xgames/xlander-2009-07-18.diff -gzip ./source/xap/xgames/xcolormap.diff -gzip ./source/xap/xgames/spider.diff -gzip ./source/xap/xgames/xcuckoo.diff -gzip ./source/xap/xgames/maze.diff -gzip ./source/xap/xgames/xlander.fixes.diff -gzip ./source/xap/xscreensaver/xscreensaver.no.expiration.date.diff -gzip ./source/xap/xscreensaver/setuid.c -gzip ./source/xap/xscreensaver/xscreensaver.setuid.diff -gzip ./source/xap/xscreensaver/xscreensaver.electricsheep.diff -gzip ./source/xap/hexchat/doinst.sh -gzip ./source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff -gzip ./source/xap/sane/doinst.sh -gzip ./source/xap/sane/dll.conf.additions -gzip ./source/xap/pan/pan.gcc47.diff -gzip ./source/xap/xsane/xsane-0.999-pdf-no-high-bpp.patch -gzip ./source/xap/xsane/xsane-0.995-xdg-open.patch -gzip ./source/xap/xsane/xsane-0.999-coverity.patch -gzip ./source/xap/xsane/xsane-0.999-man-page.patch -gzip ./source/xap/xsane/xsane-0.999-lcms2.patch -gzip ./source/xap/xsane/xsane-0.999-snprintf-update.patch -gzip ./source/xap/xsane/xsane-0.997-ipv6.patch -gzip ./source/xap/xsane/xsane-0.997-off-root-build.patch -gzip ./source/xap/xsane/xsane-0.998-wmclass.patch -gzip ./source/xap/xsane/xsane-0.999-signal-handling.patch -gzip ./source/xap/xsane/xsane-0.999-no-file-selected.patch -gzip ./source/xap/xsane/xsane-0.996-no-eula.patch -gzip ./source/xap/xsane/xsane-0.999-7-autoconf.patch -gzip ./source/xap/xsane/xsane-0.995-close-fds.patch -gzip ./source/xap/xsane/xsane-0.998-preview-selection.patch -gzip ./source/xap/xsane/xsane-0.998-desktop-file.patch -gzip ./source/xap/xsane/xsane-0.998-libpng.patch -gzip ./source/xap/pavucontrol/replace-gtk-stock-lock-icon.diff -gzip ./source/xap/pavucontrol/doinst.sh -gzip ./source/xap/seamonkey/doinst.sh -gzip ./source/xap/gnuchess/xboard.conf.diff -gzip ./source/xap/gnuchess/eboard.ldl.diff -gzip ./source/xap/gnuchess/eboard.assert.diff -gzip ./source/xap/gnuchess/eboard.png16.diff -gzip ./source/xap/gnuchess/doinst.sh -gzip ./source/xap/blueman/0001-Notification-Also-check-if-notification-daemon-suppo.patch -gzip ./source/xap/blueman/doinst.sh -gzip ./source/xap/blueman/0002-NetConf-Treat-UnicodeDecodeError-as-if-there-was-no-.patch -gzip ./source/xap/xpdf/patches/xpdfrc.diff -gzip ./source/xap/xpdf/doinst.sh -gzip ./source/xap/xpdf/lang/xpdf-hebrew.diff -gzip ./source/xap/xpdf/lang/xpdf-thai.diff -gzip ./source/xap/xpdf/lang/xpdf-korean.diff -gzip ./source/xap/xpdf/lang/xpdf-chinese-traditional.diff -gzip ./source/xap/xpdf/lang/xpdf-greek.diff -gzip ./source/xap/xpdf/lang/xpdf-chinese-simplified.diff -gzip ./source/xap/xpdf/lang/xpdf-turkish.diff -gzip ./source/xap/xpdf/lang/xpdf-arabic.diff -gzip ./source/xap/xpdf/lang/xpdf-japanese.diff -gzip ./source/xap/xpdf/lang/xpdf-cyrillic.diff -gzip ./source/xap/xpdf/lang/xpdf-latin2.diff -gzip ./source/xap/ddd/machine_code_window_fix.diff -gzip ./source/xap/ddd/doinst.sh -gzip ./source/xap/ddd/strclass.C.diff -gzip ./source/xap/seyon/seyon_2.20c-16.diff -gzip ./source/xap/xaos/xaos.6 -gzip ./source/xap/xaos/xaos.x86.registers.diff -gzip ./source/xap/xlockmore/xlockmore.bitmap.diff -gzip ./source/xap/fvwm/startfvwm2 -gzip ./source/xap/fvwm/xinitrc.fvwm2 -gzip ./source/xap/fvwm/doinst.sh -gzip ./source/xap/xv/xv.jasper.diff -gzip ./source/xap/xv/xv.prefix_x86_64.diff -gzip ./source/xap/xv/xv.prefix.diff -gzip ./source/xap/xv/xv-3.10a.patch -gzip ./source/xap/xv/xv-libpng-1.5.patch -gzip ./source/xap/network-manager-applet/doinst.sh -gzip ./source/xap/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff -gzip ./source/xap/mozilla-firefox/firefox.moz_plugin_path.diff -gzip ./source/xap/mozilla-firefox/mimeTypes.rdf -gzip ./source/xap/gparted/doinst.sh -gzip ./source/x/xdg-user-dirs/doinst.sh -gzip ./source/x/x11-skel/doinst.sh +gzip ./source/x/liberation-fonts-ttf/doinst.sh gzip ./source/x/motif/motif-2.3.4-no_demos.patch gzip ./source/x/motif/motif-2.3.4-mwmrc_dir.patch gzip ./source/x/motif/motif-2.3.4-bindings.patch gzip ./source/x/motif/motif.rgbtxt.patch -gzip ./source/x/x11/post-install/xorg-cf-files/x11.tmpl.lib64.kludge.diff -gzip ./source/x/x11/post-install/libX11/XKeysymDB -gzip ./source/x/x11/patch/xf86-video-intel/0001-sna-Let-modestting-glamor-handle-gen9.patch -gzip ./source/x/x11/patch/luit/luit_use_system_extensions.diff -gzip ./source/x/x11/patch/xorg-server/x11.startwithblackscreen.diff +gzip ./source/x/ttf-indic-fonts/doinst.sh gzip ./source/x/x11/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch -gzip ./source/x/x11/patch/xcompmgr/patch-XFixesSetPictureClipRegion-shadow-fix-xcompmgr.c.diff -gzip ./source/x/x11/patch/xcompmgr/xcompmgr-follow-icccm-spec.diff +gzip ./source/x/x11/patch/xorg-server/x11.startwithblackscreen.diff +gzip ./source/x/x11/patch/xf86-video-voodoo/0001-don-t-use-PCITAG-in-struct-anymore.patch +gzip ./source/x/x11/patch/xf86-video-intel/0001-sna-Let-modestting-glamor-handle-gen9.patch +gzip ./source/x/x11/patch/xf86-video-xgixp/0005-Update-for-new-damage-API.patch gzip ./source/x/x11/patch/xf86-video-xgixp/0004-Stop-using-deprecated-xf86PciInfo.h.patch gzip ./source/x/x11/patch/xf86-video-xgixp/0002-Remove-symbol-lists-as-they-are-not-used-any-more.patch -gzip ./source/x/x11/patch/xf86-video-xgixp/0001-Remove-mibstore.h.patch gzip ./source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch -gzip ./source/x/x11/patch/xf86-video-xgixp/0005-Update-for-new-damage-API.patch -gzip ./source/x/x11/patch/xdm/xdm-1.1.11-arc4random-include.patch -gzip ./source/x/x11/patch/xdm/xdm.glibc.crypt.diff -gzip ./source/x/x11/patch/xdm/xdm-1.1.11-setproctitle-include.patch -gzip ./source/x/x11/patch/xdm/xdm-consolekit.patch -gzip ./source/x/x11/patch/xinit/xinit.remove.systemd.kludge.diff +gzip ./source/x/x11/patch/xf86-video-xgixp/0001-Remove-mibstore.h.patch gzip ./source/x/x11/patch/xf86-video-v4l/xf86-video-v4l-0.2.0-build-fix.patch gzip ./source/x/x11/patch/xf86-video-v4l/xorg-x11-drv-v4l-support_v4l2_only_drivers.patch -gzip ./source/x/x11/patch/xf86-video-voodoo/0001-don-t-use-PCITAG-in-struct-anymore.patch -gzip ./source/x/ttf-indic-fonts/doinst.sh -gzip ./source/x/scim-hangul/scim-hangul-0.4.0+gtk.patch +gzip ./source/x/x11/patch/xinit/xinit.remove.systemd.kludge.diff +gzip ./source/x/x11/patch/xdm/xdm-1.1.11-arc4random-include.patch +gzip ./source/x/x11/patch/xdm/xdm.glibc.crypt.diff +gzip ./source/x/x11/patch/xdm/xdm-consolekit.patch +gzip ./source/x/x11/patch/xdm/xdm-1.1.11-setproctitle-include.patch +gzip ./source/x/x11/patch/xcompmgr/xcompmgr-follow-icccm-spec.diff +gzip ./source/x/x11/patch/xcompmgr/patch-XFixesSetPictureClipRegion-shadow-fix-xcompmgr.c.diff +gzip ./source/x/x11/patch/luit/luit_use_system_extensions.diff +gzip ./source/x/x11/post-install/xorg-cf-files/x11.tmpl.lib64.kludge.diff +gzip ./source/x/x11/post-install/libX11/XKeysymDB +gzip ./source/x/scim/scim-disable-subdir-objects.patch +gzip ./source/x/x11-skel/doinst.sh +gzip ./source/x/xdg-user-dirs/doinst.sh +gzip ./source/x/mesa/mesa.no.mako.diff +gzip ./source/x/dejavu-fonts-ttf/doinst.sh gzip ./source/x/scim-hangul/scim-hangul-0.3.2+gcc-4.3.patch gzip ./source/x/scim-hangul/scim-hangul-0.3.2+gcc-4.7.patch +gzip ./source/x/scim-hangul/scim-hangul-0.4.0+gtk.patch +gzip ./source/x/fontconfig/fontconfig.font.dir.list.diff +gzip ./source/x/fontconfig/doinst.sh +gzip ./source/x/fontconfig/fontconfig.dejavu.diff gzip ./source/x/xdg-utils/doinst.sh -gzip ./source/x/liberation-fonts-ttf/doinst.sh -gzip ./source/x/wqy-zenhei-font-ttf/fixup-fontconfig-file.diff -gzip ./source/x/mesa/mesa.no.mako.diff gzip ./source/x/xterm/doinst.sh gzip ./source/x/scim-anthy/scim-anthy.gcc43.diff -gzip ./source/x/scim/scim-disable-subdir-objects.patch -gzip ./source/x/dejavu-fonts-ttf/doinst.sh -gzip ./source/x/fontconfig/fontconfig.dejavu.diff -gzip ./source/x/fontconfig/doinst.sh -gzip ./source/x/fontconfig/fontconfig.font.dir.list.diff -gzip ./source/t/transfig/transfig.diff -gzip ./source/t/tetex/tetex.dvipdfm.mkstemp.diff -gzip ./source/t/tetex/tetex.png14.diff -gzip ./source/t/tetex/tetex.cpascal.getline.posix.2008.diff -gzip ./source/t/tetex/tetex.fontcachedirinhome.diff -gzip ./source/t/tetex/tetex.etex.diff -gzip ./source/t/tetex/tetex.tmp.cleanup.diff -gzip ./source/t/tetex/tetex.amstex.fmtutil.diff -gzip ./source/t/tetex/tetex.browsers.diff -gzip ./source/t/tetex/tetex.scripts.mktemp.diff -gzip ./source/t/tetex/tetex.var.fonts.diff -gzip ./source/t/tetex/tetex.CVE-2005-3193.diff -gzip ./source/t/tetex/tetex.afm2tfm.getline.diff -gzip ./source/t/tetex/tetex.leet.diff -gzip ./source/t/tetex/tetex.png16.diff -gzip ./source/t/xfig/xfig.no.pdf.ref.diff -gzip ./source/t/xfig/xfig-3.2.5c.paths.diff -gzip ./source/t/xfig/xfig.fig.ad.diff -gzip ./source/t/xfig/xfig.no.xfig_ref_en.pdf.diff -gzip ./source/t/xfig/xfig-3.2.5c.skip.missing.html.manpage.diff -gzip ./source/y/bsd-games/bsd-games.getline.diff -gzip ./source/y/bsd-games/bsd-games.ospeed.diff -gzip ./source/y/bsd-games/bsd-games.config.params.diff -gzip ./source/y/bsd-games/bsd-games.strfile.8.diff -gzip ./source/y/bsd-games/bsd-games.phantasia_install_fix.diff -gzip ./source/y/bsd-games/bsd-games.fortlen.diff -gzip ./source/y/bsd-games/bsd-games.trek-gcc4.diff -gzip ./source/y/bsd-games/fortune-fixes-sorry-no-additions-accepted-here/20120302.diff -gzip ./source/y/bsd-games/hangman-words -gzip ./source/y/bsd-games/bsd-games.pom.diff -gzip ./source/y/bsd-games/bsd-games.fortunepath.diff -gzip ./source/kde/patch/kdeconnect-kde/kdeconnect-kde.openssh7.diff -gzip ./source/kde/patch/kdevelop-pg-qt/0011-fix-some-warnings.patch -gzip ./source/kde/patch/kscreen/kscreen.broken.test.diff -gzip ./source/kde/patch/strigi-multimedia/strigi-multimedia_port.patch -gzip ./source/kde/patch/kdewebdev/include-tidy.patch -gzip ./source/kde/patch/kdepim/kdepim-install_kleopatra_headers.patch -gzip ./source/kde/patch/ktouch/ktouch.performance.diff -gzip ./source/kde/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff -gzip ./source/kde/patch/kde-workspace/kde-workspace.batteryapplet.diff -gzip ./source/kde/patch/kde-workspace/kde-workspace.panel-layout.diff -gzip ./source/kde/patch/plasma-nm/plasma-nm.nm.diff -gzip ./source/kde/patch/libkscreen/libkscreen.broken.test.diff -gzip ./source/kde/patch/krdc/krdc_freerdp-1.1.0.patch -gzip ./source/kde/patch/kde-runtime/kde-runtime-4.14.3.nm.diff -gzip ./source/kde/patch/kdelibs/coding-style-fixes.patch -gzip ./source/kde/patch/kdelibs/return-application-icons-properly.patch -gzip ./source/kde/patch/kdelibs/kdelibs.upnp_conditional.patch -gzip ./source/kde/patch/kdelibs/return-not-break.-copy-paste-error.patch -gzip ./source/kde/patch/kdelibs/kdelibs.docbook.patch +gzip ./source/x/wqy-zenhei-font-ttf/fixup-fontconfig-file.diff gzip ./source/e/emacs/doinst.sh -gzip ./source/tcl/tix/tix.soname.patch -gzip ./source/tcl/tix/tix.tcl8.5.patch -gzip ./source/tcl/hfsutils/hfsutils.errno.diff -gzip ./source/l/ncurses/ncurses.mkhashsize.diff -gzip ./source/l/shared-mime-info/doinst.sh -gzip ./source/l/gst-plugins-good0/v4l.compile.fixes.diff -gzip ./source/l/gdbm/gdbm.zeroheaders.patch -gzip ./source/l/ebook-tools/epub3_fixed_layout.patch -gzip ./source/l/elfutils/elfutils-portability-0.163.patch -gzip ./source/l/elfutils/elfutils-0.163-unstrip-shf_info_link.patch -gzip ./source/l/db42/patch.4.2.52.2 -gzip ./source/l/db42/patch.4.2.52.1 -gzip ./source/l/db42/patch.4.2.52.4 -gzip ./source/l/db42/patch.4.2.52.3 -gzip ./source/l/hicolor-icon-theme/doinst.sh -gzip ./source/l/at-spi2-core/doinst.sh -gzip ./source/l/notify-python/notify-python-0.1.1-fix-GTK-symbols.patch -gzip ./source/l/notify-python/libnotify07.patch -gzip ./source/l/svgalib/svgalib.nohelper.diff -gzip ./source/l/svgalib/svgalib-1.9.25-kernel-2.6.26.diff -gzip ./source/l/svgalib/svgalib-1.9.25-vga_getmodenumber.patch -gzip ./source/l/svgalib/svgalib-1.9.25-round_gtf_gtfcalc_c.patch -gzip ./source/l/svgalib/svgalib.prefix.diff -gzip ./source/l/cairo/cairo.c088ba1faab9579efdaed7a524124901a17801b0.diff -gzip ./source/l/libvisual/libvisual.glib.h.diff -gzip ./source/l/qt-gstreamer/doinst.sh +gzip ./source/n/ppp/radius.msdict +gzip ./source/n/ppp/doinst.sh +gzip ./source/n/ppp/ppp.CVE-2015-3310.diff +gzip ./source/n/ppp/realms +gzip ./source/n/ppp/options.new +gzip ./source/n/ppp/pppsetup-1.98.moredevs.diff +gzip ./source/n/ppp/pppsetup-1.98.pppoff.diff +gzip ./source/n/ppp/ppp.slack.diff +gzip ./source/n/ppp/pppsetup-1.98.slack.diff +gzip ./source/n/ppp/pppsetup-1.98.backupfiles.diff +gzip ./source/n/ntp/ntp.nano.diff +gzip ./source/n/ntp/doinst.sh +gzip ./source/n/openssh/doinst.sh +gzip ./source/n/openssh/openssh-7.2p1-libwrap.diff +gzip ./source/n/ulogd/doinst.sh +gzip ./source/n/yptools/yp-tools-2.14-glibc217-crypt.diff +gzip ./source/n/yptools/rc.yp +gzip ./source/n/yptools/nsswitch.conf-nis +gzip ./source/n/lynx/lynx.cfg.diff +gzip ./source/n/php/php-fpm.conf.diff +gzip ./source/n/php/doinst.sh +gzip ./source/n/php/php.ini-development.diff +gzip ./source/n/popa3d/doinst.sh +gzip ./source/n/popa3d/popa3d.diff +gzip ./source/n/lftp/doinst.sh +gzip ./source/n/gpa/doinst.sh +gzip ./source/n/nfs-utils/doinst.sh +gzip ./source/n/nfs-utils/ignore_unsupported_address_types_in_nfssvc_setfds.diff +gzip ./source/n/nfs-utils/nfs-utils.lwrap.needs.lnsl.diff +gzip ./source/n/nc/nc-110-21.diff +gzip ./source/n/nc/nc.diff +gzip ./source/n/irssi/doinst.sh +gzip ./source/n/rpcbind/0003-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch +gzip ./source/n/rpcbind/0002-Fix-memory-corruption-in-PMAP_CALLIT-code.patch +gzip ./source/n/rpcbind/doinst.sh +gzip ./source/n/rpcbind/rpcbind.lwrap.needs.lnsl.diff +gzip ./source/n/rpcbind/01.rpcbind-manpage-statefile-explanation.patch +gzip ./source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch +gzip ./source/n/rpcbind/0001-security.c-removed-warning.patch +gzip ./source/n/rpcbind/rc.rpc +gzip ./source/n/bluez/doinst.sh +gzip ./source/n/bluez/bluez-5.30-obexd_without_systemd-1.patch +gzip ./source/n/network-scripts/doinst.sh +gzip ./source/n/vsftpd/vsftpd.log +gzip ./source/n/vsftpd/doinst.sh +gzip ./source/n/vsftpd/vsftpd.builddefs.diff +gzip ./source/n/vsftpd/vsftpd.crypt.diff +gzip ./source/n/vsftpd/vsftpd.conf.diff +gzip ./source/n/uucp/policy.h.diff +gzip ./source/n/ca-certificates/doinst.sh +gzip ./source/n/ca-certificates/patches/fixup_update-ca-certificates.diff +gzip ./source/n/ca-certificates/patches/fixup_DESTDIR.diff +gzip ./source/n/netwrite/netwrite-0.17.diff +gzip ./source/n/dhcp/doinst.sh +gzip ./source/n/dhcp/dhclient-script.PATH.diff +gzip ./source/n/rp-pppoe/doinst.sh +gzip ./source/n/ebtables/doinst.sh +gzip ./source/n/dirmngr/dirmngr-pth-fix.patch +gzip ./source/n/ytalk/doinst.sh +gzip ./source/n/telnet/telnet-OpenBSD-014_telnet.diff +gzip ./source/n/telnet/netkit-telnet-0.17.diff +gzip ./source/n/telnet/telnet-OpenBSD-20020321.diff +gzip ./source/n/telnet/netkit-telnet-0.17-ayt.patch +gzip ./source/n/httpd/httpd.runasapache.diff +gzip ./source/n/httpd/doinst.sh +gzip ./source/n/netwatch/netwatch.phonemyself.diff +gzip ./source/n/netwatch/netwatch.makefile.diff +gzip ./source/n/inetd/inetd.loopingdos.diff +gzip ./source/n/inetd/fix-x86_64-daytime-segfault.diff +gzip ./source/n/inetd/inetd-OpenBSD-1.79.diff +gzip ./source/n/autofs/autofs.sasl.diff +gzip ./source/n/autofs/doinst.sh +gzip ./source/n/netkit-routed/routed.18.candidate.final.patch +gzip ./source/n/netkit-routed/netkit-routed-0.17.diff +gzip ./source/n/stunnel/doinst.sh +gzip ./source/n/netkit-ntalk/netkit-ntalk-0.17.diff +gzip ./source/n/netkit-ntalk/netkit-ntalk-0.11.diff +gzip ./source/n/netkit-ntalk/ntalk-0.17-slackware-alt-talkd.patch +gzip ./source/n/samba/smb.conf.diff +gzip ./source/n/samba/doinst.sh +gzip ./source/n/samba/samba.install.talloc.tevent.tdb.diff +gzip ./source/n/net-snmp/doinst.sh +gzip ./source/n/net-snmp/net-snmp.net-snmp-create-v3-user.etc.snmpd.conf.diff +gzip ./source/n/net-snmp/snmpd.conf +gzip ./source/n/netkit-timed/netkit-timed-0.17.diff +gzip ./source/n/wpa_supplicant/doinst.sh +gzip ./source/n/biff+comsat/biff+comsat.badutmp.diff +gzip ./source/n/biff+comsat/biff+comsat.offset.diff +gzip ./source/n/biff+comsat/biff+comsat-0.17.diff +gzip ./source/n/wget/doinst.sh +gzip ./source/n/obexftp/patches/obexftp-pkgconfig_requires.patch +gzip ./source/n/obexftp/patches/obexftp-0.24-fix-absurd-install-path.patch +gzip ./source/n/obexftp/patches/obexftp-norpath.patch +gzip ./source/n/obexftp/patches/obexftp-0.24-fuse.patch +gzip ./source/n/icmpinfo/icmpinfo-1.11.diff +gzip ./source/n/icmpinfo/icmpinfo-1.11-time.diff +gzip ./source/n/bsd-finger/bsd-finger-0.17.diff +gzip ./source/n/wireless-tools/doinst.sh +gzip ./source/n/wireless-tools/wireless_tools.nowhine.diff +gzip ./source/n/wireless-tools/wireless_tools.static.diff +gzip ./source/n/netdate/netdate.diff2 +gzip ./source/n/netdate/netdate.diff +gzip ./source/n/openssl/certwatch +gzip ./source/n/openssl/doinst.sh-openssl +gzip ./source/n/openssl/doinst.sh-openssl-solibs +gzip ./source/n/dhcpcd/COPYRIGHT +gzip ./source/n/dhcpcd/doinst.sh +gzip ./source/n/netatalk/doinst.sh +gzip ./source/n/netatalk/netatalk.etc2ps.diff +gzip ./source/n/procmail/procmail.lfs.diff +gzip ./source/n/procmail/procmail_3.22-5.diff +gzip ./source/n/dnsmasq/doinst.sh +gzip ./source/n/dnsmasq/rc.dnsmasq +gzip ./source/n/dnsmasq/dnsmasq.leasedir.diff +gzip ./source/n/mailx/doinst.sh +gzip ./source/n/mailx/heirloom-mailx-12.5-fixes-1.patch +gzip ./source/n/metamail/metamail.uue.getline.diff +gzip ./source/n/alpine/pinepgp.pinegpgp.in.diff +gzip ./source/n/alpine/alpine.manpage.diff +gzip ./source/n/alpine/pinepgp-0.18.0-makefile-sed-fix.diff +gzip ./source/n/mobile-broadband-provider-info/mobile-broadband-provider-info.pc.diff +gzip ./source/n/mutt/doinst.sh +gzip ./source/n/slrn/doinst.sh +gzip ./source/n/cyrus-sasl/cyrus-sasl-2.1.26-size_t.patch +gzip ./source/n/cyrus-sasl/doinst.sh +gzip ./source/n/cyrus-sasl/rc.saslauthd +gzip ./source/n/cyrus-sasl/cyrus-sasl-2.1.26-null-crypt.patch +gzip ./source/n/proftpd/doinst.sh +gzip ./source/n/iproute2/doinst.sh +gzip ./source/n/pidentd/doinst.sh +gzip ./source/n/pidentd/pidentd.conf.diff +gzip ./source/n/openldap-client/doinst.sh +gzip ./source/n/sendmail/Build +gzip ./source/n/htdig/htdig-3.2.0b6.diff +gzip ./source/n/htdig/doinst.sh +gzip ./source/n/htdig/htdig.conf.diff +gzip ./source/n/netkit-rwho/rwhod_getloadavg.diff +gzip ./source/n/netkit-rwho/netkit-rwho-0.17.diff +gzip ./source/n/bind/doinst.sh +gzip ./source/n/bind/bind.so_bsdcompat.diff +gzip ./source/n/net-tools/net-tools.config.h +gzip ./source/n/trn/config.sh +gzip ./source/n/trn/config.x86_64.sh +gzip ./source/n/netkit-rusers/netkit-rusers-0.17.diff +gzip ./source/n/nn/doinst.sh +gzip ./source/n/nn/nn.badnntphost.diff +gzip ./source/n/nn/nntpserver +gzip ./source/n/nn/nn.diff +gzip ./source/n/nn/m-x86_64.h +gzip ./source/n/nn/NNTP +gzip ./source/n/nn/nn.destdir.diff +gzip ./source/n/ModemManager/WeDoNotHaveSystemD.patch +gzip ./source/n/libtirpc/doinst.sh +gzip ./source/n/bridge-utils/bridge-utils-1.5-linux_3.8.x.patch +gzip ./source/n/rdist/rdist-6.1.5-07.lfs.diff +gzip ./source/n/rdist/rdist-6.1.5-04.bison.diff +gzip ./source/n/rdist/rdist-6.1.5-12.stat64.diff +gzip ./source/n/rdist/rdist-6.1.5-03.hardlink.diff +gzip ./source/n/rdist/rdist-6.1.5-05.varargs.diff +gzip ./source/n/rdist/rdist-6.1.5-14.fix-msgsndnotify-loop.diff +gzip ./source/n/rdist/rdist-6.1.5-00.linux.diff +gzip ./source/n/rdist/rdist-6.1.5-08.cleanup.diff +gzip ./source/n/rdist/rdist-6.1.5-09.svr4.diff +gzip ./source/n/rdist/rdist-6.1.5-01.links.diff +gzip ./source/n/rdist/rdist-6.1.5-06.maxargs.diff +gzip ./source/n/rdist/rdist-6.1.5-11.mkstemp.diff +gzip ./source/n/rdist/rdist-6.1.5-10.ssh.diff +gzip ./source/n/bootp/bootptab +gzip ./source/n/bootp/bootp_2.4.3-15.diff +gzip ./source/l/netpbm/config.mk +gzip ./source/l/netpbm/netpbm-noppmtompeg.patch +gzip ./source/l/netpbm/netpbm-pnmtops.patch +gzip ./source/l/ilmbase/ilmbase-2.2.0-no_undefined.patch +gzip ./source/l/libiodbc/libiodbc.disable.rpath.diff gzip ./source/l/djvulibre/doinst.sh -gzip ./source/l/glib2/doinst.sh -gzip ./source/l/aalib/aalib-aclocal.patch -gzip ./source/l/sdl/sdl-1.2.14-fix-mouse-clicking.patch -gzip ./source/l/sdl/libsdl-1.2.15-resizing.patch -gzip ./source/l/sdl/SDL_mixer.usrlocal.diff -gzip ./source/l/sdl/SDL_ttf.shaded.text.diff -gzip ./source/l/libmsn/libmsn.gcc47.diff -gzip ./source/l/parted/parted.configure.diff gzip ./source/l/dconf-editor/doinst.sh -gzip ./source/l/adwaita-icon-theme/inherit-hicolor-theme.diff -gzip ./source/l/adwaita-icon-theme/doinst.sh -gzip ./source/l/clucene/clucene.install_contribs_lib.diff -gzip ./source/l/clucene/clucene.pkgconfig.diff -gzip ./source/l/gnome-keyring/doinst.sh -gzip ./source/l/libtiff/libtiff-make-check.patch -gzip ./source/l/libtiff/libtiff-am-version.patch -gzip ./source/l/glibc/glibc-2.10-dns-no-gethostbyname4.diff -gzip ./source/l/glibc/glibc.make-3.82.diff -gzip ./source/l/glibc/glibc.ldd.trace.through.dynamic.linker.diff -gzip ./source/l/glibc/glibc.ru_RU.CP1251.diff -gzip ./source/l/glibc/glibc-c-utf8-locale.patch -gzip ./source/l/glibc/is_IS.diff -gzip ./source/l/glibc/glibc.locale.no-archive.diff -gzip ./source/l/glibc/glibc.revert.to.fix.build.breakages.diff -gzip ./source/l/libvisual-plugins/libvisual-plugins.gstreamer.diff -gzip ./source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff -gzip ./source/l/qt/qtwebkit/qtwebkit.putByIndexBeyondVectorLengthWithArrayStorage.diff -gzip ./source/l/qt/qtwebkit/doinst.sh +gzip ./source/l/gnome-themes-standard/doinst.sh +gzip ./source/l/qca/0011-use-_DEFAULT_SOURCE-instead-of-_BSD_SOURCE.patch +gzip ./source/l/qt/qt.webkit-no_Werror.patch +gzip ./source/l/qt/qt.qclipboard_delay.patch gzip ./source/l/qt/qt.mysql.h.diff gzip ./source/l/qt/qt.fix.broken.gif.crash.diff gzip ./source/l/qt/doinst.sh -gzip ./source/l/qt/qt.webkit-no_Werror.patch -gzip ./source/l/qt/qt.qclipboard_fix_recursive.patch +gzip ./source/l/qt/qtwebkit/doinst.sh +gzip ./source/l/qt/qtwebkit/qtwebkit.putByIndexBeyondVectorLengthWithArrayStorage.diff gzip ./source/l/qt/qt.qsystemtrayicon-plugin-system.diff -gzip ./source/l/qt/qt.qclipboard_delay.patch -gzip ./source/l/gamin/gaminrc +gzip ./source/l/qt/qt.qclipboard_fix_recursive.patch +gzip ./source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff +gzip ./source/l/libffi/libffi.includedir.diff +gzip ./source/l/gcr/doinst.sh +gzip ./source/l/sdl/libsdl-1.2.15-resizing.patch +gzip ./source/l/sdl/sdl-1.2.14-fix-mouse-clicking.patch +gzip ./source/l/sdl/SDL_ttf.shaded.text.diff +gzip ./source/l/sdl/SDL_mixer.usrlocal.diff +gzip ./source/l/notify-python/libnotify07.patch +gzip ./source/l/notify-python/notify-python-0.1.1-fix-GTK-symbols.patch +gzip ./source/l/esound/doinst.sh +gzip ./source/l/PyQt/PyQt.phonon.diff +gzip ./source/l/qt-gstreamer/doinst.sh +gzip ./source/l/libmsn/libmsn.gcc47.diff +gzip ./source/l/db44/patch.4.4.20.1 +gzip ./source/l/db44/patch.4.4.20.2 +gzip ./source/l/libexif/libexif.pc.diff +gzip ./source/l/dconf/doinst.sh +gzip ./source/l/gst-plugins-good0/v4l.compile.fixes.diff +gzip ./source/l/db42/patch.4.2.52.4 +gzip ./source/l/db42/patch.4.2.52.3 +gzip ./source/l/db42/patch.4.2.52.1 +gzip ./source/l/db42/patch.4.2.52.2 +gzip ./source/l/gtk+3/doinst.sh +gzip ./source/l/libgpod/doinst.sh +gzip ./source/l/libnl3/doinst.sh +gzip ./source/l/libxml2/libxml2.do-not-check-crc.diff +gzip ./source/l/libxml2/0001-Fix-attribute-decoding-during-XML-schema-validation.diff +gzip ./source/l/parted/parted.configure.diff +gzip ./source/l/clucene/clucene.install_contribs_lib.diff +gzip ./source/l/clucene/clucene.pkgconfig.diff +gzip ./source/l/ebook-tools/epub3_fixed_layout.patch +gzip ./source/l/akonadi/doinst.sh +gzip ./source/l/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch +gzip ./source/l/pulseaudio/doinst.sh +gzip ./source/l/pulseaudio/0003-no-root-warn.diff +gzip ./source/l/pulseaudio/030_posix-completion.diff +gzip ./source/l/pulseaudio/020_no-parallel-make.diff +gzip ./source/l/pulseaudio/pulseaudio-autostart.patch +gzip ./source/l/pulseaudio/0002-allow-autospawn-for-root-default.diff +gzip ./source/l/freetype/freetype.illadvisederror.diff +gzip ./source/l/freetype/freetype.subpixel.rendering.diff +gzip ./source/l/at-spi2-core/doinst.sh +gzip ./source/l/gc/refer_to_GC_setup_mark_lock_only_in_PARALLEL_MARK_code.patch +gzip ./source/l/gc/noelision.patch +gzip ./source/l/qtscriptgenerator/include-everything.patch +gzip ./source/l/hicolor-icon-theme/doinst.sh +gzip ./source/l/libwmf/libwmf.png14.diff gzip ./source/l/gamin/no_g_const_return.patch -gzip ./source/l/gamin/fix-double-lock-in-inotify-helper-c.patch gzip ./source/l/gamin/doinst.sh -gzip ./source/l/strigi/libstreamanalyzer-0003-Fix-Krazy-issues.patch -gzip ./source/l/strigi/libstreams-0002-Reduce-noise-in-analysis-tools-complain-about-resour.patch +gzip ./source/l/gamin/gaminrc +gzip ./source/l/gamin/fix-double-lock-in-inotify-helper-c.patch +gzip ./source/l/icu4c/icu4c.closenull.patch +gzip ./source/l/gvfs/doinst.sh +gzip ./source/l/adwaita-icon-theme/doinst.sh +gzip ./source/l/adwaita-icon-theme/inherit-hicolor-theme.diff +gzip ./source/l/vte/vte.escape.cpu.usage.diff +gzip ./source/l/vte/fix_meta_alt_keybinding.patch +gzip ./source/l/gdbm/gdbm.zeroheaders.patch +gzip ./source/l/gnome-keyring/doinst.sh +gzip ./source/l/jasper/patches/jasper-1.900.1-CVE-2008-3522.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-NULL_RETURNS.patch +gzip ./source/l/jasper/patches/jasper-CVE-2014-8157.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-BAD_SIZEOF.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-FORWARD_NULL.patch +gzip ./source/l/jasper/patches/jasper-CVE-2014-9029.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-RESOURCE_LEAK.patch +gzip ./source/l/jasper/patches/jasper-CVE-2014-8137.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-CHECKED_RETURN.patch +gzip ./source/l/jasper/patches/jasper-CVE-2014-8158.patch +gzip ./source/l/jasper/patches/patch-libjasper-stepsizes-overflow.diff +gzip ./source/l/jasper/patches/jpc_dec.c.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-UNREACHABLE.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-UNUSED_VALUE.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-CVE-2011-4516-CVE-2011-4517-CERT-VU-887409.patch +gzip ./source/l/jasper/patches/jasper-CVE-2014-8138.patch +gzip ./source/l/jasper/patches/jasper-1.900.1-CVE-2008-3520.patch +gzip ./source/l/json-c/unset-vars-build-fix.diff +gzip ./source/l/fribidi/fribidi.glib.h.diff +gzip ./source/l/libvisual-plugins/libvisual-plugins.gstreamer.diff +gzip ./source/l/glib2/doinst.sh +gzip ./source/l/virtuoso-ose/doinst.sh +gzip ./source/l/t1lib/t1lib_5.1.2-3.5.diff +gzip ./source/l/alsa-lib/alsa-lib.fdba9e1bad8f769a6137e565471f0227f23a3132.diff +gzip ./source/l/alsa-lib/doinst.sh +gzip ./source/l/libvisual/libvisual.glib.h.diff +gzip ./source/l/ConsoleKit2/doinst.sh +gzip ./source/l/ConsoleKit2/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch +gzip ./source/l/ConsoleKit2/patches/0001-Revert-Minor-code-refactoring.patch +gzip ./source/l/ConsoleKit2/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch +gzip ./source/l/ConsoleKit2/patches/0003-Filter-out-the-kdm-user.patch +gzip ./source/l/fuse/doinst.sh +gzip ./source/l/GConf/doinst.sh +gzip ./source/l/GConf/patches/0002-dbus-Don-t-spew-to-console-when-unable-to-connect-to.patch +gzip ./source/l/GConf/patches/0003-gsettings-data-convert-Warn-and-fix-invalid-schema-p.patch +gzip ./source/l/GConf/patches/0001-mconvert-enable-recursive-scheme-lookup-and-fix-a-cr.patch +gzip ./source/l/system-config-printer/doinst.sh +gzip ./source/l/ncurses/ncurses.mkhashsize.diff +gzip ./source/l/gtk+2/fix_build_issues_on_tutorial_and_faq.diff +gzip ./source/l/gtk+2/doinst.sh +gzip ./source/l/gtk+2/gtk.gtk-faq.diff +gzip ./source/l/gtk+2/gtk.gtk-tut.diff +gzip ./source/l/gtk+2/gtk.xid.nowarningflood.diff +gzip ./source/l/gtk+2/gtk+-2.24.x.icon-compat.diff +gzip ./source/l/gtk+2/gtk+-2.24.x.icon-compat.am.diff +gzip ./source/l/shared-mime-info/doinst.sh +gzip ./source/l/glibc/glibc.locale.no-archive.diff +gzip ./source/l/glibc/glibc.revert.to.fix.build.breakages.diff +gzip ./source/l/glibc/glibc-c-utf8-locale.patch +gzip ./source/l/glibc/glibc.make-3.82.diff +gzip ./source/l/glibc/glibc.ru_RU.CP1251.diff +gzip ./source/l/glibc/is_IS.diff +gzip ./source/l/glibc/glibc.ldd.trace.through.dynamic.linker.diff +gzip ./source/l/glibc/glibc-2.10-dns-no-gethostbyname4.diff gzip ./source/l/strigi/libstreams-0003-Build-fix-for-gcc-4.8.patch +gzip ./source/l/strigi/libstreams-0005-use-rpath-only-when-needed.patch +gzip ./source/l/strigi/libstreams-0004-Fix-Krazy-issues.patch gzip ./source/l/strigi/libstreams-0001-Generate-config.h-after-looking-for-dependencies.patch gzip ./source/l/strigi/libstreamanalyzer-0002-order-matters-for-systems-that-have-things-already-i.patch gzip ./source/l/strigi/libstreamanalyzer-0004-ffmpeg-Rename-mutex-to-g_mutex.patch -gzip ./source/l/strigi/libstreams-0004-Fix-Krazy-issues.patch -gzip ./source/l/strigi/libstreams-0005-use-rpath-only-when-needed.patch -gzip ./source/l/strigi/libstreamanalyzer-0001-Fix-for-non-valid-values-in-Exif-field-ISOSpeedRatin.patch +gzip ./source/l/strigi/libstreams-0002-Reduce-noise-in-analysis-tools-complain-about-resour.patch gzip ./source/l/strigi/libstreamanalyzer-0005-use-rpath-only-when-needed.patch -gzip ./source/l/jasper/patches/jasper-CVE-2014-8138.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-NULL_RETURNS.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-CHECKED_RETURN.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-RESOURCE_LEAK.patch -gzip ./source/l/jasper/patches/jasper-CVE-2014-9029.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-CVE-2011-4516-CVE-2011-4517-CERT-VU-887409.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-UNREACHABLE.patch -gzip ./source/l/jasper/patches/jpc_dec.c.patch -gzip ./source/l/jasper/patches/jasper-CVE-2014-8137.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-CVE-2008-3522.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-CVE-2008-3520.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-UNUSED_VALUE.patch -gzip ./source/l/jasper/patches/jasper-CVE-2014-8158.patch -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-FORWARD_NULL.patch -gzip ./source/l/jasper/patches/jasper-CVE-2014-8157.patch -gzip ./source/l/jasper/patches/patch-libjasper-stepsizes-overflow.diff -gzip ./source/l/jasper/patches/jasper-1.900.1-Coverity-BAD_SIZEOF.patch -gzip ./source/l/system-config-printer/doinst.sh -gzip ./source/l/netpbm/netpbm-noppmtompeg.patch -gzip ./source/l/netpbm/config.mk -gzip ./source/l/netpbm/netpbm-pnmtops.patch -gzip ./source/l/libnl3/doinst.sh -gzip ./source/l/PyQt/PyQt.phonon.diff -gzip ./source/l/gc/refer_to_GC_setup_mark_lock_only_in_PARALLEL_MARK_code.patch -gzip ./source/l/gc/noelision.patch -gzip ./source/l/libwmf/libwmf.png14.diff -gzip ./source/l/gvfs/doinst.sh -gzip ./source/l/esound/doinst.sh -gzip ./source/l/t1lib/t1lib_5.1.2-3.5.diff -gzip ./source/l/icu4c/icu4c.closenull.patch -gzip ./source/l/dconf/doinst.sh -gzip ./source/l/polkit/dont-set-wheel-group-as-admin.diff -gzip ./source/l/polkit/doinst.sh -gzip ./source/l/gdk-pixbuf2/gdk-pixbuf.pnglz.diff -gzip ./source/l/gdk-pixbuf2/doinst.sh -gzip ./source/l/qtscriptgenerator/include-everything.patch -gzip ./source/l/libtermcap/termcap.h.diff -gzip ./source/l/libtermcap/termcap-compat_1.2.3.diff -gzip ./source/l/libtermcap/termcap.bufsize.diff -gzip ./source/l/alsa-lib/alsa-lib.fdba9e1bad8f769a6137e565471f0227f23a3132.diff -gzip ./source/l/alsa-lib/doinst.sh -gzip ./source/l/glib-networking/doinst.sh -gzip ./source/l/libxml2/libxml2.do-not-check-crc.diff -gzip ./source/l/libxml2/0001-Fix-attribute-decoding-during-XML-schema-validation.diff -gzip ./source/l/gtk+3/doinst.sh -gzip ./source/l/gtk+2/gtk.gtk-tut.diff -gzip ./source/l/gtk+2/gtk+-2.24.x.icon-compat.diff -gzip ./source/l/gtk+2/fix_build_issues_on_tutorial_and_faq.diff -gzip ./source/l/gtk+2/gtk+-2.24.x.icon-compat.am.diff -gzip ./source/l/gtk+2/doinst.sh -gzip ./source/l/gtk+2/gtk.gtk-faq.diff -gzip ./source/l/gtk+2/gtk.xid.nowarningflood.diff -gzip ./source/l/vte/vte.escape.cpu.usage.diff -gzip ./source/l/vte/fix_meta_alt_keybinding.patch -gzip ./source/l/pilot-link/pilot-link.png14.diff -gzip ./source/l/pilot-link/pilot-link-0.12.5-redefinePerlsymbols.patch -gzip ./source/l/pygobject/pygobject.flags.diff -gzip ./source/l/libgpod/doinst.sh -gzip ./source/l/libiodbc/libiodbc.disable.rpath.diff -gzip ./source/l/qca/0011-use-_DEFAULT_SOURCE-instead-of-_BSD_SOURCE.patch -gzip ./source/l/json-c/unset-vars-build-fix.diff -gzip ./source/l/desktop-file-utils/desktop-file-utils.quiet.warnings.diff -gzip ./source/l/desktop-file-utils/doinst.sh -gzip ./source/l/at-spi2-atk/doinst.sh -gzip ./source/l/db44/patch.4.4.20.2 -gzip ./source/l/db44/patch.4.4.20.1 -gzip ./source/l/libcap/libcap.capability.h.fix.broken.includes.diff -gzip ./source/l/ilmbase/ilmbase-2.2.0-no_undefined.patch -gzip ./source/l/pulseaudio/020_no-parallel-make.diff -gzip ./source/l/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch -gzip ./source/l/pulseaudio/0003-no-root-warn.diff -gzip ./source/l/pulseaudio/0002-allow-autospawn-for-root-default.diff -gzip ./source/l/pulseaudio/030_posix-completion.diff -gzip ./source/l/pulseaudio/doinst.sh -gzip ./source/l/pulseaudio/pulseaudio-autostart.patch -gzip ./source/l/gcr/doinst.sh -gzip ./source/l/freetype/freetype.illadvisederror.diff -gzip ./source/l/freetype/freetype.subpixel.rendering.diff -gzip ./source/l/fribidi/fribidi.glib.h.diff -gzip ./source/l/gnome-themes-standard/doinst.sh -gzip ./source/l/akonadi/doinst.sh -gzip ./source/l/GConf/patches/0001-mconvert-enable-recursive-scheme-lookup-and-fix-a-cr.patch -gzip ./source/l/GConf/patches/0003-gsettings-data-convert-Warn-and-fix-invalid-schema-p.patch -gzip ./source/l/GConf/patches/0002-dbus-Don-t-spew-to-console-when-unable-to-connect-to.patch -gzip ./source/l/GConf/doinst.sh -gzip ./source/l/libffi/libffi.includedir.diff -gzip ./source/l/ConsoleKit2/patches/0003-Filter-out-the-kdm-user.patch -gzip ./source/l/ConsoleKit2/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch -gzip ./source/l/ConsoleKit2/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch -gzip ./source/l/ConsoleKit2/patches/0001-Revert-Minor-code-refactoring.patch -gzip ./source/l/ConsoleKit2/doinst.sh +gzip ./source/l/strigi/libstreamanalyzer-0001-Fix-for-non-valid-values-in-Exif-field-ISOSpeedRatin.patch +gzip ./source/l/strigi/libstreamanalyzer-0003-Fix-Krazy-issues.patch +gzip ./source/l/libtiff/libtiff-am-version.patch +gzip ./source/l/libtiff/libtiff-make-check.patch +gzip ./source/l/svgalib/svgalib-1.9.25-round_gtf_gtfcalc_c.patch +gzip ./source/l/svgalib/svgalib.nohelper.diff +gzip ./source/l/svgalib/svgalib-1.9.25-kernel-2.6.26.diff +gzip ./source/l/svgalib/svgalib-1.9.25-vga_getmodenumber.patch +gzip ./source/l/svgalib/svgalib.prefix.diff +gzip ./source/l/cairo/cairo.c088ba1faab9579efdaed7a524124901a17801b0.diff gzip ./source/l/icon-naming-utils/icon-naming-utils.pkgconfigdir.diff -gzip ./source/l/fuse/doinst.sh +gzip ./source/l/glib-networking/doinst.sh +gzip ./source/l/libcap/libcap.capability.h.fix.broken.includes.diff +gzip ./source/l/gdk-pixbuf2/doinst.sh +gzip ./source/l/gdk-pixbuf2/gdk-pixbuf.pnglz.diff +gzip ./source/l/pilot-link/pilot-link-0.12.5-redefinePerlsymbols.patch +gzip ./source/l/pilot-link/pilot-link.png14.diff +gzip ./source/l/desktop-file-utils/doinst.sh +gzip ./source/l/desktop-file-utils/desktop-file-utils.quiet.warnings.diff +gzip ./source/l/elfutils/elfutils-portability-0.163.patch +gzip ./source/l/elfutils/elfutils-0.163-unstrip-shf_info_link.patch +gzip ./source/l/libtermcap/termcap.bufsize.diff +gzip ./source/l/libtermcap/termcap-compat_1.2.3.diff +gzip ./source/l/libtermcap/termcap.h.diff gzip ./source/l/gsettings-desktop-schemas/doinst.sh -gzip ./source/l/virtuoso-ose/doinst.sh -gzip ./source/l/libexif/libexif.pc.diff +gzip ./source/l/polkit/doinst.sh +gzip ./source/l/polkit/dont-set-wheel-group-as-admin.diff +gzip ./source/l/at-spi2-atk/doinst.sh +gzip ./source/l/aalib/aalib-aclocal.patch +gzip ./source/l/pygobject/pygobject.flags.diff +gzip ./source/y/bsd-games/bsd-games.fortlen.diff +gzip ./source/y/bsd-games/bsd-games.config.params.diff +gzip ./source/y/bsd-games/bsd-games.strfile.8.diff +gzip ./source/y/bsd-games/bsd-games.ospeed.diff +gzip ./source/y/bsd-games/bsd-games.pom.diff +gzip ./source/y/bsd-games/hangman-words +gzip ./source/y/bsd-games/bsd-games.trek-gcc4.diff +gzip ./source/y/bsd-games/bsd-games.getline.diff +gzip ./source/y/bsd-games/bsd-games.fortunepath.diff +gzip ./source/y/bsd-games/bsd-games.phantasia_install_fix.diff +gzip ./source/y/bsd-games/fortune-fixes-sorry-no-additions-accepted-here/20120302.diff +gzip ./source/xap/imagemagick/policy.xml.diff +gzip ./source/xap/imagemagick/doinst.sh +gzip ./source/xap/gparted/doinst.sh +gzip ./source/xap/xscreensaver/xscreensaver.setuid.diff +gzip ./source/xap/xscreensaver/xscreensaver.no.expiration.date.diff +gzip ./source/xap/xscreensaver/xscreensaver.electricsheep.diff +gzip ./source/xap/xscreensaver/setuid.c +gzip ./source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch +gzip ./source/xap/blackbox/xinitrc.blackbox +gzip ./source/xap/blackbox/textpropertytostring-unconditional.diff +gzip ./source/xap/blackbox/startblackbox +gzip ./source/xap/hexchat/doinst.sh +gzip ./source/xap/fluxbox/fluxbox.startfluxbox.dbus.diff +gzip ./source/xap/fluxbox/xinitrc.fluxbox +gzip ./source/xap/fvwm/doinst.sh +gzip ./source/xap/fvwm/xinitrc.fvwm2 +gzip ./source/xap/fvwm/startfvwm2 +gzip ./source/xap/x3270/doinst.sh +gzip ./source/xap/pidgin/doinst.sh +gzip ./source/xap/pidgin/fix-gmain_h-compile-error.diff +gzip ./source/xap/windowmaker/WindowMaker.noopensusemenu.diff +gzip ./source/xap/windowmaker/wmaker.inst.diff +gzip ./source/xap/windowmaker/xinitrc.wmaker +gzip ./source/xap/windowmaker/wmmenugen.c.diff +gzip ./source/xap/network-manager-applet/doinst.sh +gzip ./source/xap/seamonkey/doinst.sh +gzip ./source/xap/xpdf/doinst.sh +gzip ./source/xap/xpdf/patches/xpdfrc.diff +gzip ./source/xap/xpdf/lang/xpdf-korean.diff +gzip ./source/xap/xpdf/lang/xpdf-turkish.diff +gzip ./source/xap/xpdf/lang/xpdf-chinese-traditional.diff +gzip ./source/xap/xpdf/lang/xpdf-cyrillic.diff +gzip ./source/xap/xpdf/lang/xpdf-thai.diff +gzip ./source/xap/xpdf/lang/xpdf-latin2.diff +gzip ./source/xap/xpdf/lang/xpdf-hebrew.diff +gzip ./source/xap/xpdf/lang/xpdf-chinese-simplified.diff +gzip ./source/xap/xpdf/lang/xpdf-greek.diff +gzip ./source/xap/xpdf/lang/xpdf-arabic.diff +gzip ./source/xap/xpdf/lang/xpdf-japanese.diff +gzip ./source/xap/MPlayer/MPlayer.demux_lavf.flac.diff +gzip ./source/xap/MPlayer/include-samba-4.0.patch +gzip ./source/xap/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch +gzip ./source/xap/ddd/doinst.sh +gzip ./source/xap/ddd/strclass.C.diff +gzip ./source/xap/ddd/machine_code_window_fix.diff +gzip ./source/xap/blueman/doinst.sh +gzip ./source/xap/blueman/0002-NetConf-Treat-UnicodeDecodeError-as-if-there-was-no-.patch +gzip ./source/xap/blueman/0001-Notification-Also-check-if-notification-daemon-suppo.patch +gzip ./source/xap/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff +gzip ./source/xap/mozilla-firefox/mimeTypes.rdf +gzip ./source/xap/mozilla-firefox/firefox.moz_plugin_path.diff +gzip ./source/xap/xaos/xaos.x86.registers.diff +gzip ./source/xap/xaos/xaos.6 +gzip ./source/xap/pan/pan.gcc47.diff +gzip ./source/xap/rxvt/rxvt.utempter.diff +gzip ./source/xap/geeqie/doinst.sh +gzip ./source/xap/xv/xv-3.10a.patch +gzip ./source/xap/xv/xv.prefix.diff +gzip ./source/xap/xv/xv-libpng-1.5.patch +gzip ./source/xap/xv/xv.prefix_x86_64.diff +gzip ./source/xap/xv/xv.jasper.diff +gzip ./source/xap/sane/doinst.sh +gzip ./source/xap/sane/dll.conf.additions +gzip ./source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff +gzip ./source/xap/audacious/doinst.sh +gzip ./source/xap/xmms/xmms.gtk.doublesize.diff +gzip ./source/xap/xmms/xmms.wmxmms_vis_depth_workaround.diff +gzip ./source/xap/xmms/xmms.alsa.default.diff +gzip ./source/xap/seyon/seyon_2.20c-16.diff +gzip ./source/xap/electricsheep/electricsheep.mplayer.diff +gzip ./source/xap/gnuchess/doinst.sh +gzip ./source/xap/gnuchess/eboard.png16.diff +gzip ./source/xap/gnuchess/xboard.conf.diff +gzip ./source/xap/gnuchess/eboard.ldl.diff +gzip ./source/xap/gnuchess/eboard.assert.diff +gzip ./source/xap/xsane/xsane-0.995-close-fds.patch +gzip ./source/xap/xsane/xsane-0.998-preview-selection.patch +gzip ./source/xap/xsane/xsane-0.999-lcms2.patch +gzip ./source/xap/xsane/xsane-0.995-xdg-open.patch +gzip ./source/xap/xsane/xsane-0.999-pdf-no-high-bpp.patch +gzip ./source/xap/xsane/xsane-0.997-ipv6.patch +gzip ./source/xap/xsane/xsane-0.999-7-autoconf.patch +gzip ./source/xap/xsane/xsane-0.999-coverity.patch +gzip ./source/xap/xsane/xsane-0.996-no-eula.patch +gzip ./source/xap/xsane/xsane-0.999-no-file-selected.patch +gzip ./source/xap/xsane/xsane-0.999-snprintf-update.patch +gzip ./source/xap/xsane/xsane-0.998-libpng.patch +gzip ./source/xap/xsane/xsane-0.999-man-page.patch +gzip ./source/xap/xsane/xsane-0.998-wmclass.patch +gzip ./source/xap/xsane/xsane-0.999-signal-handling.patch +gzip ./source/xap/xsane/xsane-0.997-off-root-build.patch +gzip ./source/xap/xsane/xsane-0.998-desktop-file.patch +gzip ./source/xap/pavucontrol/doinst.sh +gzip ./source/xap/pavucontrol/replace-gtk-stock-lock-icon.diff +gzip ./source/xap/gkrellm/gkrellm.theme.defaults.diff +gzip ./source/xap/xgames/xcolormap.diff +gzip ./source/xap/xgames/xlander-2009-07-18.diff +gzip ./source/xap/xgames/spider.diff +gzip ./source/xap/xgames/xlander.fixes.diff +gzip ./source/xap/xgames/maze.diff +gzip ./source/xap/xgames/xcuckoo.diff +gzip ./source/xap/xlockmore/xlockmore.bitmap.diff +gzip ./source/xap/gucharmap/doinst.sh +gzip ./source/xap/gftp/gftp.desktop +gzip ./source/xap/gv/gv-xft.patch +gzip ./source/xfce/xfce4-pulseaudio-plugin/xfce4-pulseaudio-plugin-0.2.4-gtk3_theme_clean.patch +gzip ./source/xfce/xfce4-pulseaudio-plugin/xfce4-pulseaudio-plugin-0.2.4-gtk3_theme.patch +gzip ./source/xfce/Thunar/0001-Deactivate-SEND_MOVED-code-paths.patch +gzip ./source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff +gzip ./source/xfce/xfce4-settings/xfce4-settings.xft.defaults.diff +gzip ./source/xfce/xfce4-settings/xfce4-settings.theme.diff +gzip ./source/xfce/xfce4-panel/libxfce4panel.max_blinking_count.8.diff +gzip ./source/xfce/xfce4-notifyd/doinst.sh +gzip ./source/xfce/xfce4-taskmanager/doinst.sh +gzip ./source/xfce/xfce4-power-manager/doinst.sh +gzip ./source/xfce/xfce4-clipman-plugin/doinst.sh +gzip ./source/xfce/xfce4-screenshooter/doinst.sh +gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch +gzip ./source/d/binutils/patches/binutils-2.26-fix-compile-warnings.patch +gzip ./source/d/binutils/patches/binutils-2.25-version.patch +gzip ./source/d/binutils/patches/binutils-2.23.52.0.1-addr2line-dynsymtab.patch +gzip ./source/d/binutils/patches/binutils-rh1312151.patch +gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-ppc64-pie.patch +gzip ./source/d/binutils/patches/binutils-2.24-ldforcele.patch +gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-copy-osabi.patch +gzip ./source/d/binutils/patches/binutils-2.26-formatting.patch +gzip ./source/d/binutils/patches/binutils-2.20.51.0.2-libtool-lib64.patch +gzip ./source/d/binutils/patches/binutils.no-config-h-check.diff +gzip ./source/d/binutils/patches/binutils-2.25.1-cleansweep.patch +gzip ./source/d/binutils/patches/binutils-2.25-set-long-long.patch +gzip ./source/d/binutils/patches/binutils-2.22.52.0.1-relro-on-by-default.patch +gzip ./source/d/binutils/patches/binutils-2.26-fix-GOT-offset-calculation.patch +gzip ./source/d/binutils/patches/binutils.export.demangle.h.diff +gzip ./source/d/binutils/patches/binutils-2.26-lto.patch +gzip ./source/d/binutils/patches/binutils-2.26-Bsymbolic_PIE.patch +gzip ./source/d/python/python.x86_64.diff +gzip ./source/d/python/python.no-static-library.diff +gzip ./source/d/python/python.readline.set_pre_input_hook.diff +gzip ./source/d/p2c/p2c_time.diff +gzip ./source/d/p2c/p2c.examples.diff +gzip ./source/d/p2c/p2c_1.21alpha2-2.1.diff +gzip ./source/d/automake/doinst.sh +gzip ./source/d/automake/automake-1.15-perl-escape-curly-bracket.patch +gzip ./source/d/libtool/doinst.sh +gzip ./source/d/libtool/libtool.no.moved.warning.diff +gzip ./source/d/llvm/clang.toolchains.i586.triple.diff +gzip ./source/d/intltool/intltool-0.51.0-perl-5.22.patch +gzip ./source/d/distcc/doinst.sh +gzip ./source/d/autoconf/doinst.sh +gzip ./source/d/clisp/ffcall-arm.patch +gzip ./source/d/perl/perl.configure.multilib.patch +gzip ./source/d/pmake/pmake.txt +gzip ./source/d/pmake/pmake.strerror.strdup.diff +gzip ./source/d/pmake/pmake_1.111-1.diff +gzip ./source/d/pkg-config/doinst.sh +gzip ./source/d/mercurial/doinst.sh +gzip ./source/d/gcc/gcc-no_fixincludes.diff +gzip ./source/d/gcc/gcc.69140.diff +gzip ./source/d/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch +gzip ./source/d/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch +gzip ./source/d/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch +gzip ./source/d/gcc/fastjar-patches/1004-fastjar-man.patch +gzip ./source/d/gcc/fastjar-patches/1000-fastjar-0.97-segfault.patch +gzip ./source/d/gcc/gcc.66782.diff +gzip ./source/d/cvs/cvs.crypt-2.diff +gzip ./source/d/cvs/cvs.getline64.diff +gzip ./source/kde/patch/plasma-nm/plasma-nm.nm.diff +gzip ./source/kde/patch/kdelibs/return-not-break.-copy-paste-error.patch +gzip ./source/kde/patch/kdelibs/coding-style-fixes.patch +gzip ./source/kde/patch/kdelibs/return-application-icons-properly.patch +gzip ./source/kde/patch/kdelibs/kdelibs.docbook.patch +gzip ./source/kde/patch/kdelibs/kdelibs.upnp_conditional.patch +gzip ./source/kde/patch/krdc/krdc_freerdp-1.1.0.patch +gzip ./source/kde/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff +gzip ./source/kde/patch/kde-workspace/kde-workspace.batteryapplet.diff +gzip ./source/kde/patch/kde-workspace/kde-workspace.panel-layout.diff +gzip ./source/kde/patch/kde-runtime/kde-runtime-4.14.3.nm.diff +gzip ./source/kde/patch/kdevelop-pg-qt/0011-fix-some-warnings.patch +gzip ./source/kde/patch/ktouch/ktouch.performance.diff +gzip ./source/kde/patch/kdewebdev/include-tidy.patch +gzip ./source/kde/patch/kdepim/kdepim-install_kleopatra_headers.patch +gzip ./source/kde/patch/libkscreen/libkscreen.broken.test.diff +gzip ./source/kde/patch/strigi-multimedia/strigi-multimedia_port.patch +gzip ./source/kde/patch/kdeconnect-kde/kdeconnect-kde.openssh7.diff +gzip ./source/kde/patch/kscreen/kscreen.broken.test.diff +gzip ./source/tcl/tix/tix.soname.patch +gzip ./source/tcl/tix/tix.tcl8.5.patch +gzip ./source/tcl/hfsutils/hfsutils.errno.diff +gzip ./source/a/tar/tar.nolonezero.diff +gzip ./source/a/tar/tar-1.13.bzip2.diff +gzip ./source/a/less/lesspipe.sh +gzip ./source/a/file/file.etc.file.diff +gzip ./source/a/file/file.crdaregbin.magic +gzip ./source/a/file/doinst.sh +gzip ./source/a/file/file.short.diff +gzip ./source/a/file/file.quiet.diff +gzip ./source/a/file/file.xz.magic +gzip ./source/a/file/file.zisofs.magic +gzip ./source/a/file/recompile_magic.mgc.sh +gzip ./source/a/slocate/slocate.bigfile.diff +gzip ./source/a/slocate/slocate.CVE-2007-0277.diff +gzip ./source/a/mdadm/doinst.sh +gzip ./source/a/smartmontools/doinst.sh +gzip ./source/a/mcelog/mcelog.init.diff +gzip ./source/a/mcelog/doinst.sh +gzip ./source/a/gpm/mouseconfig +gzip ./source/a/gpm/gpm-1.20.1-select-1.patch +gzip ./source/a/gpm/gpm-1.20.1-weak-wgetch.patch +gzip ./source/a/gpm/gpm-1.20.5-close-fds.patch +gzip ./source/a/gpm/gpm-1.20.1-lib-silent.patch +gzip ./source/a/gpm/inputattach.c +gzip ./source/a/gpm/setup.mouse +gzip ./source/a/udisks/udisks.no.pci-db.diff +gzip ./source/a/findutils/findutils.nolocate.diff +gzip ./source/a/findutils/findutils.no.default.options.warnings.diff +gzip ./source/a/dcron/doinst.sh +gzip ./source/a/dcron/defs.h._DEFAULT_SOURCE.diff +gzip ./source/a/dcron/defs.h.TMPDIR.diff +gzip ./source/a/dcron/run-parts.8 +gzip ./source/a/dcron/dcron.update.during.long.running.jobs.diff +gzip ./source/a/dcron/crontab.c.O_EXCL.diff +gzip ./source/a/dcron/crontab.root +gzip ./source/a/dcron/run-parts +gzip ./source/a/usb_modeswitch/doinst.sh +gzip ./source/a/usb_modeswitch/device_reference.txt +gzip ./source/a/floppy/fdutils-5.5-20081027.diff +gzip ./source/a/floppy/fdutils.mediaprm.diff +gzip ./source/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch +gzip ./source/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch +gzip ./source/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch +gzip ./source/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch +gzip ./source/a/rpm2tgz/patches/0001-fix-d-handling.patch +gzip ./source/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch +gzip ./source/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch +gzip ./source/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch +gzip ./source/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch +gzip ./source/a/coreutils/DIR_COLORS +gzip ./source/a/coreutils/doinst.sh +gzip ./source/a/coreutils/coreutils-dircolors.csh +gzip ./source/a/coreutils/coreutils.uname.diff +gzip ./source/a/coreutils/no_ls_quoting.patch +gzip ./source/a/coreutils/coreutils-dircolors.sh +gzip ./source/a/util-linux/ziptool-fix_build.patch +gzip ./source/a/util-linux/doinst.sh +gzip ./source/a/util-linux/net-tools.config.h +gzip ./source/a/util-linux/setserial-rc.serial.diff +gzip ./source/a/util-linux/adjtimex_1.29-2.2.diff +gzip ./source/a/util-linux/bsdstrings-util-linux_overflow.diff +gzip ./source/a/util-linux/util-linux.fdisk-no-solaris.diff +gzip ./source/a/util-linux/setserial-undef_TIOCGHAYESESP.diff +gzip ./source/a/getty-ps/getty.bugfixes.diff +gzip ./source/a/lilo/lilo.ignore.usable.memory.above.4G.diff +gzip ./source/a/infozip/unzip.process.c.diff +gzip ./source/a/infozip/unzip.use.system.libbz2.diff +gzip ./source/a/infozip/unzip.git.archive.fix.diff +gzip ./source/a/elvis/elvis.ref.c.getline.diff +gzip ./source/a/genpower/genpower.var.diff +gzip ./source/a/genpower/genpower.halt.diff +gzip ./source/a/lha/lha_1.14i-10.1.diff +gzip ./source/a/quota/quota.lwrap.needs.lnsl.diff +gzip ./source/a/acpid/default +gzip ./source/a/acpid/doinst.sh +gzip ./source/a/acpid/acpi_handler.sh +gzip ./source/a/acpid/rc.acpid +gzip ./source/a/efibootmgr/efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch +gzip ./source/a/efibootmgr/efibootmgr-0.5.4-support-4k-sectors.patch +gzip ./source/a/efibootmgr/efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch +gzip ./source/a/efibootmgr/efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch +gzip ./source/a/e2fsprogs/doinst.sh +gzip ./source/a/e2fsprogs/e2fsprogs.no.64bit.by.default.diff +gzip ./source/a/eject/eject.spaces.diff +gzip ./source/a/eject/eject.CDROM_DRIVE_STATUS.diff +gzip ./source/a/minicom/doinst.sh +gzip ./source/a/minicom/minicom.users +gzip ./source/a/minicom/config.sub-x86_64.diff +gzip ./source/a/minicom/lrzsz_0.12.21-5.diff +gzip ./source/a/bash/doinst.sh +gzip ./source/a/upower/doinst.sh +gzip ./source/a/upower/patches/upower-pm-utils-0.9.23-fix-segfault.patch +gzip ./source/a/upower/patches/rules-Add-support-for-Logitech-G700s-G700-Gaming-Mou.patch +gzip ./source/a/upower/patches/rules-support-Logitech-Unifying-in-Linux-3.19.patch +gzip ./source/a/upower/patches/Update-UPower-HID-rules-supported-devices-list.patch +gzip ./source/a/upower/patches/Fix-HID-rules-header-as-per-discussions.patch +gzip ./source/a/upower/patches/linux-Properly-detect-bluetooth-mice-and-keyboards-t.patch +gzip ./source/a/upower/patches/linux-Detect-docked-docking-stations-correctly.patch +gzip ./source/a/upower/patches/linux-Clamp-percentage-for-overfull-batteries.patch +gzip ./source/a/sysvinit/doinst.sh +gzip ./source/a/sysvinit/sysvinit.paths.diff +gzip ./source/a/eudev/0001-Remove-obsolete-udev_root-references.patch +gzip ./source/a/eudev/doinst.sh +gzip ./source/a/eudev/60-cdrom_id.rules.diff +gzip ./source/a/eudev/0002-src-udev-udevd.c-add-eudev-startup-message-for-kmsg.patch +gzip ./source/a/dosfstools/dosfstools.paths.diff +gzip ./source/a/mt-st/mt-st.sdlt.diff +gzip ./source/a/mt-st/mt-st.config.diff +gzip ./source/a/mt-st/mt-st.man.diff +gzip ./source/a/udisks2/doinst.sh +gzip ./source/a/sysklogd/sysklogd.allow.repeated.messages.diff +gzip ./source/a/sysklogd/doinst.sh +gzip ./source/a/sysklogd/use_memmove_not_strcpy.diff +gzip ./source/a/utempter/doinst.sh +gzip ./source/a/unarj/Makefile +gzip ./source/a/lrzip/doinst.sh +gzip ./source/a/pciutils/pciutils.dontcompress.diff +gzip ./source/a/etc/termcap-BSD +gzip ./source/a/etc/nsswitch.conf +gzip ./source/a/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff +gzip ./source/a/bzip2/bzip2.saneso.diff +gzip ./source/a/kbd/sources/kbd-1.15-unicode_start.patch +gzip ./source/a/kbd/sources/speakupmap.map +gzip ./source/a/kbd/sources/kbd-1.15.3-fix-es-translation.patch +gzip ./source/a/kbd/sources/kbd-1.15.2-po.patch +gzip ./source/a/kbd/sources/kbd-1.15-keycodes-man.patch +gzip ./source/a/kbd/sources/kbd-1.15-resizecon-x86_64.patch +gzip ./source/a/kbd/sources/nl.euro.diff +gzip ./source/a/devs/makedev_2.3.1.slack.diff +gzip ./source/a/devs/makedev.hd.diff +gzip ./source/a/devs/makedev_2.3.1-46.2.diff +gzip ./source/a/devs/makedev_2.3.1.hd.diff +gzip ./source/a/logrotate/doinst.sh +gzip ./source/a/logrotate/logrotate.cron +gzip ./source/a/logrotate/logrotate.slackware.diff +gzip ./source/a/logrotate/logrotate.conf +gzip ./source/a/sysvinit-scripts/doinst.sh +gzip ./source/a/dialog/dialog.smaller.min.height.diff +gzip ./source/a/glibc-zoneinfo/doinst.sh +gzip ./source/a/lvm2/doinst.sh +gzip ./source/a/lvm2/create-dm-run-dir.diff +gzip ./source/a/splitvt/splitvt_1.6.5-9.diff +gzip ./source/a/tcsh/doinst.sh +gzip ./source/a/tcsh/tcsh.nobuiltincolorls.diff +gzip ./source/a/shadow/shadow.CVE-2005-4890.relax.diff +gzip ./source/a/shadow/useradd +gzip ./source/a/shadow/doinst.sh +gzip ./source/a/shadow/login.defs +gzip ./source/a/pcmciautils/doinst.sh +gzip ./source/a/bin/scripts/xx +gzip ./source/a/bin/scripts/diskcopy +gzip ./source/a/sysvinit-functions/doinst.sh +gzip ./source/a/isapnptools/isapnptools_1.26-5.diff +gzip ./source/a/grub/initrd_naming.patch +gzip ./source/a/grub/doinst.sh +gzip ./source/a/grub/txtHRnXiHYUrM.txt +gzip ./source/a/grub/grub.dejavusansmono.gfxterm.font.diff +gzip ./source/a/grub/grub.e75fdee420a7ad95e9a465c9699adc2e2e970440.terminate.efi.several.times.diff +gzip ./source/a/grub/0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch +gzip ./source/a/dbus/dbus-1.10.x-allow_root_globally.diff +gzip ./source/a/dbus/doinst.sh +gzip ./source/a/dbus/rc.messagebus +gzip ./source/a/os-prober/os-prober.reiserfs.diff +gzip ./source/a/libcgroup/doinst.sh +gzip ./source/a/libcgroup/libcgroup.conf.diff +gzip ./source/a/libcgroup/libcgroup.init.diff +gzip ./source/installer/busybox.wget.P.diff +gzip ./source/installer/busybox.2.6.32.2.diff +gzip ./source/installer/dhcpcd/config.h.diff +gzip ./source/installer/dhcpcd/dhcpcd.sh.diff +gzip ./source/installer/busybox.glibc217.diff +gzip ./source/installer/busybox.fix.perms.64bit.platforms.diff +gzip ./source/ap/ghostscript-fonts-std/doinst.sh +gzip ./source/ap/jove/jove.makefile.diff +gzip ./source/ap/nano/doinst.sh +gzip ./source/ap/dmidecode/patches/0007-Let-read_file-return-the-actual-data-size.patch +gzip ./source/ap/dmidecode/patches/0003-Fix-error-paths-in-mem_chunk.patch +gzip ./source/ap/dmidecode/patches/0005-Fix-No-SMBIOS-nor-DMI-entry-point-found-on-SMBIOS3.patch +gzip ./source/ap/dmidecode/patches/0006-dmidecode-Introduce-SYS_FIRMWARE_DIR.patch +gzip ./source/ap/dmidecode/patches/0002-Avoid-SIGBUS-on-mmap-failure.patch +gzip ./source/ap/dmidecode/patches/0001-Add-no-sysfs-option-description-to-h-output.patch +gzip ./source/ap/dmidecode/patches/0008-dmidecode-Use-read_file-to-read-the-DMI-table-from-s.patch +gzip ./source/ap/dmidecode/patches/0009-dmidecode-Check-sysfs-entry-point-length.patch +gzip ./source/ap/dmidecode/patches/0004-dmidecode-Handle-OEM-specific-types-in-group-associa.patch +gzip ./source/ap/cgmanager/doinst.sh +gzip ./source/ap/cgmanager/cgmanager-0.39-remove-pam-requirement.patch +gzip ./source/ap/dvd+rw-tools/dvd+rw-tools.limits.h.diff +gzip ./source/ap/sysstat/doinst.sh +gzip ./source/ap/soma/doinst.sh +gzip ./source/ap/slackpkg/doinst.sh +gzip ./source/ap/slackpkg/files/dialog-functions.sh +gzip ./source/ap/slackpkg/files/slackpkg +gzip ./source/ap/slackpkg/files/post-functions.sh +gzip ./source/ap/slackpkg/files/filelist.awk +gzip ./source/ap/slackpkg/files/mirrors-x86_64.sample +gzip ./source/ap/slackpkg/files/GPL +gzip ./source/ap/slackpkg/files/README +gzip ./source/ap/slackpkg/files/mirrors-x86.sample +gzip ./source/ap/slackpkg/files/mirrors-arm.sample +gzip ./source/ap/slackpkg/files/blacklist.new +gzip ./source/ap/slackpkg/files/ChangeLog +gzip ./source/ap/slackpkg/files/slackpkg.8 +gzip ./source/ap/slackpkg/files/install-new.awk +gzip ./source/ap/slackpkg/files/core-functions.sh +gzip ./source/ap/slackpkg/files/cutpkg.awk +gzip ./source/ap/slackpkg/files/mirrors-s390.sample +gzip ./source/ap/slackpkg/files/pkglist.awk +gzip ./source/ap/slackpkg/files/slackpkg.conf.5 +gzip ./source/ap/slackpkg/files/slackpkg.conf.new +gzip ./source/ap/pm-utils/patches/add-in-kernel-suspend-to-both.patch +gzip ./source/ap/pm-utils/patches/fix-wrong-path-in-intel-audio-powersave.patch +gzip ./source/ap/pm-utils/patches/log-line-spacing-fix.patch +gzip ./source/ap/pm-utils/patches/init-logfile-append.patch +gzip ./source/ap/pm-utils/patches/use_more_sane_harddrive_defaults.patch +gzip ./source/ap/pm-utils/patches/hook-exit-code-log.patch +gzip ./source/ap/a2ps/psutils.diff +gzip ./source/ap/a2ps/a2ps.a2ps_cfg.in.diff +gzip ./source/ap/a2ps/a2ps.diff +gzip ./source/ap/a2ps/psutils.destdir.diff +gzip ./source/ap/hplip/doinst.sh +gzip ./source/ap/hplip/hplip.no.upgrade.diff +gzip ./source/ap/hplip/setup.py.lc_all.c.diff +gzip ./source/ap/cups-filters/doinst.sh +gzip ./source/ap/man-pages/doinst.sh +gzip ./source/ap/zsh/doinst.sh +gzip ./source/ap/sqlite/COPYRIGHT +gzip ./source/ap/usbmuxd/doinst.sh +gzip ./source/ap/usbmuxd/39-usbmuxd.rules +gzip ./source/ap/man/man-1.6f.nroff.mandoc.diff +gzip ./source/ap/man/doinst.sh +gzip ./source/ap/man/makewhatis.bzcat.bugfix.diff +gzip ./source/ap/ash/patches/ash-echo.patch +gzip ./source/ap/ash/patches/ash-jobs.patch +gzip ./source/ap/ash/patches/ash-test.patch +gzip ./source/ap/ash/patches/ash-sighup.patch +gzip ./source/ap/ash/patches/ash-getcwd.patch +gzip ./source/ap/ash/patches/ash-misc.patch +gzip ./source/ap/ash/patches/ash-manpage.patch +gzip ./source/ap/ash/patches/ash-freebsd.patch +gzip ./source/ap/ash/patches/ash-memout.patch +gzip ./source/ap/ash/patches/ash-ppid.patch +gzip ./source/ap/ash/patches/ash-syntax.patch +gzip ./source/ap/ash/patches/ash-setmode.patch +gzip ./source/ap/ash/patches/ash-debian.patch +gzip ./source/ap/ash/patches/ash-redir.patch +gzip ./source/ap/ash/patches/ash-times.patch +gzip ./source/ap/ash/patches/ash-builtin.patch +gzip ./source/ap/ash/patches/ash-kill.patch +gzip ./source/ap/ash/patches/ash-glob.patch +gzip ./source/ap/ash/patches/ash-hetio.patch +gzip ./source/ap/ash/patches/ash-getopt.patch +gzip ./source/ap/ash/patches/ash-makefile.patch +gzip ./source/ap/at/doinst.sh +gzip ./source/ap/groff/groff.man.mdoc.local +gzip ./source/ap/mc/mc-3605-extfs.c-fix-buffer-overflow.patch +gzip ./source/ap/mc/mc-3611-fish-fix-perl-ls-helper.patch +gzip ./source/ap/mc/mc-syntax-error.patch +gzip ./source/ap/mc/mc.image.sh.geeqie.diff +gzip ./source/ap/cdrdao/cdrdao-1.2.3-stat.patch +gzip ./source/ap/amp/amp-gcc34.diff +gzip ./source/ap/madplay/madplay-0.15.2b-fix-segfault.patch +gzip ./source/ap/screen/26source_encoding.patch +gzip ./source/ap/screen/screen.no_libelf.diff +gzip ./source/ap/screen/58-show-encoding-hardstatus.patch +gzip ./source/ap/screen/45suppress_remap.patch +gzip ./source/ap/screen/52fix_screen_utf8_nfd.patch +gzip ./source/ap/mariadb/rc.mysqld +gzip ./source/ap/mariadb/doinst.sh +gzip ./source/ap/workbone/workbone.1.diff +gzip ./source/ap/workbone/workbone_2.40-9.diff +gzip ./source/ap/vim/vim.vimrc.diff +gzip ./source/ap/vim/doinst.sh +gzip ./source/ap/sc/sc-7.16-3.diff +gzip ./source/ap/ksh93/patches/ksh-20120801-memlik.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-roundit.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-manfix4.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-forkbomb.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-heresub.patch +gzip ./source/ap/ksh93/patches/ksh-20100621-manfix3.patch +gzip ./source/ap/ksh93/patches/ksh-20080202-manfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-argvfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-mtty.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-macro.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-cdfix2.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-covsfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-nohupfork.patch +gzip ./source/ap/ksh93/patches/ksh-20140929-safefd.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-retfix.patch +gzip ./source/ap/ksh93/patches/ksh-20140415-hokaido.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-rmdirfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-cdfix.patch +gzip ./source/ap/ksh93/patches/ksh-20100202-pathvar.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-crash.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-cdfork.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-nomulti.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-fd2lost.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-tpstl.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-emptyarrayinit.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-noexeccdfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-alarmifs.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-cdfix3.patch +gzip ./source/ap/ksh93/patches/ksh-20140301-fikspand.patch +gzip ./source/ap/ksh93/patches/ksh-20130628-longer.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-sufix.patch +gzip ./source/ap/ksh93/patches/ksh-20070328-builtins.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-lexfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-fununset.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-locking.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-kshmfix.patch +gzip ./source/ap/ksh93/patches/ksh-20130613-cdfix4.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-xufix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-trapcom.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-filecomsubst.patch +gzip ./source/ap/ksh93/patches/ksh-20130214-fixkill.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-diskfull.patch +gzip ./source/ap/ksh93/patches/ksh-20140801-arraylen.patch +gzip ./source/ap/ksh93/patches/ksh-20100826-fixregr.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-memlik3.patch +gzip ./source/ap/ksh93/patches/ksh-20100621-fdstatus.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-tabfix.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-mlikfiks.patch +gzip ./source/ap/ksh93/patches/ksh-20120801-assoc-unset-leak.patch +gzip ./source/ap/flac/flac.man.diff +gzip ./source/ap/libx86/libx86-mmap-offset.patch +gzip ./source/ap/libx86/libx86-add-pkgconfig.patch +gzip ./source/ap/seejpeg/seejpeg-1.10.diff +gzip ./source/ap/ghostscript/cidfmap +gzip ./source/ap/acct/acct.logdir.fhs.diff +gzip ./source/ap/acct/581421-sa-hz-division.patch +gzip ./source/ap/alsa-utils/alsa-utils.alsaconf.diff +gzip ./source/ap/alsa-utils/doinst.sh +gzip ./source/ap/alsa-utils/rc.alsa-oss +gzip ./source/ap/alsa-utils/rc.alsa +gzip ./source/ap/texinfo/doinst.sh +gzip ./source/ap/texinfo/dir +gzip ./source/ap/terminus-font/doinst.sh +gzip ./source/ap/terminus-font/terminus-font.Makefile.paths.diff +gzip ./source/ap/diffutils/diffutils-sdiff-no-waitpid.patch +gzip ./source/ap/diffutils/doinst.sh +gzip ./source/ap/diffutils/diffutils.mkdir_p.diff +gzip ./source/ap/gutenprint/doinst.sh +gzip ./source/ap/sudo/doinst.sh +gzip ./source/ap/rpm/doinst.sh +gzip ./source/ap/rpm/Packages +gzip ./source/ap/cdrtools/doinst.sh +gzip ./source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch +gzip ./source/ap/ispell/ispell.diff +gzip ./source/ap/cdparanoia/cdparanoia-III-10.2_cdda_private.patch +gzip ./source/ap/cups/doinst.sh +gzip ./source/t/xfig/xfig-3.2.5c.paths.diff +gzip ./source/t/xfig/xfig-3.2.5c.skip.missing.html.manpage.diff +gzip ./source/t/xfig/xfig.no.xfig_ref_en.pdf.diff +gzip ./source/t/xfig/xfig.fig.ad.diff +gzip ./source/t/xfig/xfig.no.pdf.ref.diff +gzip ./source/t/tetex/tetex.cpascal.getline.posix.2008.diff +gzip ./source/t/tetex/tetex.fontcachedirinhome.diff +gzip ./source/t/tetex/tetex.browsers.diff +gzip ./source/t/tetex/tetex.amstex.fmtutil.diff +gzip ./source/t/tetex/tetex.afm2tfm.getline.diff +gzip ./source/t/tetex/tetex.dvipdfm.mkstemp.diff +gzip ./source/t/tetex/tetex.etex.diff +gzip ./source/t/tetex/tetex.tmp.cleanup.diff +gzip ./source/t/tetex/tetex.leet.diff +gzip ./source/t/tetex/tetex.png14.diff +gzip ./source/t/tetex/tetex.var.fonts.diff +gzip ./source/t/tetex/tetex.scripts.mktemp.diff +gzip ./source/t/tetex/tetex.CVE-2005-3193.diff +gzip ./source/t/tetex/tetex.png16.diff +gzip ./source/t/transfig/transfig.diff +gzip ./patches/source/ntp/ntp.nano.diff +gzip ./patches/source/ntp/doinst.sh +gzip ./patches/source/openssh/openssh.CVE-2017-15906.patch +gzip ./patches/source/openssh/openssh-7.4p1-libwrap.diff +gzip ./patches/source/openssh/doinst.sh +gzip ./patches/source/xscreensaver/xscreensaver.setuid.diff +gzip ./patches/source/xscreensaver/xscreensaver.no.expiration.date.diff +gzip ./patches/source/xscreensaver/xscreensaver.electricsheep.diff +gzip ./patches/source/xscreensaver/setuid.c +gzip ./patches/source/sdl/libsdl-1.2.15-resizing.patch +gzip ./patches/source/sdl/sdl-1.2.14-fix-mouse-clicking.patch +gzip ./patches/source/sdl/SDL_ttf.shaded.text.diff +gzip ./patches/source/sdl/SDL_mixer.usrlocal.diff +gzip ./patches/source/lynx/doinst.sh +gzip ./patches/source/lynx/lynx.cfg.diff +gzip ./patches/source/php/php-fpm.conf.diff +gzip ./patches/source/php/doinst.sh +gzip ./patches/source/php/php.ini-development.diff +gzip ./patches/source/python/python.x86_64.diff +gzip ./patches/source/python/python.no-static-library.diff +gzip ./patches/source/python/python.readline.set_pre_input_hook.diff +gzip ./patches/source/pidgin/doinst.sh +gzip ./patches/source/pidgin/fix-gmain_h-compile-error.diff +gzip ./patches/source/irssi/doinst.sh +gzip ./patches/source/openvpn/doinst.sh +gzip ./patches/source/rpcbind/0002-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch +gzip ./patches/source/rpcbind/0006-rpcbproc_callit_com-No-need-to-allocate-output-buffe.patch +gzip ./patches/source/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch +gzip ./patches/source/rpcbind/doinst.sh +gzip ./patches/source/rpcbind/rpcbind.lwrap.needs.lnsl.diff +gzip ./patches/source/rpcbind/01.rpcbind-manpage-statefile-explanation.patch +gzip ./patches/source/rpcbind/0003-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch +gzip ./patches/source/rpcbind/0004-rpcbind-fix-building-without-enable-debug.patch +gzip ./patches/source/rpcbind/0001-man-rpcibind.8-Clarify-state-file-usage-and-history.patch +gzip ./patches/source/rpcbind/rc.rpc +gzip ./patches/source/bluez/doinst.sh +gzip ./patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch +gzip ./patches/source/ca-certificates/doinst.sh +gzip ./patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff +gzip ./patches/source/ca-certificates/patches/fixup_DESTDIR.diff +gzip ./patches/source/libtool/doinst.sh +gzip ./patches/source/libtool/libtool.no.moved.warning.diff +gzip ./patches/source/gegl/0001-matting-levin-Fix-the-build-with-recent-suitesparse-.patch +gzip ./patches/source/gegl/gegl-0.2.0-remove-src-over-op.patch +gzip ./patches/source/gegl/gegl-0.2.0-linker-flags.patch +gzip ./patches/source/gegl/gegl-0.2.0-CVE-2012-4433.patch +gzip ./patches/source/gegl/gegl-0.2.0-lua-5.2.patch +gzip ./patches/source/gegl/gegl-0.2.0-libopenraw.patch +gzip ./patches/source/dhcp/doinst.sh +gzip ./patches/source/dhcp/dhclient-script.PATH.diff +gzip ./patches/source/network-manager-applet/doinst.sh +gzip ./patches/source/seamonkey/doinst.sh +gzip ./patches/source/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13721.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12180_12181_12182.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12184_12185_12186_12187.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-13723.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12176.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p1.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10972.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12179_p2.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12177.diff +gzip ./patches/source/xorg-server/patch/xorg-server/x11.startwithblackscreen.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12183.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-10971.diff +gzip ./patches/source/xorg-server/patch/xorg-server/xorg-server.CVE-2017-12178.diff +gzip ./patches/source/libsoup/libsoup.CVE-2017-2885.diff +gzip ./patches/source/libxml2/libxml2.do-not-check-crc.diff +gzip ./patches/source/emacs/doinst.sh +gzip ./patches/source/httpd/httpd.runasapache.diff +gzip ./patches/source/httpd/doinst.sh +gzip ./patches/source/httpd/apache-2.4.CVE-2017-9798.optionsbleed.patch +gzip ./patches/source/freetype/freetype.CVE-2017-8287.diff +gzip ./patches/source/freetype/freetype.illadvisederror.diff +gzip ./patches/source/freetype/freetype.subpixel.rendering.diff +gzip ./patches/source/kdelibs/patch/kdelibs/return-not-break.-copy-paste-error.patch +gzip ./patches/source/kdelibs/patch/kdelibs/coding-style-fixes.patch +gzip ./patches/source/kdelibs/patch/kdelibs/return-application-icons-properly.patch +gzip ./patches/source/kdelibs/patch/kdelibs/kdelibs.docbook.patch +gzip ./patches/source/kdelibs/patch/kdelibs/kdelibs.upnp_conditional.patch +gzip ./patches/source/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch +gzip ./patches/source/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch +gzip ./patches/source/mozilla-firefox/build-with-clang.diff +gzip ./patches/source/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff +gzip ./patches/source/mozilla-firefox/mimeTypes.rdf +gzip ./patches/source/mozilla-firefox/firefox.moz_plugin_path.diff +gzip ./patches/source/mozilla-firefox/autoconf/autoconf-2.13-consolidated_fixes-1.patch +gzip ./patches/source/stunnel/doinst.sh +gzip ./patches/source/libzip/libzip.CVE-2017-14107.diff +gzip ./patches/source/NetworkManager/doinst.sh +gzip ./patches/source/rxvt/rxvt-integer-overflow-fix.patch +gzip ./patches/source/rxvt/rxvt.utempter.diff +gzip ./patches/source/openexr/openexr.CVE-2017-9110-to-9116.patch +gzip ./patches/source/minicom/doinst.sh +gzip ./patches/source/minicom/minicom.users +gzip ./patches/source/minicom/config.sub-x86_64.diff +gzip ./patches/source/minicom/lrzsz_0.12.21-5.diff +gzip ./patches/source/samba/samba-4.4.16-CVE-2018-1057.patch +gzip ./patches/source/samba/smb.conf.diff +gzip ./patches/source/samba/doinst.sh +gzip ./patches/source/samba/samba.install.talloc.tevent.tdb.diff +gzip ./patches/source/samba/samba-4.5.14-security-2017-11-21.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2006-3376.patch +gzip ./patches/source/libwmf/libwmf.png14.diff +gzip ./patches/source/libwmf/libwmf-0.2.8.4-pixbufloaderdir.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4695.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3473.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-useafterfree.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-fallbackfont.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9011.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3477.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-2756.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10167.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-9317.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-reducesymbols.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2017-6362.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-3472.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2004-0941.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2016-10168.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2009-3546.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2007-0455.patch +gzip ./patches/source/libwmf/libwmf-0.2.8.4-CVE-2015-4696.patch +gzip ./patches/source/bash/doinst.sh +gzip ./patches/source/screen/26source_encoding.patch +gzip ./patches/source/screen/screen.no_libelf.diff +gzip ./patches/source/screen/58-show-encoding-hardstatus.patch +gzip ./patches/source/screen/60-revert-screenrc-change.diff +gzip ./patches/source/screen/45suppress_remap.patch +gzip ./patches/source/screen/52fix_screen_utf8_nfd.patch +gzip ./patches/source/wpa_supplicant/doinst.sh +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch +gzip ./patches/source/wpa_supplicant/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch +gzip ./patches/source/wget/doinst.sh +gzip ./patches/source/mariadb/rc.mysqld +gzip ./patches/source/mariadb/doinst.sh +gzip ./patches/source/openjpeg/openjpeg2_remove-thirdparty.patch +gzip ./patches/source/intltool/no-guess-builddir.diff +gzip ./patches/source/intltool/intltool-0.51.0-perl-5.22.patch +gzip ./patches/source/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch +gzip ./patches/source/libXfont/patch/libXfont/libXfont.CVE-2017-16611.diff +gzip ./patches/source/glib2/doinst.sh +gzip ./patches/source/procps-ng/psmisc.3638cc55b4d08851faba46635d737b24d016665b.diff +gzip ./patches/source/openssl/certwatch +gzip ./patches/source/openssl/doinst.sh-openssl +gzip ./patches/source/openssl/doinst.sh-openssl-solibs +gzip ./patches/source/squashfs-tools/0004-unsquashfs-add-support-for-LZMA-magics.patch +gzip ./patches/source/squashfs-tools/0006-uptream-fix-race.patch +gzip ./patches/source/squashfs-tools/0007-fix-2GB-limit-in-mksquashfs.patch +gzip ./patches/source/squashfs-tools/0001-kfreebsd.patch +gzip ./patches/source/squashfs-tools/0003-CVE-2015-4645_and_CVE-2015-4646.patch +gzip ./patches/source/squashfs-tools/0002-fix_phys_mem_calculation.patch +gzip ./patches/source/dnsmasq/doinst.sh +gzip ./patches/source/dnsmasq/rc.dnsmasq +gzip ./patches/source/dnsmasq/dnsmasq.leasedir.diff +gzip ./patches/source/gtk+2/fix_build_issues_on_tutorial_and_faq.diff +gzip ./patches/source/gtk+2/doinst.sh +gzip ./patches/source/gtk+2/gtk.gtk-faq.diff +gzip ./patches/source/gtk+2/gtk.gtk-tut.diff +gzip ./patches/source/gtk+2/gtk.xid.nowarningflood.diff +gzip ./patches/source/gtk+2/gtk+-2.24.x.icon-compat.diff +gzip ./patches/source/gtk+2/gtk+-2.24.x.icon-compat.am.diff +gzip ./patches/source/glibc/glibc.locale.no-archive.diff +gzip ./patches/source/glibc/glibc.revert.to.fix.build.breakages.diff +gzip ./patches/source/glibc/glibc.adc7e06f.diff +gzip ./patches/source/glibc/glibc.CVE-2017-1000366.3c7cd212.diff +gzip ./patches/source/glibc/glibc-c-utf8-locale.patch +gzip ./patches/source/glibc/glibc.6a824767.dont.assert.on.older.intel.cpus.diff +gzip ./patches/source/glibc/glibc.make-3.82.diff +gzip ./patches/source/glibc/glibc.c69d4a0f.diff +gzip ./patches/source/glibc/glibc.ru_RU.CP1251.diff +gzip ./patches/source/glibc/is_IS.diff +gzip ./patches/source/glibc/glibc.ldd.trace.through.dynamic.linker.diff +gzip ./patches/source/glibc/glibc.46703a39.diff +gzip ./patches/source/glibc/glibc.3776f38f.diff +gzip ./patches/source/glibc/glibc-2.10-dns-no-gethostbyname4.diff +gzip ./patches/source/gkrellm/gkrellm.theme.defaults.diff +gzip ./patches/source/glibc-zoneinfo/doinst.sh +gzip ./patches/source/proftpd/doinst.sh +gzip ./patches/source/libtiff/libtiff-am-version.patch +gzip ./patches/source/sudo/doinst.sh +gzip ./patches/source/bind/doinst.sh +gzip ./patches/source/bind/bind.libidn.patch +gzip ./patches/source/bind/bind.so_bsdcompat.diff +gzip ./patches/source/pkg-config/doinst.sh +gzip ./patches/source/mercurial/doinst.sh +gzip ./patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-doc.diff +gzip ./patches/source/gcc/gcc-no_fixincludes.diff +gzip ./patches/source/gcc/0007-x86-Add-mindirect-branch-register-doc.diff +gzip ./patches/source/gcc/0005-x86-Add-mindirect-branch-doc.diff +gzip ./patches/source/gcc/0008-x86-Add-V-register-operand-modifier.diff +gzip ./patches/source/gcc/0006-x86-Add-mfunction-return-doc.diff +gzip ./patches/source/gcc/0007-x86-Add-mindirect-branch-register.diff +gzip ./patches/source/gcc/0006-x86-Add-mfunction-return.diff +gzip ./patches/source/gcc/0008-x86-Add-V-register-operand-modifier-doc.diff +gzip ./patches/source/gcc/0009-x86-Disallow-mindirect-branch-mfunction-return-with-.diff +gzip ./patches/source/gcc/0005-x86-Add-mindirect-branch.diff +gzip ./patches/source/gcc/0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.diff +gzip ./patches/source/gcc/0001-i386-Move-struct-ix86_frame-to-machine_function.diff +gzip ./patches/source/gcc/0003-i386-More-use-reference-of-struct-ix86_frame-to-avoi.diff +gzip ./patches/source/gcc/fastjar-patches/1001-fastjar-0.97-len1.patch +gzip ./patches/source/gcc/fastjar-patches/1002-fastjar-0.97-filename0.patch +gzip ./patches/source/gcc/fastjar-patches/1003-fastjar-CVE-2010-0831.patch +gzip ./patches/source/gcc/fastjar-patches/1004-fastjar-man.patch +gzip ./patches/source/gcc/fastjar-patches/1000-fastjar-0.97-segfault.patch +gzip ./patches/source/gcc/0004-i386-Don-t-use-reference-of-struct-ix86_frame.diff +gzip ./patches/source/libtirpc/doinst.sh +gzip ./patches/source/dbus/dbus-1.10.x-allow_root_globally.diff +gzip ./patches/source/dbus/doinst.sh +gzip ./patches/source/dbus/rc.messagebus +gzip ./patches/source/dbus/dbus.expat222fix.diff +gzip ./patches/source/libcgroup/doinst.sh +gzip ./patches/source/libcgroup/libcgroup.conf.diff +gzip ./patches/source/libcgroup/libcgroup.init.diff gzip ./pasture/source/xfce4-mixer/doinst.sh bzip2 ./source/n/curl/cacert.pem -bzip2 ./source/xap/xv/xv-3.10a-enhancements.20070520-20081216.diff -bzip2 ./source/xap/xv/xv-3.10a-jumbo-fix-enh-patch-20070520.txt -bzip2 ./source/xap/xv/xv-3.10a-jumbo-additions.diff -bzip2 ./source/l/gtk+/gtk+1.2_1.2.10-18.diff bzip2 ./source/l/glib/glib1.2_1.2.10-17.diff +bzip2 ./source/l/gtk+/gtk+1.2_1.2.10-18.diff +bzip2 ./source/xap/xv/xv-3.10a-enhancements.20070520-20081216.diff +bzip2 ./source/xap/xv/xv-3.10a-jumbo-additions.diff +bzip2 ./source/xap/xv/xv-3.10a-jumbo-fix-enh-patch-20070520.txt +bzip2 ./patches/source/curl/cacert.pem diff --git a/slackbook/html/TRADEMARKS.html b/slackbook/html/TRADEMARKS.html deleted file mode 100644 index 0f282ca46..000000000 --- a/slackbook/html/TRADEMARKS.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/slackbook/html/archive-files-bzip2.html b/slackbook/html/archive-files-bzip2.html deleted file mode 100644 index ea3a4e044..000000000 --- a/slackbook/html/archive-files-bzip2.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -bzip2 - - - - - - - - - - - -
      -

      15.2 bzip2

      - -

      bzip2(1) is an alternative compression program installed on -Slackware Linux. It uses a different compression algorithm from gzip, which results in some advantages and some disadvantages. The -main advantage for bzip2 is the compressed file size. bzip2 will almost always compress better than gzip. In some instances, this can result in dramatically smaller -files. This can be a great advantage for people on slower modem connections. Also -remember, when downloading software from a public ftp server, it's generally good -netiquette to download the .bz2 files instead of the .gz files, as this results in less overhead for the generous people -hosting the server.

      - -

      The disadvantage to bzip2 is that it is more CPU intensive -than gzip. This means that bzipping a file will generally take -longer and will use more of the CPU than gzipping the file would. When considering which -compression program to use, you must weigh this speed vs. compressed size and determine -which is more important.

      - -

      The usage of bzip2 is nearly identical to gzip, so not much time will be spent discussing it. Like gunzip, bunzip2 is identical to bzip2 -d. The primary difference in practical usage is that bzip2 uses the .bz2 extension.

      - - - - - -
      -
      -% bzip2 filename
      -% bunzip2 filename.bz2
      -% bzip2 -9 filename
      -
      -
      -
      - - - - - diff --git a/slackbook/html/archive-files-tar.html b/slackbook/html/archive-files-tar.html deleted file mode 100644 index b23db4b12..000000000 --- a/slackbook/html/archive-files-tar.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - -tar - - - - - - - - - - - -
      -

      15.3 tar

      - -

      tar(1) is the GNU tape archiver. It takes several files or -directories and creates one large file. This allows you to compress an entire directory -tree, which is impossible by just using gzip or bzip2. tar has many command line options, -which are explained in its man page. This section will just cover the most common uses of -tar.

      - -

      The most common use for tar is to decompress and unarchive a -package that you've downloaded from a web site or ftp site. Most files will come with a -.tar.gz extension. This is commonly known as a -“tarball”. It means that several files were archived using tar and then compressed using gzip. You -might also see this listed as a .tar.Z file. It means the same -thing, but this is usually encountered on older Unix systems.

      - -

      Alternatively, you might find a .tar.bz2 file somewhere. -Kernel source is distributed as such because it is a smaller download. As you might have -guessed, this is several files archived with tar and then -bzipped.

      - -

      You can get to all the files in this archive by making use of tar and some command line arguments. Unarchiving a tarball makes use -of the -z flag, which means to first run the file through gunzip and decompress it. The most common way to decompress a -tarball is like so:

      - - - - - -
      -
      -% tar -xvzf filename.tar.gz
      -
      -
      - -

      That's quite a few options. So what do they all mean? The -x -means to extract. This is important, as it tells tar exactly -what to do with the input file. In this case, we'll be splitting it back up into all the -files that it came from. -v means to be verbose. This will list -all the files that are being unarchived. It is perfectly acceptable to leave this option -off, if somewhat boring. Alternatively, you could use -vv to be -very verbose and list even more information about each file being unarchived. The -z option tells tar to run filename.tar.gz through gunzip first. And -finally, the -f option tells tar that -the next string on the command line is the file to operate on.

      - -

      There are a few other ways to write this same command. On older systems lacking a -decent copy of GNU tar, you might see it written like so:

      - - - - - -
      -
      -% gunzip filename.tar.gz | tar -xvf -
      -
      -
      - -

      This command line will uncompress the file and send the output to tar. Since gzip will write its output to -standard out if told to do so, this command will write the decompressed file to standard -out. The pipe then sends it to tar for unarchiving. The -“-” means to operate on standard input. It will unarchive the stream of data -that it gets from gzip and write that to the disk.

      - -

      Another way to write the first command line is to leave off the dash before the -options, like so:

      - - - - - -
      -
      -% tar xvzf filename.tar.gz
      -
      -
      - -

      You might also encounter a bzipped archive. The version of tar that comes with Slackware Linux can handle these the same as -gzipped archives. Instead of the -z command line option, you'd -use -j:

      - - - - - -
      -
      -% tar -xvjf filename.tar.bz2
      -
      -
      - -

      It is important to note that tar will place the unarchived -files in the current directory. So, if you had an archive in /tmp that you wanted to decompress into your home directory, there -are a few options. First, the archive could be moved into your home directory and then -run through tar. Second, you could specify the path to the -archive file on the command line. Third, you can use the -C -option to “explode” the tarball in a specified directory.

      - - - - - -
      -
      -% cd $HOME
      -% cp /tmp/filename.tar.gz .
      -% tar -xvzf filename.tar.gz
      -
      -% cd $HOME
      -% tar -xvzf /tmp/filename.tar.gz
      -
      -% cd /
      -% tar -xvzf /tmp/filename.tar.gz -C $HOME
      -
      -
      - -

      All the above statements are equivalent. In each case, the archive is unpacked inside -your home directory and the original uncompressed archive is left in place.

      - -

      So what good is being able to uncompress these archives if you can't make them? Well, -tar handles that too. In most cases it's as easy as removing the -“-x” option and replacing it with the “-c” option.

      - - - - - -
      -
      -% tar -cvzf filename.tar.gz .
      -
      -
      - -

      In this command line, the -c option tells tar to create an archive, while the -z -option runs the resulting archive file through gzip to compress -it. filename.tar.gz is the file that you want to create.

      - -

      Specifying the “-f” option isn't always -necessary, but is typically good practice anyway. Without it, tar writes to standard output, which is usually desired for piping -tar's output to another program, like so.

      - - - - - -
      -
      -% tar -cv filename.tar . | gpg --encrypt
      -
      -
      - -

      That command creates an non-compressed tar archive of the current directory, pipes the -tarball through gpg which encrypts and compresses the tarball, -making it realistically impossible to read by anyone other than the person knowing the -secret key.

      -
      - - - - - diff --git a/slackbook/html/archive-files-zip.html b/slackbook/html/archive-files-zip.html deleted file mode 100644 index cf7ef6cdd..000000000 --- a/slackbook/html/archive-files-zip.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - -zip - - - - - - - - - - - -
      -

      15.4 zip

      - -

      Finally, there are two utilities that can be used on zip files. These are very common -in the Windows world, so Linux has programs to deal with them. The compression program is -called zip(1), and the decompression program is called unzip(1).

      - - - - - -
      -
      -% zip foo *
      -
      -
      - -

      This will create the file foo.zip, which will contain all -the files in the current directory. zip will add the .zip extension automatically, so there's no need to include that in -the file name. You can also recurse through the current directory, zipping up any -directories that are also laying around:

      - - - - - -
      -
      -% zip -r foo *
      -
      -
      - -

      Decompressing files is easy, as well.

      - - - - - -
      -
      -% unzip foo.zip
      -
      -
      - -

      This will extract all the files in the file foo.zip, -including any directories in the archive.

      - -

      The zip utilities have several advanced options for creating -self-extracting archives, leaving out files, controlling compressed file size, printing -out what will happen, and much more. See the man pages for zip -and unzip to find out how to use these options.

      -
      - - - - - diff --git a/slackbook/html/archive-files.html b/slackbook/html/archive-files.html deleted file mode 100644 index c29542a95..000000000 --- a/slackbook/html/archive-files.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - -Archive Files - - - - - - - - - - -
      -

      Chapter 15 Archive Files

      - -
      -
      -
      Table of Contents
      - -
      15.1 gzip
      - -
      15.2 bzip2
      - -
      15.3 tar
      - -
      15.4 zip
      -
      -
      - -
      -

      15.1 gzip

      - -

      gzip(1) is the GNU compression program. It takes a single -file and compresses it. The basic usage is as follows:

      - - - - - -
      -
      -% gzip filename
      -
      -
      - -

      The resulting file will be named filename.gz and will usually be smaller than the input -file. Note that filename.gz will replace filename. This means that filename will -no longer exist, even though a gzipped copy will. Regular text files will compress -nicely, while jpeg images, mp3s, and other such files will not compress too well as they -are already compressed. This basic usage is a balance of final file size and compression -time. The maximum compression can be achieved like so:

      - - - - - -
      -
      -% gzip -9 filename
      -
      -
      - -

      This will take a longer time to compress the file, but the result will be as small as -gzip can make it. Using lower values for the command line option -will cause it to compress faster, but the file will not be as compressed.

      - -

      Decompressing gzipped files can be done using two commands, which are really just the -same program. gzip will decompress any file with a recognized -file extension. A recognized extension can be any of the following: .gz, -gz, .z, --z, .Z, or -Z. The first method is to call gunzip(1) -on a file, like so:

      - - - - - -
      -
      -% gunzip filename.gz
      -
      -
      - -

      This will leave a decompressed version of infile in the current directory, and the .gz extension will be stripped from the filename. gunzip is really part of gzip and is -identical to gzip -d. As such, gzip is -often pronounced gunzip, as that name just sounds cooler. -:^)

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-dns.html b/slackbook/html/basic-network-commands-dns.html deleted file mode 100644 index f8881aad2..000000000 --- a/slackbook/html/basic-network-commands-dns.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - -DNS Tools - - - - - - - - - - - -
      -

      13.3 DNS Tools

      - -

      Domain Name Service (DNS for short) is that magical protocol that allows your computer -to turn meaningless domain names like www.slackware.com into meaningful IP address like -64.57.102.34. Computers can't route packets to www.slackware.com, -but they can route packets to that domain name's IP address. This gives us a convenient -way to remember machines. Without DNS we'd have to keep a mental database of just what IP -address belongs to what computer, and that's assuming the IP address doesn't change. -Clearly using names for computers is better, but how do we map names to IP addresses?

      - -
      -

      13.3.1 host

      - -

      host(1) can do this for us. host is -used to map names to IP addresses. It is a very quick and simple utility without a lot of -functions.

      - - - - - -
      -
      -% host www.slackware.com
      -www.slackware.com is an alias for slackware.com.
      -slackware.com has address 64.57.102.34
      -
      -
      - -

      But let's say for some reason we want to map an IP address to a domain name; what -then?

      -
      - -
      -

      13.3.2 nslookup

      - -

      nslookup is a tried and true program that has weathered the -ages. nslookup has been deprecated and may be removed from -future releases. There is not even a man page for this program.

      - - - - - -
      -
      -% nslookup 64.57.102.34
      -Note:  nslookup is deprecated and may be removed from future releases.
      -Consider using the `dig' or `host' programs instead.  Run nslookup with
      -the `-sil[ent]' option to prevent this message from appearing.
      -Server:         192.168.1.254
      -Address:        192.168.1.254#53
      -
      -Non-authoritative answer:
      -www.slackware.com       canonical name = slackware.com.
      -Name:   slackware.com
      -Address: 64.57.102.34
      -
      -
      -
      - -
      -

      13.3.3 dig

      - -

      The meanest dog in the pound, the domain information groper, dig(1) for short, is the go-to program for finding DNS information. -dig can grab just about anything from a DNS server including -reverse lookups, A, CNAME, MX, SP, and TXT records. dig has many -command line options and if you're not familiar with it you should read through it's -extensive man page.

      - - - - - -
      -
      -% dig @192.168.1.254 www.slackware.com mx
      -
      -; <<>> DiG 9.2.2 <<>> @192.168.1.254 www.slackware.com mx
      -;; global options:  printcmd
      -;; Got answer:
      -;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26362
      -;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
      -
      -;; QUESTION SECTION:
      -;www.slackware.com.             IN      MX
      -
      -;; ANSWER SECTION:
      -www.slackware.com.      76634   IN      CNAME   slackware.com.
      -slackware.com.          86400   IN      MX      1 mail.slackware.com.
      -
      -;; AUTHORITY SECTION:
      -slackware.com.          86400   IN      NS      ns1.cwo.com.
      -slackware.com.          86400   IN      NS      ns2.cwo.com.
      -
      -;; ADDITIONAL SECTION:
      -ns1.cwo.com.            163033  IN      A       64.57.100.2
      -ns2.cwo.com.            163033  IN      A       64.57.100.3
      -
      -;; Query time: 149 msec
      -;; SERVER: 192.168.1.254#53(192.168.1.254)
      -;; WHEN: Sat Nov  6 16:59:31 2004
      -;; MSG SIZE  rcvd: 159
      -
      -
      - -

      This should give you an idea how dig works. -“@192.168.1.254” specifies the dns server to use. -“www.slackware.com” is the domain name I am performing a lookup on, and -“mx” is the type of lookup I am performing. The above query tells me that -e-mail to www.slackware.com will instead be sent to mail.slackware.com for delivery.

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-email.html b/slackbook/html/basic-network-commands-email.html deleted file mode 100644 index 487ea4bc4..000000000 --- a/slackbook/html/basic-network-commands-email.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - -email - - - - - - - - - - - -
      -

      13.7 email

      - -

      Electronic mail is one of the most popular things one can do on the Internet. In 1998, -it was reported that more electronic mail was sent than regular mail. It is indeed common -and useful.

      - -

      Under Slackware, we provide a standard mail server, and several mail clients. All of -the clients discussed below are text-based. A lot of Windows users may be against this, -but you will find that a text based client is very convenient, especially when checking -mail remotely. Fear not, there are many graphical e-mail clients such as KDE's Kmail. If -you wish to use one of those check its help menu.

      - -
      -

      13.7.1 pine

      - -

      pine(1) is not elm. Or so the saying -goes. The University of Washington created their program for Internet news and email out -of a need for an easy mail reader for their students. pine is -one of the most popular email clients in use today and is available for nearly every -flavor of Unix and even Windows.

      - -
      -

      Figure 13-2. The Pine main menu

      - -

      -
      - -

      You will see a menu of commands and a row of command keys at the bottom. pine is indeed a complex program, so we will not discuss every -feature about it here.

      - -

      To see what's in your inbox, type i. Your messages are -listed with their date, author, and subject. Highlight the message you want and press -enter to view it. Pressing r -will start a reply to the message. Once you have written the response, type Ctrl+X to send it. You can press i to get back to the message listing.

      - -

      If you want to delete a message, press d. It will mark -the highlighted message for deletion. pine deletes the mail when -you exit the program. pine also lets you store your mail in -folders. You can get a listing of folders by pressing l. At -the message listing, press s to save it to another folder. -It will ask for the folder name to write the message to.

      - -

      pine offers many, many features; you should definitely have a -look at the man page for more information. It will contain the latest information about -the program.

      -
      - -
      -

      13.7.2 elm

      - -

      elm(1) is another popular text-based email client. Though not -quite as user friendly as pine, it's definitely been around a -lot longer.

      - -
      -

      Figure 13-3. Elm main screen

      - -

      -
      - -

      By default, you are placed in your inbox. The messages are listed with the message -number, date, sender, and subject. Use the arrow keys to highlight the message you want. -Press Enter to read the message.

      - -

      To compose a new message, type m at the main screen. The -d key will flag a message for deletion. And the r key will reply to the current message you are reading. All of -these keys are displayed at the bottom of the screen with a prompt.

      - -

      The man page discusses elm in more detail, so you will -probably want to consult that before using elm.

      -
      - -
      -

      13.7.3 mutt

      - -

      “All mail clients suck. This one just sucks less.” mutt's original interface was based on elm -with added features found in other popular mailclients, resulting in a hybrid mutt.

      - -

      Some of mutt's features include:

      - -
        -
      • -

        color support

        -
      • - -
      • -

        message threading

        -
      • - -
      • -

        MIME and PGP/MIME support

        -
      • - -
      • -

        pop3 and imap support

        -
      • - -
      • -

        support for multiple mailbox formats (mbox, MMDF, MH, maildir)

        -
      • - -
      • -

        highly customizable

        -
      • -
      - -
      -

      Figure 13-4. Mutt main screen

      - -

      -
      - -

      if you're looking for a mail client that will let you be in total control over -everything, then you will like mutt. all the default settings -can be customized, keybindings can be changed. if you like to add a macro, you can.

      - -

      you probably want to take a look at the muttrc manpage, -which will tell you how to configure everything. or take a look at the included example -muttrc file.

      -
      - -
      -

      13.7.4 nail

      - -

      nail(1) is a command line driven mail client. It is very -primitive and offers pretty much nothing in the way of user interfaces. However, mailx is -handy for times when you need to quickly mail something, scripting a bulk mailer, testing -your MTA installation or something similar. Note that Slackware creates symbolic links to -nail at /usr/bin/mail and /usr/bin/mailx. Any of these three commands executes the same -program. In fact, you will most likely see nail referred to as -mail.

      - -

      The basic command line is:

      - - - - - -
      -
      -% mailx <subject> <to-addr>
      -
      -
      - -

      mailx reads the message body from standard input. So you can -cat a file into this command to mail it, or you can just type text and hit Ctrl+D when finished with the message.

      - -

      Here is an example of mailing a program source file to another person.

      - - - - - -
      -
      -% cat randomfunc.c | mail -s "Here's that function" asdf@example.net
      -
      -
      - -

      The man page explains more of what nail can do, so you will -probably want to have a look at that before using it.

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-finger.html b/slackbook/html/basic-network-commands-finger.html deleted file mode 100644 index 08eca57c6..000000000 --- a/slackbook/html/basic-network-commands-finger.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -finger - - - - - - - - - - - -
      -

      13.4 finger

      - -

      finger(1) will retrieve information about the specified user. -You give finger a username or an email address and it will try to contact the necessary -server and retrieve the username, office, telephone number, and other pieces of -information. Here is an example:

      - - - - - -
      -
      -% finger johnc@idsoftware.com
      -
      -
      - -

      finger can return the username, mail status, phone numbers, -and files referred to as “dot plan” and “dot project”. Of course, -the information returned varies with each finger server. The one -included with Slackware returns the following information by default:

      - -
        -
      • -

        Username

        -
      • - -
      • -

        Room number

        -
      • - -
      • -

        Home phone number

        -
      • - -
      • -

        Work phone number

        -
      • - -
      • -

        Login status

        -
      • - -
      • -

        Email status

        -
      • - -
      • -

        Contents of the .plan file in the user's home directory

        -
      • - -
      • -

        Contents of the .project file in the user's home -directory

        -
      • -
      - -

      The first four items can be set with the chfn command. It -stores those values in the /etc/passwd file. To change the -information in your .plan or .project -file, just edit them with your favorite text editor. They must reside in your home -directory and must be called .plan and .project.

      - -

      Many users finger their own account from a remote machine to -quickly see if they have new email. Or, you can see a user's plan or current project.

      - -

      Like many commands, finger has options. Check the man page -for more information on what special options you can use.

      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-ftp.html b/slackbook/html/basic-network-commands-ftp.html deleted file mode 100644 index a5b48f073..000000000 --- a/slackbook/html/basic-network-commands-ftp.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - -FTP Clients - - - - - - - - - - - -
      -

      13.9 FTP Clients

      - -

      FTP stands for the File Transfer Protocol. It allows you to send and receive files -between two computers. There is the FTP server and the FTP client. We discuss the client -in this section.

      - -

      For the curious, the “client” is you. The “server” is the -computer that answers your FTP request and lets you login. You will download files from -and upload files to the server. The client cannot accept FTP connections, it can only -connect to servers.

      - -
      -

      13.9.1 ftp

      - -

      To connect to an FTP server, simply run the ftp(1) command -and specify the host:

      - - - - - -
      -
      -% ftp <hostname> [port]
      -
      -
      - -

      If the host is running an FTP server, it will ask for a username and password. You can -log in as yourself or as “anonymous”. Anonymous FTP sites are very popular -for software archives. For example, to get Slackware Linux via FTP, you must use -anonymous FTP.

      - -

      Once connected, you will be at the ftp> prompt. There -are special commands for FTP, but they are similar to other standard commands. The -following shows some of the basic commands and what they do:

      - -
      -

      Table 13-1. ftp commands

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CommandPurpose
      lsList files
      cd <dirname>Change directory
      binSet binary transfer mode
      asciiSet ASCII transfer mode
      get <filename>Download a file
      put <filename>Upload a file
      hashToggle hash mark stats indicator
      tickToggle byte counter indicator
      promToggle interactive mode for downloads
      mget <mask>Download a file or group of files; wildcards are allowed
      mput <mask>Upload a file or group of files; wildcards are allowed
      quitLog off the FTP server
      -
      - -

      You can also use some of the following commands which are quite self-explanatory: chmod, delete, rename, rmdir. For a complete list of all -commands and their meaning, just type help or ? and you'll see a complete listing on screen.

      - -

      FTP is a fairly simple program to use, but lacks the user interface that many of us -are used to nowadays. The man page discusses some of the command line options for ftp(1).

      - - - - - -
      -
      -ftp> ls *.TXT
      -200 PORT command successful.
      -150 Opening ASCII mode data connection for /bin/ls.
      --rw-r--r--   1 root     100         18606 Apr  6  2002 BOOTING.TXT
      --rw-r--r--   1 root     100         10518 Jun 13  2002 COPYRIGHT.TXT
      --rw-r--r--   1 root     100           602 Apr  6  2002 CRYPTO_NOTICE.TXT
      --rw-r--r--   1 root     100         32431 Sep 29 02:56 FAQ.TXT
      --rw-r--r--   1 root     100        499784 Mar  3 19:29 FILELIST.TXT
      --rw-r--r--   1 root     100        241099 Mar  3 19:12 PACKAGES.TXT
      --rw-r--r--   1 root     100         12339 Jun 19  2002 README81.TXT
      --rw-r--r--   1 root     100         14826 Jun 17  2002 SPEAKUP_DOCS.TXT
      --rw-r--r--   1 root     100         15434 Jun 17  2002 SPEAK_INSTALL.TXT
      --rw-r--r--   1 root     100          2876 Jun 17  2002 UPGRADE.TXT
      -226 Transfer complete.
      -ftp> tick
      -Tick counter printing on (10240 bytes/tick increment).
      -ftp> get README81.TXT
      -local: README81.TXT remote: README81.TXT
      -200 PORT command successful.
      -150 Opening BINARY mode data connection for README81.TXT (12339 bytes).
      -Bytes transferred: 12339
      -226 Transfer complete.
      -12339 bytes received in 0.208 secs (58 Kbytes/sec)
      -
      -
      -
      - -
      -

      13.9.2 ncftp

      - -

      ncftp(1) (pronounced "Nik-F-T-P") is an alternative to the -traditional ftp client that comes with Slackware. It is still a text-based program, but -offers many advantages over ftp, including:

      - -
        -
      • -

        Tab completion

        -
      • - -
      • -

        Bookmarks file

        -
      • - -
      • -

        More liberal wildcard uses

        -
      • - -
      • -

        Command history

        -
      • -
      - -

      By default, ncftp will try to log in anonymously to the -server you specify. You can force ncftp to present a login -prompt with the “-u” option. Once logged in, you -can use the same commands as in ftp, only you'll notice a nicer -interface, one that works more like bash.

      - - - - - -
      -
      -ncftp /pub/linux/slackware > cd slackware-current/
      -Please read the file README81.TXT
      -  it was last modified on Wed Jun 19 16:24:21 2002 - 258 days ago
      -CWD command successful.
      -ncftp ...ware/slackware-current > ls
      -BOOTING.TXT               FAQ.TXT                   bootdisks/
      -CHECKSUMS                 FILELIST.TXT              extra/
      -CHECKSUMS.asc             GPG-KEY                   isolinux/
      -CHECKSUMS.md5             PACKAGES.TXT              kernels/
      -CHECKSUMS.md5.asc         PRERELEASE_NOTES          pasture/
      -COPYING                   README81.TXT              rootdisks/
      -COPYRIGHT.TXT             SPEEKUP_DOCS.TXT          slackware/
      -CRYPTO_NOTICE.TXT         SPEEK_INSTALL.TXT         source/
      -CURRENT.WARNING           Slackware-HOWTO
      -ChangeLog.txt             UPGRADE.TXT
      -ncftp ...ware/slackware-current > get README81.TXT
      -README81.TXT:                                           12.29 kB  307.07 kB/s
      -
      -
      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-ssh.html b/slackbook/html/basic-network-commands-ssh.html deleted file mode 100644 index f9912fe1e..000000000 --- a/slackbook/html/basic-network-commands-ssh.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - -The Secure shell - - - - - - - - - - - -
      -

      13.6 The Secure shell

      - -

      Today, secure shell basks in the adoration that telnet once -enjoyed. ssh(1) allows one to make a connection to a remote -machine and execute programs as if one were physically present; however, ssh encrypts all the data travelling between the two computers so -even if others intercept the conversation, they are unable to understand it. A typical -secure shell connection follows.

      - - - - - -
      -
      -% ssh carrier.lizella.net -l alan
      -The authenticity of host 'carrier.lizella.net (192.168.1.253)' can't be
      -established.
      -RSA key fingerprint is 0b:e2:5d:43:4c:39:4f:8c:b9:85:db:b2:fa:25:e9:9d.
      -Are you sure you want to continue connecting (yes/no)? yes
      -Warning: Permanently added 'carrier.lizella.net' (RSA) to the list of
      -known hosts.
      -Password: password
      -Last login: Sat Nov  6 16:32:19 2004 from 192.168.1.102
      -Linux 2.4.26-smp.
      -alan@carrier:~$ ls -l MANIFEST 
      --rw-r--r--  1 alan users 23545276 2004-10-28 20:04 MANIFEST
      -alan@carrier:~$ exit
      -logout
      -Connection to carrier.lizella.net closed.
      -
      -
      - -

      There you see me making an ssh connection to carrier.lizella.net, and checking the permissions on the MANIFEST file.

      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-talk.html b/slackbook/html/basic-network-commands-talk.html deleted file mode 100644 index 5c61119e3..000000000 --- a/slackbook/html/basic-network-commands-talk.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -Talking to Other People - - - - - - - - - - - -
      -

      13.10 Talking to Other People

      - -
      -

      13.10.1 wall

      - -

      wall(1) is a quick way to write a message to the users on a -system. The basic syntax is:

      - - - - - -
      -
      -% wall [file]
      -
      -
      - -

      This will result in the contents of [file] being displayed on the terminals of all -currently logged in users. If you don't specify a file, wall will read from standard -input, so you can just type your message, and end with Ctrl+d.

      - -

      wall doesn't have many features, and apart from letting your -users know that you're about to do some serious maintenance to the system, or even reboot -it, so they have time to save their work and log off :)

      -
      - -
      -

      13.10.2 talk

      - -

      talk(1) allows two users to chat. It splits the screen in -half, horizontally. To request a chat with another user, use this command:

      - - - - - -
      -
      -% talk <person> [ttyname]
      -
      -
      - -
      -

      Figure 13-7. Two users in a talk session

      - -

      -
      - -

      If you specify just a username, the chat request is assumed to be local, so only local -users are queried. The ttyname is required if you want to ring a user on a specific -terminal (if the user is logged in more than once). The required information for talk can be obtained from the w(1) -command.

      - -

      talk can also ring users on remote hosts. For the username -you simply specify an email address. talk will try to contact -that remote user on that host.

      - -

      talk is somewhat limited. It only supports two users and is -half-duplex.

      -
      - -
      -

      13.10.3 ytalk

      - -

      ytalk(1) is a backwards compatible replacement for talk. It comes with Slackware as the ytalk -command. The syntax is similar, but has a few differences:

      - - - - - -
      -
      -% ytalk <username>[#ttyname]
      -
      -
      - -
      -

      Figure 13-8. Two users in a ytalk session

      - -

      -
      - -

      The username and terminal are specified the same as under talk, except you must put -them together with the hash mark (#).

      - -

      ytalk offers several advantages:

      - -
        -
      • -

        It supports more than two users.

        -
      • - -
      • -

        A menu of options that can be brought up anytime with Esc.

        -
      • - -
      • -

        You can shell out while still in the talk session.

        -
      • - -
      • -

        Plus more...

        -
      • -
      - -

      If you're a server administrator, you'll want to make sure that the ntalk port is enabled in /etc/inetd.conf. -ytalk needs that to work properly.

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-telnet.html b/slackbook/html/basic-network-commands-telnet.html deleted file mode 100644 index 736a26486..000000000 --- a/slackbook/html/basic-network-commands-telnet.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -telnet - - - - - - - - - - - -
      -

      13.5 telnet

      - -

      Someone once stated that telnet(1) was the coolest thing he -had ever seen on computers. The ability to remotely log in and do stuff on another -computer is what separates Unix and Unix-like operating systems from other operating -systems.

      - -

      telnet allows you to log in to a computer, just as if you -were sitting at the terminal. Once your username and password are verified, you are given -a shell prompt. From here, you can do anything requiring a text console. Compose email, -read newsgroups, move files around, and so on. If you are running X and you telnet to another machine, you can run X programs on the remote -computer and display them on yours.

      - -

      To login to a remote machine, use this syntax:

      - - - - - -
      -
      -% telnet <hostname>
      -
      -
      - -

      If the host responds, you will receive a login prompt. Give it your username and -password. That's it. You are now at a shell. To quit your telnet session, use either the -exit command or the logout command.

      - -
      - - - - - -
      Warning -

      telnet does not encrypt the information it sends. Everything -is sent in plain text, even passwords. It is not advisable to use telnet over the Internet. Instead, consider the Secure Shell. It encrypts all traffic and is available for free.

      -
      -
      - -
      -

      13.5.1 The other use of telnet

      - -

      Now that we have convinced you not to use the telnet protocol anymore to log into a -remote machine, we'll show you a couple of useful ways to use telnet.

      - -

      You can also use the telnet command to connect to a host on a -certain port.

      - - - - - -
      -
      -% telnet <hostname> [port]
      -
      -
      - -

      This can be quite handy when you quickly need to test a certain service, and you need -full control over the commands, and you need to see what exactly is going on. You can -interactively test or use an SMTP server, a POP3 server, an HTTP server, etc. this -way.

      - -

      In the next figure you'll see how you can telnet to a HTTP -server on port 80, and get some basic information from it.

      - -
      -

      Figure 13-1. Telnetting to a webserver

      - - - - - -
      -
      -% telnet store.slackware.com 80
      -Trying 69.50.233.153...
      -Connected to store.slackware.com.
      -Escape character is '^]'.
      -HEAD / HTTP/1.0
      -
      -HTTP/1.1 200 OK
      -Date: Mon, 25 Apr 2005 20:47:01 GMT
      -Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7d
      -Last-Modified: Fri, 18 Apr 2003 10:58:54 GMT
      -ETag: "193424-c0-3e9fda6e"
      -Accept-Ranges: bytes
      -Content-Length: 192
      -Connection: close
      -Content-Type: text/html
      -
      -Connection closed by foreign host.
      -%
      -
      -
      -
      - -

      You can do the same for other plain-text protocols, as long as you know what port to -connect to, and what the commands are.

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-traceroute.html b/slackbook/html/basic-network-commands-traceroute.html deleted file mode 100644 index fead8c007..000000000 --- a/slackbook/html/basic-network-commands-traceroute.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - -traceroute - - - - - - - - - - - -
      -

      13.2 traceroute

      - -

      Slackware's traceroute(8) command is a very useful network -diagnostic tool. traceroute displays each host that a packet -travels through as it tries to reach its destination. You can see how many -“hops” from the Slackware web site you are with this command:

      - - - - - -
      -
      -% traceroute www.slackware.com
      -
      -
      - -

      Each host will be displayed, along with the response times at each host. Here is an -example output:

      - - - - - -
      -
      -% traceroute www.slackware.com
      -traceroute to www.slackware.com (204.216.27.13), 30 hops max, 40 byte packets
      -1  zuul.tdn (192.168.1.1)  0.409 ms  1.032 ms  0.303 ms
      -2  207.171.227.254 (207.171.227.254)  18.218 ms  32.873 ms  32.433 ms
      -3  border-sf-2-0-4.sirius.com (205.134.230.254) 15.662 ms 15.731 ms 16.142 ms
      -4  pb-nap.crl.net (198.32.128.20)  20.741 ms  23.672 ms  21.378 ms
      -5  E0-CRL-SFO-03-E0X0.US.CRL.NET (165.113.55.3) 22.293 ms 21.532 ms 21.29 ms
      -6  T1-CDROM-00-EX.US.CRL.NET (165.113.118.2)  24.544 ms  42.955 ms 58.443 ms
      -7  www.slackware.com (204.216.27.13)  38.115 ms  53.033 ms  48.328 ms
      -
      -
      - -

      traceroute is similar to ping in -that it uses ICMP packets. There are several options that you can specify with traceroute. These options are explained in detail in the man -page.

      -
      - - - - - diff --git a/slackbook/html/basic-network-commands-web.html b/slackbook/html/basic-network-commands-web.html deleted file mode 100644 index e3f3b6c5f..000000000 --- a/slackbook/html/basic-network-commands-web.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - -Browsers - - - - - - - - - - - -
      -

      13.8 Browsers

      - -

      The first thing that people think about when they hear the word Internet is -“surfing the net”. Or looking at websites using a web browser. This is -probably by far the most popular use of the Internet for the average user.

      - -

      Slackware provides popular graphical web browsers in the “XAP” series, as -well as text mode browsers in the “N” series. We'll take a quick look at some -of the most common options below.

      - -
      -

      13.8.1 lynx

      - -

      lynx(1) is a text-based web browser. It is a very quick way -of looking up something on the Internet. Sometimes graphics just get in the way if you -know exactly what you're after.

      - -

      To start lynx, just type lynx at the -prompt:

      - - - - - -
      -
      -% lynx
      -
      -
      - -
      -

      Figure 13-5. Lynx default start page

      - -

      -
      - -

      You may want to specify a site for lynx to open to:

      - - - - - -
      -
      -% lynx http://www.slackware.com
      -
      -
      - -

      lynx prints the command keys and what they do at the bottom -of the screen. The up and down arrow keys move around the document, Enter selects the highlighted link, and the left arrow goes back to the previous page. Typing d will download the currently selected file. The g command brings up the Go prompt, where you can give lynx a URL to open.

      - -

      There are many other commands in lynx. You can either consult -the man page, or type h to get the help screen for more -information.

      -
      - -
      -

      13.8.2 links

      - -

      Just like lynx, links is a textmode -web browser, where you do all the navigation using the keyboard. However, when you press -the Esc key, it will activate a very convenient pulldown -menu on the top of the screen. This makes it very easy to use, without having to learn -all the keyboard shortcuts. People who do not use a text browser every day will -appreciate this feature.

      - -

      links seems to have better support for both frames and -tables, when compared to lynx.

      - -
      -

      Figure 13-6. Links, with the file menu open

      - -

      -
      -
      - -
      -

      13.8.3 wget

      - -

      wget(1) is a command line utility that will download files -from a specified URL. While not an actual web-browser, wget is -used primarily to grab whole or partial web sites for offline viewing, or for fast -download of single files from HTTP or FTP servers instead. The basic syntax is:

      - - - - - -
      -
      -% wget <url>
      -
      -
      - -

      You can also pass options. For example, this will download the Slackware web site:

      - - - - - -
      -
      -% wget --recursive http://www.slackware.com
      -
      -
      - -

      wget will create a www.slackware.com directory and store the files in there, just as -the site does.

      - -

      wget can also download files from FTP sites; just specify an -FTP URL instead of an HTTP one.

      - - - - - -
      -
      -% wget ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz
      ---12:18:16--  ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz
      -           => `wget-1.8.2.tar.gz'
      -Resolving ftp.gnu.org... done.
      -Connecting to ftp.gnu.org[199.232.41.7]:21... connected.
      -Logging in as anonymous ... Logged in!
      -==> SYST ... done.   ==> PWD ... done.
      -==> TYPE I ... done. ==> CWD /gnu/wget ... done.
      -==> PORT ... done.   ==> RETR wget-1.8.2.tar.gz ... done.
      -Length: 1,154,648 (unauthoritative)
      -
      -100%[==================================>] 1,154,648     209.55K/s    ETA 00:00
      -
      -12:18:23 (209.55KB/s) - `wget-1.8.2.tar.gz' saved [1154648]
      -
      -
      - -

      wget has many more options, which make it nice for site -specific scripts (web site mirroring and so forth). The man page should be consulted for -more information.

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands.html b/slackbook/html/basic-network-commands.html deleted file mode 100644 index 7ee787511..000000000 --- a/slackbook/html/basic-network-commands.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - -Basic Network Commands - - - - - - - - - - -
      -

      Chapter 13 Basic -Network Commands

      - -
      -
      -
      Table of Contents
      - -
      13.1 ping
      - -
      13.2 traceroute
      - -
      13.3 DNS Tools
      - -
      13.4 finger
      - -
      13.5 telnet
      - -
      13.6 The Secure shell
      - -
      13.7 email
      - -
      13.8 Browsers
      - -
      13.9 FTP Clients
      - -
      13.10 Talking to Other People
      -
      -
      - -

      A network consists of several computers connected together. The network can be as -simple as a few computers connected in your home or office, or as complicated as a large -university network or even the entire Internet. When your computer is part of a network, -you have access to those systems either directly or through services like mail and the -web.

      - -

      There are a variety of networking programs that you can use. Some are handy for -performing diagnostics to see if everything is working properly. Others (like mail -readers and web browsers) are useful for getting your work done and staying in contact -with other people.

      - -
      -

      13.1 ping

      - -

      ping(8) sends an ICMP ECHO_REQUEST -packet to the specified host. If the host responds, you get an ICMP packet back. Sound -strange? Well, you can “ping” an IP address to see if a machine is alive. If -there is no response, you know something is wrong. Here is an example conversation -between two Linux users:

      - - -
      -

      User -A: Loki's down again.
      -User -B: Are you sure?
      -User -A: Yeah, I tried pinging it, but there's no response.

      -
      - -

      It's instances like these that make ping a very useful -day-to-day command. It provides a very quick way to see if a machine is up and connected -to the network. The basic syntax is:

      - - - - - -
      -
      -% ping www.slackware.com
      -
      -
      - -

      There are, of course, several options that can be specified. Check the ping(1) man page for more information.

      -
      -
      - - - - - diff --git a/slackbook/html/basic-network-commands/elm.png b/slackbook/html/basic-network-commands/elm.png deleted file mode 100644 index 3607bb641bad0c554834e59f4b9056d1e9088a62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3421 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 diff --git a/slackbook/html/basic-network-commands/links.png b/slackbook/html/basic-network-commands/links.png deleted file mode 100644 index f5b8275a7585493fcd63c9a4433b2939267fa8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5204 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 diff --git a/slackbook/html/basic-network-commands/lynx.png b/slackbook/html/basic-network-commands/lynx.png deleted file mode 100644 index 52d0a0c3afe0731944ccb51ef8bb1c0c4ccf0947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7544 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 diff --git a/slackbook/html/basic-network-commands/mutt.png b/slackbook/html/basic-network-commands/mutt.png deleted file mode 100644 index d67675ab0f3b1bf36497329379491d3aaa65dad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2489 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 diff --git a/slackbook/html/basic-network-commands/pine.png b/slackbook/html/basic-network-commands/pine.png deleted file mode 100644 index 3257d14e81cc3d07bf19204c94fdbe7a86bf2b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4689 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 diff --git a/slackbook/html/basic-network-commands/talk.png b/slackbook/html/basic-network-commands/talk.png deleted file mode 100644 index 408ab11846d8a8031c3b5443863de6eb3101ad4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV4T3h3=}zY_ly{jG6?VqaRt&04F7?U;s1XS z0j3TdIM4tB|ADXpC=O-;rGZTO0|vD~gUUQz978JRyuIq(*K8ob>QJ_CU3u-_kL*eP zOhOY}-JGX3eR;H@D)aVfCa?vh5C`HX^BJihb$q76TBoKoZHt|0ap)EQQ(p}m%Uxz4 zig~rUHNSJ~_7hxtQnd?M^g8SQeKp>Yo1*9WSZtjn%$|SU50vl!1Nw(_(4gk}&y zOvCqkDkjWdCpP1phy?r3mqDj0*RMC{vI)55z0)M#-#fOp?9Qq@`%jm4y=L9F?bDRwA=@ULWyz+qRr|jI*AG4XJ?^}1^ zWXywWXQtfel4(rSDtON$!}{&>`uUBY>*{w^t-i)|UAin!xX^2I8gkD X;nt%M7G1N9Y(N5@u6{1-oD!MconYAK^Qo%+YMIC)^o1jy#{aw~czg{(cotB)ra^LUEcN_EH2|SQGl*_lg z{>TkOq5Z!9&R%5*{%3QbTlw|?-M)c+MqoBL_FVz%Ge(=4;FIw$2^MG{Sax#a>M<)jO~Vh zCyKZV-dOAOhq&J`x-_lj+J$Y7i~4t6l%KV@_gM6S+qTA^wy`nDY2KakbI}gX&#p{= ztPSUVd3||5%YOZDmKM4n)EAvy+`H3vpLSK=MAje5$_Mry*#70c+%4M=8z*PiE52R) zVUmd>IOItq9;9E2c&_StB{fHXV*l;wU;Ca{%rkA5Iwo~Z%DZo(6X*IAi`@RNE5iRx zdptd2n)6)uPO+d@2Yb@4Z2Qg-%)fkX^xoozmv@6d_KUlpkbKkmn^Ig{@WY#g=G5Vo$piF!Z--o}uKOAS+o{+Ta z%W{V7yp6pk|F?1Pzh!tpE^6be>$4jl%kXm<{MsC!)f$-BZ?utLqk3*_ zgXC}Ty;2Fc&P}|(@AbcR%T4yj3(pUKIPV_!pNLn+j-MUMOjj(O{ps;rd6sXr;f%+8 ze|~(_?H|arCv16dk<9W7%RkLnA#>R~S*~C4mdstdl{+11 diff --git a/slackbook/html/book-preface.html b/slackbook/html/book-preface.html deleted file mode 100644 index 9507434dc..000000000 --- a/slackbook/html/book-preface.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - -Preface - - - - - - - - - - -
      -

      Preface

      - -

      Intended -Audience

      - -

      The Slackware Linux operating system is a powerful platform for Intel-based computers. -It is designed to be stable, secure, and functional as both a high-end server and -powerful workstation.

      - -

      This book is designed to get you started with the Slackware Linux operating system. -It's not meant to cover every single aspect of the distribution, but rather to show what -it is capable of and give you a basic working knowledge of the system.

      - -

      As you gain experience with Slackware Linux, we hope you find this book to be a handy -reference. We also hope you'll lend it to all of your friends when they come asking about -that cool Slackware Linux operating system you're running.

      - -

      While this book may not an edge-of-your-seat novel, we certainly tried to make it as -entertaining as possible. With any luck, we'll get a movie deal. Of course, we also hope -you are able to learn from it and find it useful.

      - -

      And now, on with the show.

      - -

      Changes from -the First Edition

      - -

      This second edition is the culmination of years of hard work by the dedicated members -of the Slackware Documentation Project. The following are the major changes in this new -edition:

      - -
        -
      • -

        Chapter 3, Installation, has been modified with new -screenshots of the installer, and reflects changes in disk-sets, and CD installation.

        -
      • - -
      • -

        Chapter 4, System Configuration, has been -updated with new information about Linux 2.6.x kernels.

        -
      • - -
      • -

        Chapter 5, Network Configuration, has been -expanded with further explanation of Samba, NFS, and DHCP. A section on wireless -networking has also been added. This chapter now reflects major changes in how Slackware -handles network setup.

        -
      • - -
      • -

        Chapter 6, X Window System, has been substantially -rewritten for Xorg based systems. This chapter now also covers the xdm graphical login -manager.

        -
      • - -
      • -

        Chapter 13, Basic Network Commands, has been -enhanced with information about additional network utilities.

        -
      • - -
      • -

        Chapter 14, Security, is a new chapter with this edition. -It explains how to keep a Slackware Linux system secure.

        -
      • - -
      • -

        Chapter 17, Emacs, is a new chapter with this edition. It -describes how to use Emacs, a powerful editor for Unix.

        -
      • - -
      • -

        Chapter 18, Package Management, has been updated -with information about SlackBuild scripts.

        -
      • - -
      • -

        There are many other changes, both minor and major, to reflect changes in Slackware as -it has matured.

        -
      • -
      - -

      Organization of this Book

      - -
      -
      -
      Chapter 1, Introduction
      - -
      -

      Provides introductory material on Linux, Slackware, and the Open Source and Free -Software Movements.

      -
      - -
      Chapter 2, Help
      - -
      -

      Describes the help resources available on a Slackware Linux system and online.

      -
      - -
      Chapter 3, Installation
      - -
      -

      Describes the installation process step-by-step with screenshots to provide an -illustrative walk-through.

      -
      - -
      Chapter 4, System Configuration
      - -
      -

      Describes the important configuration files and covers kernel recompilation.

      -
      - -
      Chapter 5, Network Configuration
      - -
      -

      Describes how to connect a Slackware Linux machine to a network. Covers TCP/IP, -PPP/dial-up, wireless networking, and more.

      -
      - -
      Chapter 6, The X Window System
      - -
      -

      Describes how to setup and use the graphical X Window System in Slackware.

      -
      - -
      Chapter 7, Booting
      - -
      -

      Describes the process by which a computer boots into Slackware Linux. Also covers -dual-booting with Microsoft Windows operating systems.

      -
      - -
      Chapter 8, The Shell
      - -
      -

      Describes the powerful command line interface for Linux.

      -
      - -
      Chapter 9, Filesystem Structure
      - -
      -

      Describes the filesystem structure, including file ownership, permission, and -linking.

      -
      - -
      Chapter 10, Handling Files and Directories
      - -
      -

      Describes the commands used to manipulate files and directories from the command line -interface.

      -
      - -
      Chapter 11, Process Control
      - -
      -

      Describes the powerful Linux process management commands used to manage multiple -running applications.

      -
      - -
      Chapter 12, Essential System -Administration
      - -
      -

      Describes basic system administration tasks such as adding and removing users, -shutting down the system properly, and more.

      -
      - -
      Chapter 13, Basic Network Commands
      - -
      -

      Describes the collection of network clients included with Slackware.

      -
      - -
      Chapter 14, Security
      - -
      -

      Describes many different tools available to help keep your Slackware system secure, -including iptables and tcpwrappers.

      -
      - -
      Chapter 15, Archive Files
      - -
      -

      Describes the different compression and archive utilities available for Linux.

      -
      - -
      Chapter 16, vi
      - -
      -

      Describes the powerful vi text editor.

      -
      - -
      Chapter 17, Emacs
      - -
      -

      Describes the powerful Emacs text editor.

      -
      - -
      Chapter 18, Slackware Package Management
      - -
      -

      Describes the Slackware package utilities and the process used to create custom -packages and tagfiles.

      -
      - -
      Chapter 19, ZipSlack
      - -
      -

      Describes the ZipSlack version of Linux that can be used from Windows without -requiring an installation.

      -
      - -
      Appendix A, The GNU General Public License
      - -
      -

      Describes the license terms under which Slackware Linux and this book can be copied -and distributed.

      -
      -
      -
      - -

      Conventions used in -this book

      - -

      To provide a consistent and easy to read text, several conventions are followed -throughout the book.

      - -

      Typographic Conventions

      - -
      -
      -
      Italic
      - -
      -

      An italic font is used for -commands, emphasized text, and the first usage of technical terms.

      -
      - -
      Monospace
      - -
      -

      A monospaced font is used for error messages, commands, -environment variables, names of ports, hostnames, user names, group names, device names, -variables, and code fragments.

      -
      - -
      Bold
      - -
      -

      A bold font is used for user input in examples.

      -
      -
      -
      - -

      User Input

      - -

      Keys are shown in bold to stand out from other text. Key -combinations that are meant to be typed simultaneously are shown with `+' between the keys, such as:

      - -

      Ctrl+Alt+Del

      - -

      Meaning the user should type the Ctrl, Alt, and Del keys at the same time.

      - -

      Keys that are meant to be typed in sequence will be separated with commas, for -example:

      - -

      Ctrl+X, Ctrl+S

      - -

      Would mean that the user is expected to type the Ctrl and X keys simultaneously and then to type the Ctrl -and S keys simultaneously.

      - -

      Examples

      - -

      Examples starting with E:\> indicate a MS-DOS® command. Unless otherwise noted, these commands may -be executed from a “Command Prompt” window in a modern Microsoft® Windows® -environment.

      - - - - - -
      -
      -D:\> rawrite a: bare.i
      -
      -
      - -

      Examples starting with # indicate a command that must be -invoked as the superuser in Slackware. You can login as root to -type the command, or login as your normal account and use su(1) to gain superuser -privileges.

      - - - - - -
      -
      -# dd if=bare.i of=/dev/fd0
      -
      -
      - -

      Examples starting with % indicate a command that should be -invoked from a normal user account. Unless otherwise noted, C-shell syntax is used for -setting environment variables and other shell commands.

      - - - - - -
      -
      -% top
      -
      -
      - -

      Acknowledgments

      - -

      This project is the accumulation of months of work by many dedicated individuals. It -would not have been possible for me to produce this work in a vacuum. Many people deserve -our thanks for their selfless acts: Keith Keller for his work on wireless networking, -Joost Kremers for his great work in single-handedly writing the emacs section, Simon -Williams for the security chapter, Jurgen Phillippaerts for basic networking commands, -Cibao Cu Ali G Colibri for the inspiration and a good kick in the pants. Countless others -have sent in suggestions and fixes. An incomplete list includes: Jacob Anhoej, John Yast, -Sally Welch, Morgan Landry, and Charlie Law. I'd also like to thank Keith Keller for -hosting the mailing list for this project, as well as Carl Inglis for the initial web -hosting. Last but not least, I'd like to thank Patrick J. Volkerding for Slackware Linux, -and David Cantrell, Logan Johnson, and Chris Lumens for Slackware Linux Essentials 1st -Edition. Without their initial framework, none of this would have ever happened. Many -others have contributed in small and large ways to this project and have not been listed. -I hope they will forgive me for a poor memory.

      - -

      Alan Hicks, May 2005

      -
      - - - - - diff --git a/slackbook/html/book.html b/slackbook/html/book.html deleted file mode 100644 index c0803a78e..000000000 --- a/slackbook/html/book.html +++ /dev/null @@ -1,13511 +0,0 @@ - - - - -Slackware Linux Essentials - - - - - -
      -
      -

      Slackware Linux Essentials

      - -

      - -

      Alan Hicks

      - -

      Chris Lumens

      - -

      David Cantrell

      - -

      Logan Johnson

      - - - -
      -

      Slackware Linux is a registered trademark of Patrick Volkerding and Slackware Linux, -Inc.

      - -

      Linux is a registered trademark of Linus Torvalds.

      - -

      America Online and AOL are registered trademarks of America Online, Inc. in the United -States and/or other countries.

      - -

      Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of -Apple Computer, Inc., registered in the United States and other countries.

      - -

      IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks -of International Business Machines Corporation in the United States, other countries, or -both.

      - -

      IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and -Electronics Engineers, Inc. in the United States.

      - -

      Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or -registered trademarks of Intel Corporation or its subsidiaries in the United States and -other countries.

      - -

      Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are -either registered trademarks or trademarks of Microsoft Corporation in the United States -and/or other countries.

      - -

      Netscape and the Netscape Navigator are registered trademarks of Netscape -Communications Corporation in the U.S. and other countries.

      - -

      Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United -States and other countries.

      - -

      XFree86 is a trademark of The XFree86 Project, Inc.

      - -

      Many of the designations used by manufacturers and sellers to distinguish their -products are claimed as trademarks. Where those designations appear in this document, and -Slackware Linux, Inc. was aware of the trademark claim, the designations have been -followed by the “™” or the “®” symbol.

      -
      - -1-57176-338-4
      -
      - - -
      -
      - -
      -
      -
      Table of Contents
      - -
      Preface
      - -
      1 An Introduction to Slackware Linux
      - -
      -
      -
      1.1 What is Linux?
      - -
      -
      -
      1.1.1 A Word on GNU
      -
      -
      - -
      1.2 What is Slackware?
      - -
      1.3 Open Source and Free Software
      -
      -
      - -
      2 Help
      - -
      -
      -
      2.1 System Help
      - -
      -
      -
      2.1.1 man
      - -
      2.1.2 The /usr/doc -Directory
      - -
      2.1.3 HOWTOs and mini-HOWTOs
      -
      -
      - -
      2.2 Online Help
      - -
      -
      -
      2.2.1 The Official Website and Help Forums
      - -
      2.2.2 E-mail Support
      - -
      2.2.3 Non-Official Websites and Help -Forums
      -
      -
      -
      -
      - -
      3 Installation
      - -
      -
      -
      3.1 Getting Slackware
      - -
      -
      -
      3.1.1 The Official Disc and Box Sets
      - -
      3.1.2 Via the Internet
      -
      -
      - -
      3.2 System Requirements
      - -
      -
      -
      3.2.1 The Software Series
      - -
      3.2.2 Installation Methods
      - -
      3.2.3 Boot Disk
      - -
      3.2.4 Root Disk
      - -
      3.2.5 Supplemental Disk
      - -
      3.2.6 Making the Disks
      -
      -
      - -
      3.3 Partitioning
      - -
      3.4 The setup Program
      - -
      -
      -
      3.4.1 HELP
      - -
      3.4.2 KEYMAP
      - -
      3.4.3 ADDSWAP
      - -
      3.4.4 TARGET
      - -
      3.4.5 SOURCE
      - -
      3.4.6 SELECT
      - -
      3.4.7 INSTALL
      - -
      3.4.8 CONFIGURE
      -
      -
      -
      -
      - -
      4 System Configuration
      - -
      -
      -
      4.1 System Overview
      - -
      -
      -
      4.1.1 File System Layout
      - -
      4.1.2 Finding Files
      - -
      4.1.3 The /etc/rc.d -Directory
      -
      -
      - -
      4.2 Selecting a Kernel
      - -
      -
      -
      4.2.1 The /kernels Directory on the -Slackware CD-ROM
      - -
      4.2.2 Compiling a Kernel from -Source
      - -
      4.2.3 Using Kernel Modules
      -
      -
      -
      -
      - -
      5 Network Configuration
      - -
      -
      -
      5.1 Introduction: netconfig is your -friend.
      - -
      5.2 Network Hardware Configuration
      - -
      -
      -
      5.2.1 Loading Network -Modules
      - -
      5.2.2 LAN (10/100/1000Base-T and -Base-2) cards
      - -
      5.2.3 Modems
      - -
      5.2.4 PCMCIA
      -
      -
      - -
      5.3 TCP/IP Configuration
      - -
      -
      -
      5.3.1 DHCP
      - -
      5.3.2 Static IP
      - -
      5.3.3 /etc/rc.d/rc.inet1.conf
      - -
      5.3.4 /etc/resolv.conf
      - -
      5.3.5 /etc/hosts
      -
      -
      - -
      5.4 PPP
      - -
      -
      -
      5.4.1 pppsetup
      - -
      5.4.2 /etc/ppp
      -
      -
      - -
      5.5 Wireless
      - -
      -
      -
      5.5.1 Hardware Support
      - -
      5.5.2 Configure the Wireless Settings
      - -
      5.5.3 Configure the Network
      -
      -
      - -
      5.6 Network File Systems
      - -
      -
      -
      5.6.1 SMB/Samba/CIFS
      - -
      5.6.2 Network File System (NFS)
      -
      -
      -
      -
      - -
      6 X Configuration
      - -
      -
      -
      6.1 xorgconfig
      - -
      6.2 xorgsetup
      - -
      6.3 xinitrc
      - -
      6.4 xwmconfig
      - -
      6.5 xdm
      -
      -
      - -
      7 Booting
      - -
      -
      -
      7.1 LILO
      - -
      7.2 LOADLIN
      - -
      7.3 Dual Booting
      - -
      -
      -
      7.3.1 Windows
      - -
      7.3.2 Linux
      -
      -
      -
      -
      - -
      8 The Shell
      - -
      -
      -
      8.1 Users
      - -
      -
      -
      8.1.1 Logging In
      - -
      8.1.2 Root: The Superuser
      -
      -
      - -
      8.2 The Command Line
      - -
      -
      -
      8.2.1 Running Programs
      - -
      8.2.2 Wildcard Matching
      - -
      8.2.3 Input/Output Redirection and -Piping
      -
      -
      - -
      8.3 The Bourne Again Shell (bash)
      - -
      -
      -
      8.3.1 Environment Variables
      - -
      8.3.2 Tab Completion
      -
      -
      - -
      8.4 Virtual Terminals
      - -
      -
      -
      8.4.1 Screen
      -
      -
      -
      -
      - -
      9 Filesystem Structure
      - -
      -
      -
      9.1 Ownership
      - -
      9.2 Permissions
      - -
      9.3 Links
      - -
      9.4 Mounting Devices
      - -
      -
      -
      9.4.1 fstab
      - -
      9.4.2 mount and umount
      -
      -
      - -
      9.5 NFS Mounts
      -
      -
      - -
      10 Handling Files and Directories
      - -
      -
      -
      10.1 Navigation : ls, -cd, and pwd
      - -
      -
      -
      10.1.1 ls
      - -
      10.1.2 cd
      - -
      10.1.3 pwd
      -
      -
      - -
      10.2 Pagers: more, less, and most
      - -
      -
      -
      10.2.1 more
      - -
      10.2.2 less
      - -
      10.2.3 most
      -
      -
      - -
      10.3 Simple Output: cat and -echo
      - -
      -
      -
      10.3.1 cat
      - -
      10.3.2 echo
      -
      -
      - -
      10.4 Creation: touch and -mkdir
      - -
      -
      -
      10.4.1 touch
      - -
      10.4.2 mkdir
      -
      -
      - -
      10.5 Copy and Move
      - -
      -
      -
      10.5.1 cp
      - -
      10.5.2 mv
      -
      -
      - -
      10.6 Deletion: rm and rmdir
      - -
      -
      -
      10.6.1 rm
      - -
      10.6.2 rmdir
      -
      -
      - -
      10.7 Aliasing files with ln
      -
      -
      - -
      11 Process Control
      - -
      -
      -
      11.1 Backgrounding
      - -
      11.2 Foregrounding
      - -
      11.3 ps
      - -
      11.4 kill
      - -
      11.5 top
      -
      -
      - -
      12 Essential System Administration
      - -
      -
      -
      12.1 Users and Groups
      - -
      -
      -
      12.1.1 Supplied Scripts
      - -
      12.1.2 Changing Passwords
      - -
      12.1.3 Changing User -Information
      -
      -
      - -
      12.2 Users and Groups, the Hard Way
      - -
      12.3 Shutting Down Properly
      -
      -
      - -
      13 Basic Network Commands
      - -
      -
      -
      13.1 ping
      - -
      13.2 traceroute
      - -
      13.3 DNS Tools
      - -
      -
      -
      13.3.1 host
      - -
      13.3.2 nslookup
      - -
      13.3.3 dig
      -
      -
      - -
      13.4 finger
      - -
      13.5 telnet
      - -
      -
      -
      13.5.1 The other use of telnet
      -
      -
      - -
      13.6 The Secure shell
      - -
      13.7 email
      - -
      -
      -
      13.7.1 pine
      - -
      13.7.2 elm
      - -
      13.7.3 mutt
      - -
      13.7.4 nail
      -
      -
      - -
      13.8 Browsers
      - -
      -
      -
      13.8.1 lynx
      - -
      13.8.2 links
      - -
      13.8.3 wget
      -
      -
      - -
      13.9 FTP Clients
      - -
      -
      -
      13.9.1 ftp
      - -
      13.9.2 ncftp
      -
      -
      - -
      13.10 Talking to Other People
      - -
      -
      -
      13.10.1 wall
      - -
      13.10.2 talk
      - -
      13.10.3 ytalk
      -
      -
      -
      -
      - -
      14 Security
      - -
      -
      -
      14.1 Disabling Services
      - -
      -
      -
      14.1.1 Services started from inetd
      - -
      14.1.2 Services started from init scripts
      -
      -
      - -
      14.2 Host Access Control
      - -
      -
      -
      14.2.1 iptables
      - -
      14.2.2 tcpwrappers
      -
      -
      - -
      14.3 Keeping Current
      - -
      -
      -
      14.3.1 slackware-security -mailing list
      - -
      14.3.2 The /patches -directory
      -
      -
      -
      -
      - -
      15 Archive Files
      - -
      -
      -
      15.1 gzip
      - -
      15.2 bzip2
      - -
      15.3 tar
      - -
      15.4 zip
      -
      -
      - -
      16 Vi
      - -
      -
      -
      16.1 Starting vi
      - -
      16.2 Modes
      - -
      -
      -
      16.2.1 Command Mode
      - -
      16.2.2 Insert Mode
      -
      -
      - -
      16.3 Opening Files
      - -
      16.4 Saving Files
      - -
      16.5 Quitting vi
      - -
      16.6 vi Configuration
      - -
      16.7 Vi Keys
      -
      -
      - -
      17 Emacs
      - -
      -
      -
      17.1 Starting emacs
      - -
      -
      -
      17.1.1 Command Keys
      -
      -
      - -
      17.2 Buffers
      - -
      17.3 Modes
      - -
      -
      -
      17.3.1 Opening files
      -
      -
      - -
      17.4 Basic Editing
      - -
      17.5 Saving Files
      - -
      -
      -
      17.5.1 Quitting Emacs
      -
      -
      -
      -
      - -
      18 Slackware Package Management
      - -
      -
      -
      18.1 Overview of Package Format
      - -
      18.2 Package Utilities
      - -
      -
      -
      18.2.1 pkgtool
      - -
      18.2.2 installpkg
      - -
      18.2.3 removepkg
      - -
      18.2.4 upgradepkg
      - -
      18.2.5 rpm2tgz/rpm2targz
      -
      -
      - -
      18.3 Making Packages
      - -
      -
      -
      18.3.1 explodepkg
      - -
      18.3.2 makepkg
      - -
      18.3.3 SlackBuild Scripts
      -
      -
      - -
      18.4 Making Tags and Tagfiles -(for setup)
      -
      -
      - -
      19 ZipSlack
      - -
      -
      -
      19.1 What is ZipSlack?
      - -
      -
      -
      19.1.1 Advantages
      - -
      19.1.2 Disadvantages
      -
      -
      - -
      19.2 Getting ZipSlack
      - -
      -
      -
      19.2.1 Installation
      -
      -
      - -
      19.3 Booting ZipSlack
      -
      -
      - -
      Glossary
      - -
      A. The GNU General Public License
      - -
      -
      -
      A.1. Preamble
      - -
      A.2. TERMS AND CONDITIONS
      - -
      A.3. How to Apply These Terms to Your New Programs
      -
      -
      -
      -
      - - - - - -
      -
      -
      List of Examples
      - -
      8-1. Listing Environment Variables with set
      -
      -
      - -
      -
      -

      Preface

      - -

      Intended -Audience

      - -

      The Slackware Linux operating system is a powerful platform for Intel-based computers. -It is designed to be stable, secure, and functional as both a high-end server and -powerful workstation.

      - -

      This book is designed to get you started with the Slackware Linux operating system. -It's not meant to cover every single aspect of the distribution, but rather to show what -it is capable of and give you a basic working knowledge of the system.

      - -

      As you gain experience with Slackware Linux, we hope you find this book to be a handy -reference. We also hope you'll lend it to all of your friends when they come asking about -that cool Slackware Linux operating system you're running.

      - -

      While this book may not an edge-of-your-seat novel, we certainly tried to make it as -entertaining as possible. With any luck, we'll get a movie deal. Of course, we also hope -you are able to learn from it and find it useful.

      - -

      And now, on with the show.

      - -

      Changes from -the First Edition

      - -

      This second edition is the culmination of years of hard work by the dedicated members -of the Slackware Documentation Project. The following are the major changes in this new -edition:

      - -
        -
      • -

        Chapter 3, Installation, has been modified with new -screenshots of the installer, and reflects changes in disk-sets, and CD installation.

        -
      • - -
      • -

        Chapter 4, System Configuration, has been updated -with new information about Linux 2.6.x kernels.

        -
      • - -
      • -

        Chapter 5, Network Configuration, has been -expanded with further explanation of Samba, NFS, and DHCP. A section on wireless -networking has also been added. This chapter now reflects major changes in how Slackware -handles network setup.

        -
      • - -
      • -

        Chapter 6, X Window System, has been substantially -rewritten for Xorg based systems. This chapter now also covers the xdm graphical login -manager.

        -
      • - -
      • -

        Chapter 13, Basic Network Commands, has been -enhanced with information about additional network utilities.

        -
      • - -
      • -

        Chapter 14, Security, is a new chapter with this edition. It -explains how to keep a Slackware Linux system secure.

        -
      • - -
      • -

        Chapter 17, Emacs, is a new chapter with this edition. It -describes how to use Emacs, a powerful editor for Unix.

        -
      • - -
      • -

        Chapter 18, Package Management, has been updated -with information about SlackBuild scripts.

        -
      • - -
      • -

        There are many other changes, both minor and major, to reflect changes in Slackware as -it has matured.

        -
      • -
      - -

      Organization of this Book

      - -
      -
      -
      Chapter 1, Introduction
      - -
      -

      Provides introductory material on Linux, Slackware, and the Open Source and Free -Software Movements.

      -
      - -
      Chapter 2, Help
      - -
      -

      Describes the help resources available on a Slackware Linux system and online.

      -
      - -
      Chapter 3, Installation
      - -
      -

      Describes the installation process step-by-step with screenshots to provide an -illustrative walk-through.

      -
      - -
      Chapter 4, System Configuration
      - -
      -

      Describes the important configuration files and covers kernel recompilation.

      -
      - -
      Chapter 5, Network Configuration
      - -
      -

      Describes how to connect a Slackware Linux machine to a network. Covers TCP/IP, -PPP/dial-up, wireless networking, and more.

      -
      - -
      Chapter 6, The X Window System
      - -
      -

      Describes how to setup and use the graphical X Window System in Slackware.

      -
      - -
      Chapter 7, Booting
      - -
      -

      Describes the process by which a computer boots into Slackware Linux. Also covers -dual-booting with Microsoft Windows operating systems.

      -
      - -
      Chapter 8, The Shell
      - -
      -

      Describes the powerful command line interface for Linux.

      -
      - -
      Chapter 9, Filesystem Structure
      - -
      -

      Describes the filesystem structure, including file ownership, permission, and -linking.

      -
      - -
      Chapter 10, Handling Files and Directories
      - -
      -

      Describes the commands used to manipulate files and directories from the command line -interface.

      -
      - -
      Chapter 11, Process Control
      - -
      -

      Describes the powerful Linux process management commands used to manage multiple -running applications.

      -
      - -
      Chapter 12, Essential System Administration
      - -
      -

      Describes basic system administration tasks such as adding and removing users, -shutting down the system properly, and more.

      -
      - -
      Chapter 13, Basic Network Commands
      - -
      -

      Describes the collection of network clients included with Slackware.

      -
      - -
      Chapter 14, Security
      - -
      -

      Describes many different tools available to help keep your Slackware system secure, -including iptables and tcpwrappers.

      -
      - -
      Chapter 15, Archive Files
      - -
      -

      Describes the different compression and archive utilities available for Linux.

      -
      - -
      Chapter 16, vi
      - -
      -

      Describes the powerful vi text editor.

      -
      - -
      Chapter 17, Emacs
      - -
      -

      Describes the powerful Emacs text editor.

      -
      - -
      Chapter 18, Slackware Package Management
      - -
      -

      Describes the Slackware package utilities and the process used to create custom -packages and tagfiles.

      -
      - -
      Chapter 19, ZipSlack
      - -
      -

      Describes the ZipSlack version of Linux that can be used from Windows without -requiring an installation.

      -
      - -
      Appendix A, The GNU General Public License
      - -
      -

      Describes the license terms under which Slackware Linux and this book can be copied -and distributed.

      -
      -
      -
      - -

      Conventions used in -this book

      - -

      To provide a consistent and easy to read text, several conventions are followed -throughout the book.

      - -

      Typographic Conventions

      - -
      -
      -
      Italic
      - -
      -

      An italic font is used for -commands, emphasized text, and the first usage of technical terms.

      -
      - -
      Monospace
      - -
      -

      A monospaced font is used for error messages, commands, -environment variables, names of ports, hostnames, user names, group names, device names, -variables, and code fragments.

      -
      - -
      Bold
      - -
      -

      A bold font is used for user input in examples.

      -
      -
      -
      - -

      User Input

      - -

      Keys are shown in bold to stand out from other text. Key -combinations that are meant to be typed simultaneously are shown with `+' between the keys, such as:

      - -

      Ctrl+Alt+Del

      - -

      Meaning the user should type the Ctrl, Alt, and Del keys at the same time.

      - -

      Keys that are meant to be typed in sequence will be separated with commas, for -example:

      - -

      Ctrl+X, Ctrl+S

      - -

      Would mean that the user is expected to type the Ctrl and X keys simultaneously and then to type the Ctrl -and S keys simultaneously.

      - -

      Examples

      - -

      Examples starting with E:\> indicate a MS-DOS® command. Unless otherwise noted, these commands may -be executed from a “Command Prompt” window in a modern Microsoft® Windows® -environment.

      - - - - - -
      -
      -D:\> rawrite a: bare.i
      -
      -
      - -

      Examples starting with # indicate a command that must be -invoked as the superuser in Slackware. You can login as root to -type the command, or login as your normal account and use su(1) to gain superuser -privileges.

      - - - - - -
      -
      -# dd if=bare.i of=/dev/fd0
      -
      -
      - -

      Examples starting with % indicate a command that should be -invoked from a normal user account. Unless otherwise noted, C-shell syntax is used for -setting environment variables and other shell commands.

      - - - - - -
      -
      -% top
      -
      -
      - -

      Acknowledgments

      - -

      This project is the accumulation of months of work by many dedicated individuals. It -would not have been possible for me to produce this work in a vacuum. Many people deserve -our thanks for their selfless acts: Keith Keller for his work on wireless networking, -Joost Kremers for his great work in single-handedly writing the emacs section, Simon -Williams for the security chapter, Jurgen Phillippaerts for basic networking commands, -Cibao Cu Ali G Colibri for the inspiration and a good kick in the pants. Countless others -have sent in suggestions and fixes. An incomplete list includes: Jacob Anhoej, John Yast, -Sally Welch, Morgan Landry, and Charlie Law. I'd also like to thank Keith Keller for -hosting the mailing list for this project, as well as Carl Inglis for the initial web -hosting. Last but not least, I'd like to thank Patrick J. Volkerding for Slackware Linux, -and David Cantrell, Logan Johnson, and Chris Lumens for Slackware Linux Essentials 1st -Edition. Without their initial framework, none of this would have ever happened. Many -others have contributed in small and large ways to this project and have not been listed. -I hope they will forgive me for a poor memory.

      - -

      Alan Hicks, May 2005

      -
      - -
      -
      -

      Chapter 1 An Introduction to Slackware -Linux

      - -
      -

      1.1 What is -Linux?

      - -

      Linus Torvalds started Linux, an operating system kernel, as a personal project in -1991. He started the project because he wanted to run a Unix-based operating system -without spending a lot of money. In addition, he wanted to learn the ins and outs of the -386 processor. Linux was released free of charge to the public so that anyone could study -it and make improvements under the General Public License. (See Section 1.3 and Appendix A for an -explanation of the license.) Today, Linux has grown into a major player in the operating -system market. It has been ported to run on a variety of system architectures, including -HP/Compaq's Alpha, Sun's SPARC and UltraSPARC, and Motorola's PowerPC chips (through -Apple Macintosh and IBM RS/6000 computers.) Hundreds, if not thousands, of programmers -all over the world now develop Linux. It runs programs like Sendmail, Apache, and BIND, -which are very popular software used to run Internet servers. It's important to remember -that the term “Linux” really refers to the kernel - the core of the operating -system. This core is responsible for controlling your computer's processor, memory, hard -drives, and peripherals. That's all Linux really does: It controls the operations of your -computer and makes sure that all of its programs behave. Various companies and -individuals bundle the kernel and various programs together to make an operating system. -We call each bundle a Linux distribution.

      - -
      -
      -

      1.1.1 A -Word on GNU

      - -

      The Linux kernel project began as a solo endeavor by Linus Torvalds in 1991, but as -Isaac Newton once said, “If I have seen further, it is by standing on the shoulders -of giants.” When Linus Torvalds began the kernel the Free Software Foundation had -already established the idea of collaborative software. They entitled their effort GNU, a -recursive acronym that means simply “GNU's Not Unix”. GNU software ran atop -the Linux kernel from day 1. Their compiler gcc was used to -compile the kernel. Today many GNU tools from gcc to gnutar are still at the basis of every major Linux distribution. For -this reason many of the Free Software Foundation's proponents fervently state that their -work should be given the same credit as the Linux kernel. They strongly suggest that all -Linux distributions should refer to themselves as GNU/Linux distributions.

      - -

      This is the topic of many flamewars, surpassed only by the ancient vi versus emacs -holy war. The purpose of this book is not to fan the fires of this heated discussion, but -rather to clarify the terminology for neophytes. When one sees GNU/Linux it means a Linux -distribution. When one sees Linux they can either be referring to the kernel, or to a -distribution. It can be rather confusing. Typically the term GNU/Linux isn't used because -it's a mouth full.

      -
      -
      - -
      -
      -

      1.2 What -is Slackware?

      - -

      Slackware, started by Patrick Volkerding in late 1992, and initially released to the -world on July 17, 1993, was the first Linux distribution to achieve widespread use. -Volkerding first learned of Linux when he needed an inexpensive LISP interpreter for a -project. One of the few distributions available at the time was SLS Linux from Soft -Landing Systems. Volkerding used SLS Linux, fixing bugs as he found them. Eventually, he -decided to merge all of these bugfixes into his own private distribution that he and his -friends could use. This private distribution quickly gained popularity, so Volkerding -decided to name it Slackware and make it publicly available. Along the way, Patrick added -new things to Slackware; a user friendly installation program based on a menuing system, -as well as the concept of package management, which allows users to easily add, remove, -or upgrade software packages on their systems.

      - -

      There are many reasons why Slackware is Linux's oldest living distribution. It does -not try to emulate Windows, it tries to be as Unix-like as possible. It does not try to -cover up processes with fancy, point-and-click GUIs (Graphical User Interfaces). Instead, -it puts users in control by letting them see exactly what's going on. Its development is -not rushed to meet deadlines-each version comes out when it is ready.

      - -

      Slackware is for people who enjoy learning and tweaking their system to do exactly -what they want. Slackware's stability and simplicity are why people will continue to use -it for years to come. Slackware currently enjoys a reputation as a solid server and a -no-nonsense workstation. You can find Slackware desktops running nearly any window -manager or desktop environment, or none at all. Slackware servers power businesses, -acting in every capacity that a server can be used in. Slackware users are among the most -satisfied Linux users. Of course, we'd say that. :^)

      -
      - -
      -
      -

      1.3 Open -Source and Free Software

      - -

      Within the Linux community, there are two major ideological movements at work. The -Free Software movement (which we'll get into in a moment) is working toward the goal of -making all software free of intellectual property restrictions. Followers of this -movement believe these restrictions hamper technical improvement and work against the -good of the community. The Open Source movement is working toward most of the same goals, -but takes a more pragmatic approach to them. Followers of this movement prefer to base -their arguments on the economic and technical merits of making source code freely -available, rather than the moral and ethical principles that drive the Free Software -Movement.

      - -

      At the other end of the spectrum are groups that wish to maintain tighter controls -over their software.

      - -

      The Free Software movement is headed by the Free Software Foundation, a fund-raising -organization for the GNU project. Free software is more of an ideology. The oft-used -expression is “free as in speech, not free as in beer”. In essence, free -software is an attempt to guarantee certain rights for both users and developers. These -freedoms include the freedom to run the program for any reason, to study and modify the -source code, to redistribute the source, and to share any modifications you make. In -order to guarantee these freedoms, the GNU General Public License (GPL) was created. The -GPL, in brief, provides that anyone distributing a compiled program which is licensed -under the GPL must also provide source code, and is free to make modifications to the -program as long as those modifications are also made available in source code form. This -guarantees that once a program is “opened” to the community, it cannot be -“closed” except by consent of every author of every piece of code (even the -modifications) within it. Most Linux programs are licensed under the GPL.

      - -

      It is important to note that the GPL does not say anything about price. As odd as it -may sound, you can charge for free software. The “free” part is in the -liberties you have with the source code, not in the price you pay for the software. -(However, once someone has sold you, or even given you, a compiled program licensed under -the GPL they are obligated to provide its source code as well.)

      - -

      Another popular license is the BSD license. In contrast to the GPL, the BSD license -gives no requirement for the release of a program's source code. Software released under -the BSD license allows redistribution in source or binary form provided only a few -conditions are met. The author's credentials cannot be used as a sort of advertisement -for the program. It also indemnifies the author from liability for damages that may arise -from the use of the software. Much of the software included in Slackware Linux is BSD -licensed.

      - -

      At the forefront of the younger Open Source movement, the Open Source Initiative is an -organization that solely exists to gain support for open source software, that is, -software that has the source code available as well as the ready-to-run program. They do -not offer a specific license, but instead they support the various types of open source -licenses available.

      - -

      The idea behind the OSI is to get more companies behind open source by allowing them -to write their own open source licenses and have those licenses certified by the Open -Source Initiative. Many companies want to release source code, but do not want to use the -GPL. Since they cannot radically change the GPL, they are offered the opportunity to -provide their own license and have it certified by this organization.

      - -

      While the Free Software Foundation and the Open Source Initiative work to help each -other, they are not the same thing. The Free Software Foundation uses a specific license -and provides software under that license. The Open Source Initiative seeks support for -all open source licenses, including the one from the Free Software Foundation. The -grounds on which each argues for making source code freely available sometimes divides -the two movements, but the fact that two ideologically diverse groups are working toward -the same goal lends credence to the efforts of each.

      -
      -
      - -
      -
      -

      Chapter 2 Help

      - -

      Often there are times when you might need help with a specific command, setting up a -program, or getting a piece of hardware to work. Maybe you simply want to understand a -given command better, or see what other options are available to use with it. Luckily, -there are a variety of ways that you can get the help you're looking for. When you -install Slackware you have the option of installing packages from the “F” -series which includes FAQs and HOWTOs. Programs also come with help about their options, -configuration files, and usage.

      - -
      -
      -

      2.1 System Help

      - -
      -

      2.1.1 man

      - -

      The man command (short for “manual”) is the -traditional form of online documentation in Unix and Linux operating systems. Comprised -of specially formatted files, the “man pages”, are written for the vast -majority of commands and are distributed with the software itself. Executing man somecommand will display the man page for (naturally) the -command specified, in our example this would be the imaginary program somecommand.

      - -

      As you might imagine, the amount of man pages can quickly add up, becoming overly -confusing and seriously complicated, even for an advanced user. So, for this reason, man -pages are grouped into enumerated sections. This system has been around for a very long -time; enough so that you will often see commands, programs, and even programming library -functions referred to with their man section number.

      - -

      For example:

      - -

      You might see a reference to man(1). The numbering tells you -that “man” is documented in section 1 (user -commands); you can specify that you want the section 1 man page for “man” -with the command man 1 man. Specifying the section that man -should look in is useful in the case of multiple items with the same name.

      - -
      -

      Table 2-1. Man Page Sections

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      SectionContents
      Section 1user commands (intro only)
      Section 2system calls
      Section 3C library calls
      Section 4devices (e.g., hd, sd)
      Section 5file formats and protocols (e.g., wtmp, /etc/passwd, -nfs)
      Section 6games (intro only)
      Section 7conventions, macro packages, etc. (e.g., nroff, ascii)
      Section 8system administration (intro only)
      -
      - -

      In addition to man(1), there are the commands whatis(1) and apropos(1) available to you, -whose shared purpose is to make it easier to find information in the man system.

      - -

      The command whatis gives a very brief description of system -commands, somewhat in the style of a pocket command reference.

      - -

      Example:

      - - - - - -
      -
      -% whatis whatis
      -whatis (1)  - search the whatis database for complete words
      -
      -
      - -

      The command apropos is used to search for a man page -containing a given keyword.

      - -

      Example:

      - - - - - -
      -
      -% apropos wav
      -cdda2wav    (1)  - a sampling utility that dumps CD audio data into wav sound files
      -netwave_cs  (4)  - Xircom Creditcard Netwave device driver
      -oggdec      (1)  - simple decoder, Ogg Vorbis file to PCM audio file (WAV or RAW)
      -wavelan     (4)  - AT&T GIS WaveLAN ISA device driver
      -wavelan_cs  (4)  - AT&T GIS WaveLAN PCMCIA device driver
      -wvlan_cs    (4)  - Lucent WaveLAN/IEEE 802.11 device driver
      -
      -
      - -

      If you'd like further information on any of these commands, read their man pages for -the details. ;)

      -
      - -
      -
      -

      2.1.2 The /usr/doc Directory

      - -

      The source for most packages that we build comes with some sort of documentation: -README files, usage instructions, license files, etc. Any sort of documentation that -comes with the source is included and installed on your system in the /usr/doc directory. Each program will (usually) install its own -documentation in the order of:

      - -

      /usr/doc/$program-$version

      - -

      Where $program is the name of the program you are -wanting to read about, and $version is (obviously) the -appropriate version of software package installed on your system.

      - -

      For example, to read the documentation for the command man(1) -you would want to cd to:

      - - - - - -
      -
      -% cd /usr/doc/man-$version
      -
      -
      - -

      If reading the appropriate man page(s) doesn't provide you with enough information, or -address what you're looking for in particular, the /usr/doc -directory should be your next stop.

      -
      - -
      -
      -

      2.1.3 HOWTOs and -mini-HOWTOs

      - -

      It is in the truest spirit of the Open Source community that brings us to the -HOWTO/mini-HOWTO collection. These files are exactly what they sound like - documents and -guides describing how to do stuff. If you installed the HOWTO collection, the HOWTOs will -be installed to /usr/doc/Linux-HOWTOs and the mini-HOWTOs to -/usr/doc/Linux-mini-HOWTOs.

      - -

      Also included in the same package series is a collection of FAQs, which is an acronym -which stands for

      - -
      - -- - - - - - - - - - - - - -
      Frequently
      Asked
      Questions
      -
      - -

      These documents are written in a “Question and answer” style for -(surprise) Frequently Asked Questions. The FAQs can often be a very useful place to look -if you're just looking for a “Quick Fix” to something. If you decide to -install the FAQs during setup, you will find them installed to the /usr/doc/Linux-FAQs directory.

      - -

      These files are well worth reading whenever you're not quite sure how to proceed with -something. They cover an amazing range of topics, more often than not in a surprisingly -detailed manner. Good stuff!

      -
      -
      - -
      -
      -

      2.2 Online Help

      - -

      In addition to the documentation provided and installable with the Slackware Linux -Operating System, there are a vast multitude of online resources available for you to -learn from as well.

      - -
      -
      -

      2.2.1 The -Official Website and Help Forums

      - -

      The Official Slackware -Website

      - -

      The Official Slackware Linux website is sometimes out of date, but still contains -information relevant to the latest Slackware versions. At one time an active help forum -existed there before a horde of trolls, troublemakers, and whiners descended on the -forum. Maintaining the forum was beginning to be too much work, and so Pat shut it down. -One can find that old forum back up and running complete with searchable archives of the -old data at http://www.userlocal.com/phorum/.

      - -

      After the forums were taken down on http://slackware.com, several other sites sprang up that offered forum -support for Slackware. After much thought, Pat chose to endorse www.linuxquestions.org as the official -forum for Slackware Linux.

      -
      - -
      -
      -

      2.2.2 E-mail -Support

      - -

      Everyone who purchases an official CD set is entitled to free installation support via -e-mail from the developer. That having been said, please keep in mind that we, the -developers, (and a vast majority of users) of Slackware are of “The Old -School”. That means that we prefer to help those who have a sincere interest and -are willing to help themselves in the process. We will always do our best to help -everyone who emails us with support questions. However, Please check your documentation -and the website (especially the FAQs and maybe some of the forums listed below) before -e-mailing. You may get a faster answer that way, and the less e-mail we have to answer, -obviously the sooner we will be of assistance to those that need it.

      - -

      The e-mail address for technical support is: support@slackware.com. Other e-mail addresses and contact -information are listed on the website.

      - -
      -
      -

      2.2.2.1 Slackware Linux Project Mailing -Lists

      - -

      We have several mailing lists, available in digest and normal forms. Check the -instructions for how to subscribe.

      - -

      To subscribe to a mailing list, email:

      - -

      majordomo@slackware.com

      - -

      with the phrase “subscribe [name -of list]” in the body of the email. The list choices are described -below (use one the names below for the name of the list).

      - -

      Archives of the mailing list can be found on Slackware's website at:

      - -

      http://slackware.com/lists/archive/

      - -
      -
      -
      slackware-announce
      - -
      -

      The slackware-announce mailing list is for announcements of -new versions, major updates and other general information.

      -
      - -
      slackware-security
      - -
      -

      The slackware-security mailing list is for announcements -relating to security issues. Any exploits or other vulnerabilities directly pertaining to -Slackware will get posted to this list immediately.

      -
      -
      -
      - -

      These lists are also available in digest format. This means that you get one large -message per day instead of several messages throughout the day. Since the slackware -mailing lists do not allow users to post, and the lists are such low traffic, most users -find little advantage in the digest lists. Still, they are available if you want them by -subscribing to slackware-announce-digest or slackware-security-digest.

      -
      -
      - -
      -
      -

      2.2.3 -Non-Official Websites and Help Forums

      - -
      -

      2.2.3.1 Websites

      - -
      -
      -
      Google
      - -
      -

      The Kung-Fu Master of Search Engines. When you absolutely, positively gotta find every -last kernel of information on a subject: Accept no substitutes.

      -
      - -
      Google:Linux
      - -
      -

      Linux-Specific searches

      -
      - -
      Google:BSD
      - -
      -

      BSD-Specific searches. Slackware is so generic as a Unix work-a-like operating system -that one can as often as not find very detailed information that is almost 100% relevant -to Slackware here. Many times a BSD search reveals far more technical information than -the often PR-related Linux searches.

      -
      - -
      Google:Groups
      - -
      -

      Search through decades of Usenet posts for your pearls of wisdom.

      -
      - -
      http://userlocal.com
      - -
      -

      A virtual treasure-trove of knowledge, good advice, first-hand experience and -interesting articles. Often the first place you'll hear about new developments in the -world of Slackware.

      -
      -
      -
      -
      - -
      -
      -

      2.2.3.2 Web-based Resources

      - -
      -
      -
      linuxquestions.org
      - -
      -

      The officially sanctioned web-forum for Slackware users.

      -
      - -
      LinuxISO.org -Slackware Forum
      - -
      -

      “A place to download and get help with Linux.”

      -
      - -
      alt.os.linux.slackware FAQ
      - -
      -

      Another FAQ

      -
      -
      -
      -
      - -
      -
      -

      2.2.3.3 Usenet Groups (NNTP)

      - -

      Usenet has long been a place for geeks to gather and help one another. There are few -newsgroups dedicated to Slackware Linux, but they tend to be filled with very -knowledgeable people.

      - -

      alt.os.linux.slackware

      - -

      alt.os.linux.slackware, better known as aols (not to be -confused with AOL®!) is one of the most active places -to find technical help with Slackware problems. Like every Usenet newsgroup, a few -unhelpful participants (“trolls”) can mar the experience with constant -arguing. Learning to ignore the trolls and identifying the truly helpful people is key to -making the most of this resource.

      -
      -
      -
      -
      - -
      -
      -

      Chapter 3 Installation

      - -

      Before you can use Slackware Linux, you'll have to obtain and install it. Getting -Slackware is as easy as purchasing it or downloading it for free over the Internet. -Installing it is also easy as long as you have some basic knowledge about your computer -and are willing to learn a few other things. The installation program itself is very much -a step-by-step process. Because of this, you can be up and running very quickly. In fact, -Slackware boasts one of the lowest installation times of any full-featured Linux -distribution.

      - -
      -
      -

      3.1 Getting -Slackware

      - -
      -

      3.1.1 The Official Disc and Box -Sets

      - -

      The official Slackware Linux CD set is available from Slackware Linux, Inc. The CD set -consists of 4 discs. The first disk contains all the software needed for a basic server -install, and the X window system. The second cd is a “live” cd; that is, a -bootable cd that installs into RAM and gives you a temporary installation to play around -with or do a data or machine rescue. This cd also contains a few packages such as the KDE -and GNOME desktop environments. A few other goodies are included on the second cd -including many non-vital packages in the “extra” folder. The third and fourth -CDs contain the source code to all of Slackware, along with the original edition of this -book.

      - -

      One may also purchase a boxed set that includes the 4 discs and a copy of this book, -as well as lots of neat Slackware gear to show off your geek pride. CD subscriptions are -available at a reduced rate also.

      - -

      The preferred method for shopping for Slackware merchandise is online at the Slackware -store.

      - -

      http://store.slackware.com

      - -

      You can also call or e-mail your order in.

      - -
      -

      Table 3-1. Slackware Linux, Inc. Contact Information

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MethodContact Details
      Telephone1-(925) 674-0783
      Websitehttp://store.slackware.com
      Emailorders@slackware.com
      Postal1164 Claremont Drive, Brentwood, CA 94513
      -
      -
      - -
      -
      -

      3.1.2 Via the Internet

      - -

      Slackware Linux is also freely available over the Internet. You may email in your -support questions, but higher priority will be given to those who have purchased the -official CD set. With that said, we get a lot of e-mails and our time is rather limited. -Before e-mailing for support consider reading Chapter 2 first.

      - -

      The official Slackware Linux Project website is located at:

      - -

      http://www.slackware.com/

      - -

      The primary FTP location for Slackware Linux is:

      - -

      ftp://ftp.slackware.com/pub/slackware/

      - -

      Bear in mind that our ftp site, while open for general use, does not have unlimited -bandwidth. Please consider using a mirror near you to download Slackware. An incomplete -list of mirrors can be found on our site at http://www.slackware.com/getslack.

      -
      -
      - -
      -
      -

      3.2 -System Requirements

      - -

      An easy Slackware installation requires, at minimum, the following:

      - -
      -

      Table 3-2. System Requirements

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      HardwareRequirement
      Processor586
      RAM32 MB
      Disk Space1GB
      Media Drive4x CD-ROM
      -
      - -

      If you have the bootable CD, you will probably not need a floppy drive. Of course, it -stands to reason that if you don't possess a CD-ROM drive, you will need a floppy drive -to do a network install. A network card is required for an NFS install. See the section -called NFS for more information.

      - -

      The disk space requirement is somewhat tricky. The 1GB recommendation is usually safe -for a minimal install, but if you do a full install, you will need around two gigabytes -of available hard disk space plus additional space for personal files.. Most users don't -do a full install. In fact, many run Slackware on as little as 100MB of hard disk -space.

      - -

      Slackware can be installed to systems with less RAM, smaller hard drives, and weaker -CPUs, but doing so will require a little elbow grease. If you're up for a little work, -take a look at the LOWMEM.TXT file in the distribution tree for -a few helpful hints.

      - -
      -
      -

      3.2.1 The Software Series

      - -

      For reasons of simplicity, Slackware has historically been divided into software -series. Once called “disk sets” because they were designed for floppy-based -installation, the software series are now used primarily to categorize the packages -included in Slackware. Today, floppy installation is no longer possible.

      - -

      The following is a brief description of each software series.

      - -
      -

      Table 3-3. Software Series

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      SeriesContents
      AThe base system. Contains enough software to get up and running and have a text -editor and basic communication program.
      APVarious applications that do not require the X Window System.
      DProgram development tools. Compilers, debuggers, interpreters, and man pages are all -here.
      EGNU Emacs.
      FFAQs, HOWTOs, and other miscellaneous documentation.
      GNOMEThe GNOME desktop environment.
      KThe source code for the Linux kernel.
      KDEThe K Desktop Environment. An X environment which shares a lot of look-and-feel -features with MacOS and Windows. The Qt library, which KDE requires, is also in this -series.
      KDEIInternationalization packages for the KDE desktop.
      LLibraries. Dynamically linked libraries required by many other programs.
      NNetworking programs. Daemons, mail programs, telnet, news readers, and so on.
      TteTeX document formatting system.
      TCLThe Tool Command Language. Tk, TclX, and TkDesk.
      XThe base X Window System.
      XAPX Applications that are not part of a major desktop environment (for example, -Ghostscript and Netscape).
      YBSD Console games
      -
      -
      - -
      -
      -

      3.2.2 -Installation Methods

      - -
      -

      3.2.2.1 Floppy

      - -

      While it was once possible to install all of Slackware Linux from floppy disks, the -increasing size of software packages (indeed, of some individual programs) has forced the -abandonment of the floppy install. As late as Slackware version 7.1 a partial install was -possible using floppy disks. The A and N series could be nearly entirely installed, -providing a base system from which to install the rest of the distribution. If you are -considering a floppy install (typically on older hardware), it is typically recommended -to find another way, or use an older release. Slackware 4.0 is still very popular for -this reason, as is 7.0.

      - -

      Please note that floppy disks are still required for a CD-ROM install if you do not -have a bootable CD, as well as for an NFS install.

      -
      - -
      -
      -

      3.2.2.2 CD-ROM

      - -

      If you have the bootable CD, available in the official disc set published by Slackware -Linux, Inc. (see the section called Getting Slackware), a CD-based installation will be a -bit simpler for you. If not, you will need to boot from floppies. Also, if you have -special hardware that makes usage of the kernel on the bootable CD problematic, you may -need to use specialized floppies.

      - -

      As of Slackware version 8.1, a new method is used for creating the bootable CDs, which -does not work as well with certain flaky BIOS chips (it is worth noting that most all -Linux CDs suffer from this these days). If that is the case, we recommend booting from a -floppy disk.

      - -

      Section 3.2.3 and Section 3.2.5 provide information on choosing -and creating floppies from which to boot, should this be necessary.

      -
      - -
      -
      -

      3.2.2.3 NFS

      - -

      NFS (the Network File System) is a way of making filesystems available to remote -machines. An NFS install allows you to install Slackware from another computer on your -network. The machine from which you are installing needs to be configured to export the -Slackware distribution tree to the machine to which you're installing. This, of course, -involves some knowledge of NFS, which is covered in Section 5.6.

      - -

      It is possible to perform an NFS install via such methods as PLIP (over a parallel -port), SLIP, and PPP (though not over a modem connection). However, we recommend the use -of a network card if available. After all, installing an operating system through your -printer port is going to be a very, very slow process.

      -
      -
      - -
      -
      -

      3.2.3 Boot Disk

      - -

      The boot disk is the floppy you actually boot from to begin the installation. It -contains a compressed kernel image which is used to control the hardware during -installation. Therefore, it is very much required (unless you're booting from CD, as is -discussed in the section called CD-ROM). The boot disks are located in the bootdisks/ directory in the distribution tree.

      - -

      There are more Slackware boot disks than you can shake a stick at (which is to say -about 16). A complete list of boot disks, with a description of each, is available in the -Slackware distribution tree in the file bootdisks/README.TXT. -However, most people are able to use the bare.i (for IDE -devices) or scsi.s (for SCSI devices) boot disk image.

      - -

      See Section 3.2.6 for instructions on -making a disk from an image.

      - -

      After booting, you will be prompted to insert the root disk. We recommend that you -just humor the boot disk and play along.

      -
      - -
      -
      -

      3.2.4 Root Disk

      - -

      The root disks contain the setup program and a filesystem which is used during -installation. They are also required. The root disk images are located in the directory -rootdisks in the distribution tree. You'll have to make two root disks from the install.1 and install.2 images. Here you -can also find the network.dsk, pcmcia.dsk, rescue.dsk, and sbootmgr.dsk disks.

      -
      - -
      -
      -

      3.2.5 Supplemental Disk

      - -

      A supplemental disk is needed if you are performing an NFS install or installing to a -system with PCMCIA devices. Supplemental disks are in the rootdsks directory in the -distribution tree, with the filenames network.dsk and pcmcia.dsk. Recently other supplemental disks such as rescue.dsk and sbootmgr.dsk have been -added. The rescue disk is a small floppy root image that runs in a 4MB RAM drive. It -includes some basic networking utilities and the vi editor for quick fixes on busted -machines. The sbootmgr.dsk disk is used to boot other devices. -Boot off this disk if your bootable CD-ROM drive doesn't want to boot the Slackware CDs. -It will prompt you for different things to boot and may offer a convenient way to work -around a buggy BIOS.

      - -

      The root disk will instruct you on the use of supplemental disks when it is -loaded.

      -
      - -
      -
      -

      3.2.6 Making the Disks

      - -

      Once you've selected a boot disk image, you need to put it on a floppy. The process is -slightly different depending on which operating system you're using to make the disks. If -you're running Linux (or pretty much any Unix-like OS) you'll need to use the dd(1) command. Assuming bare.i is your -disk image file and your floppy drive is /dev/fd0, the command -to make a bare.i floppy is:

      - - - - - -
      -
      -% dd if=bare.i of=/dev/fd0
      -
      -
      - -

      If you're running a Microsoft OS, you'll need to use the RAWRITE.EXE program, which is included in the distribution tree in -the same directories as the floppy images. Again assuming that bare.i is your disk image file and your floppy drive is A:, open a DOS prompt and type the following:

      - - - - - -
      -
      -C:\ rawrite a: bare.i
      -
      -
      -
      -
      - -
      -
      -

      3.3 -Partitioning

      - -

      After booting from your preferred media, you will need to partition your hard disk. -The disk partition is where the Linux filesystem will be created and is where Slackware -will be installed. At the very minimum we recommend creating two partitions; one for your -root filesystem (/) and one for swap space.

      - -

      After the root disk finishes loading, it will present you with a login prompt. Log in -as root (there is no password). At the shell prompt, run either cfdisk(8) or fdisk(8). The cfdisk program provides a more user-friendly interface than the -regular fdisk program, but does lack some features. We will -briefly explain the fdisk program below.

      - -

      Begin by running fdisk for your hard disk. In Linux, the hard -disks do not have drive letters, but are represented by a file. The first IDE hard disk -(primary master) is /dev/hda, the primary slave is /dev/hdb, and so on. SCSI disks follow the same type system, but -are in the form of /dev/sdX. You -will need to start fdisk and pass it your hard disk:

      - - - - - -
      -
      -# fdisk /dev/hda
      -
      -
      - -

      Like all good Unix programs, fdisk gives you a prompt -(thought you were getting a menu, right?). The first thing you should do is examine your -current partitions. We do that by typing p at the fdisk prompt:

      - - - - - -
      -
      -Command (m for help): p
      -
      -
      - -

      This will display all sorts of information about your current partitions. Most people -pick a free drive to install to and then remove any existing partitions on it to create -room for the Linux partitions.

      - -
      - - - - - -
      Warning -

      IT IS VERY IMPORTANT THAT YOU BACK UP ANY INFORMATION YOU WANT TO SAVE BEFORE -DESTROYING THE PARTITION IT LIVES ON.

      -
      -
      - -

      There is no easy way to recover from deleting a partition, so always back up before -playing with them.

      - -

      Looking at the table of partition information you should see a partition number, the -size of the partition, and its type. There's more information, but don't worry about that -for now. We are going to delete all of the partitions on this drive to create the Linux -ones. We run the d command to delete those:

      - - - - - -
      -
      -Command (m for help): d
      -Partition number (1-4): 1
      -
      -
      - -

      This process should be continued for each of the partitions. After deleting the -partitions we are ready to create the Linux ones. We have decided to create one partition -for our root filesystem and one for swap. It is worth noting that Unix partitioning -schemes are the subject of many flame wars, and that most users will tell you the best -way to do it. At a minimum, you should create one partition for / and one for swap. Over time, you'll develop a method that works -well for you.

      - -

      I use two basic partition schemes. The first is for a desktop. I make 4 partitions, -/, /home, /usr/local, and swap. This lets me re-install or upgrade the entire -installation under / without wiping out my data files under -/home or my custom compiled applications under /usr/local. For -servers, I often replace the /usr/local partition with a /var partition. Many different servers store information on that -partition and having it kept separate from / has certain -performance benefits. For now, we're sticking with just two partitions: / and swap.

      - -

      Now we create the partitions with the n command:

      - - - - - -
      -
      -Command (m for help): n
      -Command action
      -   e   extended
      -   p   primary partition (1-4)
      -p
      -Partition number (1-4):1
      -First cylinder (0-1060, default 0):0
      - Last cylinder or +size or +sizeM or +sizeK (0-1060, default 1060):+64M
      -
      -
      - -

      You need to make sure you create primary partitions. The first partition is going to -be our swap partition. We tell fdisk to make partition number 1 a primary partition. We -start it at cylinder 0 and for the ending cylinder we type +64M. This will give us a 64 -megabyte partition for swap. (The size of the swap partition you need actually depends on -the amount of RAM you have. It is conventional wisdom that a swap space double the size -of your RAM should be created.) Then we define primary partition number 2 starting at the -first available cylinder and going all the way to the end of the drive.

      - - - - - -
      -
      -Command (m for help):n
      -Command action
      -   e   extended
      -   p   primary partition (1-4)
      -p
      -Partition number (1-4):2
      -First cylinder (124-1060, default 124):124
      -Last cylinder or +size or +sizeM or +sizeK (124-1060, default 1060):1060
      -
      -
      - -

      We are almost done. We need to change the type of the first partition to type 82 -(Linux swap). Type t to change the type, select the first -partition, and type 82. Before writing your changes to the -disk, you should look at the new partition table one last time. Use the p in fdisk to display the partition -table. If everything looks good, type w to write your -changes to the disk and quit fdisk.

      -
      - -
      -
      -

      3.4 The setup Program

      - -

      Once you have created your partitions, you are ready to install Slackware. The next -step in the installation process is running the setup(8) -program. To do so, simply type setup at the shell prompt. setup is a menu-driven system for actually installing the Slackware -packages and configuring your system.

      - -
      -

      -
      - -

      The setup process goes something like this: You step through each option in the setup program, in the order they are listed. (Of course, you are -free to do things in almost any order you choose, but chances are it isn't going to work -out very well.) Menu items are selected using the up and down arrow keys, and the -“Okay” and “Cancel” buttons can be chosen by using the left and -right arrow keys. Alternatively, each option has a corresponding key, which is -highlighted in the option name. Options which are flaggable (those indicated with a [X]) are toggled using the spacebar.

      - -

      Of course, all of that is described in the “help” section of setup, but we believe in giving our readers their money's worth.

      - -
      -
      -

      3.4.1 HELP

      - -

      If this is your first time installing Slackware, you might want to take a look at the -help screen. It will give a description of each part of setup -(much like the one we're writing now, but less involved) and instructions for navigating -the rest of the install.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.2 KEYMAP

      - -

      If you require a keymap other than the United States “qwerty” layout, you -may want to take a look at this section. It offers a number of alternate layouts for your -keyboarding enjoyment.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.3 ADDSWAP

      - -
      -

      -
      - -

      If you created a swap partition (back in Section -3.3), this section will allow you to enable it. It will autodetect and display the -swap partitions on your hard drive, allowing you to select one to format and enable.

      -
      - -
      -
      -

      3.4.4 TARGET

      - -
      -

      -
      - -

      The target section is where your other (non-swap) partitions are formatted and mapped -to filesystem mount points. A list of the partitions on your hard disk will be displayed. -For each partition, you will be given the option of whether to format that partition or -not. Depending on the kernel used, you can choose between reiserfs (the default), ext3, -ext2, jfs, and xfs. Most people use either reiserfs or ext3. In the near future we may -see support for reiserfs4 slip in.

      - -

      The first option in the target section is the selection of a partition on which to -install your root (/) filesystem. After that, you will be able -to map other partitions to filesystems as you choose. (For instance, you may want your -third partition, say /dev/hda3, to be your home filesystem. -This is just an example; map the partitions as you see fit.)

      -
      - -
      -
      -

      3.4.5 SOURCE

      - -

      The source section is where you select the source media from which you are installing -Slackware. Currently there are four sources to choose from. These are CD-ROM, NFS, or a -premounted directory.

      - -
      -

      -
      - -

      The CD-ROM selection enables a CD-ROM based installation. It will offer the option of -scanning for a CD-ROM drive or displaying a list from which you can pick your drive type. -Make sure you have the Slackware CD in your drive before allowing it to scan.

      - -

      The NFS selection prompts for your network information and the network information for -your NFS server. The NFS server must be set up in advance. Also note that you cannot use -hostnames, you must use the IP addresses for both your machine and the NFS server (there -is no name resolver on the setup disk). Naturally you must have used the network.dsk floppy to add support for your network controller.

      - -

      The premounted directory offers the most flexibility. You can use this method to -install from things such as Jaz disks, NFS mounts over PLIP, and FAT filesystems. Mount -the filesystem to a location of your choosing before running setup, then specify that -location here.

      -
      - -
      -
      -

      3.4.6 SELECT

      - -

      The select option allows you to select the software series that you wish to install. -These series are described in Section 3.2.1. -Please note that you must install the A series to have a working base system. All other -series are optional.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.7 INSTALL

      - -

      Assuming that you have gone through the “target”, “source”, -and “select” options, the install option will allow -you to select packages from your chosen software series. If not, it will prompt you to go -back and complete the other sections of the setup program. This option allows you to -select from six different installation methods: full, newbie, menu, expert, custom, and tag path.

      - -
      -

      -
      - -

      The full option will install every package from all the -software series that you chose in the “select” section. There is no further -prompting. This is the easiest installation method, since you do not need to make any -decisions on the actual packages to install. Of course, this option also takes up the -most hard drive space.

      - -

      The next option is newbie. This option installs all of the -required packages in the selected series. For all other packages, it offers a prompt -where you can select “Yes”, “No”, or “Skip”. Yes and -No do the obvious, while Skip will go ahead to the next software series. Additionally, -you will see a description and size requirement for each package to help you decide if -you need it. We recommend this option for new users, as it ensures that you get all the -required packages installed. However, it is a little slow because of the prompting.

      - -

      Menu is a faster and more advanced version of the newbie -option. For each series, a menu is displayed, from which you can select all the -non-required packages you want to install. Required packages are not displayed on this -menu.

      - -

      For the more advanced user, install offers the expert -option. This allows you complete control over what packages get installed. You can -deselect packages that are absolutely required, resulting in a broken system. On the -other hand, you can control exactly what goes onto your system. Simply select the -packages from each series that you want installed. This is not recommended for the new -user, as it is quite easy to shoot yourself in the foot.

      - -

      The custom and tag path options -are also for advanced users. These options allow you to install based upon custom tag -files that you created in the distribution tree. This is useful for installing to large -numbers of machines fairly quickly. For more information on using tag files, see Section 18.4.

      - -

      After selecting your installation method, one of a few things will happen. If you -selected full or menu, a menu screen will appear, allowing you to select the packages to -be installed. If you selected full, packages will immediately start getting installed to -the target. If you selected newbie, packages will be installed until an optional package -is reached.

      - -

      Note that it is possible to run out of space while installing. If you selected too -many packages for the amount of free space on the target device, you will have problems. -The safest thing to do is to select some software and add more later, if you need it. -This can easily be done using Slackware's package management tools. For this information, -see Chapter 18.

      -
      - -
      -
      -

      3.4.8 CONFIGURE

      - -

      The configure section allows you to do some basic system configuration, now that the -packages have been installed. What you see here depends in large part upon which software -you have installed. You will, however, always see the following:

      - -
      -
      -

      3.4.8.1 Kernel selection

      - -

      Here you will be asked to select a kernel to install. You can install the kernel from -the boot disk you used to install, the Slackware CD-ROM, or from another floppy which you -(always thinking ahead) have prepared. Or you can elect to skip, in which case the -default kernel will be installed and play will continue to the dealer's left.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.8.2 Make a boot disk

      - -

      Making a boot disk for future use is probably a good idea. You will have the option of -formatting a floppy and then creating one of two types of boot disk. The first type, simple, simply (go figure) writes a kernel to the floppy. A more -flexible (and highly recommended) option is lilo, which will of -course create a lilo boot disk. See LILO in Section 7.1 for -more information. Of course, you may also choose to simply continue, in which case no boot disk will be made.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.8.3 Modem

      - -

      You will be prompted for modem information. More specifically, you will be asked -whether you have a modem, and if so, what serial port it is on.

      - -
      -

      -
      - -

      These next configuration subsections may or may not appear, depending on whether or -not you installed their corresponding packages.

      -
      - -
      -
      -

      3.4.8.4 Timezone

      - -

      This one's pretty straightforward: you will be asked what time zone you are in. If you -operate on Zulu time, we are very sorry; the (extremely long) list is alphabetically -ordered, and you're at the bottom.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.8.5 Mouse

      - -

      This subsection simply asks what kind of mouse you have, and whether you want gpm(8) console mouse support enabled on bootup.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.8.6 Hardware clock

      - -

      This subsection asks if your computer's hardware clock is set to Coordinated Universal -Time (UTC or GMT). Most PCs are not, so you should probably say no.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.8.7 Font

      - -

      The font subsection allows you to choose from a list of custom console fonts.

      - -
      -

      -
      -
      - -
      -
      -

      3.4.8.8 LILO

      - -

      Here you are prompted for installation of LILO (the LInux LOader; see Section 7.1 for more information).

      - -
      -

      -
      - -

      If Slackware is to be the only operating system on your computer, simple should work just fine for you. If you are dual-booting, the -expert option is a better choice. See Section 7.3 for more information on dual-booting. The third -option, do not install, is not recommended unless you know what -you're doing and have a very good reason for not installing LILO. If you are performing -an expert install, you will be given a choice as to where LILO will be put. You may place -LILO in the MBR (Master Boot Record) of your hard drive, in the superblock of your root -Linux partition, or on a floppy disk.

      -
      - -
      -
      -

      3.4.8.9 Network

      - -

      The network configuration subsection is actually netconfig. -See Section 5.1 for more information.

      -
      - -
      -
      -

      3.4.8.10 X Window Manager

      - -

      This subsection will allow you to choose a default window manager for X. See Chapter 6 for more details on X and window managers.

      - -
      -

      -
      - -

      No matter which packages you installed, the last thing configure will do is ask you -whether you want to go ahead and set a root password. For -security reasons, this is probably a good idea; however, like almost everything else in -Slackware, this is your call.

      -
      -
      -
      -
      - -
      -
      -

      Chapter 4 System -Configuration

      - -

      Before you can configure the more advanced parts of your system, it's a good idea to -learn how the system is organized and what commands can be used to search for files and -programs. It's also good to know if you need to compile a custom kernel and what the -steps for doing that are. This chapter will familiarize you with system organization and -configuration files. Then, you can move on to configuring the more advanced parts of the -system.

      - -
      -
      -

      4.1 System Overview

      - -

      It's important to understand how a Linux system is put together before diving into the -various configuration aspects. A Linux system is significantly different from a DOS, -Windows, or Macintosh system (with the exception of the Unix-based Mac OS X), but these -sections will help you get acquainted with the layout so that you can easily configure -your system to meet your needs.

      - -
      -
      -

      4.1.1 File System Layout

      - -

      The first noticeable difference between Slackware Linux and a DOS or Windows system is -the filesystem. For starters, we do not use drive letters to denote different partitions. -Under Linux, there is one main directory. You can relate this to the C: drive under DOS. Each partition on your system is mounted to a -directory on the main directory. It's kind of like an ever-expanding hard disk.

      - -

      We call the main directory the root directory, and it's denoted with a single slash -(/). This concept may seem strange, but it actually makes life -easy for you when you want to add more space. For example, let's say you run out of space -on the drive that has /home on it. Most people install -Slackware and make one big root drive. Well, since a partition can be mounted to any -directory, you can simply go to the store and pick up a new hard drive and mount it to -/home. You've now grafted on some more space to your system. -And all without having to move many things around.

      - -

      Below, you will find descriptions of the major top level directories under -Slackware.

      - -
      -
      -
      bin
      - -
      -

      Essential user programs are stored here. These represent the bare minimum set of -programs required for a user to use the system. Things like the shell and the filesystem -commands (ls, cp, and so on) are stored -here. The /bin directory usually doesn't receive modification -after installation. If it does, it's usually in the form of package upgrades that we -provide.

      -
      - -
      boot
      - -
      -

      Files that are used by the Linux Loader (LILO). This directory also receives little -modification after an installation. The kernel is stored here as of Slackware 8.1. In -earlier releases of Slackware, the kernel was simply stored under / , but common practice is to put the kernel and related files here -to facilitate dual-booting.

      -
      - -
      dev
      - -
      -

      Everything in Linux is treated as a file, even hardware devices like serial ports, -hard disks, and scanners. In order to access these devices, a special file called a -device node has to be present. All device nodes are stored in the /dev directory. You will find this to be true across many Unix-like -operating systems.

      -
      - -
      etc
      - -
      -

      This directory holds system configuration files. Everything from the X Window -configuration file, the user database, to the system startup scripts. The system -administrator will become quite familiar with this directory over time.

      -
      - -
      home
      - -
      -

      Linux is a multiuser operating system. Each user on the system is given an account and -a unique directory for personal files. This directory is called the user's home -directory. The /home directory is provided as the default -location for user home directories.

      -
      - -
      lib
      - -
      -

      System libraries that are required for basic operation are stored here. The C library, -the dynamic loader, the ncurses library, and kernel modules are among the things stored -here.

      -
      - -
      mnt
      - -
      -

      This directory contains temporary mount points for working on hard disks or removable -drives. Here you'll find mount points for your CD-ROM and floppy drives.

      -
      - -
      opt
      - -
      -

      Optional software packages. The idea behind /opt is that -each software package installs to /opt/software-package, which makes it easy to remove later. -Slackware distributes some things in /opt (such as KDE in /opt/kde), but you are free to add anything you want to /opt.

      -
      - -
      proc
      - -
      -

      This is a unique directory. It's not really part of the filesystem, but a virtual -filesystem that provides access to kernel information. Various pieces of information that -the kernel wants you to know are conveyed to you through files in the /proc directory. You can also send information to the kernel -through some of these files. Try doing cat /proc/cpuinfo.

      -
      - -
      root
      - -
      -

      The system administrator is known as root on the system. root's home directory is kept in /root -instead of /home/root. The reason is simple. What if /home was a different partition from / -and it could not be mounted? root would naturally want to log -in and repair the problem. If his home directory was on the damaged filesystem, it would -make it difficult for him to log in.

      -
      - -
      sbin
      - -
      -

      Essential programs that are run by root and during the -system bootup process are kept here. Normal users will not run programs in this -directory.

      -
      - -
      tmp
      - -
      -

      The temporary storage location. All users have read and write access to this -directory.

      -
      - -
      usr
      - -
      -

      This is the big directory on a Linux system. Everything else pretty much goes here, -programs, documentation, the kernel source code, and the X Window system. This is the -directory to which you will most likely be installing programs.

      -
      - -
      var
      - -
      -

      System log files, cache data, and program lock files are stored here. This is the -directory for frequently-changing data.

      -
      -
      -
      - -

      You should now have a good feel for which directories contain what on the filesystem. -More detailed information about the filesystem layout is available in the hier(7) man -page. The next section will help you find specific files easily, so you don't have to do -it by hand.

      -
      - -
      -
      -

      4.1.2 Finding Files

      - -

      You now know what each major directory holds, but it still doesn't really help you -find things. I mean, you could go looking through directories, but there are quicker -ways. There are four main file search commands available in Slackware.

      - -
      -
      -

      4.1.2.1 which

      - -

      The first is the which(1) command. which is usually used to locate a program quickly. It just searches -your PATH and returns the first instance it finds and the -directory path to it. Take this example:

      - - - - - -
      -
      -%  which bash
      -/bin/bash
      -
      -
      - -

      From that you see that bash is in the /bin directory. This is a very limited command for searching, since -it only searches your PATH.

      -
      - -
      -
      -

      4.1.2.2 whereis

      - -

      The whereis(1) command works similar to which, but can also search for man pages and source files. A whereis search for bash should return -this:

      - - - - - -
      -
      -%  whereis bash
      -bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz
      -
      -
      - -

      This command not only told us where the actual program is located, but also where the -online documentation is stored. Still, this command is limited. What if you wanted to -search for a specific configuration file? You can't use which or -whereis for that.

      -
      - -
      -
      -

      4.1.2.3 find

      - -

      The find(1) command allows the user to search the filesystem -with a rich collection of search predicates. Users may specify a search with filename -wildcards, ranges of modification or creation times, or other advanced properties. For -example, to search for the default xinitrc file on the system, -the following command could be used.

      - - - - - -
      -
      -%  find / -name xinitrc
      -/var/X11R6/lib/xinit/xinitrc
      -
      -
      - -

      find will take a while to run, since it has to traverse the -entire root directory tree. And if this command is run as a normal user, there will be -permission denied error messages for directories that only root -can see. But find found our file, so that's good. If only it -could be a bit faster...

      -
      - -
      -
      -

      4.1.2.4 slocate

      - -

      The slocate(1) command searches the entire filesystem, just -like the find command can do, but it searches a database instead of the actual -filesystem. The database is set to automatically update every morning, so you have a -somewhat fresh listing of files on your system. You can manually run updatedb(1) to update the slocate database (before running updatedb by hand, you must first su to the -root user). Here's an example of slocate in action:

      - - - - - -
      -
      -%  slocate xinitrc   # we don't have to go to the root
      -/var/X11R6/lib/xinit/xinitrc
      -/var/X11R6/lib/xinit/xinitrc.fvwm2
      -/var/X11R6/lib/xinit/xinitrc.openwin
      -/var/X11R6/lib/xinit/xinitrc.twm
      -
      -
      - -

      We got more than what we were looking for, and quickly too. With these commands, you -should be able to find whatever you're looking for on your Linux system.

      -
      -
      - -
      -
      -

      4.1.3 -The /etc/rc.d Directory

      - -

      The system initialization files are stored in the /etc/rc.d -directory. Slackware uses the BSD-style layout for its initialization files as opposed to -System V init scripts, which tend to make configuration changes much more difficult -without using a program specifically designed for that purpose. In BSD-init scripts, each -runlevel is given a single rc file. In System V, each runlevel is given its own -directory, each containing numerous init scripts. This provides an organized structure -that is easy to maintain.

      - -

      There are several categories of initialization files. These are system startup, -runlevels, network initialization, and System V compatibility. As per tradition, we'll -lump everything else into another category.

      - -
      -
      -

      4.1.3.1 System Startup

      - -

      The first program to run under Slackware besides the Linux kernel is init(8). This program reads the /etc/inittab(5) file to see how to run the system. It runs the /etc/rc.d/rc.S script to prepare the system before going into your -desired runlevel. The rc.S file enables your virtual memory, -mounts your filesystems, cleans up certain log directories, initializes Plug and Play -devices, loads kernel modules, configures PCMCIA devices, sets up serial ports, and runs -System V init scripts (if found). Obviously rc.S has a lot on -its plate, but here are some scripts in /etc/rc.d that rc.S will call on to complete its work:

      - -
      -
      -
      rc.S
      - -
      -

      This is the actual system initialization script.

      -
      - -
      rc.modules
      - -
      -

      Loads kernel modules. Things like your network card, PPP support, and other things are -loaded here. If this script finds rc.netdevice, it will run -that as well.

      -
      - -
      rc.pcmcia
      - -
      -

      Probes for and configures any PCMCIA devices that you might have on your system. This -is most useful for laptop users, who probably have a PCMCIA modem or network card.

      -
      - -
      rc.serial
      - -
      -

      Configures your serial ports by running the appropriate setserial commands.

      -
      - -
      rc.sysvinit
      - -
      -

      Looks for System V init scripts for the desired runlevel and runs them. This is -discussed in more detail below.

      -
      -
      -
      -
      - -
      -
      -

      4.1.3.2 Runlevel Initialization -Scripts

      - -

      After system initialization is complete, init moves on to -runlevel initialization. A runlevel describes the state that your machine will be running -in. Sound redundant? Well, the runlevel tells init if you will -be accepting multiuser logins or just a single user, whether or not you want network -services, and if you will be using the X Window System or agetty(8) to handle logins. The files below define the different -runlevels in Slackware Linux.

      - -
      -
      -
      rc.0
      - -
      -

      Halt the system (runlevel 0). By default, this is symlinked to rc.6.

      -
      - -
      rc.4
      - -
      -

      Multiuser startup (runlevel 4), but in X11 with KDM, GDM, or XDM as the login -manager.

      -
      - -
      rc.6
      - -
      -

      Reboot the system (runlevel 6).

      -
      - -
      rc.K
      - -
      -

      Startup in single user mode (runlevel 1).

      -
      - -
      rc.M
      - -
      -

      Multiuser mode (runlevels 2 and 3), but with the standard text-based login. This is -the default runlevel in Slackware.

      -
      -
      -
      -
      - -
      -
      -

      4.1.3.3 Network Initialization

      - -

      Runlevels 2, 3, and 4 will start up the network services. The following files are -responsible for the network initialization:

      - -
      -
      -
      rc.inet1
      - -
      -

      Created by netconfig, this file is responsible for -configuring the actual network interface.

      -
      - -
      rc.inet2
      - -
      -

      Runs after rc.inet1 and starts up basic network -services.

      -
      - -
      rc.atalk
      - -
      -

      Starts up AppleTalk services.

      -
      - -
      rc.httpd
      - -
      -

      Starts up the Apache web server. Like a few other rc scripts, this one can also be -used to stop and restart a service. rc.httpd takes arguments of -stop, start, or restart.

      -
      - -
      rc.news
      - -
      -

      Starts up the news server.

      -
      -
      -
      -
      - -
      -
      -

      4.1.3.4 System V Compatibility

      - -

      System V init compatibility was introduced in Slackware 7.0. Many other Linux -distributions make use of this style instead of the BSD style. Basically each runlevel is -given a subdirectory for init scripts, whereas BSD style gives one init script to each -runlevel.

      - -

      The rc.sysvinit script will search for any System V init -scripts you have in /etc/rc.d and run them, if the runlevel is -appropriate. This is useful for certain commercial software packages that install System -V init scripts

      -
      - -
      -
      -

      4.1.3.5 Other Files

      - -

      The scripts described below are the other system initialization scripts. They are -typically run from one of the major scripts above, so all you need to do is edit the -contents.

      - -
      -
      -
      rc.gpm
      - -
      -

      Starts up general purpose mouse services. Allows you to copy and paste at the Linux -console. Occasionally, gpm will cause problems with the mouse when it is used under X -windows. If you experience problems with the mouse under X, try taking away the -executable permission from this file and stopping the gpm server.

      -
      - -
      rc.font
      - -
      -

      Loads the custom screen font for the console.

      -
      - -
      rc.local
      - -
      -

      Contains any specific startup commands for your system. This is empty after a fresh -install, as it is reserved for local administrators. This script is run after all other -initialization has taken place.

      -
      -
      -
      - -

      To enable a script, all you need to do is add the execute permissions to it with the -chmod command. To disable a script, remove the execute -permissions from it. For more information about chmod, see Section 9.2.

      -
      -
      -
      - -
      -
      -

      4.2 Selecting a Kernel

      - -

      The kernel is the part of the operating system that provides hardware access, process -control, and overall system control. The kernel contains support for your hardware -devices, so picking one for your system is an important setup step.

      - -

      Slackware provides more than a dozen precompiled kernels that you can pick from, each -with a standard set of drivers and additional specific drivers. You can run one of the -precompiled kernels or you can build your own kernel from source. Either way, you need to -make sure that your kernel has the hardware support your system needs.

      - -
      -
      -

      4.2.1 The /kernels Directory on the Slackware CD-ROM

      - -

      The precompiled Slackware kernels are available in the /kernels directory on the Slackware CD-ROM or on the FTP site in -the main Slackware directory. The available kernels change as new releases are made, so -the documentation in that directory is always the authoritative source. The /kernels directory has subdirectories for each kernel available. -The subdirectories have the same name as their accompanying boot disk. In each -subdirectory you will find the following files:

      - -
      - --- - - - - - - - - - - - - - - - - - - - - - - -
      FilePurpose
      System.mapThe system map file for this kernel
      bzImageThe actual kernel image
      configThe source configuration file for this kernel
      -
      - -

      To use a kernel, copy the System.map and config files to your /boot directory and -copy the kernel image to /boot/vmlinuz. Run /sbin/lilo(8) to install LILO for the new kernel, and then reboot -your system. That's all there is to installing a new kernel.

      - -

      The kernels that end with a .i are IDE kernels. That is, they include no SCSI support -in the base kernel. The kernels that end with .s are SCSI kernels. They include all the -IDE support in .i kernels, plus SCSI support.

      -
      - -
      -
      -

      4.2.2 Compiling a Kernel from Source

      - -

      The question “Should I compile a kernel for my system?” is often asked by -new users. The answer is a definite maybe. There are few instances where you will need to -compile a kernel specific to your system. Most users can use a precompiled kernel and the -loadable kernel modules to achieve a fully working system. You will want to compile a -kernel for your system if you are upgrading kernel versions to one that we do not -currently offer in Slackware, or if you have patched the kernel source to get special -device support that is not in the native kernel source. Anyone with an SMP system will -definitely want to compile a kernel with SMP support. Also, many users find a custom -compiled kernel runs much faster on their machine. You may find it useful to compile the -kernel with optimizations for the specific processor in your machine.

      - -

      Building your own kernel is not that hard. The first step is to make sure you have the -kernel source installed on your system. Make sure that you installed the packages from -the K series during the installation. You will also want to make sure you have the D -series installed, specifically the C compiler, GNU make, and GNU binutils. In general, -it's a good idea to have the entire D series installed if you plan on doing any kind of -development. You can also download the latest kernel source from http://www.kernel.org/mirrors.

      - -
      -
      -

      4.2.2.1 Linux Kernel version 2.4.x -Compilation

      - - - - - -
      -
      -% su -
      -Password:
      -# cd /usr/src/linux
      -
      -
      - -

      The first step is to bring the kernel source into its base state. We issue this -command to do that (note, you may wish to back-up the .config -file as this command will delete it without warning):

      - - - - - -
      -
      -# make mrproper
      -
      -
      - -

      Now you can configure the kernel for your system. The current kernel offers three ways -of doing this. The first is the original text-based question and answer system. It asks a -bunch of questions and then builds a configuration file. The problem with this method is -that if you mess up, you must start over. The method that most people prefer is the menu -driven one. Lastly, there is an X-based kernel configuration tool. Pick the one you want -and issue the appropriate command:

      - - - - - -
      -
      -# make config           (text-based Q&A version)
      -# make menuconfig       (menu driven, text-based version)
      -# make xconfig          (X-based version, make sure you are in X first)
      -
      -
      - -
      -

      Figure 4-1. Kernel Configuration Menu

      - -

      -
      - -

      New users will probably find menuconfig to be the easiest to -use. Help screens are provided that explain the various parts of the kernel. After -configuring your kernel, exit the configuration program. It will write the necessary -configuration files. Now we can prepare the source tree for a build:

      - - - - - -
      -
      -# make dep
      -# make clean
      -
      -
      - -

      The next step is to compile the kernel. First try issuing the bzImage command below.

      - - - - - -
      -
      -# make bzImage
      -
      -
      - -

      This may take a while, depending on your CPU speed. During the build process, you will -see the compiler messages. After building the kernel image, you will want to build any -parts of the kernel that you flagged as modular.

      - - - - - -
      -
      -# make modules
      -
      -
      - -

      We can now install the kernel and modules that you compiled. To install the kernel on -a Slackware system, these commands should be issued:

      - - - - - -
      -
      -# mv /boot/vmlinuz /boot/vmlinuz.old
      -# cat arch/i386/boot/bzImage > /vmlinuz
      -# mv /boot/System.map /boot/System.map.old
      -# cp System.map /boot/System.map
      -# make modules_install
      -
      -
      - -

      You will want to edit /etc/lilo.conf and add a section to -boot your old kernel in case your new one does not work. After doing that, run /sbin/lilo to install the new boot block. You can now reboot with -your new kernel.

      -
      - -
      -
      -

      4.2.2.2 Linux Kernel Version -2.6.x

      - -

      The compilation of a 2.6 kernel is only slightly different from a 2.4 or a 2.2 kernel, -but it is important that you understand the differences before delving in. It's no longer -necessary to run make dep and make -clean. Also, the kernel compilation process is not as verbose in the 2.6 kernel -series. This results in a build process that is easier to understand, but has some short -comings as well. If you have trouble building the kernel, it's highly recommended that -you turn verbosity back up. You do this simply by appending V=1 -to the build. This allows you to log more information that could help a kernel developer -or other friendly geek aid you in resolving the issue.

      - - - - - -
      -
      -# make bzImage V=1
      -
      -
      -
      -
      - -
      -
      -

      4.2.3 Using Kernel Modules

      - -

      Kernel modules are another name for device drivers that can be inserted into a running -kernel. They allow you to extend the hardware supported by your kernel without needing to -pick another kernel or compile one yourself.

      - -

      Modules can also be loaded and unloaded at any time, even when the system is running. -This makes upgrading specific drivers easy for system administrators. A new module can be -compiled, the old one removed, and the new one loaded, all without rebooting the -machine.

      - -

      Modules are stored in the /lib/modules/kernel version directory on your system. They can be -loaded at boot time through the rc.modules file. This file is -very well commented and offers examples for major hardware components. To see a list of -modules that are currently active, use the lsmod(1) command:

      - - - - - -
      -
      -# lsmod
      -Module                  Size  Used by
      -parport_pc              7220   0 
      -parport                 7844   0  [parport_pc]
      -
      -
      - -

      You can see here that I only have the parallel port module loaded. To remove a module, -you use the rmmod(1) command. Modules can be loaded by the modprobe(1) or insmod(1) command. modprobe is usually safer because it will load any modules that the -one you're trying to load depends on.

      - -

      A lot of users never have to load or unload modules by hand. They use the kernel -autoloader for module management. By default, Slackware includes kmod in its kernels. kmod is a kernel -option that enables the kernel to automatically load modules as they are requested. For -more information on kmod and how it is configured, see /usr/src/linux/Documentation/kmod.txt. You'll have needed to have -the kernel source package, or downloaded kernel source from http://kernel.org.

      - -

      More information can be found in the man pages for each of these commands, plus the -rc.modules file.

      -
      -
      -
      - -
      -
      -

      Chapter 5 Network -Configuration

      - -
      -

      5.1 Introduction: netconfig is your -friend.

      - -

      When you initially installed Slackware, the setup program invoked the netconfig program. netconfig attempted to -perform the following functions for you:

      - -
        -
      • -

        It asked you for the name of your computer, and the domain name for your computer.

        -
      • - -
      • -

        It gave a brief explanation of the various types of addressing schemes, told when they -should be used, and asked you which IP addressing scheme you wished to use to configure -your network card:

        - -
          -
        • -

          Static-IP

          -
        • - -
        • -

          DHCP

          -
        • - -
        • -

          Loopback

          -
        • -
        - -
        -
        -
      • - -
      • -

        It then offered to probe for a network card to configure.

        -
      • -
      - -

      netconfig will generally take care of about 80% of the work -of configuring your LAN network connection if you will let it. Note that I would strongly -suggest that you review your config file for a couple of reasons:

      - -
        -
      1. -

        You should never trust a setup program to properly configure your computer. If you use -a setup program, you should review the configuration yourself.

        -
      2. - -
      3. -

        If you are still learning Slackware and Linux system management, viewing a working -configuration can be helpful. You'll at least know what the configuration should look -like. This will allow you to correct problems due to misconfiguration of the system at a -later date.

        -
      4. -
      -
      - -
      -
      -

      5.2 Network Hardware Configuration

      - -

      Having decided that you wish to bring your Slackware machine on to some form of -network, the first thing you'll need is a Linux-compatible network card. You will need to -take a little care to ensure that the card is truly Linux-compatible (please refer to the -Linux Documentation Project and/or the kernel documentation for information on the -current status of your proposed network card). As a general rule, you will most likely be -pleasantly surprised by the number of networking cards that are supported under the more -modern kernels. Having said that, I'd still suggest referring to any of the various Linux -hardware compatibility lists (such as The GNU/Linux -Beginners Group Hardware Compatibility Links and The Linux -Documentation Project Hardware HOWTO) that are available on the Internet before -purchasing your card. A little extra time spent in research can save days or even weeks -trying to troubleshoot a card that isn't compatible with Linux at all.

      - -

      When you visit the Linux Hardware Compatibility lists available on the Internet, or -when you refer to the kernel documentation installed on your machine, it would be wise to -note which kernel module you'll need to use to support your network card.

      - -
      -
      -

      5.2.1 Loading Network Modules

      - -

      Kernel modules that are to be loaded on boot-up are loaded from the rc.modules file in /etc/rc.d or by the -kernel's auto module loading started by /etc/rc.d/rc.hotplug. -The default rc.modules file includes a Network device support -section. If you open rc.modules and look for that section, -you'll notice that it first checks for an executable rc.netdevice file in /etc/rc.d/. This -script is created if setup successfully autoprobes your network -device during installation.

      - -

      Below that “if” block is a list of network devices and modprobe lines, -each commented out. Find your device and uncomment the corresponding modprobe line, then -save the file. Running rc.modules as root should now load your network device driver (as well as any -other modules that are listed and uncommented). Note that some modules (such as the -ne2000 driver) require parameters; make sure you select the correct line.

      -
      - -
      -
      -

      5.2.2 LAN (10/100/1000Base-T and Base-2) -cards

      - -

      This heading encompasses all of the internal PCI and ISA networking cards. Drivers for -these cards are provided via loadable kernel modules as covered in the previous -paragraph. /sbin/netconfig should have probed for your card and -successfully set up your rc.netdevice file. If this did not -occur, the most likely problem would be that the module that you're attempting to load -for a given card is incorrect (it is not unheard of for different generations of the same -brand of card from the same manufacturer to require different modules). If you are -certain that the module that you're attempting to load is the correct one, your next best -bet would be to refer to the documentation for the module in an attempt to discover -whether or not specific parameters are required during when the module is -initialized.

      -
      - -
      -
      -

      5.2.3 Modems

      - -

      Like LAN cards, modems can come with various bus support options. Until recently, most -modems were 8 or 16 bit ISA cards. With the efforts of Intel and motherboard -manufacturers everywhere to finally kill off the ISA bus completely, it is common now to -find that most modems are either external modems that connect to a serial or USB port or -are internal PCI modems. If you wish for your modem to work with Linux, it is VITALLY important to research your -prospective modem purchase, particularly if you are considering purchasing a PCI modem. -Many, if not most, PCI modems available on store shelves these days are WinModems. -WinModems lack some basic hardware on the modem card itself: the functions performed by -this hardware are typically offloaded onto the CPU by the modem driver and the Windows -operating system. This means that they do not have the standard serial interface that -PPPD will be expecting to see when you try to dial out to your Internet Service -Provider.

      - -

      If you want to be absolutely sure that the modem you're purchasing will work with -Linux, purchase an external hardware modem that connects to the serial port on your PC. -These are guaranteed to work better and be less trouble to install and maintain, though -they require external power and tend to cost more.

      - -

      There are several web sites that provide drivers and assistance for configuring -WinModem based devices. Some users have reported success configuring and installing -drivers for the various winmodems, including Lucent, Conexant, and Rockwell chipsets. As -the required software for these devices is not an included part of Slackware, and varies -from driver to driver, we will not go into detail on them.

      -
      - -
      -
      -

      5.2.4 PCMCIA

      - -

      As part of your Slackware install, you are given the opportunity to install the pcmcia -package (in the “A” series of packages). This package contains the -applications and setup files required to work with PCMCIA cards under Slackware. It is -important to note that the pcmcia package only installs the generic software required to -work with PCMCIA cards under Slackware. It does NOT install any drivers or modules. The -available modules and drivers will be in the /lib/modules/`uname --r`/pcmcia directory. You may need to do some experimentation to find a module that -will work with your network card.

      - -

      You will need to edit /etc/pcmcia/network.opts (for an -Ethernet card) or /etc/pcmcia/wireless.opts (if you have a -wireless networking card). Like most Slackware configuration files, these two files are -very well commented and it should be easy to determine which modifications need to be -made.

      -
      -
      - -
      -
      -

      5.3 TCP/IP Configuration

      - -

      At this point, your network card should be physically installed in your computer, and -the relevant kernel modules should be loaded. You will not yet be able to communicate -over your network card, but information about the network device can be obtained with ifconfig -a.

      - - - - - -
      -
      -# ifconfig -a
      -eth0 Link encap:Ethernet HWaddr 00:A0:CC:3C:60:A4
      -UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
      -RX packets:110081 errors:1 dropped:0 overruns:0 frame:0
      -TX packets:84931 errors:0 dropped:0 overruns:0 carrier:0
      -collisions:0 txqueuelen:100
      -RX bytes:114824506 (109.5 Mb) TX bytes:9337924 (8.9 Mb)
      -Interrupt:5 Base address:0x8400
      -
      -lo Link encap:Local Loopback
      -inet addr:127.0.0.1 Mask:255.0.0.0
      -UP LOOPBACK RUNNING MTU:16436 Metric:1
      -RX packets:2234 errors:0 dropped:0 overruns:0 frame:0
      -TX packets:2234 errors:0 dropped:0 overruns:0 carrier:0
      -collisions:0 txqueuelen:0
      -RX bytes:168758 (164.8 Kb) TX bytes:168758 (164.8 Kb)
      -
      -
      - -

      If you just typed /sbin/ifconfig without the -a suffix, you would not see the eth0 -interface, as your network card does not yet have a valid IP address or route.

      - -

      While there are many different ways to setup and subnet a network, all of them can be -broken down into two types: Static and Dynamic. Static networks are setup such that each -node (geek lingo for thing with an IP address) always has the same IP address. Dynamic -networks are setup in such a way that the IP addresses for the nodes are controlled by a -single server called the DHCP server.

      - -
      -
      -

      5.3.1 DHCP

      - -

      DHCP (or Dynamic Host Configuration Protocol), is a means by which an IP address may -be assigned to a computer on boot. When the DHCP client boots, it puts out a request on the Local Area Network -for a DHCP server to assign it an -IP address. The DHCP server has a pool (or scope) of IP addresses available. The server will respond to -this request with an IP address from the pool, along with a lease time. Once the lease time for a given IP address lease -has expired, the client must contact the server again and repeat the negotiation.

      - -

      The client will then accept the IP address from the server and will configure the -requested interface with the IP address. There is one more handy trick that DHCP clients -use for negotiating the IP address that they will be assigned, however. The client will -remember it's last assigned IP address, and will request that the server re-assign that -IP address to the client again upon next negotiation. If possible, the server will do so, -but if not, a new address is assigned. So, the negotiation resembles the following:

      - -

          Client: Is there a DHCP server available on the LAN?
      - -    Server: Yes, there is. Here I am.
      - -    Client: I need an IP address.
      -    Server: You may take 192.168.10.10 for 19200 seconds.
      - -    Client: Thank you.

      - -

          Client: Is there a DHCP server available on the LAN?
      - -    Server:Yes, there is. Here I am.
      - -    Client:I need an IP address. The last time we
      - -    talked, I had 192.168.10.10;
      -    May I have it again?
      -    Server:Yes, you may (or No, you may not: take 192.168.10.12 instead).
      - -    Client: Thank you.

      - -

      The DHCP client in Linux is /sbin/dhcpcd. If you load /etc/rc.d/rc.inet1 in your favorite text editor, you will notice -that /sbin/dhcpcd is called about midway through the script. -This will force the conversation shown above. dhcpcd will also -track the amount of time left on the lease for the current IP address, and will -automatically contact the DHCP server with a request to renew the lease when necessary. -DHCP can also control related information, such as what ntp server to use, what route to -take, etc.

      - -

      Setting up DHCP on Slackware is simple. Just run netconfig -and select DHCP when offered. If you have more than one NIC and do not wish eth0 to be configured by DHCP, just edit the /etc/rc.d/rc.inet1.conf file and change the related variable for -your NIC to “YES”.

      -
      - -
      -
      -

      5.3.2 Static IP

      - -

      Static IP addresses are fixed addresses that only change if manually told to. These -are used in any case where an administrator doesn't want the IP information to change, -such for internal servers on a LAN, any server connected to the Internet, and networked -routers. With static IP addressing, you assign an address and leave it at that. Other -machines know that you are always at that certain IP address and can contact you at that -address always.

      -
      - -
      -
      -

      5.3.3 /etc/rc.d/rc.inet1.conf

      - -

      If you plan on assigning an IP address to your new Slackware box, you may do so either -through the netconfig script, or you may edit /etc/rc.d/rc.inet1.conf. In /etc/rc.d/rc.inet1.conf , you will notice:

      - - - - - -
      -
      -    # Primary network interface card (eth0)
      -    IPADDR[0]=""
      -    NETMASK[0]=""
      -    USE_DHCP[0]=""
      -    DHCP_HOSTNAME[0]=""
      -
      -
      - -

      Then further at the bottom:

      - - - - - -
      -
      -    GATEWAY=""
      -
      -
      - -

      In this case, our task is merely to place the correct information between the -double-quotes. These variables are called by /etc/rc.d/rc.inet1 -at boot time to setup the nics. For each NIC, just enter the correct IP information, or -put “YES” for USE_DHCP. -Slackware will startup the interfaces with the information placed here in the order they -are found.

      - -

      The DEFAULT_GW variable sets up the default route for -Slackware. All communications between your computer and other computers on the Internet -must pass through that gateway if no other route is specified for them. If you are using -DHCP, you will usually not need to enter anything here, as the DHCP server will specify -what gateway to use.

      -
      - -
      -
      -

      5.3.4 /etc/resolv.conf

      - -

      Ok, so you've got an IP address, you've got a default gateway, you may even have ten -million dollars (give us some), but what good is that if you can't resolve names to IP -addresses? No one wants to type in 72.9.234.112 into their web -browser to reach www.slackbook.org. After all, who other than the -authors would memorize that IP address? We need to setup DNS, but how? That's where /etc/resolv.conf comes into play.

      - -

      Chances are you already have the proper options in /etc/resolv.conf. If you setup your network connection using DHCP, -the DHCP server should handle updating this file for you. (Technically the DHCP server -just tells dhcpcd what to put here, and it obeys.) If you need -to manually update your DNS server list though, you'll need to hand edit /etc/resolv.conf. Below is an example:

      - - - - - -
      -
      -# cat /etc/resolv.conf
      -nameserver 192.168.1.254
      -search lizella.net
      -
      -
      - -

      The first line is simple. The nameserver directive tells us what DNS servers to query. -By necessity these are always IP addresses. You may have as many listed there as you -like. Slackware will happily check one after the other until one returns a match.

      - -

      The second line is a little more interesting. The search directive gives us a list of -domain names to assume whenever a DNS request is made. This allows you to contact a -machine by only the first part of its FQDN (Fully Qualified Domain Name). For example, if -“slackware.com” were in your search path, you could reach http://store.slackware.com by just pointing your web browser at http://store.

      - - - - - -
      -
      -# ping -c 1 store
      -PING store.slackware.com (69.50.233.153): 56 data bytes
      -64 bytes from 69.50.233.153 : icmp_seq=0 ttl=64 time=0.251 ms
      -1 packets transmitted, 1 packets received, 0% packet loss
      -round-trip min/avg/max = 0.251/0.251/0.251 ms
      -
      -
      - -
      -
      -
      - -
      -
      -

      5.3.5 /etc/hosts

      - -

      Now that we've got DNS working fine, what if we want to bypass our DNS server, or add -a DNS entry for a machine that isn't in DNS? Slackware includes the oft-loved /etc/hosts file which contains a local list of DNS names and IP -addresses they should match to.

      - - - - - -
      -
      -# cat /etc/hosts
      -127.0.0.1           localhost  locahost.localdomain
      -192.168.1.101       redtail
      -172.14.66.32        foobar.slackware.com
      -
      -
      - -

      Here you can see that localhost has an IP address of 127.0.0.1 -(always reserved for localhost), redtail can be reached at 192.168.1.101, and foobar.slackware.com is -172.14.66.32.

      -
      -
      - -
      -
      -

      5.4 -PPP

      - -

      Many people still connect to the Internet through some kind of dialup connection. The -most common method is PPP, though SLIP is still occasionally used. Setting up your system -to speak PPP to a remote server is pretty easy. We've included a few tools to help you in -setting it up.

      - -
      -
      -

      5.4.1 pppsetup

      - -

      Slackware includes a program called pppsetup to configure -your system to use your dialup account. It shares a look and feel similar to our netconfig program. To run the program, make sure you are logged in -as root. Then type pppsetup to run it. You should see a screen -like this:

      - -

      The program will present a series of questions, to which you will feed it appropriate -answers. Things like your modem device, the modem initialization string, and the ISP -phone number. Some items will have a default, which you can accept in most cases.

      - -

      After the program runs, it will create a ppp-go program and a -ppp-off program. These are used to start and stop, respectively, -the PPP connection. The two programs are located in /usr/sbin -and need root privileges to run.

      -
      - -
      -
      -

      5.4.2 /etc/ppp

      - -

      For most users, running pppsetup will be sufficient. However, -there may be an instance where you want to tweak some of the values used by the PPP -daemon. All of the configuration information is kept in /etc/ppp. Here is a list of what the different files are for:

      - -
      - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ip-down -

      This script is run by pppd after the PPP connection is -ended.

      -
      ip-up -

      This script is run by pppd when there's a successful ppp -connection. Put any commands you want run after a successful connection in this file.

      -
      options -

      General configuration options for pppd.

      -
      options.demand -

      General configuration options for pppd when run in demand -dialing mode.

      -
      pppscript -

      The commands sent to the modem.

      -
      pppsetup.txt -

      A log of what you entered when you ran pppsetup.

      -
      -
      - -
      - - - - - -
      Note -

      Most of these files won't be there until after you run pppsetup.

      -
      -
      -
      -
      - -
      -
      -

      5.5 Wireless

      - -

      Wireless networking is still a relatively new thing in the world of computers, yet is -quickly catching on as more people begin to purchase laptops and want networking on the -go, without having to fool with some old twisted pair cable. This trend doesn't appear to -be slowing down. Unfortunately, wireless networking isn't yet as strongly supported in -Linux as traditional wired networking.

      - -

      There are three basic steps to configuring an 802.11 wireless Ethernet card:

      - -
        -
      1. -

        Hardware support for the wireless card

        -
      2. - -
      3. -

        Configure the card to connect to a wireless access point

        -
      4. - -
      5. -

        Configure the network

        -
      6. -
      - -
      -
      -

      5.5.1 Hardware Support

      - -

      Hardware support for a wireless card is provided through the kernel, either with a -module or built in to the kernel. Generally, most newer Ethernet cards are provided -through kernel modules, so you'll want to determine the appropriate kernel module and -load it through /etc/rc.d/rc.modules. netconfig may not detect your wireless card, so you'll probably need -to determine the card yourself. See http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ for more -information on kernel drivers for various wireless cards.

      -
      - -
      -
      -

      5.5.2 Configure the Wireless -Settings

      - -

      The vast majority of this work is done by iwconfig, so as -always read the man page for iwconfig if you need more -information.

      - -

      First, you'll want to configure your wireless access point. Wireless access points -vary quite a bit in their terminology, and how to configure them, so you may need to -adjust a bit to accommodate your hardware. In general, you'll need at least the following -information:

      - -
        -
      • -

        The domain ID, or name of the network (called the ESSID by iwconfig)

        -
      • - -
      • -

        The channel the WAP uses

        -
      • - -
      • -

        The encryption settings, including any keys used (preferably in hexadecimal)

        -
      • -
      - -
      - - - - - -
      Warning -

      A NOTE ABOUT WEP. WEP is quit flawed, but it's much better than nothing. If you wish a -greater degree of security on your wireless network, you should investigate VPNs or -IPSec, both of which are beyond the scope of this document. You might also configure your -WAP not to advertise its domain ID/ ESSID. A thorough discussion of wireless policy is -beyond the scope of this section, but a quick Google search will turn up more than you -ever wanted to know.

      -
      -
      - -

      Once you've gathered the above information, and assuming you've used modprobe to load the appropriate kernel driver, you can edit rc.wireless.conf and add your settings. The rc.wireless.conf file is a bit untidy. The least effort is to -modify the generic section with your ESSID and KEY, and CHANNEL if required by your card. -(Try not setting CHANNEL, and if it works, great; if not, set the CHANNEL as -appropriate.) If you're daring, you can modify the file so that only the necessary -variables are set. The variable names in rc.wireless.conf -correspond to the iwconfig parameters, and are read by rc.wireless and used in the appropriate iwconfig commands.

      - -

      If you have your key in hexadecimal, that's ideal, since you can be fairly confident -that your WAP and iwconfig will agree on the key. If you only -have a string, you can't be sure how your WAP will translate that into a hexadecimal key, -so some guesswork may be needed (or get your WAP's key in hex).

      - -

      Once you've modified rc.wireless.conf, run rc.wireless as root, then run rc.inet1, again as root. You can test -your wireless networking with standard testing tools such as ping, along with iwconfig. If you have a -wired interface you may wish to use ifconfig to turn those -interfaces off while you test your wireless networking to ensure there's no interference. -You may also want to test your changes through a reboot.

      - -

      Now that you've seen how to edit /etc/rc.d/rc.wireless for -you default network, let's take a closer look at iwconfig and see how it all works. This -will teach you the quick and dirty way of setting up wifi for those times when you find -yourself at an Internet cafe, coffee shop, or any other wifi hot spot and wish to get -online.

      - -

      The first step is to tell your wireless NIC what network to join. Make sure you -replace “eth0” with whatever network interface your -wireless card uses and change “mynetwork” to -the essid you wish to use. Yes, we know you're smarter than that. Next you'll have to -specify the encryption key (if any) used on your wireless network. Finally specify the -channel to use (if needed).

      - - - - - -
      -
      -# iwconfig eth0 essid "mynetwork"
      -# iwconfig eth0 key XXXXXXXXXXXXXXXXXXXXXXXXXXX
      -# iwconfig eth0 channel n
      -
      -
      - -

      That should be all on the wireless end of things.

      -
      - -
      -
      -

      5.5.3 Configure the Network

      - -

      This is done in the exact same way as wired networks. Simply refer to earlier sections -of this chapter.

      -
      -
      - -
      -
      -

      5.6 -Network File Systems

      - -

      At this point, you should have a working TCP/IP connection to your network. You should -be able to ping other computers on your internal network and, if you have configured an -appropriate gateway, you should also be able to ping computers on the Internet itself. As -we know, the whole point in bringing a computer onto a network is to access information. -While some people might bring a computer up on a network just for the fun of it, most -people wish to be able to share files and printers. They wish to be able to access -documents on the Internet or play an online game. Having TCP/IP installed and functional -on your new Slackware system is a means to that end, but with just TCP/IP installed, -functionality will be very rudimentary. To share files, we will have to transfer them -back and forth using either FTP or SCP. We cannot browse files on our new Slackware -computer from the Network Neighborhood or My Network Places icons on Windows computers. -We'd like to be able to access files on other Unix machines seamlessly.

      - -

      Ideally, we'd like to be able to use a network file system to allow us transparent access to our -files on other computers. The programs that we use to interact with information stored on -our computers really do not need to know on what computer a given file is stored; they -just need to know that it exists and how to get to it. It is then the responsibility of -the operating system to manage access to that file through the available file systems and -network file systems. The two most commonly used network file systems are SMB (as -implemented by Samba) and NFS.

      - -
      -
      -

      5.6.1 SMB/Samba/CIFS

      - -

      SMB (for Server Message Block) is a descendant of the older NetBIOS protocol that was -initially used by IBM in their LAN Manager product. Microsoft has always been fairly -interested in NetBIOS and it's successors (NetBEUI, SMB and CIFS). The Samba project has -existed since 1991, when it was originally written to link an IBM PC running NetBIOS with -a Unix server. These days, SMB is the preferred method for sharing file and print -services over a network for virtually the entire civilized world because Windows supports -it.

      - -

      Samba's configuration file is /etc/samba/smb.conf; one of -the most well commented and documented configuration files you will find anywhere. Sample -shares have been setup for you to view and modify for your needs. If you need even -tighter control the man page for smb.conf is indispensable. Since Samba is documented so -well in the places I've mentioned above, we will not rewrite the documentation here. We -will, however, quickly cover the basics.

      - -

      smb.conf is broken down into multiple sections: one section -per share, and a global section for setting options that are to be used everywhere. Some -options are only valid in the global section; some are only valid outside the global -section. Remember that the global section can be over-ridden by any other section. Refer -to the man pages for more information.

      - -

      You will most likely wish to edit your smb.conf file to -reflect the network settings in your LAN. I would suggest modifying the items listed -below:

      - - - - - -
      -
      -[global]
      -# workgroup = NT-Domain-Name or Workgroup-Name, eg: LINUX2
      -workgroup = MYGROUP
      -
      -
      - -

      Change the workgroup name to reflect the workgroup or domain name that you are using -locally.

      - - - - - -
      -
      -# server string is the equivalent of the NT Description field
      -server string = Samba Server
      -
      -
      - -

      This will be the name of your Slackware computer displayed in the Network Neighborhood -(or My Network Places) folder.

      - - - - - -
      -
      -# Security mode. Most people will want user level security. See
      -# security_level.txt for details. NOTE: To get the behaviour of
      -# Samba-1.9.18, you'll need to use "security = share".
      -security = user
      -
      -
      - -

      You'll almost certainly wish to implement user level security on your Slackware -system.

      - - - - - -
      -
      -# You may wish to use password encryption. Please read
      -# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba
      -# documentation.
      -# Do not enable this option unless you have read those documents
      -encrypt passwords = yes
      -
      -
      - -

      If encrypt passwords is not enabled, you will not be able to use Samba with NT4.0, -Win2k, WinXP, and Win2003. Earlier Windows operating systems did not require encryption -to share files.

      - -

      SMB is an authenticated protocol, meaning you must supply a correct username and -password in order to use this service. We tell the samba server what usernames and -passwords are valid with the smbpasswd command. smbpasswd takes a couple of common switches to tell it to either add -traditional users, or add machine users (SMB requires that you add the computers' NETBIOS -names as machine users, restricting what computers one can authenticate from).

      - - - - - -
      -
      -Adding a user to the /etc/samba/private/smbpasswd file.
      -# smbpasswd -a user
      -Adding a machine name to the /etc/samba/private/smbpasswd file.
      -# smbpasswd -a -m machine
      -
      -
      - -

      It's important to note that a given username or machine name must already exist in the -/etc/passwd file. You can accomplish this simply with the adduser command. Note that when using the adduser command to add a machine name one must append a dollar sign -(“$”) to the machine name. This should not however, be done with smbpasswd. smbpasswd appends the dollar -sign on its own. Failing to mangle the machine name this way with adduser will result in an error when adding the machine name to -samba.

      - - - - - -
      -
      -# adduser machine$
      -
      -
      -
      - -
      -
      -

      5.6.2 Network File System (NFS)

      - -

      NFS (or Network File System) was originally written by Sun for their Solaris -implementation of Unix. While it is significantly easier to get up and running when -compared to SMB, it is also significantly less secure. The primary insecurity in NFS is -that it is easy to spoof user and group id's from one machine to another. NFS is an -unauthenticated protocol. Future versions of the NFS protocol are being devised that -enhance security, but these are not common at the time of this writing.

      - -

      NFS configuration is governed by the /etc/exports file. When -you load the default /etc/exports file into an editor, you'll -see a blank file with a two line comment on top. We'll need to add a line to the exports -file for each directory that we wish to export, with a listing of client workstations -that will be allowed to access that file. For instance, if we wished to export directory -/home/foo to workstation Bar, we would simply add the line:

      - - - - - -
      -
      -/home/foo Bar(rw)
      -
      -
      - -

      to our /etc/exports. Below, you'll find the example from the -man page for the exports file:

      - - - - - -
      -
      -# sample /etc/exports file
      -/               master(rw) trusty(rw,no_root_squash)
      -/projects       proj*.local.domain(rw)
      -/usr            *.local.domain(ro) @trusted(rw)
      -/home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
      -/pub            (ro,insecure,all_squash)
      -
      -
      - -

      As you can see, there are various options available, but most should be fairly clear -from this example.

      - -

      NFS works under the assumption that a given user on one machine in a network has the -same user ID on all machines across the network. When an attempt is made to read or write -from a NFS client to an NFS server, a UID is passed as part of the read/write request. -This UID is treated the same as if the read/write request originated on the local -machine. As you can see, if one could arbitrarily specify a given UID when accessing -resources on a remote system, Bad Things (tm) could and would happen. As a partial hedge -against this, each directory is mounted with the root_squash -option. This maps the UID for any user claiming to be root to a different UID, thus -preventing root access to the files or folders in the exported directory. root_squash seems to be enabled by default as a security measure, -but the authors recommend specifying it anyway in your /etc/exports file.

      - -

      You can also export a directory directly from the command line on the server by using -the exportfs command as follows:

      - - - - - -
      -
      -# exportfs -o rw,no_root_squash Bar:/home/foo
      -
      -
      - -

      This line exports the /home/foo directory to the computer -“Bar” and grants Bar -read/write access. Additionally, the NFS server will not invoke root_squash, which means any user on Bar with a UID of -“0” (root's UID) will have the same privileges as root on the server. The -syntax does look strange (usually when a directory is specified in computer:/directory/file syntax, you are referring to a file in a -directory on a given computer).

      - -

      You'll find more information on the man page for the exports file.

      -
      -
      -
      - -
      -
      -

      Chapter 6 X Configuration

      - -

      Starting with Slackware-10.0, the X Window environment in Slackware is provided by -Xorg. X is responsible for providing a graphical user interface. It is independent from -the operating system, unlike Windows or the MacOS.

      - -

      The X Window System is implemented through many programs that run in userland. The two -main components are the server and the window manager. The server provides the lowlevel -functions for interacting with your video hardware, thus it is system specific. The -window manager sits on top of the server and provides the user interface. The advantage -to this is you can have many different graphical interfaces by simply changing the window -manager you use.

      - -

      Configuring X can be a complex task. The reason for this is the vast numbers of video -cards available for the PC architecture, most of which use different programming -interfaces. Luckily, most cards today support basic video standards known as VESA, and if -your card is among them you'll be able to start X using the startx command right out of the box.

      - -

      If this doesn't work with your card, or if you'd like to take advantage of the -high-performance features of your video card such as hardware acceleration or 3-D -hardware rendering, then you'll need to reconfigure X.

      - -

      To configure X, you'll need to make an /etc/X11/xorg.conf -file. This file contains lots of details about your video hardware, mouse, and monitor. -It's a very complex configuration file, but fortunately there are several programs to -help create one for you. We'll mention a few of them here.

      - -
      -
      -

      6.1 xorgconfig

      - -

      This is a simple menu driven frontend that's similar in feel to the Slackware -installer. It simply tells the X server to take a look at the card, and then set up the -best initial configuration file it can make based on the information it gathers. The -generated /etc/X11/xorg.conf file should be a good starting -point for most systems (and should work without modification).

      - -

      This is a text-based X configuration program that's designed for the advanced system -administrator. Here's a sample walkthrough using xorgconfig. -First, start the program:

      - - - - - -
      -
      -# xorgconfig
      -
      -
      - -

      This will present a screenful of information about xorgconfig. To continue, press ENTER. -xorgconfig will ask you to verify you have set your PATH correctly. It should be fine, so go ahead and hit ENTER.

      - -
      -

      Figure 6-1. xorgconfig Mouse Configuration

      - -

      -
      - -

      Select your mouse from the menu presented. If you don't see your serial mouse listed, -pick the Microsoft protocol -- it's the most common and will probably work. Next xorgconfig will ask you about using ChordMiddle and Emulate3Buttons. You'll -see these options described in detail on the screen. Use them if the middle button on -your mouse doesn't work under X, or if your mouse only has two buttons (Emulate3Buttons lets you simulate the middle button by pressing both -buttons simultaneously). Then, enter the name of your mouse device. The default choice, -/dev/mouse, should work since the link was configured during -Slackware setup. If you're running GPM (the Linux mouse server) in repeater mode, you can -set your mouse type to /dev/gpmdata to have X get information -about the mouse through gpm. In some cases (with busmice -especially) this can work better, but most users shouldn't do this.

      - -

      xorgconfig will ask you about enabling special key bindings. -If you need this say “y”. Most users can say -“n” -- enter this if you're not sure.

      - -
      -

      Figure 6-2. xorgconfig Horizontal Sync

      - -

      -
      - -

      In the next section you enter the sync range for your monitor. To start configuring -your monitor, press ENTER. You will see a list of monitor -types -- choose one of them. Be careful not to exceed the specifications of your monitor. -Doing so could damage your hardware.

      - -
      -

      Figure 6-3. xorgconfig Vertical Sync

      - -

      -
      - -

      Specify the vertical sync range for your monitor (you should find this in the manual -for the monitor). xorgconfig will ask you to enter strings to identify the monitor type -in the xorg.conf file. Enter anything you like on these 3 lines -(including nothing at all).

      - -
      -

      Figure 6-4. xorgconfig Video Card

      - -

      -
      - -

      Now you have the opportunity to look at the database of video card types. You'll want -to do this, so say “y”, and select a card from -the list shown. If you don't see your exact card, try selecting one that uses the same -chipset and it will probably work fine.

      - -

      Next, tell xorgconfig how much RAM you have on your video -card. xorgconfig will want you to enter some more descriptive -text about your video card. If you like, you can enter descriptions on these three -lines.

      - -

      You'll then be asked which display resolutions you want to use. Again, going with the -provided defaults should be fine to start with. Later on, you can edit the /etc/X11/xorg.conf file and rearrange the modes so 1024x768 (or -whatever mode you like) is the default.

      - -

      At this point, the xorgconfig program will ask if you'd like -to save the current configuration file. Answer yes, and the X configuration file is -saved, completing the setup process. You can start X now with the startx command.

      -
      - -
      -
      -

      6.2 -xorgsetup

      - -

      The second way to configure X is to use xorgsetup, an -automagical configuration program that comes with Slackware.

      - -

      To run xorgsetup, log in as root and type:

      - - - - - -
      -
      -# xorgsetup
      -
      -
      - -

      If you've already got an /etc/X11/xorg.conf file (because -you've already configured X), you'll be asked if you want to backup the existing config -file before continuing. The original file will be renamed to /etc/X11/xorg.conf.backup.

      -
      - -
      -
      -

      6.3 -xinitrc

      - -

      xinit(1) is the program that actually starts X; it is called -by startx(1), so you may not have noticed it (and probably don't -really need to). Its configuration file, however, determines which programs (including -and especially the window manager) are run when X starts up. xinit first checks your home directory for a .xinitrc file. If the file is found, it gets run; otherwise, /var/X11R6/lib/xinit/xinitrc (the systemwide default) is used. -Here's a simple xinitrc file:

      - - - - - -
      -
      -#!/bin/sh
      -# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
      -
      -userresources=$HOME/.Xresources
      -usermodmap=$HOME/.Xmodmap
      -sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
      -sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
      -
      -# merge in defaults and keymaps
      -
      -if [ -f $sysresources ]; then
      -    xrdb -merge $sysresources
      -fi
      -
      -if [ -f $sysmodmap ]; then
      -    xmodmap $sysmodmap
      -fi
      -
      -if [ -f $userresources ]; then
      -    xrdb -merge $userresources
      -fi
      -
      -if [ -f $usermodmap ]; then
      -    xmodmap $usermodmap
      -fi
      -
      -# start some nice programs
      -
      -twm &
      -xclock -geometry 50x50-1+1 &
      -xterm -geometry 80x50+494+51 &
      -xterm -geometry 80x20+494-0 &
      -exec xterm -geometry 80x66+0+0 -name login
      -
      -
      - -

      All of those “if” blocks are there to merge in various configuration -settings from other files. The interesting part of the file is toward the end, where -various programs are run. This X session will begin with the twm(1) window manager, a clock, and three terminals. Note the exec before the last xterm. What that does -is replace the currently running shell (the one that's executing this xinitrc script) with that xterm(1) -command. When the user quits that xterm, the X session will -end.

      - -

      To customize your X startup, copy the default /var/X11R6/lib/xinit/xinitrc to ~/.xinitrc and edit it, replacing those program lines with whatever -you like. The end of mine is simply:

      - - - - - -
      -
      -# Start the window manager:
      -exec startkde
      -
      -
      - -

      Note that there are several xinitrc.* files in /var/X11R6/lib/xinit that correspond to various window managers and -GUIs. You can use any of those, if you like.

      -
      - -
      -
      -

      6.4 -xwmconfig

      - -

      For years, Unix was used almost exclusively as the operating system for servers, with -the exception of high-powered professional workstations. Only the technically inclined -were likely to use a Unix-like operating system, and the user interface reflected this -fact. GUIs tended to be fairly bare-bones, designed to run a few necessarily graphical -applications like CAD programs and image renderers. Most file and system management was -conducted at the command line. Various vendors (Sun Microsystems, Silicon Graphics, etc) -were selling workstations with an attempt to provide a cohesive “look and -feel”, but the wide variety of GUI toolkits in use by developers led inevitably to -the dissolution of the desktop's uniformity. A scrollbar might not look the same in two -different applications. Menus might appear in different places. Programs would have -different buttons and checkboxes. Colors ranged widely, and were generally hard-coded in -each toolkit. As long as the users were primarily technical professionals, none of this -mattered much.

      - -

      With the advent of free Unix-like operating systems and the growing number and variety -of graphical applications, X has recently gained a wide desktop user base. Most users, of -course, are accustomed to the consistent look and feel provided by Microsoft's Windows or -Apple's MacOS; the lack of such consistency in X-based applications became a barrier to -its wider acceptance. In response, two open source projects have been undertaken: The K -Desktop Environment, or KDE, and the GNU Network Object Model Environment, known as -GNOME. Each has a wide variety of applications, from taskbars and file managers to games -and office suites, written with the same GUI toolkit and tightly integrated to provide a -uniform, consistent desktop.

      - -

      The differences in KDE and GNOME are generally fairly subtle. They each look different -from the other, because each uses a different GUI toolkit. KDE is based on the Qt library -from Troll Tech AS, while GNOME uses GTK, a toolkit originally developed for The GNU -Image Manipulation Program (or The GIMP, for short). As separate projects, KDE and GNOME -each have their own designers and programmers, with different development styles and -philosophies. The result in each case, however, has been fundamentally the same: a -consistent, tightly integrated desktop environment and application collection. The -functionality, usability, and sheer prettiness of both KDE and GNOME rival anything -available on other operating systems.

      - -

      The best part, though, is that these advanced desktops are free. This means you can -have either or both (yes, at the same time). The choice is yours.

      - -

      In addition to the GNOME and KDE desktops, Slackware includes a large collection of -window managers. Some are designed to emulate other operating systems, some for -customization, others for speed. There's quite a variety. Of course you can install as -many as you want, play with them all, and decide which you like the most.

      - -

      To make desktop selection easy, Slackware also includes a program called xwmconfig that can be used to select a desktop or window manager. It -is run like so:

      - - - - - -
      -
      -% xwmconfig
      -
      -
      - -
      -

      Figure 6-5. Desktop Configuration with xorgconfig

      - -

      -
      - -

      You'll be given a list of all the desktops and window managers installed. Just select -the one you want from the list. Each user on your system will need to run this program, -since different users can use different desktops, and not everyone will want the default -one you selected at installation.

      - -

      Then just start up X, and you're good to go.

      -
      - -
      -
      -

      6.5 xdm

      - -

      As Linux becomes more and more useful as a desktop operating system, many users find -it desirable for the machine to boot straight into a graphical environment. For this, you -will need to tell Slackware to boot straight into X, and assign a graphical login -manager. Slackware ships with three graphical login tools, xdm(1), kdm, and gdm(1).

      - -

      xdm is the graphical login manager shipped with the X.org -system. It's ubiquitous, but not as fully features as alternatives. kdm is the graphical login manager shipped with KDE, The K Desktop -Environment. Finally, gdm is the login manager shipped with -GNOME. Any of the choices will allow you to log in as any user, and choose what desktop -you wish to use.

      - -

      Unfortunately, Slackware doesn't include a nice program like xwmconfig for choosing what login manager to use, so if all three -are installed you may have to do some editing to choose your preference. But first, we'll -discuss how to boot into a graphical environment.

      - -

      In order to start X at boot, you need to boot into run-level 4. Run-levels are just a -way of telling init(8) to do something different when it starts -the OS. We do this by editing the config file for init, /etc/inittab.

      - - - - - -
      -
      -# These are the default runlevels in Slackware:
      -#   0 = halt
      -#   1 = single user mode
      -#   2 = unused (but configured the same as runlevel 3)
      -#   3 = multiuser mode (default Slackware runlevel)
      -#   4 = X11 with KDM/GDM/XDM (session managers)
      -#   5 = unused (but configured the same as runlevel 3)
      -#   6 = reboot
      -
      -# Default runlevel. (Do not set to 0 or 6)
      -id:3:initdefault:
      -
      -
      - -

      In order to make Slackware boot to a graphical environment, we just change the 3 to a -4.

      - - - - - -
      -
      -  # Default runlevel. (Do not set to 0 or 6)
      -  id:4:initdefault:
      -
      -
      - -

      Now Slackware will boot into runlevel 4 and execute /etc/rc.d/rc.4. This file starts up X and calls whatever login -manager you've chosen. So, how do we choose login managers? There are a few ways to do -this, and I'll explain them after we look at rc.4.

      - - - - - -
      -
      -  # Try to use GNOME's gdm session manager:
      -  if [ -x /usr/bin/gdm ]; then
      -    exec /usr/bin/gdm -nodaemon
      -  fi
      -
      -  # Not there?  OK, try to use KDE's kdm session manager:
      -  if [ -x /opt/kde/bin/kdm ]; then
      -    exec /opt/kde/bin/kdm -nodaemon
      -  fi
      -
      -  # If all you have is XDM, I guess it will have to do:
      -  if [ -x /usr/X11R6/bin/xdm ]; then
      -    exec /usr/X11R6/bin/xdm -nodaemon
      -  fi
      -
      -
      - -

      As you can see here, rc.4 first checks to see if gdm is executable, and if so runs it. Second on the list is kdm, and finally xdm. One way of choosing a -login manager is to simply remove the ones you don't wish to use using removepkg. You can find out more about removepkg in Chapter 18.

      - -

      Optionally, you can remove the executable permission from those files that you don't -want to use. We discuss chmod in Chapter 9.

      - - - - - -
      -
      -# chmod -x /usr/bin/gdm
      -
      -
      - -

      Finally, you can just comment out the lines for the login manager you don't want to -use.

      - - - - - -
      -
      -  # Try to use GNOME's gdm session manager:
      -  # if [ -x /usr/bin/gdm ]; then
      -  #   exec /usr/bin/gdm -nodaemon
      -  # fi
      -
      -  # Not there?  OK, try to use KDE's kdm session manager:
      -  if [ -x /opt/kde/bin/kdm ]; then
      -    exec /opt/kde/bin/kdm -nodaemon
      -  fi
      -
      -  # If all you have is XDM, I guess it will have to do:
      -  if [ -x /usr/X11R6/bin/xdm ]; then
      -    exec /usr/X11R6/bin/xdm -nodaemon
      -  fi
      -
      -
      - -

      Any lines preceded by the hash mark (#) are considered -comments and the shell silently passes them. Thus, even if gdm -is installed and executable, the shell (in this case bash) won't -bother checking for it.

      -
      -
      - -
      -
      -

      Chapter 7 Booting

      - -

      The process of booting your Linux system can sometimes be easy and sometimes be -difficult. Many users install Slackware on their computer and that's it. They just turn -it on and it's ready to use. Othertimes, simply booting the machine can be a chore. For -most users, LILO works best. Slackware includes LILO and Loadlin for booting Slackware -Linux. LILO will work from a hard drive partition, a hard drive's master boot record, or -a floppy disk, making it a very versatile tool. Loadlin works from a DOS command line, -killing DOS and invoking Linux.

      - -

      Another popular utility for booting Linux is GRUB. GRUB is not included or officially -supported by Slackware. Slackware holds to the “tried and true” standard for -what gets included inside the distribution. While GRUB works well and includes some -features that LILO does not, LILO handles all the essential tasks of a boot loader -reliably with a proven track record. Being younger, GRUB hasn't quite lived up to that -legacy yet. As it is not included with Slackware, we do not discuss it here. If you wish -to use GRUB (perhaps it came with another Linux OS and you want to use it to dual-boot) -consult GRUB's documentation.

      - -

      This section covers using LILO and Loadlin, the two booters included with Slackware. -It also explains some typical dual booting scenarios and how you could go about setting -it up.

      - -
      -
      -

      7.1 LILO

      - -

      The Linux Loader, or LILO, is the most popular booter in use on Linux systems. It is -quite configurable and can easily be used to boot other operating systems.

      - -

      Slackware Linux comes with a menu-driven configuration utility called liloconfig. This program is first run during the setup process, but -you can invoke it later by typing liloconfig at the prompt.

      - -

      LILO reads its settings from the /etc/lilo.conf(5) file. It -is not read each time you boot up, but instead is read each time you install LILO. LILO -must be reinstalled to the boot sector each time you make a configuration change. Many -LILO errors come from making changes to the lilo.conf file, but -failing to re-run lilo to install these changes. liloconfig will -help you build the configuration file so that you can install LILO for your system. If -you prefer to edit /etc/lilo.conf by hand, then reinstalling -LILO just involves typing /sbin/lilo (as root) at the prompt.

      - -

      When you first invoke liloconfig, it will look like this:

      - -
      -

      Figure 7-1. liloconfig

      - -

      -
      - -

      If this is your first time setting up LILO, you should pick simple. Otherwise, you -might find expert to be faster if you are familiar with LILO and Linux. Selecting simple -will begin the LILO configuration.

      - -

      If kernel frame buffer support is compiled into your kernel, liloconfig will ask which video resolution you would like to use. -This is the resolution that is also used by the XFree86 frame buffer server. If you do -not want the console to run in a special video mode, selecting normal will keep the -standard 80x25 text mode in use.

      - -

      The next part of the LILO configuration is selecting where you want it installed. This -is probably the most important step. The list below explains the installation places:

      - -
      -
      -
      Root
      - -
      -

      This option installs LILO to the beginning of your Linux root partition. This is the -safest option if you have other operating systems on your computer. It ensures that any -other booters are not overwritten. The disadvantage is that LILO will only load from here -if your Linux drive is the first drive on your system. This is why many people chose to -create a very small /boot partition as the first drive on their -system. This allows the kernel and LILO to be installed at the beginning of the drive -where LILO can find them. Previous versions of LILO contained an infamous flaw known as -the “1024 cylinder limit”. LILO was unable to boot kernels on partitions past -the 1024th cylinder. Recent editions of LILO have eliminated this problem.

      -
      - -
      Floppy
      - -
      -

      This method is even safer than the previous one. It creates a boot floppy that you can -use to boot your Linux system. This keeps the booter off the hard disk entirely, so you -only boot this floppy when you want to use Slackware. The flaws with this method are -obvious. Floppies are notoriously fickle, prone to failures. Secondly, the boot loader is -no longer self-contained within the computer. If you loose your floppy disk, you'll have -to make another to boot your system.

      -
      - -
      MBR
      - -
      -

      You will want to use this method if Slackware is the only operating system on your -computer, or if you will be using LILO to choose between multiple operating systems on -your computer. This is the most preferred method for installing LILO and will work with -almost any computer system.

      - -
      - - - - - -
      Warning -

      This option will overwrite any other booter you have in the MBR.

      -
      -
      -
      -
      -
      - -

      After selecting the installation location, liloconfig will -write the configuration file and install LILO. That's it. If you select the expert mode -you will receive a special menu. This menu allows you to tweak the /etc/lilo.conf file, add other operating systems to your boot menu, -and set LILO to pass special kernel parameters at boot time. The expert menu looks like -this:

      - -
      -

      Figure 7-2. liloconfig Expert Menu

      - -

      -
      - -

      Whatever your system configuration is, setting up a working boot loader is easy. liloconfig makes setting it up a cinch.

      -
      - -
      -
      -

      7.2 LOADLIN

      - -

      The other booting option that comes with Slackware Linux is LOADLIN. LOADLIN is a DOS -executable that can be used to start Linux from a running DOS system. It requires the -Linux kernel to be on the DOS partition so that LOADLIN can load it and properly boot the -system.

      - -

      During the installation process, LOADLIN will be copied to root's home directory as a -.ZIP file. There is no automatic setup process for LOADLIN. You will need to copy the -Linux kernel (typically /boot/vmlinuz) and the LOADLIN file -from root's home directory to the DOS partition.

      - -

      LOADLIN is useful if you would like to make a boot menu on your DOS partition. A menu -could be added to your AUTOEXEC.BAT file that would allow you -to pick between Linux or DOS. A choice of Linux would run LOADLIN, thus booting your -Slackware system. This AUTOEXEC.BAT file under Windows 95 will -provide a sufficient boot menu:

      - - - - - -
      -
      -   @ECHO OFF
      -   SET PROMPT=$P$G
      -   SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\
      -   CLS
      -   ECHO Please Select Your Operating System:
      -   ECHO.
      -   ECHO [1] Slackware Linux
      -   ECHO [2] Windows 95
      -   ECHO.
      -   CHOICE /C:12 "Selection? -> "
      -   IF ERRORLEVEL 2 GOTO WIN
      -   IF ERRORLEVEL 1 GOTO LINUX
      -   :WIN
      -   CLS
      -   ECHO Starting Windows 95...
      -   WIN
      -   GOTO END
      -   :LINUX
      -   ECHO Starting Slackware Linux...
      -   CD \LINUX
      -   LOADLIN C:\LINUX\VMLINUZ ROOT=<root partition device> RO
      -   GOTO END
      -   :END
      -
      -
      - -

      You will want to specify your root partition as a Linux device name, like /dev/hda2 or something else. You can always use LOADLIN at the -command line. You simply use it in the same manner as it is in the example above. The -LOADLIN documentation comes with many examples on how to use it.

      -
      - -
      -
      -

      7.3 Dual Booting

      - -

      Many users set up their computers to boot Slackware Linux and another operating -system. We've described several typical dual boot scenarios below, in case you are having -difficulty setting up your system.

      - -
      -
      -

      7.3.1 -Windows

      - -

      Setting up a computer with both MS Windows and Linux is probably the most common dual -boot scenario. There are numerous ways you can setup the booting, but this section will -cover two.

      - -

      Often times when setting up a dual boot system, a person will devise a perfect plan -for where everything should go but mess up the installation order. It is very important -to understand that operating systems need to be installed in a certain order for a dual -boot setup to work. Linux always offers control over what, if anything, gets written to -the Master Boot Record. Therefore, it's always advisable to install Linux last. Windows -should be installed first, since it will always write its booter to the Master Boot -Record, overwriting any entry Linux may have put there.

      - -
      -
      -

      7.3.1.1 Using LILO

      - -

      Most people will want to use LILO to chose between Linux and Windows. As stated above, -you should install Windows first, then Linux.

      - -

      Let's say you have a 40GB IDE hard disk as the only drive in your system. Let's also -say that you want to give half of that space to Windows and half of that space to Linux. -This will present a problem when trying to boot Linux.

      - - - - - -
      -
      -   20GB   Windows boot (C:)
      -   1GB   Linux root (/)
      -   19GB  Linux /usr (/usr)
      -
      -
      - -

      You would also want to set aside an adequate amount of space for a Linux swap -partition. The unwritten rule is to use twice the amount of RAM you have in disk space. A -64MB system would have 128MB of swap, and so on. Adequate swap space is the discussion of -many flames on IRC and Usenet. There's no truly “right” way to do it, but -sticking with the rule above should be sufficient.

      - -

      With your partitions laid out, you should proceed to install Windows. After that is -set up and working, you should install Linux. The LILO installation needs special -attention. You will want to select the expert mode for installing LILO.

      - -

      Begin a new LILO configuration. You will want to install it to Master Boot Record so -that it can be used to choose between the two operating systems. From the menu, add your -Linux partition and add your Windows (or DOS) partition. Once that's complete, you can -install LILO.

      - -

      Reboot the computer. LILO should load and will display a menu letting you select -between the operating systems you have installed. Select the name of the OS you wish to -load (these names were selected when you setup LILO).

      - -

      LILO is quite a configurable boot loader. It's not just limited to booting Linux or -DOS. It can boot just about anything. The man pages for lilo(8) -and lilo.conf(5) provide more detailed information.

      - -

      What if LILO doesn't work? There are instances where LILO just won't work on a -particular machine. Fortunately, there is another way to dual boot Linux and Windows.

      -
      - -
      -
      -

      7.3.1.2 Using LOADLIN

      - -

      This method can be used if LILO doesn't work on your system, or if you just don't want -to set up LILO. This method is also ideal for the user that reinstalls Windows often. -Each time you reinstall Windows, it will overwrite the Master Boot Record, thus -destroying any LILO installation. With LOADLIN, you are not subject to that problem. The -biggest disadvantage is that you can only use LOADLIN to boot Linux.

      - -

      With LOADLIN, you can install the operating systems in any order desired. Be careful -about installing things to the Master Boot Record, you do not want to do that. LOADLIN -relies on the Windows partition being bootable. So during the Slackware installation, -make sure you skip the LILO setup.

      - -

      After installing the operating systems, copy the loadlinX.zip (where X is a version -number, such as 16a) file from root's home directory to your -Windows partition. Also copy your kernel image to the Windows partition. You will need to -be in Linux for this to work. This example shows how to do this:

      - - - - - -
      -
      -# mkdir /win
      -# mount -t vfat /dev/hda1 /win
      -# mkdir /win/linux
      -# cd /root
      -# cp loadlin* /win/linux
      -# cp /boot/vmlinuz /win/linux
      -# cd /win/linuz
      -# unzip loadlin16a.zip
      -
      -
      - -

      That will create a C:\LINUX directory on your Windows -partition (assuming it's /dev/hda1) and copy over the necessary -stuff for LOADLIN. After doing this, you will need to reboot into Windows to setup a boot -menu.

      - -

      Once in Windows, get to a DOS prompt. First, we need to make sure the system is set to -not boot into the graphical interface.

      - - - - - -
      -
      -C:\> cd \
      -C:\> attrib -r -a -s -h MSDOS.SYS
      -C:\> edit MSDOS.SYS
      -
      -
      - -

      Add this line to the file:

      - - - - - -
      -
      -BootGUI=0
      -
      -
      - -

      Now save the file and exit the editor. Now edit C:\AUTOEXEC.BAT so we can add a boot menu. The following provides -an example of what a boot menu block in AUTOEXEC.BAT would look -like:

      - - - - - -
      -
      -cls
      -echo System Boot Menu
      -echo.
      -echo 1 - Linux
      -echo 2 - Windows
      -echo.
      -choice /c:12 "Selection? -> "
      -if errorlevel 2 goto WIN
      -if errorlevel 1 goto LINUX
      -:LINUX
      -cls
      -echo "Starting Linux..."
      -cd \linux
      -loadlin c:\linux\vmlinuz root=/dev/hda2 ro
      -goto END
      -:WIN
      -cls
      -echo "Starting Windows..."
      -win
      -goto END
      -:END
      -
      -
      - -

      The key line is the one that runs LOADLIN. We tell it the kernel to load, the Linux -root partition, and that we want it mounted read-only initially.

      - -

      The tools for these two methods are provided with Slackware Linux. There are numerous -other booters on the market, but these should work for most dual boot setups.

      -
      - -
      -
      -

      7.3.1.3 Deprecated Windows NT -Hack

      - -

      This is the least common dual booting situation. In the days of old, LILO was unable -to boot Windows NT, requiring Linux users to hack NTLDR, which presented several more -problems than dual booting between Windows 9x and Linux. Understand that the following -instructions are deprecated. LILO has been able to boot Windows NT/2000/XP/2003 for many -years now. If you are using a legacy machine though, you may need to use just such a -hack.

      - -
        -
      1. -

        Install Windows NT

        -
      2. - -
      3. -

        Install Linux, making sure LILO is installed to the superblock of the Linux -partition

        -
      4. - -
      5. -

        Get the first 512 bytes of the Linux root partition and store it on the Windows NT -partition

        -
      6. - -
      7. -

        Edit C:\BOOT.INI under Windows NT to add a Linux option

        -
      8. -
      - -

      Installing Windows NT should be fairly straightforward, as should installing Linux. -From there, it gets a little more tricky. Grabbing the first 512 bytes of the Linux -partition is easier than it sounds. You will need to be in Linux to accomplish this. -Assuming your Linux partition is /dev/hda2, issue this -command:

      - - - - - -
      -
      -# dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512
      -
      -
      - -

      That's it. Now you need to copy bootsect.lnx to the Windows NT partition. Here's where -we run into another problem. Linux does not have stable write support for the NTFS -filesystem. If you installed Windows NT and formatted your drive as NTFS, you will need -to copy this file to a FAT floppy and then read from it under Windows NT. If you -formatted the Windows NT drive as FAT, you can simply mount it under Linux and copy the -file over. Either way, you will want to get /tmp/bootsect.lnx -from the Linux drive to C:\BOOTSECT.LNX on the Windows NT -drive.

      - -

      The last step is adding a menu option to the Windows NT boot menu. Under Windows NT -open a command prompt.

      - - - - - -
      -
      -C:\WINNT> cd \
      -C:\> attrib -r -a -s -h boot.ini
      -C:\> edit boot.ini
      -
      -
      - -

      Add this line to the end of the file:

      - - - - - -
      -
      -C:\bootsect.lnx="Slackware Linux"
      -
      -
      - -

      Save the changes and exit the editor. When you reboot Windows NT, you will have a -Linux option on the menu. Choosing it will boot into Linux.

      -
      -
      - -
      -
      -

      7.3.2 -Linux

      - -

      Yes, people really do this. This is definitely the easiest dual boot scenario. You can -simply use LILO and add more entries to the /etc/lilo.conf -file. That's all there is to it.

      -
      -
      -
      - -
      -
      -

      Chapter 8 The Shell

      - -

      In a graphical environment, the interface is provided by a program that creates -windows, scrollbars, menus, etc. In a commandline environment, the user interface is -provided by a shell, which interprets commands and generally makes things useable. -Immediately after logging in (which is covered in this chapter), users are put into a -shell and allowed to go about their business. This chapter serves as an introduction to -the shell, and to the most common shell among Linux users-- the Bourne Again Shell -(bash). For more detailed information on anything in this chapter, check out the bash(1) man page.

      - -
      -
      -

      8.1 Users

      - -
      -

      8.1.1 Logging In

      - -

      So you've booted, and you're looking at something that looks like this:

      - - - - - -
      -
      -Welcome to Linux 2.4.18
      -Last login: Wed Jan   1 15:59:14 -0500 2005 on tty6.
      -darkstar login:
      -
      -
      - -

      Hmm.. nobody said anything about a login. And what's a darkstar? Don't worry; you -probably didn't accidentally fire up a hyperspace comm-link to the Empire's artificial -moon. (I'm afraid the hyperspace comm-link protocol isn't currently supported by the -Linux kernel. Maybe the 2.8 kernel branch will at last provide this oft looked-for -support.) No, darkstar is just the name of one of our computers, and its name gets -stamped on as the default. If you specified a name for your computer during setup, you -should see it instead of darkstar.

      - -

      As for the login... If this is your first time, you'll want to log in as root. You'll be prompted for a password; if you set one during the -setup process, that's what it's looking for. If not, just hit enter. That's it-- you're -in!

      -
      - -
      -
      -

      8.1.2 Root: The Superuser

      - -

      Okay, who or what is root? And what's it doing with an account on your system?

      - -

      Well, in the world of Unix and similar operating systems (like Linux), there are users -and then there are users. We'll go into this in more detail later, but the important -thing to know now is that root is the user above all users; root is all-powerful and all-knowing, and nobody disobeys root. It just isn't -allowed. root is what we call a “superuser”, and -rightly so. And best of all, root is you.

      - -

      Cool, huh?

      - -

      If you're not sure: yes, that's very cool. The catch is, though, that root is -inherently allowed to break anything it so desires. You might want to skip ahead to Section 12.1.1 and see about adding a user; -then login as that user and work from there. The traditional wisdom is that it's best to -only become the superuser when absolutely necessary, so as to minimize the possibility of -accidentally breaking something.

      - -

      By the way, if you decide you want to be root while you're logged in as someone else, -no problem. Just use the su(1) command. You'll be asked for root's password and then it will make you root until you exit or logout. You can also become any other user using su, provided you know that user's password: su -logan, for instance, would make you me.

      - -
      - - - - - -
      Note -

      root is allowed to su to any user, without requiring their -password.

      -
      -
      -
      -
      - -
      -
      -

      8.2 The Command -Line

      - -
      -

      8.2.1 Running Programs

      - -

      It's hard to get much accomplished without running a program; you might be able to -prop something up with your computer or hold a door open, and some will make the most -lovely humming noise when running, but that's really about it. And I think we can all -agree that its use as a humming doorstop isn't what brought the personal computer the -popularity it now enjoys.

      - -

      So, remember how almost everything in Linux is a file? Well, that goes for programs, -too. Every command you run (that isn't built into the shell) resides as a file somewhere. -You run a program simply by specifying the full path to it.

      - -

      For instance, remember that su command from the last section? -Well, it's actually in the /bin directory: /bin/su would run it nicely.

      - -

      So why, then, does just typing su work? After all, you didn't -say it was in /bin. It could just as easily have been in /usr/local/share, right? How did it know? The answer to that lies in the PATH environment variable; most shells have either PATH or something very much like PATH. It -basically contains a list of directories to look in for programs you try to run. So when -you ran su, your shell ran through its list of directories, -checking each one for an executable file called su that it could -run; the first one it came to, it ran. This happens whenever you run a program without -specifying a full path to it; if you get a ““Command -not found”” error, that only means that the program you tried to run -isn't in your PATH. (Of course, this would be true if the program -doesn't exist at all...) We'll discuss environment variables in more depth in Section 8.3.1.

      - -

      Remember also that “.” is shorthand for the -current directory, so if you happened to be in /bin, ./su would have worked as an explicit full path.

      -
      - -
      -
      -

      8.2.2 Wildcard Matching

      - -

      Nearly every shell recognizes some characters as being substitutes or abbreviations -that mean anything goes here. Such characters are aptly named wildcards; the most common -are * and ?. By convention, ? usually matches any single character. For instance, suppose -you're in a directory with three files: ex1.txt, ex2.txt, and ex3.txt. You want to copy -all of those files (using the cp command we cover in Section 10.5.1) to another directory, say /tmp. Well, typing cp ex1.txt ex2.txt ex3.txt -/tmp is entirely too much work. It's much easier to type cp -ex?.txt /tmp; the ? will match each of the characters -“1”, “2”, and “3”, and each in turn will be -substituted in.

      - -

      What's that you say? That's still too much work? You're right. It's appalling; we have -labor laws to protect us from that sort of thing. Fortunately, we also have *. As was already mentioned, * matches -“any number of characters”, including 0. So if those three files were the -only ones in the directory, we could have simply said cp * /tmp -and gotten them all in one fell swoop. Suppose, though, that there is also a file called -ex.txt and one called hejaz.txt. We -want to copy ex.txt but not hejaz.txt; cp ex* /tmp will do that for -us.

      - -

      cp ex?.txt /tmp, would, of course, only get our original -three files; there's no character in ex.txt to match that ?, so it would be left out.

      - -

      Another common wildcard is the bracket pair [ ]. Any -characters inside the brackets will be substituted in place of the [ -] to find matches. Sound confusing? It's not too bad. Suppose for instance, we have -a directory containing the following 8 files: a1, a2, a3, a4, aA, aB, aC, and -aD . We want to only find the files ending in numbers; [ ] will do this for us.

      - - - - - -
      -
      -% ls a[1-4]
      -a1 a2 a3 a4
      -
      -
      - -

      But what we really want is just a1, a2, and a4? In the previous example we -used - to mean all values between 1 and 4. We can also separate individual entries with -commas.

      - - - - - -
      -
      -% ls a[1,2,4]
      -a1 a2 a4
      -
      -
      - -

      I know what you're thinking now, “Well what about letters?” Linux is -case-sensitive, meaning that a and A are different characters and are only related in your mind. -Capitals always come before lowercase letters, so A and B come before a and b. Continuing with our earlier example, if we wanted files a1, and A1, we can find these quickly -with [ ].

      - - - - - -
      -
      -% ls [A,a]1
      -A1 a1
      -
      -
      - -

      Note, that if we had included a hyphen instead of a comma, we would have gotten -incorrect results.

      - - - - - -
      -
      -% ls [A-a]1
      -A1 B1 C1 D1 a1
      -
      -
      - -

      You can also combine hyphen and comma strings.

      - - - - - -
      -
      -% ls [A,a-d]
      -A1 a1 b1 c1 d1
      -
      -
      -
      - -
      -
      -

      8.2.3 Input/Output Redirection and Piping

      - -

      (Here comes something cool.)

      - - - - - -
      -
      -% ps > blargh
      -
      -
      - -

      Y'know what that is? That's me running ps to see which -processes are running; ps is covered in Section 11.3. That's not the cool part. The cool part is -> blargh, which means, roughly, take the output from ps and write it to a file called blargh. -But wait, it gets cooler.

      - - - - - -
      -
      -% ps | less
      -
      -
      - -

      That one takes the output from ps and pipes it through less, so I can scroll through it at my leisure.

      - - - - - -
      -
      -% ps >> blargh
      -
      -
      - -

      This is the third most commonly used redirector; it does the same thing as -“>”, except that “>>” will append output from ps to the file blargh, if said file -exists. If not, just like “>”, it will be created. (“>” -will obliterate the current contents of blargh.)

      - -

      There is also a “<” operator, which means take your input from the -following, but it's not used nearly so often.

      - - - - - -
      -
      -% fromdos < dosfile.txt > unixfile.txt
      -
      -
      - -

      Redirection gets really fun when you start piling it up:

      - - - - - -
      -
      -% ps | tac >> blargh
      -
      -
      - -

      That will run ps, reverse the lines of its output, and append -those to the file blargh. You can stack as many of these up as -you want; just be careful to remember that they get interpreted from left to right.

      - -

      See the bash(1) man page for more detailed information on -redirection.

      -
      -
      - -
      -
      -

      8.3 The Bourne Again Shell -(bash)

      - -
      -

      8.3.1 -Environment Variables

      - -

      A Linux system is a complex beast, and there's a lot to keep track of, a lot of little -details that come into play in your normal interactions with various programs (some of -which you might not even need to be aware of). Nobody wants to pass a bunch of options to -every program that gets run, telling it what kind of terminal is being used, the hostname -of the computer, how their prompt should look...

      - -

      So as a coping mechanism, users have what's called an environment. The environment -defines the conditions in which programs run, and some of this definition is variable; -the user can alter and play with it, as is only right in a Linux system. Pretty much any -shell will have environment variables (if not, it's probably not a very useable shell). -Here we will give an overview of the commands bash provides for manipulating its -environment variables.

      - -

      set by itself will show you all of the environment variables -that are currently defined, as well as their values. Like most bash built-ins, it can also do several other things (with -parameters); we'll leave it to the bash(1) man page to cover -that, though. Example 8-1 shows an excerpt from -a set command run on one of the author's computers. Notice in -this example the PATH variable that was discussed earlier. -Programs in any of those directories can be run simply by typing the base filename.

      - -
      -

      Example 8-1. Listing Environment Variables with set

      - - - - - -
      -
      -% set
      -PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
      -/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
      -/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
      -PIPESTATUS=([0]="0")
      -PPID=4978
      -PS1='\h:\w\$ '
      -PS2='> '
      -PS4='+ '
      -PWD=/home/logan
      -QTDIR=/usr/local/lib/qt
      -REMOTEHOST=ninja.tdn
      -SHELL=/bin/bash
      -
      -
      -
      - - - - - -
      -
      -% unset VARIABLE
      -
      -
      - -

      unset will remove any variables that you give it, wiping out -both the variable and its value; bash will forget that variable -ever existed. (Don't worry. Unless it's something you explicitly defined in that shell -session, it'll probably get redefined in any other session.)

      - - - - - -
      -
      -% export VARIABLE=some_value
      -
      -
      - -

      Now, export is truly handy. Using it, you give the -environment variable VARIABLE the value “some_value”; if VARIABLE didn't exist, -it does now. If VARIABLE already had a value, well, it's gone. -That's not so good, if you're just trying to add a directory to your PATH. In that case, you probably want to do something like this:

      - - - - - -
      -
      -% export PATH=$PATH:/some/new/directory
      -
      -
      - -

      Note the use of $PATH there: when you want bash to interpret a variable (replace it with its value), tack a -$ onto the beginning of the variable's name. For instance, echo $PATH will echo the value of PATH, in my -case:

      - - - - - -
      -
      -% echo $PATH
      -/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
      -/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
      -/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
      -
      -
      -
      - -
      -
      -

      8.3.2 Tab -Completion

      - -

      (Here comes something cool again.)

      - -
        -
      1. -

        A commandline interface means lots of typing.

        -
      2. - -
      3. -

        Typing is work.

        -
      4. - -
      5. -

        Nobody likes work.

        -
      6. -
      - -

      From 3 and 2, we can determine that (4) nobody likes typing. Fortunately, bash saves us from (5) (nobody likes a commandline interface).

      - -

      How does bash accomplish this wonderful feat, you ask? In -addition to the wildcard expansion we discussed before, bash -features tab completion.

      - -

      Tab completion works something like this: You're typing the name of a file. Maybe it's -in your PATH, maybe you're typing it out explicitly. All you have -to do is type enough of the filename to uniquely identify it. Then hit the tab key. bash will figure out what you want and finish typing it for you!

      - -

      Example time. /usr/src contains two subdirectories: /usr/src/linux and /usr/src/sendmail. I -want to see what's in /usr/src/linux. So I just type ls /usr/src/l, hit the TAB key, and bash gives me ls /usr/src/linux.

      - -

      Now, suppose there are two directories /usr/src/linux and -/usr/src/linux-old; If I type /usr/src/l and hit TAB, bash will fill in as much as it can, and I'll get /usr/src/linux. I can stop there, or I can hit TAB again, and bash will show a list of -directories that match what I've typed so far.

      - -

      Hence, less typing (and hence, people can like commandline interfaces). I told you it -was cool.

      -
      -
      - -
      -
      -

      8.4 Virtual Terminals

      - -

      So you're in the middle of working on something and you decide you need to do -something else. You could just drop what you're doing and switch tasks, but this is a -multi-user system, right? And you can log in as many times simultaneously as you want, -right? So why should you have to do one thing at a time?

      - -

      You don't. We can't all have multiple keyboards, mice, and monitors for one machine; -chances are most of us don't want them. Clearly, hardware isn't the solution. That leaves -software, and Linux steps up on this one, providing “virtual terminals”, or -“VTs”.

      - -

      By pressing Alt and a function key, you can switch -between virtual terminals; each function key corresponds to one. Slackware has logins on -6 VTs by default. Alt+F2 will take you to the -second one, Alt+F3 to the third, etc.

      - -

      The rest of the function keys are reserved for X sessions. Each X session uses its own -VT, beginning with the seventh (Alt+F7) and -going up. When in X, the Alt+Function key -combination is replaced with Ctrl+Alt+Function; so if you are in X and want to get back to a text login -(without exiting your X session), Ctrl+Alt+F3 will take you to the third. (Alt+F7 will take you back, assuming you're using the first X session.)

      - -
      -
      -

      8.4.1 Screen

      - -

      But what about situations where there are no virtual terminals? What then? -Fortunately, slackware includes a beautiful screen manager aptly named screen. screen is a terminal emulator that -has virtual terminal like capabilities. Executing screen flashes -a brief introduction, then dumps to a terminal. Unlike the standard virtual terminals, -screen has its own commands. All screen -commands are prefixed with a Crtl+A -keystroke. For example, Ctrl+A+C will create a new terminal session. Ctrl+A+N will switch to the next terminal. Ctrl+A+P switches to the -previous terminal.

      - -

      screen also supports detaching and re-attaching to screen sessions which is particularly useful for remote sessions via -ssh and telnet, (more on those later). -Ctrl+A+D will detach -from the currently running screen. Executing screen -r will list -all currently running screen sessions you may reattach to.

      - - - - - -
      -
      -% screen -r
      -There are several suitable screens on:
      -     1212.pts-1.redtail      (Detached)
      -     1195.pts-1.redtail      (Detached)
      -     1225.pts-1.redtail      (Detached)
      -     17146.pts-1.sanctuary   (Dead ???)
      -Remove dead screens with 'screen -wipe'.
      -Type "screen [-d] -r [pid.]tty.host" to resume one of them. 
      -
      -
      - -

      Running screen -r 1212 would reattach to the first screen -listed. I mentioned earlier how useful this was for remote sessions. If I were to login -to a remote slackware server via ssh, and my connection was -severed by some chance occurrence such as a local power failure, whatever I was doing at -that moment would instantly perish, which can be a horrible thing for your server. Using -screen prevents this by detaching my session if my connection is -dropped. Once my connection is restored, I can reattach to my screen session and resume -right where I left off.

      -
      -
      -
      - -
      -
      -

      Chapter 9 Filesystem -Structure

      - -

      We have already discussed the directory structure in Slackware Linux. By this point, -you should be able to find files and directories that you need. But there is more to the -filesystem than just the directory structure.

      - -

      Linux is a multiuser operating system. Every aspect of the system is multiuser, even -the filesystem. The system stores information like who owns a file and who can read it. -There are other unique parts about the filesystems, such as links and NFS mounts. This -section explains these, as well as the multiuser aspects of the filesystem.

      - -
      -
      -

      9.1 Ownership

      - -

      The filesystem stores ownership information for each file and directory on the system. -This includes what user and group own a particular file. The easiest way to see this -information is with the ls command:

      - - - - - -
      -
      -% ls -l /usr/bin/wc
      --rwxr-xr-x   1 root     bin    7368 Jul 30  1999 /usr/bin/wc
      -
      -
      - -

      We are interested in the third and fourth columns. These contain the username and -group name that owns this file. We see that the user “root” and the group “bin” own this file.

      - -

      We can easily change the file owners with the chown(1) (which -means “change owner”) and chgrp(1) (which means -“change group”) commands. To change the file owner to daemon, we would use chown:

      - - - - - -
      -
      -# chown daemon /usr/bin/wc
      -
      -
      - -

      To change the group owner to “root”, we would -use chgrp:

      - - - - - -
      -
      -# chgrp root /usr/bin/wc
      -
      -
      - -

      We can also use chown to specify the user and group owners -for a file:

      - - - - - -
      -
      -# chown daemon:root /usr/bin/wc
      -
      -
      - -

      In the above example, the user could have used a period instead of a colon. The result -would have been the same; however, the colon is considered better form. Use of the period -is deprecated and may be removed from future versions of chown -to allow usernames with periods in them. These usernames tend to be very popular with -Windows Exchange Servers and are encountered most commonly in email addresses such as: -mr.jones@example.com. In slackware, administrators are advised -to stay away from such usernames because some scripts still use the period to indicate -the user and group of a file or directory. In our example, chmod -would interpret mr.jones as user “mr” and group -“jones”.

      - -

      File ownership is a very important part of using a Linux system, even if you are the -only user. You sometimes need to fix ownerships on files and device nodes.

      -
      - -
      -
      -

      9.2 Permissions

      - -

      Permissions are the other important part of the multiuser aspects of the filesystem. -With these, you can change who can read, write, and execute files.

      - -

      The permission information is stored as four octal digits, each specifying a different -set of permissions. There are owner permissions, group permissions, and world -permissions. The fourth octal digit is used to store special information such as set user -ID, set group ID, and the sticky bit. The octal values assigned to the permission modes -are (they also have letters associated with them that are displayed by programs such as -ls and can be used by chmod):

      - -
      -

      Table 9-1. Octal Permission Values

      - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Permission TypeOctal ValueLetter Value
      “sticky” bit1t
      set user ID4s
      set group ID2s
      read4r
      write2w
      execute1x
      -
      - -

      You add the octal values for each permission group. For example, if you want the group -permissions to be “read” and “write”, you would use -“6” in the group portion of the permission information.

      - -

      bash's default permissions are:

      - - - - - -
      -
      -% ls -l /bin/bash
      --rwxr-xr-x   1 root     bin  477692 Mar 21 19:57 /bin/bash
      -
      -
      - -

      The first dash would be replaced with a “d” if this was a directory. The -three permission groups (owner, group, and world) are displayed next. We see that the -owner has read, write, and execute permissions (rwx). The -group has only read and execute (r-x). And everyone else has -only read and execute (r-x).

      - -

      How would we set permissions on another file to resemble bash's? First, let's make an example file:

      - - - - - -
      -
      -% touch /tmp/example
      -% ls -l /tmp/example
      --rw-rw-r---  1 david    users    0 Apr 19 11:21 /tmp/example
      -
      -
      - -

      We will use chmod(1) (which means “change mode”) -to set the permissions on the example file. Add the octal numbers for the permissions you -want. For the owner to have read, write, and execute, we would have a value of 7. Read and execute would have 5. Run -those together and pass them to chmod like this:

      - - - - - -
      -
      -% chmod 755 /tmp/example
      -% ls -l /tmp/example
      --rwxr-xr-x   1 david    users    0 Apr 19 11:21 /tmp/example
      -
      -
      - -

      Now you may be thinking, “Why didn't it just create a file with those -permissions in the first place?” Well the answer is simple. bash includes a nice little built-in called umask. This is included with most Unix shells as well, and controls -what file permissions are assigned to newly created files. We discussed bash built-ins to some degree in Section 8.3.1. umask takes a -little getting used to. It works very similar to chmod, only in -reverse. You specify the octal values you do not wish to have present in newly created -files. The default umask value is 0022.

      - - - - - -
      -
      -% umask
      -0022
      -% umask 0077
      -% touch tempfile
      -% ls -l tempfile
      --rw--------  1 david    users    0 Apr 19 11:21 tempfile
      -
      -
      - -

      See the man page for bash for more information.

      - -

      To set special permissions with chmod, add the numbers -together and place them in the first column. For example, to make it set user ID and set -group ID, we use 6 as the first column:

      - - - - - -
      -
      -% chmod 6755 /tmp/example
      -% ls -l /tmp/example
      --rwsr-sr-x   1 david    users    0 Apr 19 11:21 /tmp/example
      -
      -
      - -

      If the octal values confuse you, you can use letters with chmod. The permission groups are represented as:

      - -
      - --- - - - - - - - - - - - - - - - - - - - - -
      Owneru
      Groupg
      Worldo
      All of the abovea
      -
      - -

      To do the above, we would have to use several command lines:

      - - - - - -
      -
      -% chmod a+rx /tmp/example
      -% chmod u+w /tmp/example
      -% chmod ug+s /tmp/example
      -
      -
      - -

      Some people prefer the letters over the numbers. Either way will result in the same -set of permissions.

      - -

      The octal format is often faster, and the one you see most often used in shell -scripts. Sometimes the letters are more powerful however. For example, there's no easy -way to change one group of permissions while preserving the other groups on files and -directories when using the octal format. This is trivial with the letters.

      - - - - - -
      -
      -% ls -l /tmp/
      --rwxr-xr-x   1 alan    users    0 Apr 19 11:21 /tmp/example0
      --rwxr-x---   1 alan    users    0 Apr 19 11:21 /tmp/example1
      -----r-xr-x   1 alan    users    0 Apr 19 11:21 /tmp/example2
      -% chmod g-rwx /tmp/example?
      --rwx---r-x   1 alan    users    0 Apr 19 11:21 /tmp/example0
      --rwx------   1 alan    users    0 Apr 19 11:21 /tmp/example1
      --------r-x   1 alan    users    0 Apr 19 11:21 /tmp/example2
      -
      -
      - -

      We mentioned set user ID and set group ID permissions in several places above. You may -be wondering what this is. Normally when you run a program, it is operating under your -user account. That is, it has all the permissions that you as a user have. The same is -true for the group. When you run a program, it executes under your current group. With -set user ID permissions, you can force the program to always run as the program owner -(such as “root”). Set group ID is the same, but for the group.

      - -

      Be careful with this, set user ID and set group ID programs can open major security -holes on your system. If you frequently set user ID programs that are owned by root, you are allowing anyone to run that program and run it as root. Since root has no restrictions on -the system, you can see how this would pose a major security problem. In short, it's not -bad to use set user ID and set group ID permissions, just use common sense.

      -
      - -
      -
      -

      9.3 Links

      - -

      Links are pointers between files. With links, you can have files exist in many -locations and be accessible by many names. There are two types of links: hard and -soft.

      - -

      Hard links are names for a particular file. They can only exist within a single -filesystem and are only removed when the real name is removed from the system. These are -useful in some cases, but many users find the soft link to be more versatile.

      - -

      The soft link, also called a symbolic link, can point to a file outside of its -filesystem. It is actually a small file containing the information it needs. You can add -and remove soft links without affecting the actual file. And since a symbolic link is -actually a small file containing its own information, they can even point at a directory. -It's rather common to have /var/tmp actually be a symbolic link -to /tmp for example.

      - -

      Links do not have their own set of permissions or ownerships, but instead reflect -those of the file they point to. Slackware uses mostly soft links. Here is a common -example:

      - - - - - -
      -
      -% ls -l /bin/sh
      -lrwxrwxrwx   1 root     root     4 Apr  6 12:34 /bin/sh -> bash
      -
      -
      - -

      The sh shell under Slackware is actually bash. Removing links is done using rm. The -ln command is used to create links. These commands will be -discussed in more depth in Chapter 10.

      - -

      It's very important to be careful about symlinks in particular. Once, I was working on -a machine that was consistently failing to back-up to tape each night. Two symlinks had -been made to directories beneath each other. The back-up software kept appending those -same directories to the tape until it was out of space. Normally, a set of checks will -prevent creating a symlink in this situation, but ours was a special case.

      -
      - -
      -
      -

      9.4 Mounting Devices

      - -

      As was previously discussed in Section -4.1.1, all the drives and devices in your computer are one big filesystem. Various -hard drive partitions, CD-ROMs, and floppies are all placed in the same tree. In order to -attach these drives to the filesystem so that you can access them, you have to use the -mount(1) and umount(1) commands.

      - -

      Some devices are automatically mounted when you boot up your computer. These are -listed in the /etc/fstab file. Anything that you want to be -mounted automatically gets an entry in that file. For other devices, you'll have to issue -a command every time you want to use the device.

      - -
      -
      -

      9.4.1 fstab

      - -

      Let's look at an example of the /etc/fstab file:

      - - - - - -
      -
      -% cat /etc/fstab
      -/dev/sda1       /               ext2        defaults        1   1
      -/dev/sda2       /usr/local      ext2        defaults        1   1
      -/dev/sda4       /home           ext2        defaults        1   1
      -/dev/sdb1       swap            swap        defaults        0   0
      -/dev/sdb3       /export         ext2        defaults        1   1
      -none            /dev/pts        devpts      gid=5,mode=620  0   0
      -none            /proc           proc        defaults        0   0
      -/dev/fd0        /mnt            ext2        defaults        0   0
      -/dev/cdrom      /mnt/cdrom      iso9660     ro              0   0
      -
      -
      - -

      The first column is the device name. In this case, the devices are five partitions -spread out across two SCSI hard drives, two special filesystems that don't need a device, -a floppy, and a CD-ROM drive. The second column is where the device will be mounted. This -needs to be a directory name, except in the case of a swap partition. The third column is -the filesystem type of the device. For normal Linux filesystems, this will be ext2 (second extended filesystem). CD-ROM drives are iso9660, and Windows-based devices will either be msdos or vfat.

      - -

      The fourth column is a listing of options that apply to the mounted filesystem. -defaults is fine for just about everything. However, read-only devices should be given -the ro flag. There are a lot of options that can be used. -Check the fstab(5) man page for more information. The last two -columns are used by fsck and other commands that need to -manipulate the devices. Check the man page for that information as well.

      - -

      When you install Slackware Linux, the setup program will build much of the fstab file.

      -
      - -
      -
      -

      9.4.2 mount and -umount

      - -

      Attaching another device to your filesystem is easy. All you have to do is use the mount command, along with a few options. Using mount can simplified if the device has an entry in the /etc/fstab file. For example, let's say that I wanted to mount my -CD-ROM drive and that my fstab file looked like the example from -the previous section. I would call mount like so:

      - - - - - -
      -
      -% mount /cdrom
      -
      -
      - -

      Since there is an entry in fstab for that mount point, mount knows what options to use. If there wasn't an entry for that -device, I would have to use several options for mount:

      - - - - - -
      -
      -% mount -t iso9660 -o ro /dev/cdrom /cdrom
      -
      -
      - -

      That command line includes the same information as the example fstab did, but we'll go over all the parts anyways. The -t iso9660 is the filesystem type of the device to mount. In this -case, it would be the iso9660 filesystem which is what CD-ROM drives most commonly use. -The -o ro tells mount to mount the device read-only. The /dev/cdrom is the name of the device to mount, and /cdrom is the location on the filesystem to mount the drive.

      - -

      Before you can remove a floppy, CD-ROM, or other removable device that is currently -mounted, you'll have to unmount it. That is done using the umount command. Don't ask where the “n” went because we -couldn't tell you. You can use either the mounted device or the mount point as the -argument to umount. For example, if you wanted to unmount the -CD-ROM from the previous example, either of these commands would work:

      - - - - - -
      -
      -# umount /dev/cdrom
      -# umount /cdrom
      -
      -
      -
      -
      - -
      -
      -

      9.5 -NFS Mounts

      - -

      NFS stands for the Network Filesystem. It is not really part of the real filesystem, -but can be used to add parts to the mounted filesystem.

      - -

      Large Unix environments often times share the same programs, sets of home directories, -and mail spool. The problem of getting the same copy to each machine is solved with NFS. -We can use NFS to share one set of home directories between all of the workstations. The -workstations then mount that NFS share as if it were on their own machines.

      - -

      See Section 5.6.2 and the man pages for -exports(5), nfsd(8), and mountd(8) for more information.

      -
      -
      - -
      -
      -

      Chapter 10 Handling Files and -Directories

      - -

      Linux aims to the most Unix-like it can be. Traditionally, Unix operating systems have -been command-line oriented. We do have a graphical user interface in Slackware, but the -command-line is still the main level of control for the system. Therefore, it is -important to understand some of the basic file management commands.

      - -

      The following sections explain the common file management commands and provide -examples of how they are used. There are many other commands, but these will help you get -started. Also, the commands are only briefly discussed here. You will find more detail in -the accompanying man pages for each command.

      - -
      -
      -

      10.1 -Navigation : ls, cd, and pwd

      - -
      -

      10.1.1 ls

      - -

      This command lists files in a directory. Windows and DOS users will notice its -similarity to the dir command. By itself, ls(1) will list the files in the current directory. To see what's in -your root directory, you could issue these commands:

      - - - - - -
      -
      -% cd /
      -% ls
      -bin   cdr    dev  home  lost+found  proc  sbin   tmp  var
      -boot  cdrom  etc  lib   mnt         root  suncd  usr  vmlinuz
      -
      -
      - -

      The problem a lot of people have with that output is that you cannot easily tell what -is a directory and what is a file. Some users prefer that ls add -a type identifier to each listing, like this:

      - - - - - -
      -
      -% ls -FC
      -bin/   cdr/    dev/  home/  lost+found/  proc/  sbin/   tmp/  var/
      -boot/  cdrom/  etc/  lib/   mnt/         root/  suncd/  usr/  vmlinuz
      -
      -
      - -

      Directories get a slash at the end of the name, executable files get an asterisk at -the end of the name, and so on.

      - -

      ls can also be used to get other statistics on files. For -example, to see the creation dates, owners, and permissions, you would look at a long -listing:

      - - - - - -
      -
      -% ls -l
      -drwxr-xr-x   2 root     bin          4096 May  7 09:11 bin/
      -drwxr-xr-x   2 root     root         4096 Feb 24 03:55 boot/
      -drwxr-xr-x   2 root     root         4096 Feb 18 01:10 cdr/
      -drwxr-xr-x  14 root     root         6144 Oct 23 18:37 cdrom/
      -drwxr-xr-x   4 root     root        28672 Mar  5 18:01 dev/
      -drwxr-xr-x  10 root     root         4096 Mar  8 03:32 etc/
      -drwxr-xr-x   8 root     root         4096 Mar  8 03:31 home/
      -drwxr-xr-x   3 root     root         4096 Jan 23 21:29 lib/
      -drwxr-xr-x   2 root     root        16384 Nov  1 08:53 lost+found/
      -drwxr-xr-x   2 root     root         4096 Oct  6 12:47 mnt/
      -dr-xr-xr-x  62 root     root            0 Mar  4 15:32 proc/
      -drwxr-x--x  12 root     root         4096 Feb 26 02:06 root/
      -drwxr-xr-x   2 root     bin          4096 Feb 17 02:02 sbin/
      -drwxr-xr-x   5 root     root         2048 Oct 25 10:51 suncd/
      -drwxrwxrwt   4 root     root       487424 Mar  7 20:42 tmp/
      -drwxr-xr-x  21 root     root         4096 Aug 24 03:04 usr/
      -drwxr-xr-x  18 root     root         4096 Mar  8 03:32 var/
      -
      -
      - -

      Suppose you want to get a listing of the hidden files in the current directory. This -command will do just that:

      - - - - - -
      -
      -% ls -a
      -.              bin   cdrom  home        mnt   sbin   usr
      -..             boot  dev    lib         proc  suncd  var
      -.pwrchute_tmp  cdr   etc    lost+found  root  tmp    vmlinuz
      -
      -
      - -

      Files beginning with a period (called dot files) are hidden when you run ls. You will only see them if you pass the -a option.

      - -

      There are many more options that can be found in the online manual page. Don't forget -that you can combine options that you pass to ls.

      -
      - -
      -
      -

      10.1.2 cd

      - -

      The cd command is used to change working directories. You -simply type cd followed by the path name to change to. Here are -some examples:

      - - - - - -
      -
      -darkstar:~$ cd /bin
      -darkstar:/bin$ cd usr
      -bash: cd: usr: No such file or directory
      -darkstar:/bin$ cd /usr
      -darkstar:/usr$ ls
      -bin
      -darkstar:/usr$ cd bin
      -darkstar:/usr/bin$
      -
      -
      - -

      Notice that without the preceding slash, it tries to change to a directory in the -current directory. Also executing cd with no options will move -you to your home directory.

      - -

      The cd command is not like the other commands. It is a -builtin shell command. Shell builtins are discussed in Section 8.3.1. This may not make any sense to you -right now. Basically it means there is no man page for this command. Instead, you have to -use the shell help. Like this:

      - - - - - -
      -
      -% help cd
      -
      -
      - -

      It will display the options for cd and how to use them.

      -
      - -
      -
      -

      10.1.3 pwd

      - -

      The pwd command is used to show your current location. To use -the pwd command just type pwd. For -example:

      - - - - - -
      -
      -% cd /bin
      -% pwd
      -/bin
      -% cd /usr
      -% cd bin
      -% pwd
      -/usr/bin
      -
      -
      -
      -
      - -
      -
      -

      10.2 Pagers: -more, less, and most

      - -
      -

      10.2.1 more

      - -

      more(1) is what we call a pager utility. Oftentimes the -output of a particular command is too big to fit on one screen. The individual commands -do not know how to fit their output to separate screens. They leave this job to the pager -utility.

      - -

      The more command breaks the output into individual screens -and waits for you to press the space bar before continuing on to the next screen. -Pressing the enter key will advance the output one line. Here is a good example:

      - - - - - -
      -
      -% cd /usr/bin
      -% ls -l
      -
      -
      - -

      That should scroll for a while. To break up the output screen by screen, just pipe it -through more:

      - - - - - -
      -
      -% ls -l | more
      -
      -
      - -

      That is the pipe character (shift backslash). The pipe is short for saying take the -output of ls and feed it into more. You -can pipe just about anything through the more command, not just -ls. Piping is also covered in Section 8.2.3.

      -
      - -
      -
      -

      10.2.2 less

      - -

      The more command is quite handy, but often you will find that -you have advanced past the screen you wanted. more does not provide a way to go back. The -less(1) command provides this functionality. It is used in the -same way as the more command, so the previous examples apply -here too. So, less is more than more. -Joost Kremers puts it this way:

      - - -
      -

      less is more, but more more than more is, so more is less less, so use more less if you want less more.

      -
      -
      - -
      -
      -

      10.2.3 most

      - -

      Where more and less leave off, most(1) picks back up. If less is more than -more, most is more than less. Whereas the other pagers can only display one file at a time, -most is capable of viewing any number of files, as long as each -file's window is at least 2 lines long. most has a lot of -options, check the man page for full details.

      -
      -
      - -
      -
      -

      10.3 Simple -Output: cat and echo

      - -
      -

      10.3.1 cat

      - -

      cat(1) is short for “concatenate”. It was -originally designed to merge text files into one, but can be used for many other -purposes.

      - -

      To merge two or more files into one, you simply list the files after the cat command and then redirect the new output to a file. cat works with standard input and standard output, so you have to -use the shell redirection characters. For example:

      - - - - - -
      -
      -% cat file1 file2 file3 > bigfile
      -
      -
      - -

      This command takes the contents of file1, file2, and file3 and merges it all -together. The new output is sent to standard out.

      - -

      One can also use cat to display files. Many people cat text files through the more or less commands, like this:

      - - - - - -
      -
      -% cat file1 | more
      -
      -
      - -

      That will display the file1 file and pipe it through the more command so that you only get one screen at a time.

      - -

      Another common use for cat is copying files. You can copy any -file around with cat, like this:

      - - - - - -
      -
      -% cat /bin/bash > ~/mybash
      -
      -
      - -

      The /bin/bash program is copied to your home directory and -named mybash.

      - -

      cat has many uses and the ones discussed here are just a few. -Since cat makes extensive use of standard input and standard -output, it is ideal for use in shell scripts or part of other complex commands.

      -
      - -
      -
      -

      10.3.2 echo

      - -

      The echo(1) command displays the specified text on the -screen. You specify the string to display after the echo -command. By default echo will display the string and print a -newline character after it. You can pass the -n option to -suppress the printing of the newline. The -e option will cause -echo to search for escape characters in the string and execute -them.

      -
      -
      - -
      -
      -

      10.4 -Creation: touch and mkdir

      - -
      -

      10.4.1 touch

      - -

      touch(1) is used to change the timestamp on a file. You can -change access timestamps and modification timestamps with this command. If the file -specified does not exist, touch will create a zero length file -with the name specified. To mark a file with the current system time, you would issue -this command:

      - - - - - -
      -
      -% ls -al file1
      --rw-r--r--    1 root     root        9779 Feb  7 21:41 file1
      -% touch file1
      -% ls -al file1
      --rw-r--r--    1 root     root        9779 Feb  8 09:17 file1
      -
      -
      - -

      There are several options for touch, including options to -specify which timestamp to modify, the time to use, and many more. The online manual page -discusses these in detail.

      -
      - -
      -
      -

      10.4.2 mkdir

      - -

      mkdir(1) will create a new directory. You simply specify the -directory to create when you run mkdir. This example creates the hejaz directory in the current directory:

      - - - - - -
      -
      -% mkdir hejaz
      -
      -
      - -

      You can also specify a path, like this:

      - - - - - -
      -
      -% mkdir /usr/local/hejaz
      -
      -
      - -

      The -p option will tell mkdir to -make any parent directories. The above example will fail if /usr/local does not exist. The -p option -will create /usr/local and /usr/local/hejaz:

      - - - - - -
      -
      -% mkdir -p /usr/local/hejaz
      -
      -
      -
      -
      - -
      -
      -

      10.5 Copy -and Move

      - -
      -

      10.5.1 cp

      - -

      cp(1) copies files. DOS users will notice its similarity to -the copy command. There are many options for cp , so you should have a look at the man page before using it.

      - -

      A common use is to use cp to copy a file from one location to -another. For example:

      - - - - - -
      -
      -% cp hejaz /tmp
      -
      -
      - -

      This copies the hejaz file from the current directory to the -/tmp directory.

      - -

      Many users prefer to keep the timestamps preserved, as in this example:

      - - - - - -
      -
      -% cp -a hejaz /tmp
      -
      -
      - -

      This ensures that the timestamps are not modified in the copy.

      - -

      To recursively copy the contents of a directory to another directory, you would issue -this command:

      - - - - - -
      -
      -% cp -R mydir /tmp
      -
      -
      - -

      That will copy the mydir directory to the /tmp directory.

      - -

      Also if you wish to copy a directory or a file and keep all it's old permissions and -time stamps and keep it exactly the same use cp -p.

      - - - - - -
      -
      -% ls -l file
      --rw-r--r--    1 root     vlad            4 Jan  1 15:27 file
      -% cp -p file /tmp
      -% ls -l /tmp/file
      --rw-r--r--    1 root     vlad            4 Jan  1 15:27 file
      -
      -
      - -

      cp has many more options that are discussed in detail in the -online manual page.

      -
      - -
      -
      -

      10.5.2 mv

      - -

      mv(1) moves files from one place to another. Sounds simple -enough doesn't it?

      - - - - - -
      -
      -% mv oldfile /tmp/newfile
      -
      -
      - -

      mv has a few useful command line options that are detailed in -the man page. In practice, mv is almost never used with -commandline options.

      -
      -
      - -
      -
      -

      10.6 -Deletion: rm and rmdir

      - -
      -

      10.6.1 rm

      - -

      rm(1) removes files and directory trees. DOS users will -notice the similarity to both the del and deltree commands. rm can be very dangerous -if you do not watch yourself. While it is sometimes possible to retrieve a recently -deleted file, it can be complicated (and potentially costly) and is beyond the scope of -this book.

      - -

      To remove a single file, specify its name when you run rm:

      - - - - - -
      -
      -% rm file1
      -
      -
      - -

      If the file has write permissions removed, you may get a permission denied error -message. To force removal of the file no matter what, pass the -f option, like this:

      - - - - - -
      -
      -% rm -f file1
      -
      -
      - -

      To remove an entire directory, you use the -r and -f options together. This is a good example of how to delete the -entire contents of your hard drive. You really don't want to do this. But here's the -command anyway:

      - - - - - -
      -
      -# rm -rf /
      -
      -
      - -

      Be very careful with rm; you can shoot yourself in the foot. -There are several command line options, which are discussed in detail in the online -manual page.

      -
      - -
      -
      -

      10.6.2 rmdir

      - -

      rmdir(1) removes directories from the filesystem. The -directory must be empty before it can be removed. The syntax is simply:

      - - - - - -
      -
      -% rmdir <directory>
      -
      -
      - -

      This example will remove the hejaz subdirectory in the -current working directory:

      - - - - - -
      -
      -% rmdir hejaz
      -
      -
      - -

      If that directory does not exist, rmdir will tell you. You -can also specify a full path to a directory to remove, as this example shows:

      - - - - - -
      -
      -% rmdir /tmp/hejaz
      -
      -
      - -

      That example will try to remove the hejaz directory inside -the /tmp directory.

      - -

      You can also remove a directory and all of its parent directories by passing the -p option.

      - - - - - -
      -
      -% rmdir -p /tmp/hejaz
      -
      -
      - -

      This will first try to remove the hejaz directory inside /tmp. If that is successful, it will try to remove /tmp. rmdir will continue this until an -error is encountered or the entire tree specified is removed.

      -
      -
      - -
      -
      -

      10.7 Aliasing -files with ln

      - -

      ln(1) is used to create links between files. These links can -be either hard links or soft (symbolic) links. The differences between the two kinds of -links were discussed in Section 9.3. If you -wanted to make a symbolic link to the directory /var/media/mp3 -and place the link in your home directory, you would do this:

      - - - - - -
      -
      -% ln -s /var/media/mp3 ~/mp3
      -
      -
      - -

      The -s option tells ln to make a -symbolic link. The next option is the target of the link, and the final option is what to -call the link. In this case, it will just make a file called mp3 in your home directory that points to /var/media/mp3. You can call the link itself whatever you want by -just changing the last option.

      - -

      Making a hard link is just as simple. All you have to do is leave off the -s option. Hard links may not normally refer to directories or span -file systems, however. To create a hard link /usr/bin/email to -/usr/bin/mutt, simply type the following:

      - - - - - -
      -
      -# ln /usr/bin/mutt /usr/bin/email
      -
      -
      -
      -
      - -
      -
      -

      Chapter 11 Process Control

      - -

      Every program that is running is called a process. These processes range from things -like the X Window System to system programs (daemons) that are started when the computer -boots. Every process runs as a particular user. Processes that are started at boot time -usually run as root or nobody. -Processes that you start will run as you. Processes started as other users will run as -those users.

      - -

      You have control over all the processes that you start. Additionally, root has control over all processes on the system, including those -started by other users. Processes can be controlled and monitored through several -programs, as well as some shell commands.

      - -
      -
      -

      11.1 Backgrounding

      - -

      Programs started from the command line start up in the foreground. This allows you to -see all the output of the program and interact with it. However, there are several -occasions when you'd like the program to run without taking up your terminal. This is -called running the program in the background, and there are a few ways to do it.

      - -

      The first way to background a process is by adding an ampersand to the command line -when you start the program. For example, assume you wanted to use the command line mp3 -player amp to play a directory full of mp3s, but you needed to -do something else on the same terminal. The following command line would start up amp in -the background:

      - - - - - -
      -
      -% amp *.mp3 &
      -
      -
      - -

      The program will run as normal, and you are returned to a prompt.

      - -

      The other way to background a process is to do so while it is running. First, start up -a program. While it is running, hit Control+z. This suspends the process. A suspended process is basically paused. -It momentarily stops running, but can be started up again at any time. Once you have -suspended a process, you are returned to a prompt. You can background the process by -typing:

      - - - - - -
      -
      -% bg
      -
      -
      - -

      Now the suspended process is running in the background.

      -
      - -
      -
      -

      11.2 Foregrounding

      - -

      If you need to interact with a backgrounded process, you can bring it back into the -foreground. If you've only got one backgrounded process, you can bring it back by -typing:

      - - - - - -
      -
      -% fg
      -
      -
      - -

      If the program is not done running, the program will take control over you terminal -and you will not be returned to a prompt. Sometimes, the program will finish running -while backgrounded. In this instance, you'll get a message like this:

      - - - - - -
      -
      -[1]+  Done              /bin/ls $LS_OPTIONS
      -
      -
      - -

      That tells you that the backgrounded process (in this case ls -- not terribly interesting) has completed.

      - -

      It is possible to have several processes backgrounded at once. When this happens, -you'll need to know which process you want to bring back to the foreground. Just typing -fg will foreground the process that was last backgrounded. What -if you had a whole list of processes in the background? Luckily, bash includes a command -to list all the processes. It's called jobs and gives output -like so:

      - - - - - -
      -
      -% jobs
      -[1]   Stopped                 vim
      -[2]-  Stopped                 amp
      -[3]+  Stopped                 man ps
      -
      -
      - -

      This shows you a list of all the processes that are backgrounded. As you can see, they -are all stopped. This means that the processes are suspended. The number is a sort of ID -for all the backgrounded processes. The ID with a plus sign beside it (man ps) is the process that will be foregrounded if you just type -fg.

      - -

      If you wanted to foreground vim, you would type:

      - - - - - -
      -
      -% fg 1
      -
      -
      - -

      and vim would spring back up to the console. Backgrounding -processes can be very useful if you only have one terminal open over a dialup connection. -You can have several programs running on that one terminal, periodically switching back -and forth between them.

      -
      - -
      -
      -

      11.3 ps

      - -

      So now you know how to switch back and forth between several processes that you've -started from the command line. And you also know that there are lots of processes running -all the time. So how do you list all of these programs? Well, you make use of the ps(1) command. This command has a lot of options, so we'll only -cover the most important ones here. For a complete listing, see the man page for ps. Man -pages are covered in-depth in Section 2.1.1.

      - -

      Simply typing ps will get you a listing of the programs -running on your terminal. This incudes the foreground processes (which include whatever -shell you are using, and of course, ps itself). Also listed are -backgrounded processes you may have running. Many times, that will be a very short -listing:

      - -
      -

      Figure 11-1. Basic ps output

      - - - - - -
      -
      -% ps
      -   PID TTY          TIME CMD
      -  7923 ttyp0    00:00:00 bash
      -  8059 ttyp0    00:00:00 ps
      -
      -
      -
      - -

      Even though this is not a lot of processes, the information is very typical. You'll -get the same columns using regular ps no matter how many processes are running. So what -does it all mean?

      - -

      Well, the PID is the process ID. All running processes are given a unique -identifier which ranges between 1 and 32767. Each process is assigned the next free PID. -When a process quits (or is killed, as you will see in the next section), it gives up its -PID. When the max PID is reached, the next free one will wrap back around to the lowest -free one.

      - -

      The TTY column indicates which terminal the process is -running on. Doing a plain ps will only list all the programs -running on the current terminal, so all the processes give the same information in the -TTY column. As you can see, both processes listed are running on ttyp0. This indicates that they are either running remotely or from -an X terminal of some variety.

      - -

      The TIME column indicated how much CPU time the process has -been running. This is different from the actual amount of time that a process runs. -Remember that Linux is a multitasking operating system. There are many processes running -all the time, and these processes each get a small portion of the processor's time. So, -the TIME column should show much less time for each process than it actually takes to -run. If you see more than several minutes in the TIME column, it could mean that -something is wrong.

      - -

      Finally, the CMD column shows what the program actually is. -It only lists the base name of the program, not any command line options or similar -information. To get that information, you'll need to use one of the many options to ps. We'll discuss that shortly.

      - -

      You can get a complete listing of the processes running on your system using the right -combination of options. This will probably result in a long listing of processes -(fifty-five on my laptop as I write this sentence), so I'll abbreviate the output:

      - - - - - -
      -
      -% ps -ax
      - PID TTY      STAT   TIME COMMAND
      -   1 ?        S      0:03 init [3]
      -   2 ?        SW     0:13 [kflushd]
      -   3 ?        SW     0:14 [kupdate]
      -   4 ?        SW     0:00 [kpiod]
      -   5 ?        SW     0:17 [kswapd]
      -  11 ?        S      0:00 /sbin/kerneld
      -  30 ?        SW     0:01 [cardmgr]
      -  50 ?        S      0:00 /sbin/rpc.portmap
      -  54 ?        S      0:00 /usr/sbin/syslogd
      -  57 ?        S      0:00 /usr/sbin/klogd -c 3
      -  59 ?        S      0:00 /usr/sbin/inetd
      -  61 ?        S      0:04 /usr/local/sbin/sshd
      -  63 ?        S      0:00 /usr/sbin/rpc.mountd
      -  65 ?        S      0:00 /usr/sbin/rpc.nfsd
      -  67 ?        S      0:00 /usr/sbin/crond -l10
      -  69 ?        S      0:00 /usr/sbin/atd -b 15 -l 1
      -  77 ?        S      0:00 /usr/sbin/apmd
      -  79 ?        S      0:01 gpm -m /dev/mouse -t ps2
      -  94 ?        S      0:00 /usr/sbin/automount /auto file /etc/auto.misc
      - 106 tty1     S      0:08 -bash
      - 108 tty3     SW     0:00 [agetty]
      - 109 tty4     SW     0:00 [agetty]
      - 110 tty5     SW     0:00 [agetty]
      - 111 tty6     SW     0:00 [agetty]
      - [output cut]
      -
      -
      - -

      Most of these processes are started at boot time on most systems. I've made a few -modifications to my system, so your mileage will most likely vary. However, you will see -most of these processes on your system too. As you can see, these options display command -line options to the running processes. Recently, a kernel vulnerability in ptrace facilitated a fix which no longer shows command line options -for many running processes. These are now listed in brackets like PIDs 108 through 110. -It also brings up a few more columns and some other interesting output.

      - -

      First, you'll notice that most of these processes are listed as running on tty -“?”. Those are not attached to any particular terminal. This is most common -with daemons, which are processes which run without attaching to any particular terminal. -Common daemons are sendmail, BIND, apache, and NFS. They typically listen for some -request from a client, and return information to it upon request.

      - -

      Second, there is a new column: STAT. It shows the status of -the process. S stands for sleeping: the process is waiting for -something to happen. Z stands for a zombied process. A zombied -processes is one whose parent has died, leaving the child processes behind. This is not a -good thing. D stands for a process that has entered an -uninterruptible sleep. Often, these processes refuse to die even when passed a SIGKILL. -You can read more about SIGKILL later in the next section on kill . W stands for paging. A dead process is marked with an X. A process marked T is traced, or -stopped. R means that the process is runable.

      - -

      If you want to see even more information about the running processes, try this -out:

      - - - - - -
      -
      -% ps -aux
      - USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
      - root         1  0.0  0.0   344   80 ?        S    Mar02   0:03 init [3]
      - root         2  0.0  0.0     0    0 ?        SW   Mar02   0:13 [kflushd]
      - root         3  0.0  0.0     0    0 ?        SW   Mar02   0:14 [kupdate]
      - root         4  0.0  0.0     0    0 ?        SW   Mar02   0:00 [kpiod]
      - root         5  0.0  0.0     0    0 ?        SW   Mar02   0:17 [kswapd]
      - root        11  0.0  0.0  1044   44 ?        S    Mar02   0:00 /sbin/kerneld
      - root        30  0.0  0.0  1160    0 ?        SW   Mar02   0:01 [cardmgr]
      - bin         50  0.0  0.0  1076  120 ?        S    Mar02   0:00 /sbin/rpc.port
      - root        54  0.0  0.1  1360  192 ?        S    Mar02   0:00 /usr/sbin/sysl
      - root        57  0.0  0.1  1276  152 ?        S    Mar02   0:00 /usr/sbin/klog
      - root        59  0.0  0.0  1332   60 ?        S    Mar02   0:00 /usr/sbin/inet
      - root        61  0.0  0.2  1540  312 ?        S    Mar02   0:04 /usr/local/sbi
      - root        63  0.0  0.0  1796   72 ?        S    Mar02   0:00 /usr/sbin/rpc.
      - root        65  0.0  0.0  1812   68 ?        S    Mar02   0:00 /usr/sbin/rpc.
      - root        67  0.0  0.2  1172  260 ?        S    Mar02   0:00 /usr/sbin/cron
      - root        77  0.0  0.2  1048  316 ?        S    Mar02   0:00 /usr/sbin/apmd
      - root        79  0.0  0.1  1100  152 ?        S    Mar02   0:01 gpm
      - root        94  0.0  0.2  1396  280 ?        S    Mar02   0:00 /usr/sbin/auto
      - chris      106  0.0  0.5  1820  680 tty1     S    Mar02   0:08 -bash
      - root       108  0.0  0.0  1048    0 tty3     SW   Mar02   0:00 [agetty]
      - root       109  0.0  0.0  1048    0 tty4     SW   Mar02   0:00 [agetty]
      - root       110  0.0  0.0  1048    0 tty5     SW   Mar02   0:00 [agetty]
      - root       111  0.0  0.0  1048    0 tty6     SW   Mar02   0:00 [agetty]
      - [output cut]
      -
      -
      - -

      That's a whole lot of information. Basically, it adds information including what user -started the process, how much of the system resources the process is using (the %CPU, -%MEM, VSZ, and RSS columns), and on what date the process was started. Obviously, that's -a lot of information that could come in handy for a system administrator. It also brings -up another point: the information now goes off the edge of the screen so that you cannot -see it all. The -w option will force ps to wrap long lines.

      - -

      It's not terribly pretty, but it does the job. You've now got the complete listings -for each process. There's even more information that you can display about each process. -Check out the very in-depth man page for ps. However, the -options shown above are the most popular ones and will be the ones you need to use the -most often.

      -
      - -
      -
      -

      11.4 kill

      - -

      On occasion, programs misbehave and you'll need to put them back in line. The program -for this kind of administration is called kill(1), and it can be -used for manipulating processes in several ways. The most obvious use of kill is to kill off a process. You'll need to do this if a program -has run away and is using up lots of system resources, or if you're just sick of it -running.

      - -

      In order to kill off a process, you'll need to know its PID or its name. To get the -PID, use the ps command as was discussed in the last section. -For example, to kill off process 4747, you'd issue the following:

      - - - - - -
      -
      -% kill 4747
      -
      -
      - -

      Note that you'll have to be the owner of the process in order to kill it. This is a -security feature. If you were allowed to kill off processes started by other users, it -would be possible to do all sorts of malicious things. Of course, root can kill off any process on the system.

      - -

      There's another variety of the kill command called killall(1). This program does exactly what it says: it kills all the -running processes that have a certain name. If you wanted to kill off all the running vim processes, you could type the following command:

      - - - - - -
      -
      -% killall vim
      -
      -
      - -

      Any and all vim processes you have running will die off. -Doing this as root would kill off all the vim processes running for all users. This brings up an interesting -way to kick everyone (including yourself) off the system:

      - - - - - -
      -
      -# killall bash
      -
      -
      - -

      Sometimes a regular kill doesn't get the job done. Certain processes will not die with -a kill. You'll need to use a more potent form. If that pesky PID 4747 wasn't responding -to your kill request, you could do the following:

      - - - - - -
      -
      -% kill -9 4747
      -
      -
      - -

      That will almost certainly cause process 4747 to die. You can do the same thing with -killall. What this is doing is sending a different signal to the -process. A regular kill sends a SIGTERM (terminate) signal to the process, which tells it to finish -what it's doing, clean up, and exit. kill -9 sends a SIGKILL (kill) signal to the process, which essentially drops it. -The process is not allowed to clean-up, and sometimes bad things like data corruption -could occur by killing something with a SIGKILL. There's a -whole list of signals at your disposal. You can get a listing of signals by typing the -following:

      - - - - - -
      -
      -% kill -l
      -  1) SIGHUP     2) SIGINT    3) SIGQUIT   4) SIGILL
      -  5) SIGTRAP    6) SIGABRT   7) SIGBUS    8) SIGFPE
      -  9) SIGKILL   10) SIGUSR1  11) SIGSEGV  12) SIGUSR2
      - 13) SIGPIPE   14) SIGALRM  15) SIGTERM  17) SIGCHLD
      - 18) SIGCONT   19) SIGSTOP  20) SIGTSTP  21) SIGTTIN
      - 22) SIGTTOU   23) SIGURG   24) SIGXCPU  25) SIGXFSZ
      - 26) SIGVTALRM 27) SIGPROF  28) SIGWINCH 29) SIGIO
      - 30) SIGPWR
      -
      -
      - -

      The number must be used for kill, while the name minus the -leading “SIG” can be used with killall. Here's -another example:

      - - - - - -
      -
      -% killall -KILL vim
      -
      -
      - -

      A final use of kill is to restart a process. Sending a SIGHUP will cause most processes to re-read their configuration -files. This is especially helpful for telling system processes to re-read their config -files after editing.

      -
      - -
      -
      -

      11.5 top

      - -

      Finally, there's a command you can use to display updating information about the -processes running on the system. This command is called top(1), -and is started like so:

      - - - - - -
      -
      -% top
      -
      -
      - -

      This will display a full screen of information about the processes running on the -system, as well as some overall information about the system. This includes load average, -number of processes, the CPU status, free memory information, and details about processes -including PID, user, priority, CPU and memory usage information, running time, and -program name.

      - - - - - -
      -
      - 6:47pm  up 1 day,  18:01,  1 user,  load average: 0.02, 0.07, 0.02
      -61 processes: 59 sleeping, 2 running, 0 zombie, 0 stopped
      -CPU states:  2.8% user,  3.1% system,  0.0% nice, 93.9% idle
      -Mem:   257992K av,  249672K used,    8320K free,   51628K shrd,  78248K buff
      -Swap:   32764K av,     136K used,   32628K free,                 82600K cached
      -
      -PID USER    PRI  NI  SIZE  RSS  SHARE  STAT  LIB %CPU %MEM  TIME COMMAND
      - 112 root     12   0 19376  18M   2468  R       0  3.7  7.5 55:53 X
      -4947 david    15   0  2136 2136   1748  S       0  2.3  0.8  0:00 screenshot
      -3398 david     7   0 20544  20M   3000  S       0  1.5  7.9  0:14 gimp
      -4946 root     12   0  1040 1040    836  R       0  1.5  0.4  0:00 top
      - 121 david     4   0   796  796    644  S       0  1.1  0.3 25:37 wmSMPmon
      - 115 david     3   0  2180 2180   1452  S       0  0.3  0.8  1:35 wmaker
      -4948 david    16   0   776  776    648  S       0  0.3  0.3  0:00 xwd
      -   1 root      1   0   176  176    148  S       0  0.1  0.0  0:13 init
      - 189 david     1   0  6256 6156   4352  S       0  0.1  2.4  3:16 licq
      -4734 david     0   0  1164 1164    916  S       0  0.1  0.4  0:00 rxvt
      -   2 root      0   0     0    0      0  SW      0  0.0  0.0  0:08 kflushd
      -   3 root      0   0     0    0      0  SW      0  0.0  0.0  0:06 kupdate
      -   4 root      0   0     0    0      0  SW      0  0.0  0.0  0:00 kpiod
      -   5 root      0   0     0    0      0  SW      0  0.0  0.0  0:04 kswapd
      -  31 root      0   0   340  340    248  S       0  0.0  0.1  0:00 kerneld
      -  51 root      0   0    48   48     32  S       0  0.0  0.0  0:00 dhcpcd
      -  53 bin       0   0   316  316    236  S       0  0.0  0.1  0:00 rpc.portmap
      -  57 root      0   0   588  588    488  S       0  0.0  0.2  0:01 syslogd
      -
      -
      - -

      It's called top because the most CPU intensive programs will -be listed at the top. An interesting note is that top will be listed first on most -inactive (and some active) systems because of its CPU utilization. However, top is quite useful for determining what program is misbehaving and -needs to be killed off.

      - -

      But suppose you only want a list of your own processes, or the processes of some other -user. The processes you want to see might not be among the most CPU intensive programs -currently running. The -u option allows you to specify a -username or UID and monitor only those processes owned by that UID.

      - - - - - -
      -
      -% top -u alan
      - PID USER      PR  NI  VIRT RES   SHR S %CPU %MEM   TIME+   COMMAND
      -3622 alan      13   0 11012  10m 6956 S  1.0  2.1   0:03.66 gnome-terminal
      -3739 alan      13   0  1012 1012  804 R  0.3  0.2   0:00.06 top
      -3518 alan       9   0  1312 1312 1032 S  0.0  0.3   0:00.09 bash
      -3529 alan       9   0   984  984  848 S  0.0  0.2   0:00.00 startx
      -3544 alan       9   0   640  640  568 S  0.0  0.1   0:00.00 xinit
      -3548 alan       9   0  8324 8320 6044 S  0.0  1.6   0:00.30 gnome-session
      -3551 alan       9   0  7084 7084 1968 S  0.0  1.4   0:00.50 gconfd-2
      -3553 alan       9   0  2232 2232  380 S  0.0  0.4   0:00.05 esd
      -3555 alan       9   0  2552 2552 1948 S  0.0  0.5   0:00.10 bonobo-activati
      -3557 alan       9   0  2740 2740 2224 S  0.0  0.5   0:00.05 gnome-smproxy
      -3559 alan       9   0  6496 6492 5004 S  0.0  1.3   0:00.31 gnome-settings-
      -3565 alan       9   0  1740 1740 1440 S  0.0  0.3   0:00.28 xscreensaver
      -3568 alan       9   0  7052 7052 4960 S  0.0  1.4   0:02.28 metacity
      -3572 alan       9   0 11412  11m 7992 S  0.0  2.2   0:01.58 gnome-panel
      -3574 alan       9   0 12148  11m 8780 S  0.0  2.4   0:00.64 nautilus
      -3575 alan       9   0 12148  11m 8780 S  0.0  2.4   0:00.00 nautilus
      -3576 alan       9   0 12148  11m 8780 S  0.0  2.4   0:00.00 nautilus
      -
      -
      - -

      As you can see, I'm currently running X, top, a gnome-terminal (in which I'm writing -this) and many other X-related processes which take up the most CPU time for me. This is -a good way to monitor how hard your users are working your system.

      - -

      top also supports monitoring processes by their PID, ignoring -idle and zombied processes, and many other options. The best place to get a handle on -these options is the man page for top.

      -
      -
      - -
      -
      -

      Chapter 12 Essential System -Administration

      - -

      Whoa whoa whoa whoa whoa.... I know what you're thinking. “I'm not a system -administrator! I don't even want to be a system administrator!”

      - -

      Fact is, you are the administrator of any computers for which you have the root password. This might be your desktop box with one or two -users, or it might be a big server with several hundred. Regardless, you'll need to know -how to manage users, and how to shut down the system safely. These tasks seem simple, but -they have some quirks to keep in mind.

      - -
      -
      -

      12.1 -Users and Groups

      - -

      As mentioned in Chapter 8, you shouldn't normally use your system -logged in as root. Instead, you should create a normal user -account for everyday use, and use the root account only for system administration tasks. -To create a user, you can either use the tools supplied with Slackware, or you can edit -the password files by hand.

      - -
      -
      -

      12.1.1 Supplied Scripts

      - -

      The easiest way to manage users and groups is with the supplied scripts and programs. -Slackware includes the programs adduser, userdel(8), chfn(1), chsh(1), and passwd(1) for dealing with -users. The commands groupadd(8), groupdel(8), and groupmod(8) are for -dealing with groups. With the exception of chfn, chsh, and passwd, these programs are -generally only run as root, and are therefore located in /usr/sbin. chfn, chsh, and passwd can be run by anyone, and -are located in /usr/bin.

      - -

      Users can be added with the adduser program. We'll start out -by going through the whole procedure, showing all the questions that are asked and a -brief description of what everything means. The default answer is in the brackets, and -can be chosen for almost all the questions, unless you really want to change -something.

      - - - - - -
      -
      -# adduser
      -Login name for new user []: jellyd
      -
      -
      - -

      This is the name that the user will use to login. Traditionally, login names are eight -characters or fewer, and all lowercase characters. (You may use more than eight -characters, or use digits, but avoid doing so unless you have a fairly important -reason.)

      - -

      You can also provide the login name as an argument on the command line:

      - - - - - -
      -
      -# adduser jellyd
      -
      -
      - -

      In either case, after providing the login name, adduser will prompt for the user -ID:

      - - - - - -
      -
      -User ID ('UID') [ defaults to next available ]:
      -
      -
      - -

      The user ID (UID) is how ownerships are really determined in Linux. Each user has a -unique number, starting at 1000 in Slackware. You can pick a UID for the new user, or you -can just let adduser assign the user the next free one.

      - - - - - -
      -
      -Initial group [users]:
      -
      -
      - -

      All users are placed into the users group by default. You -might want to place the new user into a different group, but it is not recommended unless -you know what you're doing.

      - - - - - -
      -
      -Additional groups (comma separated) []:
      -
      -
      - -

      This question allows you to place the new user into additional groups. It is possible -for a user to be in several groups at the same time. This is useful if you have -established groups for things like modifying web site files, playing games, and so on. -For example, some sites define group wheel as the only group -that can use the su command. Or, a default Slackware -installation uses the sys group for users authorized to play -sounds through the internal sound card.

      - - - - - -
      -
      -Home directory [/home/jellyd]
      -
      -
      - -

      Home directories default to being placed under /home. If you -run a very large system, it's possible that you have moved the home directories to a -different location (or to many locations). This step allows you to specify where the -user's home directory will be.

      - - - - - -
      -
      -Shell [ /bin/bash ]
      -
      -
      - -

      bash is the default shell for Slackware Linux, and will be -fine for most people. If your new user comes from a Unix background, they may be familiar -with a different shell. You can change their shell now, or they can change it themselves -later using the chsh command.

      - - - - - -
      -
      -Expiry date (YYYY-MM-DD) []:
      -
      -
      - -

      Accounts can be set up to expire on a specified date. By default, there is no -expiration date. You can change that, if you'd like. This option might be useful for -people running an ISP who might want to make an account expire upon a certain date, -unless they receive the next year's payment.

      - - - - - -
      -
      -New account will be created as follows:
      ----------------------------------------
      -Login name:         jellyd
      -UID:                [ Next available ]
      -Initial group:      users
      -Additional groups:  [ None ]
      -Home directory:     /home/jellyd
      -Shell:              /bin/bash
      -Expiry date:        [ Never ]
      -
      -
      - -

      This is it... if you want to bail out, hit Control+C. Otherwise, press ENTER to go ahead and -make the account.

      - -

      You now see all the information that you've entered about the new account and are -given the opportunity to abort the account creation. If you entered something -incorrectly, you should hit Control+C and -start over. Otherwise, you can hit enter and the account -will be made.

      - - - - - -
      -
      -Creating new account...
      -
      -Changing the user information for jellyd
      -Enter the new value, or press return for the default
      -        Full Name []: Jeremy
      -        Room Number []: Smith 130
      -        Work Phone []:
      -        Home Phone []:
      -        Other []:
      -
      -
      - -

      All of this information is optional. You don't have to enter any of this if you don't -want to, and the user can change it at any time using chfn. -However, you might find it helpful to enter at least the full name and a phone number, in -case you need to get in touch with the person later.

      - - - - - -
      -
      -Changing password for jellyd
      -Enter the new password (minimum of 5, maximum of 127 characters)
      -Please use a combination of upper and lower case letters and numbers.
      -New password:
      -Re-enter new password:
      -Password changed.
      -
      -Account setup complete.
      -
      -
      - -

      You'll have to enter a password for the new user. Generally, if the new user is not -physically present at this point, you'll just pick some default password and tell the -user to change it to something more secure.

      - -
      - - - - - -
      Note -

      Choosing a Password: Having a -secure password is the first line of defense against getting cracked. You do not want to -have an easily guessed password, because that makes it easier for someone to break into -your system. Ideally, a secure password would be a random string of characters, including -upper and lowercase letters, numbers, and random characters. (A tab character might not -be a wise choice, depending on what kinds of computers you'll be logging in from.) There -are many software packages that can generate random passwords for you; search the -Internet for these utilities.

      - -

      In general, just use common sense: don't pick a password that is someone's birthday, a -common phrase, something found on your desk, or anything that is easily associated with -you. A password like “secure1” or any other password you see in print or -online is also bad.

      -
      -
      - -

      Removing users is not difficult at all. Just run userdel with -the name of the account to remove. You should verify that the user is not logged in, and -that no processes are running as that user. Also, remember that once you've deleted the -user, all of that user's password information is gone permanently.

      - - - - - -
      -
      -# userdel jellyd
      -
      -
      - -

      This command removes that annoying jellyd user from your -system. Good riddance! :) The user is removed from the /etc/passwd, /etc/shadow, and /etc/group files, but doesn't remove the user's home directory.

      - -

      If you'd wanted to remove the home directory as well, you would instead use this -command:

      - - - - - -
      -
      -# userdel -r jellyd
      -
      -
      - -

      Temporarily disabling an account will be covered in the next section on passwords, -since a temporary change involves changing the user's password. Changing other account -information is covered in Section -12.1.3.

      - -

      The programs to add and remove groups are very simple. groupadd will just add another entry to the /etc/group file with a unique group ID, while groupdel will remove the specified group. It is up to you to edit -/etc/group to add users to a specific group. For example, to -add a group called cvs:

      - - - - - -
      -
      -# groupadd cvs
      -
      -
      - -

      And to remove it:

      - - - - - -
      -
      -# groupdel cvs
      -
      -
      -
      - -
      -
      -

      12.1.2 Changing Passwords

      - -

      The passwd program changes passwords by modifying the /etc/shadow file. This file holds all the passwords for the system -in an encrypted format. In order to change your own password, you would type:

      - - - - - -
      -
      -% passwd
      -Changing password for chris
      -Old password:
      -Enter the new password (minumum of 5, maximum of 127 characters)
      -Please use a combination of upper and lower case letters and numbers.
      -New password:
      -
      -
      - -

      As you can see, you are prompted to enter your old password. It won't appear on the -screen as you type it, just like when you log in. Then, you are prompted to enter the new -password. passwd performs a lot of checks on your new password, -and it will complain if your new password doesn't pass its checks. You can ignore its -warnings if you want. You will be prompted to enter your new password a second time for -confirmation.

      - -

      If you are root, you can also change another user's -password:

      - - - - - -
      -
      -# passwd ted
      -
      -
      - -

      You will then have to go through the same procedure as above, except that you won't -have to enter the user's old password. (One of the many benefits of being root...)

      - -

      If needed, you can also temporarily disable an account, and reenable it at a later -time if needed. Both disabling an account and reenabling an account can be done with passwd. To disable an account, do the following as root:

      - - - - - -
      -
      -# passwd -l david
      -
      -
      - -

      This will change david's password to something that can never match any encrypted -value. You would reenable the account by using:

      - - - - - -
      -
      -# passwd -u david
      -
      -
      - -

      Now, david's account is back to normal. Disabling an account might be useful if the -user doesn't play by the rules you've set up on your system, or if they've exported a -very large copy of xeyes(1) to your X desktop.

      -
      - -
      -
      -

      12.1.3 Changing User Information

      - -

      There are two pieces of information that users can change at any time: their shell and -their finger information. Slackware Linux uses chsh (change -shell) and chfn (change finger) to modify these values.

      - -

      A user can pick any shell that is listed in the /etc/shells -file. For most people, /bin/bash will do just fine. Others might -be familiar with a shell found on their system at work or school and want to use what -they already know. To change your shell, use chsh:

      - - - - - -
      -
      -% chsh
      -Password:
      -Changing the login shell for chris
      -Enter the new value, or press return for the default
      -        Login Shell [/bin/bash]:
      -
      -
      - -

      After entering your password, enter the full path to the new shell. Make sure that -it's listed in the /etc/shells(5) file first. The root user can also change any user's shell by running chsh with a username as the argument.

      - -

      The finger information is the optional information such as your full name, phone -numbers, and room number. This can be changed using chfn, and -follows the same procedure as it did during account creation. As usual, root can change anyone's finger information.

      -
      -
      - -
      -
      -

      12.2 Users and Groups, the Hard Way

      - -

      Of course, it is possible to add, modify, and remove users and groups without using -the scripts and programs that come with Slackware. It's not really difficult, although -after reading this process, you'll probably find it much easier to use the scripts. -However, it's important to know how your password information is actually stored, in case -you ever need to recover this information and don't have the Slackware tools -available.

      - -

      First, we'll add a new user to the /etc/passwd(5), /etc/shadow(5), and /etc/group(5) files. -The passwd file holds some information about the users on your -system, but (strangely enough) not their passwords. This was once the case, but was -halted long ago for security reasons. The passwd file must be readable by all users, but -you don't want encrypted passwords world-readable, as would-be intruders can use the -encrypted passwords as a starting point for decrypting a user's password. Instead, the -encrypted passwords are kept in the shadow file, which is only readable by root, and -everyone's password is entered into the passwd file simply as -“x”. The group file -lists all the groups and who is in each.

      - -

      You can use the vipw command to edit the /etc/passwd file safely, and the vigr -command to edit the /etc/group file safely. Use vipw -s to edit the /etc/shadow file -safely. (“Safely” in this context means someone else won't be able to modify -the file you're editing at the moment. If you're the only administrator of your system, -you're probably safe, but it's best to get into good habits from the start.)

      - -

      Let's examine the /etc/passwd file and look at how to add a -new user. A typical entry in passwd looks like this:

      - - - - - -
      -
      -chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash
      -
      -
      - -

      Each line is an entry for one user, and fields on each line are separated by a colon. -The fields are the login name, encrypted password (“x” for everyone on a Slackware system, since Slackware uses -shadow passwords), user ID, group ID, the optional finger information (separated by -commas), home directory, and shell. To add a new user by hand, add a new line at the end -of the file, filling in the appropriate information.

      - -

      The information you add needs to meet some requirements, or your new user may have -problems logging in. First, make sure that the password field is an x, and that both the user name and user ID is unique. Assign the -user a group, either 100 (the “users” group in Slackware) or your default -group (use its number, not its name). Give the user a valid home directory (which you'll -create later) and shell (remember, valid shells are listed in /etc/shells).

      - -

      Next, we'll need to add an entry in the /etc/shadow file, which holds the encrypted -passwords. A typical entry looks like this:

      - - - - - -
      -
      -chris:$1$w9bsw/N9$uwLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::
      -
      -
      - -

      Again, each line is an entry for one person, with each field delimited by a colon. The -fields are (in order) login name, encrypted password, days since the Epoch (January 1, -1970) that the password was last changed, days before the password may be changed, days -after which the password must be changed, days before password expiration that the user -is notified, days after expiration that the account is disabled, days since the Epoch -that the account is disabled, and a reserved field.

      - -

      As you can see, most of that is for account expiration information. If you aren't -using expiration information, you only need to fill in a few fields with some special -values. Otherwise, you'll need to do some calculations and decision making before you can -fill those fields in. For a new user, just put some random garbage in the password field. -Don't worry about what the password is right now, because you're going to change it in a -minute. The only character you cannot include in the password field is a colon. Leave the -“days since password was changed” field blank as well. Fill in 0, 99999, and 7 just as you see in the example entry, and leave the other fields -blank.

      - -

      (For those of you who think you see my encrypted password above and believe you've got -a leg up on breaking into my system, go right ahead. If you can crack that password, -you'll know the password to a firewalled test system. Now that's useful :) )

      - -

      All normal users are members of the “users” -group on a typical Slackware system. However, if you want to create a new group, or add -the new user to additional groups, you'll need to modify the /etc/group file. Here is a typical entry:

      - - - - - -
      -
      -cvs::102:chris,logan,david,root
      -
      -
      - -

      The fields are group name, group password, group ID, and group members, separated by -commas. Creating a new group is a simple matter of adding a new line with a unique group -ID, and listing all the users you want to be in the group. Any users that are in this new -group and are logged in will have to log out and log back in for those changes to take -effect.

      - -

      At this point, it might be a good idea to use the pwck and -grpck commands to verify that the changes you've made are -consistent. First, use pwck -r and grpck --r: the -r switch makes no changes, but lists the changes -you would be asked to make if you ran the command without the switch. You can use this -output to decide whether you need to further modify any files, to run pwck or grpck without the -r switch, or to simply leave your changes as they are.

      - -

      At this point, you should use the passwd command to create a -proper password for the user. Then, use mkdir to create the new -user's home directory in the location you entered into the /etc/passwd file, and use chown to change -the owner of the new directory to the new user.

      - -

      Removing a user is a simple matter of deleting all of the entries that exist for that -user. Remove the user's entry from /etc/passwd and /etc/shadow, and remove the login name from any groups in the /etc/group file. If you wish, delete the user's home directory, the -mail spool file, and his crontab entry (if they exist).

      - -

      Removing groups is similar: remove the group's entry from /etc/group.

      -
      - -
      -
      -

      12.3 Shutting Down Properly

      - -

      It is very important that you shut down your system properly. Simply turning the power -off with the power switch can cause serious filesystem damage. While the system is on, -files are in use even if you aren't doing anything. Remember that there are many -processes running in the background all the time. These processes are managing the system -and keep a lot of files open. When the system's power is switched off, these files are -not closed properly and may become corrupted. Depending on what files become damaged, the -system might be rendered completely unusable! In any case, you'll have to go through a -long filesystem check procedure on the next reboot.

      - -
      - - - - - -
      Note -

      If you configured your system with a journalling filesystem, like ext3 or reiserfs, -you'll be partially protected from filesystem damage, and your filesystem check on reboot -will be shorter than if you had used a filesystem without journalling, like ext2. -However, this safety net is no excuse for improperly shutting down your system! A -journalling FS is meant to protect your files from events beyond your control, not from -your own laziness.

      -
      -
      - -

      In any case, when you want to reboot or power down your computer, it is important to -do so properly. There are several ways of doing so; you can pick whichever one you think -is the most fun (or least amount of work). Since a shutdown and a reboot are similar -procedures, most of the ways for powering off the system can also be applied to -rebooting.

      - -

      The first method is through the shutdown(8) program, and it -is probably the most popular. shutdown can be used to reboot or -turn off the system at a given time, and can display a message to all the logged-in users -of the system telling them that the system is going down.

      - -

      The most basic use of shutdown to power down the computer is:

      - - - - - -
      -
      -# shutdown -h now
      -
      -
      - -

      In this case, we are not going to send a custom message to the users; they will see -shutdown's default message. “now” is the time that we want to shutdown, and the “-h” means to halt the system. This is not a very friendly way -to run a multi-user system, but it works just fine on your home computer. A better method -on a multiuser system would be to give everyone a little advance warning:

      - - - - - -
      -
      -# shutdown -h +60
      -
      -
      - -

      This would shutdown the system in one hour (60 minutes), which would be just fine on a -normal multiuser system. Vital systems should have their downtime scheduled far in -advance, and you should post warnings about the downtime in any appropriate locations -used for system notifications (email, bulletin board, /etc/motd, whatever).

      - -

      Rebooting the system uses the same command, but substitutes “-r” for “-h”:

      - - - - - -
      -
      -# shutdown -r now
      -
      -
      - -

      You can use same time notation with shutdown -r that you -could with shutdown -h. There are a lot of other things that you -can do with shutdown to control when to halt or reboot the -machine; see the man page for more details.

      - -

      The second way of shutting down or powering off the computer is to use the halt(8) and reboot(8) commands. As the -names indicate, halt will immediately halt the operating system, -and reboot will reboot the system. (reboot is actually just a symbolic link to halt.) They are invoked like so:

      - - - - - -
      -
      -# halt
      -# reboot
      -
      -
      - -

      A lower-level way to reboot or shutdown the system is to talk directly to init. All the other methods are simply convenient ways to talk to -init, but you can directly tell it what to do using telinit(8) (note that it only has one “l”). Using telinit will tell init what runlevel to -drop into, which will cause a special script to be run. This script will kill or spawn -processes as needed for that runlevel. This works for rebooting and shutting down because -both of those are special runlevels.

      - - - - - -
      -
      -# telinit 0
      -
      -
      - -

      Runlevel 0 is halt mode. Telling init to enter runlevel 0 -will cause all processes to be killed off, the filesystems unmounted, and the machine to -be halted. This is a perfectly acceptable way to bring down the system. On many laptops -and modern desktop computers, this will also cause the machine to be turned off.

      - - - - - -
      -
      -# telinit 6
      -
      -
      - -

      Runlevel 6 is reboot mode. All processes will be killed off, the filesystems will be -unmounted, and the machine will be rebooted. This is a perfectly acceptable method of -rebooting the system.

      - -

      For the curious, when switching to runlevel 0 or 6, whether by using shutdown, halt, or reboot, the script /etc/rc.d/rc.6 is run. -(The script /etc/rc.d/rc.0 is another symbolic link, to /etc/rc.d/rc.6.) You can customize this file to your tastes--but be -sure to test your changes carefully!

      - -

      There is one last method of rebooting the system. All the other methods require you to -be logged in as root. However, it is possible to reboot the -machine even if you aren't root, provided that you have physical access to the keyboard. -Using Control+Alt+Delete (the "three-fingered salute") will cause the machine to -immediately reboot. (Behind the scenes, the shutdown command is -called for you when you use Control+Alt+Delete.) The salute doesn't always work when using X Windows--you may -need to use Control+Alt+F1 (or another Function key) to switch to a non-X Windows terminal -before using it.

      - -

      Finally, the file that ultimately controls every aspect of startup and shutdown is the -/etc/inittab(5) file. In general, you should not need to modify -this file, but it may give you insight into why some things work the way they do. As -always, see the man pages for further details.

      -
      -
      - -
      -
      -

      Chapter 13 Basic -Network Commands

      - -

      A network consists of several computers connected together. The network can be as -simple as a few computers connected in your home or office, or as complicated as a large -university network or even the entire Internet. When your computer is part of a network, -you have access to those systems either directly or through services like mail and the -web.

      - -

      There are a variety of networking programs that you can use. Some are handy for -performing diagnostics to see if everything is working properly. Others (like mail -readers and web browsers) are useful for getting your work done and staying in contact -with other people.

      - -
      -
      -

      13.1 ping

      - -

      ping(8) sends an ICMP ECHO_REQUEST -packet to the specified host. If the host responds, you get an ICMP packet back. Sound -strange? Well, you can “ping” an IP address to see if a machine is alive. If -there is no response, you know something is wrong. Here is an example conversation -between two Linux users:

      - - -
      -

      User -A: Loki's down again.
      -User -B: Are you sure?
      -User -A: Yeah, I tried pinging it, but there's no response.

      -
      - -

      It's instances like these that make ping a very useful -day-to-day command. It provides a very quick way to see if a machine is up and connected -to the network. The basic syntax is:

      - - - - - -
      -
      -% ping www.slackware.com
      -
      -
      - -

      There are, of course, several options that can be specified. Check the ping(1) man page for more information.

      -
      - -
      -
      -

      13.2 traceroute

      - -

      Slackware's traceroute(8) command is a very useful network -diagnostic tool. traceroute displays each host that a packet -travels through as it tries to reach its destination. You can see how many -“hops” from the Slackware web site you are with this command:

      - - - - - -
      -
      -% traceroute www.slackware.com
      -
      -
      - -

      Each host will be displayed, along with the response times at each host. Here is an -example output:

      - - - - - -
      -
      -% traceroute www.slackware.com
      -traceroute to www.slackware.com (204.216.27.13), 30 hops max, 40 byte packets
      -1  zuul.tdn (192.168.1.1)  0.409 ms  1.032 ms  0.303 ms
      -2  207.171.227.254 (207.171.227.254)  18.218 ms  32.873 ms  32.433 ms
      -3  border-sf-2-0-4.sirius.com (205.134.230.254) 15.662 ms 15.731 ms 16.142 ms
      -4  pb-nap.crl.net (198.32.128.20)  20.741 ms  23.672 ms  21.378 ms
      -5  E0-CRL-SFO-03-E0X0.US.CRL.NET (165.113.55.3) 22.293 ms 21.532 ms 21.29 ms
      -6  T1-CDROM-00-EX.US.CRL.NET (165.113.118.2)  24.544 ms  42.955 ms 58.443 ms
      -7  www.slackware.com (204.216.27.13)  38.115 ms  53.033 ms  48.328 ms
      -
      -
      - -

      traceroute is similar to ping in -that it uses ICMP packets. There are several options that you can specify with traceroute. These options are explained in detail in the man -page.

      -
      - -
      -
      -

      13.3 DNS Tools

      - -

      Domain Name Service (DNS for short) is that magical protocol that allows your computer -to turn meaningless domain names like www.slackware.com into meaningful IP address like -64.57.102.34. Computers can't route packets to www.slackware.com, -but they can route packets to that domain name's IP address. This gives us a convenient -way to remember machines. Without DNS we'd have to keep a mental database of just what IP -address belongs to what computer, and that's assuming the IP address doesn't change. -Clearly using names for computers is better, but how do we map names to IP addresses?

      - -
      -
      -

      13.3.1 host

      - -

      host(1) can do this for us. host is -used to map names to IP addresses. It is a very quick and simple utility without a lot of -functions.

      - - - - - -
      -
      -% host www.slackware.com
      -www.slackware.com is an alias for slackware.com.
      -slackware.com has address 64.57.102.34
      -
      -
      - -

      But let's say for some reason we want to map an IP address to a domain name; what -then?

      -
      - -
      -
      -

      13.3.2 nslookup

      - -

      nslookup is a tried and true program that has weathered the -ages. nslookup has been deprecated and may be removed from -future releases. There is not even a man page for this program.

      - - - - - -
      -
      -% nslookup 64.57.102.34
      -Note:  nslookup is deprecated and may be removed from future releases.
      -Consider using the `dig' or `host' programs instead.  Run nslookup with
      -the `-sil[ent]' option to prevent this message from appearing.
      -Server:         192.168.1.254
      -Address:        192.168.1.254#53
      -
      -Non-authoritative answer:
      -www.slackware.com       canonical name = slackware.com.
      -Name:   slackware.com
      -Address: 64.57.102.34
      -
      -
      -
      - -
      -
      -

      13.3.3 dig

      - -

      The meanest dog in the pound, the domain information groper, dig(1) for short, is the go-to program for finding DNS information. -dig can grab just about anything from a DNS server including -reverse lookups, A, CNAME, MX, SP, and TXT records. dig has many -command line options and if you're not familiar with it you should read through it's -extensive man page.

      - - - - - -
      -
      -% dig @192.168.1.254 www.slackware.com mx
      -
      -; <<>> DiG 9.2.2 <<>> @192.168.1.254 www.slackware.com mx
      -;; global options:  printcmd
      -;; Got answer:
      -;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26362
      -;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
      -
      -;; QUESTION SECTION:
      -;www.slackware.com.             IN      MX
      -
      -;; ANSWER SECTION:
      -www.slackware.com.      76634   IN      CNAME   slackware.com.
      -slackware.com.          86400   IN      MX      1 mail.slackware.com.
      -
      -;; AUTHORITY SECTION:
      -slackware.com.          86400   IN      NS      ns1.cwo.com.
      -slackware.com.          86400   IN      NS      ns2.cwo.com.
      -
      -;; ADDITIONAL SECTION:
      -ns1.cwo.com.            163033  IN      A       64.57.100.2
      -ns2.cwo.com.            163033  IN      A       64.57.100.3
      -
      -;; Query time: 149 msec
      -;; SERVER: 192.168.1.254#53(192.168.1.254)
      -;; WHEN: Sat Nov  6 16:59:31 2004
      -;; MSG SIZE  rcvd: 159
      -
      -
      - -

      This should give you an idea how dig works. -“@192.168.1.254” specifies the dns server to use. -“www.slackware.com” is the domain name I am performing a lookup on, and -“mx” is the type of lookup I am performing. The above query tells me that -e-mail to www.slackware.com will instead be sent to mail.slackware.com for delivery.

      -
      -
      - -
      -
      -

      13.4 finger

      - -

      finger(1) will retrieve information about the specified user. -You give finger a username or an email address and it will try to contact the necessary -server and retrieve the username, office, telephone number, and other pieces of -information. Here is an example:

      - - - - - -
      -
      -% finger johnc@idsoftware.com
      -
      -
      - -

      finger can return the username, mail status, phone numbers, -and files referred to as “dot plan” and “dot project”. Of course, -the information returned varies with each finger server. The one -included with Slackware returns the following information by default:

      - -
        -
      • -

        Username

        -
      • - -
      • -

        Room number

        -
      • - -
      • -

        Home phone number

        -
      • - -
      • -

        Work phone number

        -
      • - -
      • -

        Login status

        -
      • - -
      • -

        Email status

        -
      • - -
      • -

        Contents of the .plan file in the user's home directory

        -
      • - -
      • -

        Contents of the .project file in the user's home -directory

        -
      • -
      - -

      The first four items can be set with the chfn command. It -stores those values in the /etc/passwd file. To change the -information in your .plan or .project -file, just edit them with your favorite text editor. They must reside in your home -directory and must be called .plan and .project.

      - -

      Many users finger their own account from a remote machine to -quickly see if they have new email. Or, you can see a user's plan or current project.

      - -

      Like many commands, finger has options. Check the man page -for more information on what special options you can use.

      -
      - -
      -
      -

      13.5 telnet

      - -

      Someone once stated that telnet(1) was the coolest thing he -had ever seen on computers. The ability to remotely log in and do stuff on another -computer is what separates Unix and Unix-like operating systems from other operating -systems.

      - -

      telnet allows you to log in to a computer, just as if you -were sitting at the terminal. Once your username and password are verified, you are given -a shell prompt. From here, you can do anything requiring a text console. Compose email, -read newsgroups, move files around, and so on. If you are running X and you telnet to another machine, you can run X programs on the remote -computer and display them on yours.

      - -

      To login to a remote machine, use this syntax:

      - - - - - -
      -
      -% telnet <hostname>
      -
      -
      - -

      If the host responds, you will receive a login prompt. Give it your username and -password. That's it. You are now at a shell. To quit your telnet session, use either the -exit command or the logout command.

      - -
      - - - - - -
      Warning -

      telnet does not encrypt the information it sends. Everything -is sent in plain text, even passwords. It is not advisable to use telnet over the Internet. Instead, consider the Secure Shell. It encrypts all traffic and is available for free.

      -
      -
      - -
      -
      -

      13.5.1 The other use of telnet

      - -

      Now that we have convinced you not to use the telnet protocol anymore to log into a -remote machine, we'll show you a couple of useful ways to use telnet.

      - -

      You can also use the telnet command to connect to a host on a -certain port.

      - - - - - -
      -
      -% telnet <hostname> [port]
      -
      -
      - -

      This can be quite handy when you quickly need to test a certain service, and you need -full control over the commands, and you need to see what exactly is going on. You can -interactively test or use an SMTP server, a POP3 server, an HTTP server, etc. this -way.

      - -

      In the next figure you'll see how you can telnet to a HTTP -server on port 80, and get some basic information from it.

      - -
      -

      Figure 13-1. Telnetting to a webserver

      - - - - - -
      -
      -% telnet store.slackware.com 80
      -Trying 69.50.233.153...
      -Connected to store.slackware.com.
      -Escape character is '^]'.
      -HEAD / HTTP/1.0
      -
      -HTTP/1.1 200 OK
      -Date: Mon, 25 Apr 2005 20:47:01 GMT
      -Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7d
      -Last-Modified: Fri, 18 Apr 2003 10:58:54 GMT
      -ETag: "193424-c0-3e9fda6e"
      -Accept-Ranges: bytes
      -Content-Length: 192
      -Connection: close
      -Content-Type: text/html
      -
      -Connection closed by foreign host.
      -%
      -
      -
      -
      - -

      You can do the same for other plain-text protocols, as long as you know what port to -connect to, and what the commands are.

      -
      -
      - -
      -
      -

      13.6 The Secure shell

      - -

      Today, secure shell basks in the adoration that telnet once -enjoyed. ssh(1) allows one to make a connection to a remote -machine and execute programs as if one were physically present; however, ssh encrypts all the data travelling between the two computers so -even if others intercept the conversation, they are unable to understand it. A typical -secure shell connection follows.

      - - - - - -
      -
      -% ssh carrier.lizella.net -l alan
      -The authenticity of host 'carrier.lizella.net (192.168.1.253)' can't be
      -established.
      -RSA key fingerprint is 0b:e2:5d:43:4c:39:4f:8c:b9:85:db:b2:fa:25:e9:9d.
      -Are you sure you want to continue connecting (yes/no)? yes
      -Warning: Permanently added 'carrier.lizella.net' (RSA) to the list of
      -known hosts.
      -Password: password
      -Last login: Sat Nov  6 16:32:19 2004 from 192.168.1.102
      -Linux 2.4.26-smp.
      -alan@carrier:~$ ls -l MANIFEST 
      --rw-r--r--  1 alan users 23545276 2004-10-28 20:04 MANIFEST
      -alan@carrier:~$ exit
      -logout
      -Connection to carrier.lizella.net closed.
      -
      -
      - -

      There you see me making an ssh connection to carrier.lizella.net, and checking the permissions on the MANIFEST file.

      -
      - -
      -
      -

      13.7 email

      - -

      Electronic mail is one of the most popular things one can do on the Internet. In 1998, -it was reported that more electronic mail was sent than regular mail. It is indeed common -and useful.

      - -

      Under Slackware, we provide a standard mail server, and several mail clients. All of -the clients discussed below are text-based. A lot of Windows users may be against this, -but you will find that a text based client is very convenient, especially when checking -mail remotely. Fear not, there are many graphical e-mail clients such as KDE's Kmail. If -you wish to use one of those check its help menu.

      - -
      -
      -

      13.7.1 pine

      - -

      pine(1) is not elm. Or so the saying -goes. The University of Washington created their program for Internet news and email out -of a need for an easy mail reader for their students. pine is -one of the most popular email clients in use today and is available for nearly every -flavor of Unix and even Windows.

      - -
      -

      Figure 13-2. The Pine main menu

      - -

      -
      - -

      You will see a menu of commands and a row of command keys at the bottom. pine is indeed a complex program, so we will not discuss every -feature about it here.

      - -

      To see what's in your inbox, type i. Your messages are -listed with their date, author, and subject. Highlight the message you want and press -enter to view it. Pressing r -will start a reply to the message. Once you have written the response, type Ctrl+X to send it. You can press i to get back to the message listing.

      - -

      If you want to delete a message, press d. It will mark -the highlighted message for deletion. pine deletes the mail when -you exit the program. pine also lets you store your mail in -folders. You can get a listing of folders by pressing l. At -the message listing, press s to save it to another folder. -It will ask for the folder name to write the message to.

      - -

      pine offers many, many features; you should definitely have a -look at the man page for more information. It will contain the latest information about -the program.

      -
      - -
      -
      -

      13.7.2 elm

      - -

      elm(1) is another popular text-based email client. Though not -quite as user friendly as pine, it's definitely been around a -lot longer.

      - -
      -

      Figure 13-3. Elm main screen

      - -

      -
      - -

      By default, you are placed in your inbox. The messages are listed with the message -number, date, sender, and subject. Use the arrow keys to highlight the message you want. -Press Enter to read the message.

      - -

      To compose a new message, type m at the main screen. The -d key will flag a message for deletion. And the r key will reply to the current message you are reading. All of -these keys are displayed at the bottom of the screen with a prompt.

      - -

      The man page discusses elm in more detail, so you will -probably want to consult that before using elm.

      -
      - -
      -
      -

      13.7.3 mutt

      - -

      “All mail clients suck. This one just sucks less.” mutt's original interface was based on elm -with added features found in other popular mailclients, resulting in a hybrid mutt.

      - -

      Some of mutt's features include:

      - -
        -
      • -

        color support

        -
      • - -
      • -

        message threading

        -
      • - -
      • -

        MIME and PGP/MIME support

        -
      • - -
      • -

        pop3 and imap support

        -
      • - -
      • -

        support for multiple mailbox formats (mbox, MMDF, MH, maildir)

        -
      • - -
      • -

        highly customizable

        -
      • -
      - -
      -

      Figure 13-4. Mutt main screen

      - -

      -
      - -

      if you're looking for a mail client that will let you be in total control over -everything, then you will like mutt. all the default settings -can be customized, keybindings can be changed. if you like to add a macro, you can.

      - -

      you probably want to take a look at the muttrc manpage, -which will tell you how to configure everything. or take a look at the included example -muttrc file.

      -
      - -
      -
      -

      13.7.4 nail

      - -

      nail(1) is a command line driven mail client. It is very -primitive and offers pretty much nothing in the way of user interfaces. However, mailx is -handy for times when you need to quickly mail something, scripting a bulk mailer, testing -your MTA installation or something similar. Note that Slackware creates symbolic links to -nail at /usr/bin/mail and /usr/bin/mailx. Any of these three commands executes the same -program. In fact, you will most likely see nail referred to as -mail.

      - -

      The basic command line is:

      - - - - - -
      -
      -% mailx <subject> <to-addr>
      -
      -
      - -

      mailx reads the message body from standard input. So you can -cat a file into this command to mail it, or you can just type text and hit Ctrl+D when finished with the message.

      - -

      Here is an example of mailing a program source file to another person.

      - - - - - -
      -
      -% cat randomfunc.c | mail -s "Here's that function" asdf@example.net
      -
      -
      - -

      The man page explains more of what nail can do, so you will -probably want to have a look at that before using it.

      -
      -
      - -
      -
      -

      13.8 Browsers

      - -

      The first thing that people think about when they hear the word Internet is -“surfing the net”. Or looking at websites using a web browser. This is -probably by far the most popular use of the Internet for the average user.

      - -

      Slackware provides popular graphical web browsers in the “XAP” series, as -well as text mode browsers in the “N” series. We'll take a quick look at some -of the most common options below.

      - -
      -
      -

      13.8.1 lynx

      - -

      lynx(1) is a text-based web browser. It is a very quick way -of looking up something on the Internet. Sometimes graphics just get in the way if you -know exactly what you're after.

      - -

      To start lynx, just type lynx at the -prompt:

      - - - - - -
      -
      -% lynx
      -
      -
      - -
      -

      Figure 13-5. Lynx default start page

      - -

      -
      - -

      You may want to specify a site for lynx to open to:

      - - - - - -
      -
      -% lynx http://www.slackware.com
      -
      -
      - -

      lynx prints the command keys and what they do at the bottom -of the screen. The up and down arrow keys move around the document, Enter selects the highlighted link, and the left arrow goes back to the previous page. Typing d will download the currently selected file. The g command brings up the Go prompt, where you can give lynx a URL to open.

      - -

      There are many other commands in lynx. You can either consult -the man page, or type h to get the help screen for more -information.

      -
      - -
      -
      -

      13.8.2 links

      - -

      Just like lynx, links is a textmode -web browser, where you do all the navigation using the keyboard. However, when you press -the Esc key, it will activate a very convenient pulldown -menu on the top of the screen. This makes it very easy to use, without having to learn -all the keyboard shortcuts. People who do not use a text browser every day will -appreciate this feature.

      - -

      links seems to have better support for both frames and -tables, when compared to lynx.

      - -
      -

      Figure 13-6. Links, with the file menu open

      - -

      -
      -
      - -
      -
      -

      13.8.3 wget

      - -

      wget(1) is a command line utility that will download files -from a specified URL. While not an actual web-browser, wget is -used primarily to grab whole or partial web sites for offline viewing, or for fast -download of single files from HTTP or FTP servers instead. The basic syntax is:

      - - - - - -
      -
      -% wget <url>
      -
      -
      - -

      You can also pass options. For example, this will download the Slackware web site:

      - - - - - -
      -
      -% wget --recursive http://www.slackware.com
      -
      -
      - -

      wget will create a www.slackware.com directory and store the files in there, just as -the site does.

      - -

      wget can also download files from FTP sites; just specify an -FTP URL instead of an HTTP one.

      - - - - - -
      -
      -% wget ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz
      ---12:18:16--  ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz
      -           => `wget-1.8.2.tar.gz'
      -Resolving ftp.gnu.org... done.
      -Connecting to ftp.gnu.org[199.232.41.7]:21... connected.
      -Logging in as anonymous ... Logged in!
      -==> SYST ... done.   ==> PWD ... done.
      -==> TYPE I ... done. ==> CWD /gnu/wget ... done.
      -==> PORT ... done.   ==> RETR wget-1.8.2.tar.gz ... done.
      -Length: 1,154,648 (unauthoritative)
      -
      -100%[==================================>] 1,154,648     209.55K/s    ETA 00:00
      -
      -12:18:23 (209.55KB/s) - `wget-1.8.2.tar.gz' saved [1154648]
      -
      -
      - -

      wget has many more options, which make it nice for site -specific scripts (web site mirroring and so forth). The man page should be consulted for -more information.

      -
      -
      - -
      -
      -

      13.9 FTP Clients

      - -

      FTP stands for the File Transfer Protocol. It allows you to send and receive files -between two computers. There is the FTP server and the FTP client. We discuss the client -in this section.

      - -

      For the curious, the “client” is you. The “server” is the -computer that answers your FTP request and lets you login. You will download files from -and upload files to the server. The client cannot accept FTP connections, it can only -connect to servers.

      - -
      -
      -

      13.9.1 ftp

      - -

      To connect to an FTP server, simply run the ftp(1) command -and specify the host:

      - - - - - -
      -
      -% ftp <hostname> [port]
      -
      -
      - -

      If the host is running an FTP server, it will ask for a username and password. You can -log in as yourself or as “anonymous”. Anonymous FTP sites are very popular -for software archives. For example, to get Slackware Linux via FTP, you must use -anonymous FTP.

      - -

      Once connected, you will be at the ftp> prompt. There -are special commands for FTP, but they are similar to other standard commands. The -following shows some of the basic commands and what they do:

      - -
      -

      Table 13-1. ftp commands

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CommandPurpose
      lsList files
      cd <dirname>Change directory
      binSet binary transfer mode
      asciiSet ASCII transfer mode
      get <filename>Download a file
      put <filename>Upload a file
      hashToggle hash mark stats indicator
      tickToggle byte counter indicator
      promToggle interactive mode for downloads
      mget <mask>Download a file or group of files; wildcards are allowed
      mput <mask>Upload a file or group of files; wildcards are allowed
      quitLog off the FTP server
      -
      - -

      You can also use some of the following commands which are quite self-explanatory: chmod, delete, rename, rmdir. For a complete list of all -commands and their meaning, just type help or ? and you'll see a complete listing on screen.

      - -

      FTP is a fairly simple program to use, but lacks the user interface that many of us -are used to nowadays. The man page discusses some of the command line options for ftp(1).

      - - - - - -
      -
      -ftp> ls *.TXT
      -200 PORT command successful.
      -150 Opening ASCII mode data connection for /bin/ls.
      --rw-r--r--   1 root     100         18606 Apr  6  2002 BOOTING.TXT
      --rw-r--r--   1 root     100         10518 Jun 13  2002 COPYRIGHT.TXT
      --rw-r--r--   1 root     100           602 Apr  6  2002 CRYPTO_NOTICE.TXT
      --rw-r--r--   1 root     100         32431 Sep 29 02:56 FAQ.TXT
      --rw-r--r--   1 root     100        499784 Mar  3 19:29 FILELIST.TXT
      --rw-r--r--   1 root     100        241099 Mar  3 19:12 PACKAGES.TXT
      --rw-r--r--   1 root     100         12339 Jun 19  2002 README81.TXT
      --rw-r--r--   1 root     100         14826 Jun 17  2002 SPEAKUP_DOCS.TXT
      --rw-r--r--   1 root     100         15434 Jun 17  2002 SPEAK_INSTALL.TXT
      --rw-r--r--   1 root     100          2876 Jun 17  2002 UPGRADE.TXT
      -226 Transfer complete.
      -ftp> tick
      -Tick counter printing on (10240 bytes/tick increment).
      -ftp> get README81.TXT
      -local: README81.TXT remote: README81.TXT
      -200 PORT command successful.
      -150 Opening BINARY mode data connection for README81.TXT (12339 bytes).
      -Bytes transferred: 12339
      -226 Transfer complete.
      -12339 bytes received in 0.208 secs (58 Kbytes/sec)
      -
      -
      -
      - -
      -
      -

      13.9.2 ncftp

      - -

      ncftp(1) (pronounced "Nik-F-T-P") is an alternative to the -traditional ftp client that comes with Slackware. It is still a text-based program, but -offers many advantages over ftp, including:

      - -
        -
      • -

        Tab completion

        -
      • - -
      • -

        Bookmarks file

        -
      • - -
      • -

        More liberal wildcard uses

        -
      • - -
      • -

        Command history

        -
      • -
      - -

      By default, ncftp will try to log in anonymously to the -server you specify. You can force ncftp to present a login -prompt with the “-u” option. Once logged in, you -can use the same commands as in ftp, only you'll notice a nicer -interface, one that works more like bash.

      - - - - - -
      -
      -ncftp /pub/linux/slackware > cd slackware-current/
      -Please read the file README81.TXT
      -  it was last modified on Wed Jun 19 16:24:21 2002 - 258 days ago
      -CWD command successful.
      -ncftp ...ware/slackware-current > ls
      -BOOTING.TXT               FAQ.TXT                   bootdisks/
      -CHECKSUMS                 FILELIST.TXT              extra/
      -CHECKSUMS.asc             GPG-KEY                   isolinux/
      -CHECKSUMS.md5             PACKAGES.TXT              kernels/
      -CHECKSUMS.md5.asc         PRERELEASE_NOTES          pasture/
      -COPYING                   README81.TXT              rootdisks/
      -COPYRIGHT.TXT             SPEEKUP_DOCS.TXT          slackware/
      -CRYPTO_NOTICE.TXT         SPEEK_INSTALL.TXT         source/
      -CURRENT.WARNING           Slackware-HOWTO
      -ChangeLog.txt             UPGRADE.TXT
      -ncftp ...ware/slackware-current > get README81.TXT
      -README81.TXT:                                           12.29 kB  307.07 kB/s
      -
      -
      -
      -
      - -
      -
      -

      13.10 Talking to Other People

      - -
      -

      13.10.1 wall

      - -

      wall(1) is a quick way to write a message to the users on a -system. The basic syntax is:

      - - - - - -
      -
      -% wall [file]
      -
      -
      - -

      This will result in the contents of [file] being displayed on the terminals of all -currently logged in users. If you don't specify a file, wall will read from standard -input, so you can just type your message, and end with Ctrl+d.

      - -

      wall doesn't have many features, and apart from letting your -users know that you're about to do some serious maintenance to the system, or even reboot -it, so they have time to save their work and log off :)

      -
      - -
      -
      -

      13.10.2 talk

      - -

      talk(1) allows two users to chat. It splits the screen in -half, horizontally. To request a chat with another user, use this command:

      - - - - - -
      -
      -% talk <person> [ttyname]
      -
      -
      - -
      -

      Figure 13-7. Two users in a talk session

      - -

      -
      - -

      If you specify just a username, the chat request is assumed to be local, so only local -users are queried. The ttyname is required if you want to ring a user on a specific -terminal (if the user is logged in more than once). The required information for talk can be obtained from the w(1) -command.

      - -

      talk can also ring users on remote hosts. For the username -you simply specify an email address. talk will try to contact -that remote user on that host.

      - -

      talk is somewhat limited. It only supports two users and is -half-duplex.

      -
      - -
      -
      -

      13.10.3 ytalk

      - -

      ytalk(1) is a backwards compatible replacement for talk. It comes with Slackware as the ytalk -command. The syntax is similar, but has a few differences:

      - - - - - -
      -
      -% ytalk <username>[#ttyname]
      -
      -
      - -
      -

      Figure 13-8. Two users in a ytalk session

      - -

      -
      - -

      The username and terminal are specified the same as under talk, except you must put -them together with the hash mark (#).

      - -

      ytalk offers several advantages:

      - -
        -
      • -

        It supports more than two users.

        -
      • - -
      • -

        A menu of options that can be brought up anytime with Esc.

        -
      • - -
      • -

        You can shell out while still in the talk session.

        -
      • - -
      • -

        Plus more...

        -
      • -
      - -

      If you're a server administrator, you'll want to make sure that the ntalk port is enabled in /etc/inetd.conf. -ytalk needs that to work properly.

      -
      -
      -
      - -
      -
      -

      Chapter 14 Security

      - -

      Security on any system is important; it can prevent people launching attacks from your -machine, as well as protect sensitive data. This chapter is all about how to start -securing your Slackware box against script kiddies, crackers and rogue hamsters alike. -Bear in mind that this is only the start of securing a system; security is a process, not -a state.

      - -
      -
      -

      14.1 Disabling -Services

      - -

      The first step after installing Slackware should be to disable any services you don't -need. Any services could potentially pose a security risk, so it is important to run as -few services as possible (i.e. only those that are needed). Services are started from two -main places - inetd and init scripts.

      - -
      -
      -

      14.1.1 Services started from inetd

      - -

      A lot of the daemons that come with Slackware are run from inetd(8). inetd is a daemon that listens on -all of the ports used by services configured to be started by it and spawns an instance -of the relevant daemon when a connection attempt is made. Daemons started from inetd can be disabled by commenting out the relevant lines in /etc/inetd.conf. To do this, open this file in your favorite editor -(e.g. vi) and you should see lines similar to this:

      - - - - - -
      -
      -telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
      -
      -
      - -

      You can disable this service, and any others you don't need, by commenting them out -(i.e. adding a # (hash) symbol to the beginning of the line). -The above line would then become:

      - - - - - -
      -
      -#telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
      -
      -
      - -

      After inetd has been restarted, this service will be -disabled. You can restart inetd with the command:

      - - - - - -
      -
      -# kill -HUP $(cat /var/run/inetd.pid)
      -
      -
      -
      - -
      -
      -

      14.1.2 Services started from init -scripts

      - -

      The rest of the services started when the machine starts are started from the init -scripts in /etc/rc.d/. These can be disabled in two different -ways, the first being to remove the execute permissions on the relevant init script and -the second being to comment out the relevant lines in the init scripts.

      - -

      For example, SSH is started by its own init script at /etc/rc.d/rc.sshd. You can disable this using:

      - - - - - -
      -
      -# chmod -x /etc/rc.d/rc.sshd
      -
      -
      - -

      For services that don't have their own init script, you will need to comment out the -relevant lines in the init scripts to disable them. For example, the portmap daemon is -started by the following lines in /etc/rc.d/rc.inet2:

      - - - - - -
      -
      -# This must be running in order to mount NFS volumes.
      -# Start the RPC portmapper:
      -if [ -x /sbin/rpc.portmap ]; then
      -  echo "Starting RPC portmapper:  /sbin/rpc.portmap"
      -  /sbin/rpc.portmap
      -fi
      -# Done starting the RPC portmapper.
      -
      -
      - -

      This can be disabled by adding # symbols to the beginnings -of the lines that don't already start with them, like so:

      - - - - - -
      -
      -# This must be running in order to mount NFS volumes.
      -# Start the RPC portmapper:
      -#if [ -x /sbin/rpc.portmap ]; then
      -#  echo "Starting RPC portmapper:  /sbin/rpc.portmap"
      -#  /sbin/rpc.portmap
      -#fi
      -# Done starting the RPC portmapper.
      -
      -
      - -

      These changes will only take effect after either a reboot or changing from and back to -runlevel 3 or 4. You can do this by typing the following on the console (you will need to -log in again after changing to runlevel 1):

      - - - - - -
      -
      -# telinit 1
      -# telinit 3
      -
      -
      -
      -
      - -
      -
      -

      14.2 Host Access -Control

      - -
      -

      14.2.1 iptables

      - -

      iptables is the packet filtering configuration program for -Linux 2.4 and above. The 2.4 kernel (2.4.5, to be exact) was first introduced into -Slackware (as an option) in version 8.0 and was made the default in Slackware 8.1. This -section only covers the basics of its usage and you should check http://www.netfilter.org/ for more -details. These commands can be entered into /etc/rc.d/rc.firewall, which has to be set as executable for these -rules to take effect at startup. Note that incorrect iptables -commands can essentially lock you out of your own machine. Unless you are 100% confident -in your skills, always ensure you have local access to the machine.

      - -

      The first thing most people should do is set the default policy for each inbound chain -to DROP:

      - - - - - -
      -
      -# iptables -P INPUT DROP
      -# iptables -P FORWARD DROP
      -
      -
      - -

      When everything is denied, you can start allowing things. The first thing to allow is -any traffic for sessions which are already established:

      - - - - - -
      -
      -# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      -
      -
      - -

      So as not to break any applications that communicate using the loopback address, it is -usually wise to add a rule like this:

      - - - - - -
      -
      -# iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
      -
      -
      - -

      This rules allows any traffic to and from 127.0.0.0/8 (127.0.0.0 - 127.255.255.255) on -the loopback (lo) interface. When creating rules, it is a good -idea to be as specific as possible, to make sure that your rules do not inadvertently -allow anything evil. That said, rules that allow too little mean more rules and more -typing.

      - -

      The next thing to do would be to allow access to specific services running on your -machine. If, for example, you wanted to run a web server on your machine, you would use a -rule similar to this:

      - - - - - -
      -
      -# iptables -A INPUT -p tcp --dport 80 -i ppp0 -j ACCEPT
      -
      -
      - -

      This will allow access from any machine to port 80 on your machine via the ppp0 interface. You may want to restrict access to this service so -that only certain machines can access it. This rule allows access to your web service -from 64.57.102.34:

      - - - - - -
      -
      -# iptables -A INPUT -p tcp -s 64.57.102.34 --dport 80 -i ppp0 -j ACCEPT
      -
      -
      - -

      Allowing ICMP traffic can be useful for diagnostic purposes. To do this, you would use -a rule like this:

      - - - - - -
      -
      -# iptables -A INPUT -p icmp -j ACCEPT
      -
      -
      - -

      Most people will also want to set up Network Address Translation (NAT) on their -gateway machine, so that other machines on their network can access the Internet through -it. You would use the following rule to do this:

      - - - - - -
      -
      -# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
      -
      -
      - -

      You will also need to enable IP forwarding. You can do this temporarily, using the -following command:

      - - - - - -
      -
      -# echo 1 > /proc/sys/net/ipv4/ip_forward
      -
      -
      - -

      To enable IP forwarding on a more permanent basis (i.e. so that the change is kept -after a reboot), you will need to open the file /etc/rc.d/rc.inet2 in your favorite editor and change the following -line:

      - - - - - -
      -
      -IPV4_FORWARD=0
      -
      -
      - -

      ...to this:

      - - - - - -
      -
      -IPV4_FORWARD=1
      -
      -
      - -

      For more information on NAT, see the NAT -HOWTO.

      -
      - -
      -
      -

      14.2.2 tcpwrappers

      - -

      tcpwrappers controls access to daemons at the application -level, rather than at the IP level. This can provide an extra layer of security at times -when IP-level access controls (e.g. Netfilter) are not functioning correctly. For -example, if you recompile the kernel but forget to include iptables support, your IP -level protection will fail but tcpwrappers will still help protect your system.

      - -

      Access to services protected by tcpwrappers can be controlled using /etc/hosts.allow and /etc/hosts.deny.

      - -

      The majority of people would have a single line in their /etc/hosts.deny file to deny access to all daemons by default. This -line would be:

      - - - - - -
      -
      -ALL : ALL
      -
      -
      - -

      When this is done, you can concentrate on allowing access to services for specified -hosts, domains, or IP ranges. This can be done in the /etc/hosts.allow file, which follows the same format.

      - -

      A lot of people would start by accepting all connections from localhost. This can be achieved using:

      - - - - - -
      -
      -ALL : 127.0.0.1
      -
      -
      - -

      To allow access to SSHd from 192.168.0.0/24, you could use -either of the following rules:

      - - - - - -
      -
      -sshd : 192.168.0.0/24
      -sshd : 192.168.0.
      -
      -
      - -

      It is also possible to restrict access to hosts in certain domains. This can be done -using the following rule (note that this relies on the reverse DNS entry for the -connecting host being trustworthy, so I would recommand against its use on -Internet-connected hosts):

      - - - - - -
      -
      -sshd : .slackware.com
      -
      -
      -
      -
      - -
      -
      -

      14.3 Keeping -Current

      - -
      -

      14.3.1 slackware-security mailing list

      - -

      Whenever a security problem affects Slackware, an email is sent to all subscribers to -the slackware-security@slackware.com mailing list. Reports are -sent out for vulnerabilities of any part of Slackware, apart from the software in /extra or /pasture. These security -announcement emails include details on obtaining updated versions of Slackware packages -or work-arounds, if any.

      - -

      Subscribing to Slackware mailing lists is covered in Section 2.2.2.

      -
      - -
      -
      -

      14.3.2 -The /patches directory

      - -

      Whenever updated packages are released for a version of Slackware (usually only to fix -a security problem, in the case of already released Slackware versions), they are placed -in the /patches directory. The full path to these patches will -depend on the mirror you are using, but will take the form /path/to/slackware-x.x/patches/.

      - -

      Before installing these packages, it is a good idea to verify the md5sum of the package. md5sum(1) is a -commandline utility that creates a “unique” mathematical hash of the file. If -a single bit of the file has been changed, it will generate a different md5sum value.

      - - - - - -
      -
      -% md5sum package-<ver>-<arch>-<rev>.tgz
      -6341417aa1c025448b53073a1f1d287d  package-<ver>-<arch>-<rev>.tgz
      -
      -
      - -

      You should then check this against the line for the new package in the CHECKSUMS.md5 file in the root of the slackware-$VERSION directory (also -in the /patches directory for patches) or in the email to the -slackware-security mailing list.

      - -

      If you have a file with the md5sum values in it, you can source it instead with the --c option to md5sum.

      - - - - - -
      -
      -# md5sum -c CHECKSUMS.md5
      -./ANNOUNCE.10_0: OK
      -./BOOTING.TXT: OK
      -./COPYING: OK
      -./COPYRIGHT.TXT: OK
      -./CRYPTO_NOTICE.TXT: OK
      -./ChangeLog.txt: OK
      -./FAQ.TXT: FAILED
      -
      -
      - -

      As you can see, any files that md5sum evaluates as correct -are listed “OK” while files that fail are labelled -“FAILED”. (Yes, this was an insult to your -intelligence. Why do you put up with me?)

      -
      -
      -
      - -
      -
      -

      Chapter 15 Archive Files

      - -
      -

      15.1 gzip

      - -

      gzip(1) is the GNU compression program. It takes a single -file and compresses it. The basic usage is as follows:

      - - - - - -
      -
      -% gzip filename
      -
      -
      - -

      The resulting file will be named filename.gz and will usually be smaller than the input -file. Note that filename.gz will replace filename. This means that filename will -no longer exist, even though a gzipped copy will. Regular text files will compress -nicely, while jpeg images, mp3s, and other such files will not compress too well as they -are already compressed. This basic usage is a balance of final file size and compression -time. The maximum compression can be achieved like so:

      - - - - - -
      -
      -% gzip -9 filename
      -
      -
      - -

      This will take a longer time to compress the file, but the result will be as small as -gzip can make it. Using lower values for the command line option -will cause it to compress faster, but the file will not be as compressed.

      - -

      Decompressing gzipped files can be done using two commands, which are really just the -same program. gzip will decompress any file with a recognized -file extension. A recognized extension can be any of the following: .gz, -gz, .z, --z, .Z, or -Z. The first method is to call gunzip(1) -on a file, like so:

      - - - - - -
      -
      -% gunzip filename.gz
      -
      -
      - -

      This will leave a decompressed version of infile in the current directory, and the .gz extension will be stripped from the filename. gunzip is really part of gzip and is -identical to gzip -d. As such, gzip is -often pronounced gunzip, as that name just sounds cooler. -:^)

      -
      - -
      -
      -

      15.2 bzip2

      - -

      bzip2(1) is an alternative compression program installed on -Slackware Linux. It uses a different compression algorithm from gzip, which results in some advantages and some disadvantages. The -main advantage for bzip2 is the compressed file size. bzip2 will almost always compress better than gzip. In some instances, this can result in dramatically smaller -files. This can be a great advantage for people on slower modem connections. Also -remember, when downloading software from a public ftp server, it's generally good -netiquette to download the .bz2 files instead of the .gz files, as this results in less overhead for the generous people -hosting the server.

      - -

      The disadvantage to bzip2 is that it is more CPU intensive -than gzip. This means that bzipping a file will generally take -longer and will use more of the CPU than gzipping the file would. When considering which -compression program to use, you must weigh this speed vs. compressed size and determine -which is more important.

      - -

      The usage of bzip2 is nearly identical to gzip, so not much time will be spent discussing it. Like gunzip, bunzip2 is identical to bzip2 -d. The primary difference in practical usage is that bzip2 uses the .bz2 extension.

      - - - - - -
      -
      -% bzip2 filename
      -% bunzip2 filename.bz2
      -% bzip2 -9 filename
      -
      -
      -
      - -
      -
      -

      15.3 tar

      - -

      tar(1) is the GNU tape archiver. It takes several files or -directories and creates one large file. This allows you to compress an entire directory -tree, which is impossible by just using gzip or bzip2. tar has many command line options, -which are explained in its man page. This section will just cover the most common uses of -tar.

      - -

      The most common use for tar is to decompress and unarchive a -package that you've downloaded from a web site or ftp site. Most files will come with a -.tar.gz extension. This is commonly known as a -“tarball”. It means that several files were archived using tar and then compressed using gzip. You -might also see this listed as a .tar.Z file. It means the same -thing, but this is usually encountered on older Unix systems.

      - -

      Alternatively, you might find a .tar.bz2 file somewhere. -Kernel source is distributed as such because it is a smaller download. As you might have -guessed, this is several files archived with tar and then -bzipped.

      - -

      You can get to all the files in this archive by making use of tar and some command line arguments. Unarchiving a tarball makes use -of the -z flag, which means to first run the file through gunzip and decompress it. The most common way to decompress a -tarball is like so:

      - - - - - -
      -
      -% tar -xvzf filename.tar.gz
      -
      -
      - -

      That's quite a few options. So what do they all mean? The -x -means to extract. This is important, as it tells tar exactly -what to do with the input file. In this case, we'll be splitting it back up into all the -files that it came from. -v means to be verbose. This will list -all the files that are being unarchived. It is perfectly acceptable to leave this option -off, if somewhat boring. Alternatively, you could use -vv to be -very verbose and list even more information about each file being unarchived. The -z option tells tar to run filename.tar.gz through gunzip first. And -finally, the -f option tells tar that -the next string on the command line is the file to operate on.

      - -

      There are a few other ways to write this same command. On older systems lacking a -decent copy of GNU tar, you might see it written like so:

      - - - - - -
      -
      -% gunzip filename.tar.gz | tar -xvf -
      -
      -
      - -

      This command line will uncompress the file and send the output to tar. Since gzip will write its output to -standard out if told to do so, this command will write the decompressed file to standard -out. The pipe then sends it to tar for unarchiving. The -“-” means to operate on standard input. It will unarchive the stream of data -that it gets from gzip and write that to the disk.

      - -

      Another way to write the first command line is to leave off the dash before the -options, like so:

      - - - - - -
      -
      -% tar xvzf filename.tar.gz
      -
      -
      - -

      You might also encounter a bzipped archive. The version of tar that comes with Slackware Linux can handle these the same as -gzipped archives. Instead of the -z command line option, you'd -use -j:

      - - - - - -
      -
      -% tar -xvjf filename.tar.bz2
      -
      -
      - -

      It is important to note that tar will place the unarchived -files in the current directory. So, if you had an archive in /tmp that you wanted to decompress into your home directory, there -are a few options. First, the archive could be moved into your home directory and then -run through tar. Second, you could specify the path to the -archive file on the command line. Third, you can use the -C -option to “explode” the tarball in a specified directory.

      - - - - - -
      -
      -% cd $HOME
      -% cp /tmp/filename.tar.gz .
      -% tar -xvzf filename.tar.gz
      -
      -% cd $HOME
      -% tar -xvzf /tmp/filename.tar.gz
      -
      -% cd /
      -% tar -xvzf /tmp/filename.tar.gz -C $HOME
      -
      -
      - -

      All the above statements are equivalent. In each case, the archive is unpacked inside -your home directory and the original uncompressed archive is left in place.

      - -

      So what good is being able to uncompress these archives if you can't make them? Well, -tar handles that too. In most cases it's as easy as removing the -“-x” option and replacing it with the “-c” option.

      - - - - - -
      -
      -% tar -cvzf filename.tar.gz .
      -
      -
      - -

      In this command line, the -c option tells tar to create an archive, while the -z -option runs the resulting archive file through gzip to compress -it. filename.tar.gz is the file that you want to create.

      - -

      Specifying the “-f” option isn't always -necessary, but is typically good practice anyway. Without it, tar writes to standard output, which is usually desired for piping -tar's output to another program, like so.

      - - - - - -
      -
      -% tar -cv filename.tar . | gpg --encrypt
      -
      -
      - -

      That command creates an non-compressed tar archive of the current directory, pipes the -tarball through gpg which encrypts and compresses the tarball, -making it realistically impossible to read by anyone other than the person knowing the -secret key.

      -
      - -
      -
      -

      15.4 zip

      - -

      Finally, there are two utilities that can be used on zip files. These are very common -in the Windows world, so Linux has programs to deal with them. The compression program is -called zip(1), and the decompression program is called unzip(1).

      - - - - - -
      -
      -% zip foo *
      -
      -
      - -

      This will create the file foo.zip, which will contain all -the files in the current directory. zip will add the .zip extension automatically, so there's no need to include that in -the file name. You can also recurse through the current directory, zipping up any -directories that are also laying around:

      - - - - - -
      -
      -% zip -r foo *
      -
      -
      - -

      Decompressing files is easy, as well.

      - - - - - -
      -
      -% unzip foo.zip
      -
      -
      - -

      This will extract all the files in the file foo.zip, -including any directories in the archive.

      - -

      The zip utilities have several advanced options for creating -self-extracting archives, leaving out files, controlling compressed file size, printing -out what will happen, and much more. See the man pages for zip -and unzip to find out how to use these options.

      -
      -
      - -
      -
      -

      Chapter 16 Vi

      - -

      vi(1) is the standard Unix text editing program, and while -mastering it is not as essential as it once was, is still a very rewarding goal. There -are several versions (or clones) of vi available, including vi, elvis, vile, -and vim. One of these is available on just about any version of -Unix, as well as on Linux. All of these versions include the same basic feature set and -commands, so learning one clone should make it easy to learn another. With the variety of -text editors included with Linux distributions and Unix variants these days, many people -no longer use vi. Still, it remains the most universal text -editor across Unix and Unix work-alikes. Mastering vi means you -should never be sitting at a Unix machine and not be comfortable with at least one -powerful text editor.

      - -

      vi includes a number of powerful features including syntax -highlighting, code formatting, a powerful search-and-replace mechanism, macros, and more. -These features make it especially attractive to programmers, web developers, and the -like. System administrators will appreciate the automation and integration with the shell -that is possible.

      - -

      On Slackware Linux, the default version of vi available is -elvis. Other versions - including vim -and gvim - are available if you've installed the proper -packages. gvim is an X Window version of vim that includes toolbars, detachable menus, and dialog boxes.

      - -
      -
      -

      16.1 Starting vi

      - -

      vi can be started from the command line in a variety of ways. -The simplest form is just:

      - - - - - -
      -
      -% vi
      -
      -
      - -
      -

      Figure 16-1. A vi session.

      - -

      -
      - -

      This will start up vi with an empty buffer. At this point, -you'll see a mostly blank screen. It is now in “command mode”, waiting for -you to do something. For a discussion of the various vi modes, -see the Section 16.2. In order to quit out of vi, type the following:

      - - - - - -
      -
      -:q
      -
      -
      - -

      Assuming that there have been no changes to the file, this will cause vi to quit. If there have been changes made, it will warn you that -there have been changes and tell you how to disregard them. Disregarding changes usually -means appending an exclamation point after the “q” like -so:

      - - - - - -
      -
      -:q!
      -
      -
      - -

      The exclamation point usually means to force some action. We'll discuss it and other -key combinations in further details later.

      - -

      You can also start vi with a pre-existing file. For example, -the file /etc/resolv.conf would be opened like so:

      - - - - - -
      -
      -% vi /etc/resolv.conf
      -
      -
      - -

      Finally, vi can be started on a particular line of a file. -This is especially useful for programmers when an error message includes the line their -program bombed on. For example, you could start up vi on line 47 -of /usr/src/linux/init/main.c like so:

      - - - - - -
      -
      -% vi +47 /usr/src/linux/init/main.c
      -
      -
      - -

      vi will display the given file and will place the cursor at -the specified line. In the case where you specify a line that is after the end of the -file, vi will place the cursor on the last line. This is -especially helpful for programmers, as they can jump straight to the location in the file -that an error occurred, without having to search for it.

      -
      - -
      -
      -

      16.2 Modes

      - -

      vi operates in various modes, which are used to accomplish -various tasks. When you first start vi, you are placed into -command mode. From this point, you can issue various commands to manipulate text, move -around in the file, save, quit, and change modes. Editing the text is done in insert -mode. You can quickly move between modes with a variety of keystrokes, which are -explained below.

      - -
      -
      -

      16.2.1 -Command Mode

      - -

      You are first placed into command mode. From this mode, you cannot directly enter text -or edit what is already there. However, you can manipulate the text, search, quit, save, -load new files, and more. This is intended only to be an introduction to the command -mode. For a description of the various commands, see Section -16.7.

      - -

      Probably the most often used command in command mode is changing to insert mode. This -is accomplished by hitting the i key. The cursor changes shapes, -and -- INSERT -- is displayed at -the bottom of the screen (note that this does not happen in all clones of vi). From there, all your keystrokes are entered into the current -buffer and are displayed to the screen. To get back into command mode, hit the ESCAPE key.

      - -

      Command mode is also where you move around in the file. On some systems, you can use -the arrow keys to move around. On other systems, you may need to use the more traditional -keys of “hjkl”. Here is a simple listing of how these -keys are used to move around:

      - -
      - --- - - - - - - - - - - - - - - - - - - - - -
      hmove left one character
      jmove down one character
      kmove up one character
      lmove right one character
      -
      - -

      Simply press a key to move. As you will see later, these keys can be combined with a -number to move much more efficiently.

      - -

      Many of the commands that you will use in command mode begin with a colon. For -example, quitting is :q, as discussed earlier. The colon simply -indicates that it is a command, while the “q” tells vi to quit. Other commands are an optional number, followed by a -letter. These commands do not have a colon before them, and are generally used to -manipulate the text.

      - -

      For example, deleting one line from a file is accomplished by hitting dd. This will remove the line that the cursor is on. Issuing the -command 4dd would tell vi to remove the -line that the cursor is on and the three after that. In general, the number tells vi how many times to perform the command.

      - -

      You can combine a number with the movement keys to move around several characters at a -time. For example, 10k would move up ten lines on the screen.

      - -

      Command mode can also be used to cut and paste, insert text, and read other files into -the current buffer. Copying text is accomplished with the y key (y stands for yank). Copying the current line is done by typing yy, and this can be prefixed with a number to yank more lines. Then, -move to the location for the copy and hit p. The text is pasted on -the line after the current one.

      - -

      Cutting text is done by typing dd, and p -can be used to paste the cut text back into the file. Reading in text from another file -is a simple procedure. Just type :r, followed by a space and the -file name that contains the text to be inserted. The file's contents will be pasted into -the current buffer on the line after the cursor. More sophisticated vi clones even contain filename completion similar to the -shell's.

      - -

      The final use that will be covered is searching. Command mode allows for simple -searching, as well as complicated search-and-replace commands that make use of a powerful -version of regular expressions. A complete discussion of regular expressions is beyond -the scope of this chapter, so this section will only cover simple means of searching.

      - -

      A simple search is accomplished by hitting the / key, followed -by the text that you are searching for. vi will search forward -from the cursor to the end of the file for a match, stopping when it finds one. Note that -inexact matches will cause vi to stop as well. For example, a -search for “the” will -cause vi to stop on “then”, “therefore”, and so on. This is because all of those -words do match “the”.

      - -

      After vi has found the first match, you can continue on to -the next match simply by hitting the / key followed by enter. You -can also search backwards through the file by replacing the slash with the ? key. For example, searching backwards through the file for -“the” would be -accomplished by typing ?the.

      -
      - -
      -
      -

      16.2.2 Insert -Mode

      - -

      Inserting and replacing text is accomplished in insert mode. As previously discussed, -you can get into insert mode by hitting i from command mode. Then, -all text that you type is entered into the current buffer. Hitting the ESCAPE key takes you back into command mode.

      - -

      Replacing text is accomplished in several ways. From command mode, hitting r will allow you to replace the one character underneath the cursor. -Just type the new character and it will replace the one under the cursor. You will then -be immediately placed back into command mode. Hitting R allows you -to replace as many characters as you'd like. To get out of this replacement mode, just -hit ESCAPE to go back into command mode.

      - -

      There is yet another way to toggle between insertion and replacement. Hitting the INSERT key from command mode will take you into insert mode. Once you -are in insert mode, the keyboard's INSERT key serves as a toggle -between insert and replace. Hitting it once will allow you to replace. Hitting it once -more will once again allow you to insert text.

      -
      -
      - -
      -
      -

      16.3 Opening -Files

      - -

      vi allows you to open files from command mode as well as -specifying a file on the command line to open. To open the file /etc/lilo.conf:

      - - - - - -
      -
      -:e /etc/lilo.conf
      -
      -
      - -

      If you have made changes to the current buffer without saving, vi will complain. You can still open the file without saving the -current buffer by typing :e!, followed by a space and the filename. -In general, vi's warnings can be suppressed by following the -command with an exclamation mark.

      - -

      If you want to reopen the current file, you can do so simply by typing e!. This is particularly useful if you have somehow messed up the file -and want to reopen it.

      - -

      Some vi clones (for example, vim) -allow for multiple buffers to be open at the same time. For example, to open up the file -09-vi.sgml in my home directory while another file was open, I -would type:

      - - - - - -
      -
      -:split ~/09-vi.sgml
      -
      -
      - -

      The new file is displayed on the top half of the screen, and the old file is displayed -in the bottom half of the screen. There are a lot of commands that manipulate the split -screen, and many of these commands start to resemble something out of Emacs The best place to look up these commands would be the man page -for your vi clone. Note that many clones do not support the split-screen idea, so you -might not be able to use it at all.

      -
      - -
      -
      -

      16.4 Saving -Files

      - -

      There are several ways to save files in vi. If you want to -save the current buffer to the file randomness, you would -type:

      - - - - - -
      -
      -:w randomness
      -
      -
      - -

      Once you've saved the file once, saving it again is as simple as typing :w. Any changes will be written out to the file. After you've saved -the file, you are dumped back into command mode. If you want to save the file and quit -vi (a very common operation), you would type :wq. That tells vi to save the current file -and quit back to the shell.

      - -

      On occasion, you want to save a file that is marked as read-only. You can do this by -adding an exclamation point after the write command, like so:

      - - - - - -
      -
      -:w!
      -
      -
      - -

      However, there will still be instances where you cannot write the file (for example, -you are attempting to edit a file that is owned by another user). When this happens, vi will tell you that it cannot save the file. If you really want to -edit the file, you'll have to come back and edit it as root or -(preferably) the owner of that file.

      -
      - -
      -
      -

      16.5 Quitting vi

      - -

      One way to quit vi is through :wq, -which will save the current buffer before quitting. You can also quit without saving with -:q or (more commonly) :q!. The latter is used -when you've modified the file but do not wish to save any changes to it.

      - -

      On occasion, your machine might crash or vi might crash. -However, both elvis and vim will take -steps to minimize the damage to any open buffers. Both editors save the open buffers to a -temporary file on occasion. This file is usually named similarly to the open file, but -with a dot at the beginning. This makes the file hidden.

      - -

      This temporary file gets removed once the editor quits under normal conditions. This -means that the temporary copy will still be around if something crashes. When you go back -to edit the file again, you will be prompted for what action to take. In most cases, a -large amount of your unsaved work can be recovered. elvis will -also send you a mail (from Graceland, oddly enough :) telling you that a backup copy -exists.

      -
      - -
      -
      -

      16.6 vi -Configuration

      - -

      Your vi clone of choice can be configured in several -ways.

      - -

      A variety of commands can be entered while in command mode to set up vi just how you like it. Depending on your editor, you can enable -features to make programming easier (like syntax hilighting, auto-indenting, and more), -set up macros to automake tasks, enable textual substitutions, and more.

      - -

      Almost all of these commands can be put into a configuration file in your home -directory. elvis expects a .exrc file, -while vim expects a .vimrc file. Most -of the setup commands that can be entered in command mode can be placed in the -configuration file. This includes setup information, textual substitutions, macros, and -more.

      - -

      Discussing all these options and the differences between the editors is quite an -involved subject. For more information, check out the man page or web site for your -preferred vi editor. Some editors (like vim) have extensive help within the editor that can be accessed with -the :help command, or something similar. You can also check out the -O'Reilly book Learning the vi Editor by -Lamb and Robbins.

      - -

      Many common programs in Linux will load up a text file in vi -by default. For example, editing your crontabs will start up vi -by default. If you do not like vi and would like another editor -to be started instead, all you need to do is set the VISUAL -environment variable to the editor you prefer. For information on setting environment -variables, see the section called Environment Variables in Chapter 8. If you want to make -sure that your editor will be the default every time you login, add the VISUAL setting to -your .bash_profile or .bashrc -files.

      -
      - -
      -
      -

      16.7 Vi Keys

      - -

      This section is a quick reference of many common vi commands. -Some of these were discussed earlier in the chapter, while many will be new.

      - -
      -

      Table 16-1. Movement

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      OperationKey
      left, down, up, righth, j, k, l
      To the end of the line$
      To the beginning of the line^
      To the end of the fileG
      To the beginning of the file:1
      To line 47:47
      -
      - -
      -

      Table 16-2. Editing

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      OperationKey
      Removing a linedd
      Removing five lines5dd
      Replacing a characterr
      Removing a characterx
      Removing ten characters10x
      Undo last actionu
      Join current and next linesJ
      Replace old with new, globally%s'old'new'g
      -
      - -
      -

      Table 16-3. Searching

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      OperationKey
      Search for “asdf”/asdf
      Search backwards for “asdf”?asdf
      Repeat last search forwards/
      Repeat last search backwards?
      Repeat last search, same directionn
      Repeat last search, opposite directionN
      -
      - -
      -

      Table 16-4. Saving and Quitting

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      OperationKey
      Quit:q
      Quit without saving:q!
      Write and quit:wq
      Write, without quitting:w
      Reload currently open file:e!
      Write buffer to file asdf:w asdf
      Open file hejaz:e hejaz
      Read file asdf into buffer:r asdf
      Read output of ls into buffer:r !ls
      -
      -
      -
      - -
      -
      -

      Chapter 17 Emacs

      - -

      While vi (with its clones) is without a doubt the most -ubiquitous editor on Unix-like systems, Emacs comes in a good second. Instead of using -different “modes”, like vi does, it uses Control and Alt key combinations to enter -commands, in much the same way that you can use Control and Alt key combinations in a word processor and indeed in many other -applications to execute certain functions. (Though it should be noted that the commands -rarely correspond; so while many modern applications use Ctrl-C/ X/ V for copying, -cutting and pasting, Emacs uses different keys and actually a somewhat different -mechanism for this.)

      - -

      Also unlike vi, which is an (excellent) editor and nothing -more, Emacs is a program with near endless capabilities. Emacs is (for the most part) -written in Lisp, which is a very powerful programming language that has the peculiar -property that every program written in it is automatically a Lisp compiler of its own. -This means that the user can extend Emacs, and in fact write completely new programs -“in Emacs”.

      - -

      As a result, Emacs is not just an editor anymore. There are many add-on packages for -Emacs available (many come with the program's source) that provide all sorts of -functionality. Many of these are related to text editing, which is after all Emacs' basic -task, but it doesn't stop there. There are for example several spreadsheet programs for -Emacs, there are databases, games, mail and news clients (the top one being Gnus), -etc.

      - -

      There are two main versions of Emacs: GNU Emacs (which is the version that comes with -Slackware) and XEmacs. The latter is not a version for Emacs running under X. In fact, both Emacs -and XEmacs run on the console as well as under X. XEmacs was once started as a project to -tidy up the Emacs code. Currently, both versions are being actively developed, and there -is in fact much interaction between the two development teams. For the present chapter, -it is immaterial whether you use Emacs or XEmacs, the differences between them are not -relevant to the normal user.

      - -
      -
      -

      17.1 Starting -emacs

      - -

      Emacs can be started from the shell by simply typing emacs. -When you are running X, Emacs will (normally) come up with its own X window, usually with -a menu bar at the top, where you can find the most important functions. On startup, Emacs -will first show a welcome message, and then after a few seconds will drop you in the -*scratch* buffer. (See Section 17.2.)

      - -
      -

      -
      - -

      You can also start Emacs on an existing file by typing

      - - - - - -
      -
      -% emacs /etc/resolv.conf
      -
      -
      - -

      This will cause Emacs to load the specified file when it starts up, skipping the -welcome message.

      - -
      -
      -

      17.1.1 Command -Keys

      - -

      As mentioned above, Emacs uses Control and Alt combinations for commands. The usual convention is to write these -with C-letter and M-letter, respectively. So C-x means Control+x, and M-x means Alt+x. (The letter M is used instead of A because -originally the key was not the Alt key but the Meta key. The Meta key has all but disappeared -from computer keyboards, and in Emacs the Alt key has taken over -its function.)

      - -

      Many Emacs commands consist of sequences of keys and key combinations. For example, C-x C-c (that is Control-x -followed by Control-c ) quits Emacs, C-x C-s saves the current file. Keep in mind that C-x C-b is not the same as C-x b. The former means Control-x followed by Control-b, while the latter means Control-x followed by just 'b'.

      -
      -
      - -
      -
      -

      17.2 Buffers

      - -

      In Emacs, the concept of “buffers” is essential. Every file that you open -is loaded into its own buffer. Furthermore, Emacs has several special buffers, which do -not contain a file but are used for other things. Such special buffers usually have a -name that starts and ends with an asterisk. For example, the buffer that Emacs shows when -it is first started, is the so-called *scratch* buffer. In the *scratch* buffer, you can -type text in the normal way, but text that is typed there is not saved when Emacs is -closed.

      - -

      There is one other special buffer you need to know about, and that is the minibuffer. -This buffer consists of only one line, and is always on the screen: it is the very last -line of the Emacs window, below the status bar for the current buffer. The minibuffer is -where Emacs shows messages for the user, and it is also the place where commands that -require some user input are executed. For example, when you open a file, Emacs will ask -for its name in the minibuffer.

      - -

      Switching from one buffer to another can be done with the command C-x b. This will prompt -you for the name of a buffer (a buffer's name is usually the name of the file you are -editing in it), and it gives a default choice, which is normally the buffer that you were -in before you switched to or created the current buffer. Just hitting Enter will switch to that default -buffer.

      - -

      If you want to switch to another buffer than the default offered by Emacs, just type -its name. Note that you can use so-called Tab-completion here: type -the first few letters of the buffer's name and hit Tab; Emacs will -then complete the name of the buffer. Tab completion works -everywhere in Emacs where it makes sense.

      - -

      You can get a list of open buffers by hitting C-x C-b. This command will -usually split the screen in two, displaying the buffer you were working in in the top -half, and a new buffer called *Buffer List* in the bottom half. This buffer contains a -list of all the buffers, their sizes and modes, and the files, if any, that those buffers -are visiting (as it is called in Emacs). You can get rid of this split screen by typing -C-x 1.

      - -
      - - - - - -
      Note -

      Under X, the list of buffers is also available in the Buffer menu in the menu bar.

      -
      -
      -
      - -
      -
      -

      17.3 Modes

      - -

      Every buffer in Emacs has an associated mode. This mode is very different from the -idea of modes in vi: a mode tells you what kind of buffer you -are in. For example, there is text-mode for normal text files, but there are also modes -such as c-mode for editing C programs, sh-mode for editing shell scripts, latex-mode for -editing LaTeX files, mail-mode for editing email and news -messages, etc. A mode provides special customizations and functionality that is useful -for the kind of file you are editing. It is even possible for a mode to redefine keys and -key commands. For example, in Text mode, the Tab key simply jumps to the next tab stop, -but in many programming language modes, the Tab key indents the -current line according to the depth of the block that line is in.

      - -

      The modes mentioned above are called major modes. Each buffer has exactly one major -mode. Additionally, a buffer can have one or more minor modes. A minor mode provides -additional features that may be useful for certain editing tasks. For example, if you hit -the INSERT key, you invoke overwrite-mode, which does what you'd -expect. There is also an auto-fill-mode, which is handy in combination with text-mode or -latex-mode: it causes each line that you type to be automatically wrapped once the line -reaches a certain number of characters. Without auto-fill-mode, you have to type M-q to fill out a paragraph. (Which you can also -use to reformat a paragraph after you've edited some text in it and it is no longer -nicely filled out.)

      - -
      -
      -

      17.3.1 Opening -files

      - -

      To open a file in Emacs, type

      - - - - - -
      -
      -C-x C-f
      -
      -
      - -

      Emacs will ask you for the name of the file, filling in some default path for you -(which is usually ~/ ). After you type the filename (you can -use Tab completion) and hit ENTER , Emacs -will open the file in a new buffer and display that buffer on the screen.

      - -
      - - - - - -
      Note -

      Emacs will automatically create a new buffer, it will not load the file into the -current buffer.

      -
      -
      - -

      In order to create a new file in emacs, you cannot just go typing right away. You -first have to create a buffer for it, and come up with a filename. You do this by typing -C-x C-f and typing a filename, just as if you were opening an existing file. -Emacs will notice that the file you typed doesn't exist, and will create a new buffer and -report “(New file)” in the minibuffer.

      - -

      When you type C-x C-f and then enter a directory name instead of a -filename, Emacs will create a new buffer in which you will find a list of all the files -in that directory. You can move the cursor to the file that you are looking for and type -, and Emacs will open it. (There are in fact a lot more actions you can perform here, -such as deleting, renaming and moving files, etc. Emacs is now in dired-mode, which is -basically a simple file manager.)

      - -

      When you have typed C-x C-f and suddenly change your mind, you can type -C-g to cancel the action. C-g works almost everywhere where you want to -cancel an action or command that you've started but don't want to finish.

      -
      -
      - -
      -
      -

      17.4 Basic -Editing

      - -

      When you have opened a file, you can of course move around in it with the cursor. The -cursor keys and PgUp, PgDn do what you'd expect. Home and End jump to the beginning and end of the line. (In older versions, -they would actually jump to the beginning and end of the buffer.) However, there are also -Control and Meta (Alt) -key combos that move the cursor around. Because you do not need to move your hands to -another part of the keyboard for these, they are much quicker once you get used to them. -The most important such commands are listed in Table -17-1.

      - -
      -

      Table 17-1. Basic Emacs Editing Commands

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CommandResult
      C-b go one character back
      C-f go one character forward
      C-n go one line down
      C-p go one line up
      C-a go to the beginning of the line
      C-e go to the end of the line
      M-b go one word back
      M-f go one word forward
      M-} go one paragraph forward
      M-{ go one paragraph backward
      M-a go one sentence backward
      M-e go one sentence forward
      C-d delete the character under the cursor
      M-d delete until the end of the current word
      C-v go down one screen (i.e., PgDn)
      M-v go up one screen (i.e., PgUp)
      M-< go to the beginning of the buffer
      M-> go to the end of the buffer
      C-_ undo the last change (can be repeated); note that you actually have to type Shift+Control+hyphen for -this.
      C-k delete to end of line
      C-s forward search
      C-r backward search
      -
      - -

      Note that many Meta commands are parallel to the Control commands except that they operate on larger units: while C-f goes forward one character, M-f goes forward an entire word, etc.

      - -

      Also note that M-< and M-> require you to type Shift+Alt+comma and Shift+Alt+dot -respectively, since < and > are on Shift+comma and Shift+dot. (Unless of course you have a different keyboard layout from the -standard US layout.)

      - -

      Note that C-k deletes (kills, as it is -commonly called) all the text after the cursor to the end of the line, but doesn't delete -the line itself (i.e., it doesn't delete the final newline). It only deletes the line if -there was no text after the cursor. In other words, in order to delete a complete line, -you have to put the cursor at the beginning of the line, and then hit C-k twice: once to delete the text on the line, -once to delete the line itself.

      -
      - -
      -
      -

      17.5 Saving -Files

      - -

      In order to save a file, you type

      - - - - - -
      -
      -C-x C-s
      -
      -
      - -

      Emacs will not ask you for a filename, the buffer will just be saved to the file it -was loaded from. If you want to save your text to another file, type

      - - - - - -
      -
      -C-x C-w
      -
      -
      - -

      When you save the file for the first time in this session, Emacs will normally save -the old version of your file to a backup file, which has the same name appended with a -tilde: so if you're editing a file “cars.txt”, -Emacs will create a backup “cars.txt~”.

      - -

      This backup file is a copy of the file that you opened. While you are working, Emacs -will also regularly create an auto-save copy of the work you are doing, to a file named -with hash signs: #cars.txt#. This backup is deleted when you -save the file with C-x C-s.

      - -

      When you are done editing a file, you can kill the buffer that holds it by typing

      - - - - - -
      -
      -C-x k
      -
      -
      - -

      Emacs will then ask you which buffer you want to kill, with the current buffer as -default, which you can select by hitting ENTER. If you haven't -saved your file yet, Emacs will ask you if you really want to kill the buffer.

      - -
      -
      -

      17.5.1 Quitting -Emacs

      - -

      When you are done with Emacs altogether, you can type

      - - - - - -
      -
      -C-x C-c
      -
      -
      - -

      This quits Emacs. If you have any unsaved files, Emacs will tell you so, and ask if -you want to save them each in turn. If you answer no to any of these, Emacs will ask for -one final confirmation and then quit.

      -
      -
      -
      - -
      -
      -

      Chapter 18 Slackware Package -Management

      - -

      A software package is a bundle of related programs that are ready for you to install. -When you download a source code archive, you have to configure, compile, and install it -by hand. With a software package, this has already been done for you. All that you have -to do is install the package. Another handy feature of using software packages is that it -is very easy to remove and upgrade them, if you so desire. Slackware comes with programs -for all your package management needs. You can install, remove, upgrade, make, and -examine packages very easily.

      - -

      There's a myth that's been going around ever since RedHat debuted RedHat Package -Manager, that Slackware has no package management tool. This simply couldn't be further -from the truth. Slackware has always included a package manager, even before RedHat -existed. While not as full-featured or as ubiquitous as rpm (or for that matter deb), pkgtool and its associated programs are every bit as good at -installing packages as rpm. The truth about pkgtool is not that -it doesn't exist, but that it doesn't do any dependency checking.

      - -

      Apparently many people in the Linux community think that a packager manager must by -definition include dependency checking. Well, that simply isn't the case, as Slackware -most certainly does not. This is not to say that Slackware packages don't have -dependencies, but rather that its package manager doesn't check for them. Dependency -management is left up to the sysadmin, and that's the way we like it.

      - -
      -
      -

      18.1 Overview of Package Format

      - -

      Before learning the utilities, you should become familiar with the format of a -Slackware package. In Slackware, a package is simply a tar archive file that has been -compressed with gzip. Packages are built to be extracted in the -root directory.

      - -

      Here is a fictitious program and its example package:

      - - - - - -
      -
      -./
      -usr/
      -usr/bin/
      -usr/bin/makehejaz
      -usr/doc/
      -usr/doc/makehejaz-1.0/
      -usr/doc/makehejaz-1.0/COPYING
      -usr/doc/makehejaz-1.0/README
      -usr/man/
      -usr/man/man1
      -usr/man/man1/makehejaz.1.gz
      -install/
      -install/doinst.sh
      -
      -
      - -

      The package system will extract this file in the root directory to install it. An -entry in the package database will be created that contains the contents of this package -so that it can be upgraded or removed later.

      - -

      Notice the install/ subdirectory. This is a special -directory that can contain a postinstallation script called doinst.sh. If the package system finds this file, it will execute -it after installing the package.

      - -

      Other scripts can be embedded in the package, but those are discussed more in detail -in Section 18.3.2 below.

      -
      - -
      -
      -

      18.2 Package Utilities

      - -

      There are four main utilities for package management. They perform installation, -removal, and upgrades of packages.

      - -
      -
      -

      18.2.1 pkgtool

      - -

      pkgtool(8) is a menu-driven program that allows installation -and removal of packages. The main menu is shown in Figure -18-1.

      - -
      -

      Figure 18-1. Pkgtool's main menu.

      - -

      -
      - -

      Installation is offered from the current directory, another directory, or from floppy -disks. Simply select the installation method you want and pkgtool will search that -location for valid packages to install.

      - -

      You may also view a list of installed packages, as shown in Figure 18-2.

      - -
      -

      Figure 18-2. Pkgtool view mode

      - -

      -
      - -

      If you want to remove packages, select the remove option and you will be presented -with a checklist of all the installed packages. Flag the ones you want to remove and -select OK. pkgtool will remove them.

      - -

      Some users prefer this utility to the command line utilities. However, it should be -noted that the command line utilities offer many more options. Also, the ability to -upgrade packages is only offered through the command line utilities.

      -
      - -
      -
      -

      18.2.2 installpkg

      - -

      installpkg(8) handles installation of new packages on the -system. The syntax is as follows:

      - - - - - -
      -
      -# installpkg option package_name
      -
      -
      - -

      Three options are provided for installpkg. Only one option -can be used at a time.

      - -
      -

      Table 18-1. installpkg Options

      - - --- - - - - - - - - - - - - - - - - - - - - - - -
      OptionEffects
      -mPerforms a makepkg operation on the current directory.
      -warnShows what would happen if you installed the specified package. This is useful for -production systems so you can see exactly what would happen before installing -something.
      -rRecursively install all packages in the current directory and down. The package name -can use wildcards, which would be used as the search mask when recursively -installing.
      -
      - -

      If you pass the ROOT environment variable before installpkg, that path will be used for the root directory. This is -useful for setting up new drives for your root directory. They will typically be mounted -to /mnt or something other than /.

      - -

      The installed package database entry is stored in /var/log/packages. The entry is really just a plain text file, one -for each package. If the package has a postinstallation script, it is written to /var/log/scripts/.

      - -

      You may specify several packages or use wildcards for the package name. Be advised -that installpkg will not tell you if you are overwriting an -installed package. It will simply install right on top of the old one. If you want to -ensure that old files from the previous package are safely removed, use upgradepkg.

      -
      - -
      -
      -

      18.2.3 removepkg

      - -

      removepkg(8) handles removing installed packages from the -system. The syntax is as follows:

      - - - - - -
      -
      -# removepkg option package_name
      -
      -
      - -

      Four options are provided for removepkg. Only one option may -be used at a time.

      - -
      -

      Table 18-2. removepkg Options

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      OptionEffects
      -copyThe package is copied to the preserved packages directory. This creates a tree of the -original package without removing it.
      -keepSaves temporary files created during the removal. Really only useful for debugging -purposes.
      -preserveThe package is removed, but copied to the preserved packages directory at the same -time.
      -warnShows what would happen if you removed the package.
      -
      - -

      If you pass the ROOT environment variable before removepkg, that path will be used for the root directory. This is -useful for setting up new drives for your root directory. They will typically be mounted -to /mnt or something other than /.

      - -

      removepkg looks at the other installed packages and only -removes files unique to the package you specify. It will also scan the postinstallation -script for the specified package and remove any symbolic links that were created by -it.

      - -

      During the removal process, a status report is displayed. After the removal, the -package database entry is moved to /var/log/removed_packages -and the postinstallation script is moved to /var/log/removed_scripts.

      - -

      Just as with installpkg, you can specify several packages or -use wildcards for the package name.

      -
      - -
      -
      -

      18.2.4 upgradepkg

      - -

      upgradepkg(8) will upgrade an installed Slackware package. -The syntax is as follows:

      - - - - - -
      -
      -# upgradepkg package_name
      -
      -
      - -

      or

      - - - - - -
      -
      -# upgradepkg old_package_name%new_package_name
      -
      -
      - -

      upgradepkg works by first installing the new package and then -removing the old package so that old files are no longer around on the system. If the -upgraded package name has changed, use the percent sign syntax to specify the old package -(the one that is installed) and the new package (the one you are upgrading it to).

      - -

      If you pass the ROOT environment variable before upgradepkg, that path will be used for the root directory. This is -useful for setting up new drives for your root directory. They will typically be mounted -to /mnt or something other than /.

      - -

      upgradepkg is not flawless. You should always back up your -configuration files. If they get removed or overwritten, you'll want a copy of the -originals for any needed repair work.

      - -

      Just as with installpkg and removepkg, you can specify several packages or use wildcards for the -package name.

      -
      - -
      -
      -

      18.2.5 rpm2tgz/rpm2targz

      - -

      The Red Hat Package Manager is a popular packaging system available today. Many -software distributors are offering their products in RPM format. Since this is not our -native format, we do not recommend people rely on them. However, some things are only -available as an RPM (even the source).

      - -

      We provide a program that will convert RPM packages to our native .tgz format. This will allow you to extract the package (perhaps -with explodepkg) to a temporary directory and examine its -contents.

      - -

      The rpm2tgz program will create a Slackware package with a -.tgz extension, while rpm2targz -creates an archive with a .tar.gz extension.

      -
      -
      - -
      -
      -

      18.3 Making Packages

      - -

      Making Slackware packages can be either easy or difficult. There is no specific method -for building a package. The only requirement is that the package be a tar gzipped file -and if there is a postinstallation script, it must be /install/doinst.sh.

      - -

      If you are interested in making packages for your system or for a network that you -manage, you should have a look at the various build scripts in the Slackware source tree. -There are several methods we use for making packages.

      - -
      -
      -

      18.3.1 explodepkg

      - -

      explodepkg(8) will do the same thing that installpkg does to extract the package, but it doesn't actually -install it and it doesn't record it in the packages database. It simply extracts it to -the current directory.

      - -

      If you look at the Slackware source tree, you will see how we use this command for -“framework” packages. These packages contain a skeleton of what the final -package will look like. They hold all the necessary filenames (zero-length), permissions, -and ownerships. The build script will cat the package contents from the source directory -to the package build directory.

      -
      - -
      -
      -

      18.3.2 makepkg

      - -

      makepkg(8) will package up the current directory into a valid -Slackware package. It will search the tree for any symbolic links and add a creation -block to the postinstallation script for creating them during the package install. It -also warns of any zero-length files in the package tree.

      - -

      This command is typically run after you have created your package tree.

      -
      - -
      -
      -

      18.3.3 SlackBuild Scripts

      - -

      Slackware packages are built in many different ways by necessity. Not all software -packages are written by their programmers to compile the same way. Many have compile time -options that are not all included in the packages Slackware uses. Perhaps you need some -of this functionality; you'll need to compile your own package then. Fortunately for many -Slackware packages, you can find SlackBuild scripts in the package's source code.

      - -

      So what is a SlackBuild script? SlackBuild scripts are executable shell scripts that -you run as root to configure, compile, and create Slackware -packages. You can freely modify these scripts in the source directory and run them to -create your own versions of the default Slackware packages.

      -
      -
      - -
      -
      -

      18.4 Making Tags and Tagfiles (for -setup)

      - -

      The Slackware setup program handles installation of the software packages on your -system. There are files that tell the setup program which packages must be installed, -which ones are optional, and which ones are selected by default by the setup program.

      - -

      A tagfile is in the first software series directory and is called tagfile. It lists -the packages in that particular disk set and their status. The status can be:

      - -
      -

      Table 18-3. Tagfile Status Options

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      OptionMeaning
      ADDThe package is required for proper system operation
      SKPThe package will be automatically skipped
      RECThe package is not required, but recommended
      OPTThe package is optional
      -
      - -

      The format is simply:

      - - - - - -
      -
      -package_name: status
      -
      -
      - -

      One package per line. The original tagfiles for each software series are stored as -tagfile.org. So if you mess up yours, you can restore the original one.

      - -

      Many administrators prefer writing their own tagfiles and starting the installer and -selecting “full”. The setup program will read the tagfiles and perform the -installation according to their contents. If you use REC or OPT, a dialog box will be -presented to the user asking whether or not they want a particular package. Therefore, it -is recommended that you stick with ADD and SKP when writing tagfiles for automated -installs.

      - -

      Just make sure your tagfiles are written to the same location as the originals. Or you -can specify a custom tagfile path if you have custom tagfiles.

      -
      -
      - -
      -
      -

      Chapter 19 ZipSlack

      - -
      -

      19.1 What is -ZipSlack?

      - -

      ZipSlack is a special version of Slackware Linux. It's an already installed copy of -Slackware that's ready to run from your DOS or Windows partition. It's a basic -installation, you do not get everything that comes with Slackware.

      - -

      ZipSlack gets its name from the form it's distributed in, a big .ZIP file. Users of -DOS and Windows will probably be familiar with these files. They are compressed archives. -The ZipSlack archive contains everything you need to get up and running with -Slackware.

      - -

      It is important to note that ZipSlack is significantly different from a regular -installation. Even though they function the same and contain the same programs, their -intended audiences and functions differ. Several advantages and disadvantages of ZipSlack -are discussed below.

      - -

      One last thing, you should always review the documentation included in the actual -ZipSlack directory. It contains the latest information regarding installation, booting, -and general use of the product.

      - -
      -
      -

      19.1.1 -Advantages

      - -
        -
      • -

        Does not require repartitioning of your hard disk.

        -
      • - -
      • -

        Great way to learn Slackware Linux without stumbling through the installation -process.

        -
      • -
      -
      - -
      -
      -

      19.1.2 -Disadvantages

      - -
        -
      • -

        Uses the DOS filesystem, which is slower than a native Linux filesystem.

        -
      • - -
      • -

        Will not work with Windows NT.

        -
      • -
      -
      -
      - -
      -
      -

      19.2 Getting -ZipSlack

      - -

      Obtaining ZipSlack is easy. If you have purchased the official Slackware Linux CD set, -then you already have ZipSlack. Just find the CD that contains the zipslack directory and place it in your CD-ROM drive. It's usually -the third or fourth disc, but always trust the labels over this documentation as the disk -it resides on is prone to change.

      - -

      If you want to download ZipSlack, you should first visit our “Get Slack” -web page for the latest download information:

      - -

      http://www.slackware.com/getslack/

      - -

      ZipSlack is part of each Slackware release. Locate the release you want, and go to -that directory on the FTP site. The latest release directory can be found at this -location:

      - -

      ftp://ftp.slackware.com/pub/slackware/slackware/

      - -

      You'll find ZipSlack in the /zipslack subdirectory. ZipSlack -is offered as one big .ZIP file or floppy-sized chunks. The -chunks are in the /zipslack/split directory.

      - -

      Don't stop at just the .ZIP files. You should also download -the documentation files and any boot images that appear in the directory.

      - -
      -
      -

      19.2.1 -Installation

      - -

      Once you've downloaded the necessary components, you'll need to extract the .ZIP file. Be sure to use a 32-bit unzipper. The size and filenames -in the archive are too much for a 16-bit unzipper. Examples of 32-bit unzippers include -WinZip and PKZIP for Windows.

      - -

      ZipSlack is designed to be extracted directly to the root directory of a drive (such -as C: or D:). A \LINUX directory will be created that contains the actual Slackware -installation. You'll also find the files necessary to booting the system in that -directory as well.

      - -

      After you've extracted the files, you should have a \LINUX -directory on the drive of your choosing (we'll use C: from -here on).

      -
      -
      - -
      -
      -

      19.3 Booting -ZipSlack

      - -

      There are several ways to boot ZipSlack. The most common is to use the included -LINUX.BAT to boot the system from DOS (or from DOS mode under Windows 9x). This file must -be edited to match your system before it will work.

      - -

      Start by opening the C:\LINUX\LINUX.BAT file in your -favorite text editor. At the top of the file you will notice a large comment. It explains -what you need to edit in this file (and also what to do if you are booting from an -external Zip drive). Don't worry if you don't understand the root= setting. There are several examples, so feel free to pick one -and try it. If it doesn't work, you can edit the file again, comment out the line you -uncommented, and pick another one.

      - -

      After you uncomment the line you want by removing the “rem” at the -beginning of the line, save the file and exit the editor. Bring your machine into DOS -mode.

      - -

      A DOS prompt window in Windows 9x will NOT work.

      - -

      Type C:\LINUX\LINUX.BAT to boot the system. If all goes well, -you should be presented with a login prompt.

      - -

      Log in as root, with no password. You'll probably want to -set a password for root, as well as adding an account for yourself. At this point you can -refer to the other sections in this book for general system usage.

      - -

      If using the LINUX.BAT file to boot the system didn't work -for you, you should refer to the included C:\LINUX\README.1ST -file for other ways to boot.

      -
      -
      - -
      -

      Glossary

      - -
      -
      Account
      - -
      -

      All of the information about a user, including username, password, finger information, -UID and GID, and home directory. To create an account is to add and define a user.

      -
      - -
      Background
      - -
      -

      Any process that is running without accepting or controlling the input of a terminal -is said to be running in the background.

      -
      - -
      Boot disk
      - -
      -

      A floppy disk containing an operating system (in our case, the Linux kernel) from -which a computer can be started.

      -
      - -
      Compile
      - -
      -

      To convert source code to machine-readable “binary” code.

      -
      - -
      Daemon
      - -
      -

      A program designed to run in the background and, without user intervention, perform a -specific task (usually providing a service).

      -
      - -
      Darkstar
      - -
      -

      The default hostname in Slackware; your computer will be called darkstar if you do not -specify some other name.

      - -

      One of Patrick Volkerding's development machines, named after “Dark Star”, -a song by the Grateful Dead.

      -
      - -
      Desktop Environment
      - -
      -

      A graphical user interface (GUI) that runs atop the X Window System and provides such -features as integrated applications, cohesive look-and-feel between programs and -components, file and window management capabilities, etc. A step beyond the simple window -manager.

      -
      - -
      Device driver
      - -
      -

      A chunk of code in the kernel that directly controls a piece of hardware.

      -
      - -
      Device node
      - -
      -

      A special type of file in the /dev filesystem that -represents a hardware component to the operating system.

      -
      - -
      DNS
      - -
      -

      Domain Name Service. A system in which networked computers are given names which -translate to numerical addresses.

      -
      - -
      Domain name
      - -
      -

      A computer's DNS name, excluding its host name.

      -
      - -
      Dot file
      - -
      -

      In Linux, files which are to be hidden have filenames beginning with a dot ('.').

      -
      - -
      Dotted quad
      - -
      -

      The format of IP addresses, so called because it consists of four numbers (range 0-255 -decimal) separated by periods.

      -
      - -
      Dynamic loader
      - -
      -

      When programs are compiled under Linux, they usually use pieces of code (functions) -from external libraries. When such programs are run, those libraries must be found and -the required functions loaded into memory. This is the job of the dynamic loader.

      -
      - -
      Environment variable
      - -
      -

      A variable set in the user's shell which can be referenced by that user or programs -run by that user within that shell. Environment variables are generally used to store -preferences and default parameters.

      -
      - -
      Epoch
      - -
      -

      A period of history; in Unix, “The Epoch” begins at 00:00:00 UTC January -1, 1970. This is considered the “dawn of time” by Unix and Unix-like -operating systems, and all other time is calculated relative to this date.

      -
      - -
      Filesystem
      - -
      -

      A representation of stored data in which “files” of data are kept -organized in “directories”. The filesystem is the nearly universal form of -representation for data stored to disks (both fixed and removable).

      -
      - -
      Foreground
      - -
      -

      A program that is accepting or controlling a terminal's input is said to be running in -the foreground.

      -
      - -
      Framebuffer
      - -
      -

      A type of graphics device; in Linux, this most often refers to the software -framebuffer, which provides a standard framebuffer interface to programs while keeping -specific hardware drivers hidden from them. This layer of abstraction frees programs of -the need to speak to various hardware drivers.

      -
      - -
      FTP
      - -
      -

      The File Transfer Protocol. FTP is a very popular method of transferring data between -computers.

      -
      - -
      Gateway
      - -
      -

      A computer through which data on a network is transferred to another network.

      -
      - -
      GID
      - -
      -

      Group Identifier. The GID is a unique number attributed to a group of users.

      -
      - -
      Group
      - -
      -

      Users in Unix belong to “groups”, which can contain many other users and -are used for more general access control than the existence of users alone can easily -allow.

      -
      - -
      GUI
      - -
      -

      Graphical User Interface. A software interface that uses rendered graphical elements -such as buttons, scrollbars, windows, etc. rather than solely text-based input and -output

      -
      - -
      Home directory
      - -
      -

      A user's “home directory” is the directory the user is placed in -immediately upon logging in. Users have full permissions and more or less free reign -within their home directories.

      -
      - -
      HOWTO
      - -
      -

      A document describing “how to” do something, such as configure a firewall -or manage users and groups. There is a large collection of these documents available from -the Linux Documentation Project.

      -
      - -
      HTTP
      - -
      -

      The Hypertext Transfer Protocol. HTTP is the primary protocol on which the World Wide -Web operates.

      -
      - -
      ICMP
      - -
      -

      Internet Control Message Protocol. A very basic networking protocol, used mostly for -pings.

      -
      - -
      Kernel
      - -
      -

      The heart of an operating system. The kernel is the part that provides basic process -control and interfaces with the computer's hardware.

      -
      - -
      Kernel module
      - -
      -

      A piece of kernel code, usually a driver of some sort, that can be loaded and unloaded -from memory separately from the main body of the kernel. Modules are handy when upgrading -drivers or testing kernel settings, because they can be loaded and unloaded without -rebooting.

      -
      - -
      Library
      - -
      -

      A collection of functions which can be shared between programs.

      -
      - -
      LILO
      - -
      -

      The LInux LOader. LILO is the most widely-used Linux boot manager.

      -
      - -
      LOADLIN
      - -
      -

      LOADLIN is a program that runs under MS DOS or Windows and boots a Linux system. It is -most commonly used on computers with multiple operating systems (including Linux and -DOS/Windows, of course).

      -
      - -
      Man section
      - -
      -

      Pages in the standard Unix online manual ("man") are grouped into sections for easy -reference. All C programming pages are in section 3, system administration pages in -section 5, etc.

      -
      - -
      MBR
      - -
      -

      The Master Boot Record. A reserved space on a hard drive where information on what to -do when booting is stored. LILO or other boot managers can be written here.

      -
      - -
      Motif
      - -
      -

      A popular programming toolkit used in many older X programs.

      -
      - -
      MOTD
      - -
      -

      Message of the Day. The motd (stored in Linux in /etc/motd -is a text file that is displayed to all users upon logging in. Traditionally, it is used -by the system administrator as a sort of “bulletin board” for communicating -with users.

      -
      - -
      Mount point
      - -
      -

      An empty directory in a filesystem where another filesystem is to be -“mounted”, or grafted on.

      -
      - -
      Nameserver
      - -
      -

      A DNS information server. Nameservers translate DNS names to numerical IP -addresses.

      -
      - -
      Network interface
      - -
      -

      A virtual representation of a network device provided by the kernel. Network -interfaces allow users and programs to talk to network devices.

      -
      - -
      NFS
      - -
      -

      The Network Filesystem. NFS allows the mounting of remote filesystems as if they were -local to your computer and thus provides a transparent method of file sharing.

      -
      - -
      Octal
      - -
      -

      Base-8 number system, with digits 0-7.

      -
      - -
      Pager
      - -
      -

      An X program that allows the user to see and switch between multiple -“desktops”.

      -
      - -
      Partition
      - -
      -

      A division of a hard drive. Filesystems exist on top of partitions.

      -
      - -
      PPP
      - -
      -

      Point-to-Point Protocol. PPP is used mainly for connecting via modem to an Internet -Service Provider.

      -
      - -
      Process
      - -
      -

      A running program.

      -
      - -
      Root directory
      - -
      -

      Represented as “/”, the root directory exists at the top of the -filesystem, with all other directories branching out beneath it in a “file -tree”.

      -
      - -
      Root disk
      - -
      -

      The disk (usually fixed) on which the root directory is stored.

      -
      - -
      Routing table
      - -
      -

      The set of information the kernel uses in “routing” network data around. -It contains such tidbits as where your default gateway is, which network interface is -connected to which network, etc.

      -
      - -
      Runlevel
      - -
      -

      The overall system state as defined by init. Runlevel 6 is rebooting, runlevel 1 is -“single user mode”, runlevel 4 is an X login, etc. There are 6 available -runlevels on a Slackware system.

      -
      - -
      Secure shell
      - -
      -

      An encrypted (thus secure) method of logging in remotely to a computer. Many secure -shell programs are available; both a client and server are needed.

      -
      - -
      Service
      - -
      -

      The sharing of information and/or data between programs and computers from a single -“server” to multiple “clients”. HTTP, FTP, NFS, etc. are -services.

      -
      - -
      Shadow password suite
      - -
      -

      The shadow password suite allows encrypted passwords to be hidden from users, while -the rest of the information in the /etc/passwd file remains -visible to all. This helps prevent brute-force attempts at cracking passwords.

      -
      - -
      Shell
      - -
      -

      Shells provide a commandline interface to the user. When you're looking at a text -prompt, you're in a shell.

      -
      - -
      Shell builtin
      - -
      -

      A command built into the shell, as opposed to being provided by an external program. -For instance, bash has a cd -builtin.

      -
      - -
      Signal
      - -
      -

      Unix programs can communicate between each other using simple “signals”, -which are enumerated and usually have specific meanings. kill -l -will list the available signals.

      -
      - -
      SLIP
      - -
      -

      Serial Line Interface Protocol. SLIP is a similar protocol to PPP, in that it's used -for connecting two machines via a serial interface.

      -
      - -
      Software package
      - -
      -

      A program and its associated files, archived and compressed into a single file along -with any necessary scripts or information to aid in managing the installation, upgrade, -and removal of those files.

      -
      - -
      Software series
      - -
      -

      A collection of related software packages in Slackware. All KDE packages are in the -“kde” series, networking packages in the “n” series, etc.

      -
      - -
      Source code
      - -
      -

      The (more or less) human-readable code in which most programs are written. Source code -is compiled into “binary” code.

      -
      - -
      Standard Error (stderr)
      - -
      -

      The Unix-standard output stream for errors. Programs write any error messages on -stderr, so that they can be separated from normal output.

      -
      - -
      Standard Input (stdin)
      - -
      -

      The Unix-standard input stream. Data can be redirected or piped into a program's stdin -from any source.

      -
      - -
      Standard Output (stdout)
      - -
      -

      The Unix-standard output stream. Normal text output from a program is written to -stdout, which is separate from the error messages reported on stderr and can be piped or -redirected into other programs' stdin or to a file.

      -
      - -
      Subnet
      - -
      -

      An IP address range that is part of a larger range. For instance, 192.168.1.0 is a -subnet of 192.168.0.0 (where 0 is a mask meaning “undefined”); it is, in -fact, the “.1” subnet.

      -
      - -
      Superblock
      - -
      -

      In Linux, partitions are discussed in terms of blocks. A block is 512 bytes. The -superblock is the first 512 bytes of a partition.

      -
      - -
      Supplemental disk
      - -
      -

      In Slackware, a floppy disk used during installation that contains neither the kernel -(which is on the boot disk) nor the root filesystem (which is on the root disk), but -additional needed files such as network modules or PCMCIA support.

      -
      - -
      Suspended process
      - -
      -

      A process which has been frozen until killed or resumed.

      -
      - -
      Swap space
      - -
      -

      Disk space used by the kernel as “virtual” RAM. It is slower than RAM, but -because disk space is cheaper, swap is usually more plentiful. Swap space is useful to -the kernel for holding lesser-used data and as a fallback when physical RAM is -exhausted.

      -
      - -
      Symbolic link
      - -
      -

      A special file that simply points to the location of another file. Symbolic links are -used to avoid data duplication when a file is needed in multiple locations.

      -
      - -
      Tagfile
      - -
      -

      A file used by the Slackware setup program during -installation, which describes a set of packages to be installed.

      -
      - -
      Terminal
      - -
      -

      A human-computer interface consisting of at least a screen (or virtual screen) and -some method of input (almost always at least a keyboard).

      -
      - -
      Toolkit, GUI
      - -
      -

      A GUI toolkit is a collection of libraries that provide a programmer with code to draw -“widgets” such as scrollbars, checkboxes, etc. and construct a graphical -interface. The GUI toolkit used by a program often defines its “look and -feel”.

      -
      - -
      UID
      - -
      -

      User Identifier. A unique number that identifies a user to the system. UIDs are used -by most programs instead of usernames because a number is easier to deal with; usernames -are generally only used when the user has to see things happen.

      -
      - -
      VESA
      - -
      -

      Video Electronics Standards Association. The term “VESA” is often used to -denote a standard specified by said Association. Nearly all modern video adapters are -VESA-compliant.

      -
      - -
      Virtual terminal
      - -
      -

      The use of software to simulate multiple terminals while using only a single set of -input/output devices (keyboard, monitor, mouse). Special keystrokes switch between -virtual terminals at a single physical terminal.

      -
      - -
      Window manager
      - -
      -

      An X program whose purpose is to provide a graphical interface beyond the simple -rectangle-drawing of the X Window System. Window managers generally provide titlebars, -menus for running programs, etc.

      -
      - -
      Working directory
      - -
      -

      The directory in which a program considers itself to be while running.

      -
      - -
      Wrapper program
      - -
      -

      A program whose sole purpose is to run other programs, but change their behavior in -some way by altering their environments or filtering their input.

      -
      - -
      X server
      - -
      -

      The program in the X Window System which interfaces with graphics hardware and handles -the actual running of X programs.

      -
      - -
      X Window System
      - -
      -

      Network-oriented graphical interface system used on most Unix-like operating systems, -including Linux.

      -
      -
      -
      - -
      -
      -

      Appendix A. The GNU General Public License

      - -

      GNU GENERAL PUBLIC LICENSE
      -
      -Version 2, June 1991
      -Copyright (C) 1989, 1991 Free Software Foundation, Inc.
      - -59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
      - -Everyone is permitted to copy and distribute verbatim copies of this
      - -license document, but changing it is not allowed.

      - -
      -
      -

      A.1. Preamble

      - -

      The licenses for most software are designed to take away your freedom to share and -change it. By contrast, the GNU General Public License is intended to guarantee your -freedom to share and change free software--to make sure the software is free for all its -users. This General Public License applies to most of the Free Software Foundation's -software and to any other program whose authors commit to using it. (Some other Free -Software Foundation software is covered by the GNU Library General Public License -instead.) You can apply it to your programs, too.

      - -

      When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute copies -of free software (and charge for this service if you wish), that you receive source code -or can get it if you want it, that you can change the software or use pieces of it in new -free programs; and that you know you can do these things.

      - -

      To protect your rights, we need to make restrictions that forbid anyone to deny you -these rights or to ask you to surrender the rights. These restrictions translate to -certain responsibilities for you if you distribute copies of the software, or if you -modify it.

      - -

      For example, if you distribute copies of such a program, whether gratis or for a fee, -you must give the recipients all the rights that you have. You must make sure that they, -too, receive or can get the source code. And you must show them these terms so they know -their rights.

      - -

      We protect your rights with two steps: (1) copyright the software, and (2) offer you -this license which gives you legal permission to copy, distribute and/or modify the -software.

      - -

      Also, for each author's protection and ours, we want to make certain that everyone -understands that there is no warranty for this free software. If the software is modified -by someone else and passed on, we want its recipients to know that what they have is not -the original, so that any problems introduced by others will not reflect on the original -authors' reputations.

      - -

      Finally, any free program is threatened constantly by software patents. We wish to -avoid the danger that redistributors of a free program will individually obtain patent -licenses, in effect making the program proprietary. To prevent this, we have made it -clear that any patent must be licensed for everyone's free use or not licensed at -all.

      - -

      The precise terms and conditions for copying, distribution and modification -follow.

      -
      - -
      -
      -

      A.2. TERMS AND CONDITIONS

      - -

      TERMS AND CONDITIONS FOR COPYING, -DISTRIBUTION AND MODIFICATION

      - -
        -
      1. -

        This License applies to any program or other work which contains a notice placed by -the copyright holder saying it may be distributed under the terms of this General Public -License. The “Program”, below, refers to any such program or work, and a -“work based on the Program” means either the Program or any derivative work -under copyright law: that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another language. -(Hereinafter, translation is included without limitation in the term -“modification”.) Each licensee is addressed as “you”.

        - -

        Activities other than copying, distribution and modification are not covered by this -License; they are outside its scope. The act of running the Program is not restricted, -and the output from the Program is covered only if its contents constitute a work based -on the Program (independent of having been made by running the Program). Whether that is -true depends on what the Program does.

        -
      2. - -
      3. -

        You may copy and distribute verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and appropriately publish on -each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; and give any other -recipients of the Program a copy of this License along with the Program.

        - -

        You may charge a fee for the physical act of transferring a copy, and you may at your -option offer warranty protection in exchange for a fee.

        -
      4. - -
      5. -

        You may modify your copy or copies of the Program or any portion of it, thus forming a -work based on the Program, and copy and distribute such modifications or work under the -terms of Section 1 above, provided that you also meet all of these conditions:

        - -
          -
        1. -

          You must cause the modified files to carry prominent notices stating that you changed -the files and the date of any change.

          -
        2. - -
        3. -

          You must cause any work that you distribute or publish, that in whole or in part -contains or is derived from the Program or any part thereof, to be licensed as a whole at -no charge to all third parties under the terms of this License.

          -
        4. - -
        5. -

          If the modified program normally reads commands interactively when run, you must cause -it, when started running for such interactive use in the most ordinary way, to print or -display an announcement including an appropriate copyright notice and a notice that there -is no warranty (or else, saying that you provide a warranty) and that users may -redistribute the program under these conditions, and telling the user how to view a copy -of this License. (Exception: if the Program itself is interactive but does not normally -print such an announcement, your work based on the Program is not required to print an -announcement.)

          -
        6. -
        - -

        These requirements apply to the modified work as a whole. If identifiable sections of -that work are not derived from the Program, and can be reasonably considered independent -and separate works in themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you distribute the same -sections as part of a whole which is a work based on the Program, the distribution of the -whole must be on the terms of this License, whose permissions for other licensees extend -to the entire whole, and thus to each and every part regardless of who wrote it.

        - -

        Thus, it is not the intent of this section to claim rights or contest your rights to -work written entirely by you; rather, the intent is to exercise the right to control the -distribution of derivative or collective works based on the Program.

        - -

        In addition, mere aggregation of another work not based on the Program with the -Program (or with a work based on the Program) on a volume of a storage or distribution -medium does not bring the other work under the scope of this License.

        -
      6. - -
      7. -

        You may copy and distribute the Program (or a work based on it, under Section 2) in -object code or executable form under the terms of Sections 1 and 2 above provided that -you also do one of the following:

        - -
          -
        1. -

          Accompany it with the complete corresponding machine-readable source code, which must -be distributed under the terms of Sections 1 and 2 above on a medium customarily used for -software interchange; or,

          -
        2. - -
        3. -

          Accompany it with a written offer, valid for at least three years, to give any third -party, for a charge no more than your cost of physically performing source distribution, -a complete machine-readable copy of the corresponding source code, to be distributed -under the terms of Sections 1 and 2 above on a medium customarily used for software -interchange; or,

          -
        4. - -
        5. -

          Accompany it with the information you received as to the offer to distribute -corresponding source code. (This alternative is allowed only for noncommercial -distribution and only if you received the program in object code or executable form with -such an offer, in accord with Subsection b above.)

          -
        6. -
        - -

        The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all the source -code for all modules it contains, plus any associated interface definition files, plus -the scripts used to control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major components (compiler, -kernel, and so on) of the operating system on which the executable runs, unless that -component itself accompanies the executable.

        - -

        If distribution of executable or object code is made by offering access to copy from a -designated place, then offering equivalent access to copy the source code from the same -place counts as distribution of the source code, even though third parties are not -compelled to copy the source along with the object code.

        -
      8. - -
      9. -

        You may not copy, modify, sublicense, or distribute the Program except as expressly -provided under this License. Any attempt otherwise to copy, modify, sublicense or -distribute the Program is void, and will automatically terminate your rights under this -License. However, parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such parties remain in full -compliance.

        -
      10. - -
      11. -

        You are not required to accept this License, since you have not signed it. However, -nothing else grants you permission to modify or distribute the Program or its derivative -works. These actions are prohibited by law if you do not accept this License. Therefore, -by modifying or distributing the Program (or any work based on the Program), you indicate -your acceptance of this License to do so, and all its terms and conditions for copying, -distributing or modifying the Program or works based on it.

        -
      12. - -
      13. -

        Each time you redistribute the Program (or any work based on the Program), the -recipient automatically receives a license from the original licensor to copy, distribute -or modify the Program subject to these terms and conditions. You may not impose any -further restrictions on the recipients' exercise of the rights granted herein. You are -not responsible for enforcing compliance by third parties to this License.

        -
      14. - -
      15. -

        If, as a consequence of a court judgment or allegation of patent infringement or for -any other reason (not limited to patent issues), conditions are imposed on you (whether -by court order, agreement or otherwise) that contradict the conditions of this License, -they do not excuse you from the conditions of this License. If you cannot distribute so -as to satisfy simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not distribute the Program at all. For -example, if a patent license would not permit royalty-free redistribution of the Program -by all those who receive copies directly or indirectly through you, then the only way you -could satisfy both it and this License would be to refrain entirely from distribution of -the Program.

        - -

        If any portion of this section is held invalid or unenforceable under any particular -circumstance, the balance of the section is intended to apply and the section as a whole -is intended to apply in other circumstances.

        - -

        It is not the purpose of this section to induce you to infringe any patents or other -property right claims or to contest validity of any such claims; this section has the -sole purpose of protecting the integrity of the free software distribution system, which -is implemented by public license practices. Many people have made generous contributions -to the wide range of software distributed through that system in reliance on consistent -application of that system; it is up to the author/donor to decide if he or she is -willing to distribute software through any other system and a licensee cannot impose that -choice.

        - -

        This section is intended to make thoroughly clear what is believed to be a consequence -of the rest of this License.

        -
      16. - -
      17. -

        If the distribution and/or use of the Program is restricted in certain countries -either by patents or by copyrighted interfaces, the original copyright holder who places -the Program under this License may add an explicit geographical distribution limitation -excluding those countries, so that distribution is permitted only in or among countries -not thus excluded. In such case, this License incorporates the limitation as if written -in the body of this License.

        -
      18. - -
      19. -

        The Free Software Foundation may publish revised and/or new versions of the General -Public License from time to time. Such new versions will be similar in spirit to the -present version, but may differ in detail to address new problems or concerns.

        - -

        Each version is given a distinguishing version number. If the Program specifies a -version number of this License which applies to it and “any later version”, -you have the option of following the terms and conditions either of that version or of -any later version published by the Free Software Foundation. If the Program does not -specify a version number of this License, you may choose any version ever published by -the Free Software Foundation.

        -
      20. - -
      21. -

        If you wish to incorporate parts of the Program into other free programs whose -distribution conditions are different, write to the author to ask for permission. For -software which is copyrighted by the Free Software Foundation, write to the Free Software -Foundation; we sometimes make exceptions for this. Our decision will be guided by the two -goals of preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally.

        -
      22. - -
      23. -

        NO WARRANTY

        - -

        BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, -TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE -COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE -RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM -PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION.

        -
      24. - -
      25. -

        IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS -PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL -OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM -(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES -SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES.

        -
      26. -
      - -

      END OF TERMS AND CONDITIONS

      -
      - -
      -
      -

      A.3. How to Apply These Terms to -Your New Programs

      - -

      If you develop a new program, and you want it to be of the greatest possible use to -the public, the best way to achieve this is to make it free software which everyone can -redistribute and change under these terms.

      - -

      To do so, attach the following notices to the program. It is safest to attach them to -the start of each source file to most effectively convey the exclusion of warranty; and -each file should have at least the “copyright” line and a pointer to where -the full notice is found.

      - - - - - -
      -
      -<one line to give the program's name and a brief idea of what it does.>
      -   Copyright (C) <year>  <name of author>
      -
      -   This program is free software; you can redistribute it and/or modify
      -   it under the terms of the GNU General Public License as published by
      -   the Free Software Foundation; either version 2 of the License, or
      -   (at your option) any later version.
      -
      -   This program is distributed in the hope that it will be useful,
      -   but WITHOUT ANY WARRANTY; without even the implied warranty of
      -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      -   GNU General Public License for more details.
      -
      -   You should have received a copy of the GNU General Public License
      -   along with this program; if not, write to the Free Software
      -   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA
      -
      -
      - -

      Also add information on how to contact you by electronic and paper mail.

      - -

      If the program is interactive, make it output a short notice like this when it starts -in an interactive mode:

      - - - - - -
      -
      -Gnomovision version 69, Copyright (C) year  name of author
      -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
      -This is free software, and you are welcome to redistribute it
      -under certain conditions; type `show c' for details.
      -
      -
      - -

      The hypothetical commands `show w' and `show c' should show the appropriate parts of -the General Public License. Of course, the commands you use may be called something other -than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits -your program.

      - -

      You should also get your employer (if you work as a programmer) or your school, if -any, to sign a “copyright disclaimer” for the program, if necessary. Here is -a sample; alter the names:

      - - - - - -
      -
      -  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
      -  `Gnomovision' (which makes passes at compilers) written by James Hacker.
      -
      -  <signature of Ty Coon>, 1 April 1989
      -  Ty Coon, President of Vice
      -
      -
      - -

      This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider it more -useful to permit linking proprietary applications with the library. If this is what you -want to do, use the GNU Library General Public License instead of this License.

      -
      -
      -
      - -
      - - - diff --git a/slackbook/html/booting-dual.html b/slackbook/html/booting-dual.html deleted file mode 100644 index b74eb874b..000000000 --- a/slackbook/html/booting-dual.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - -Dual Booting - - - - - - - - - - - -
      -

      7.3 Dual Booting

      - -

      Many users set up their computers to boot Slackware Linux and another operating -system. We've described several typical dual boot scenarios below, in case you are having -difficulty setting up your system.

      - -
      -

      7.3.1 -Windows

      - -

      Setting up a computer with both MS Windows and Linux is probably the most common dual -boot scenario. There are numerous ways you can setup the booting, but this section will -cover two.

      - -

      Often times when setting up a dual boot system, a person will devise a perfect plan -for where everything should go but mess up the installation order. It is very important -to understand that operating systems need to be installed in a certain order for a dual -boot setup to work. Linux always offers control over what, if anything, gets written to -the Master Boot Record. Therefore, it's always advisable to install Linux last. Windows -should be installed first, since it will always write its booter to the Master Boot -Record, overwriting any entry Linux may have put there.

      - -
      -

      7.3.1.1 Using LILO

      - -

      Most people will want to use LILO to chose between Linux and Windows. As stated above, -you should install Windows first, then Linux.

      - -

      Let's say you have a 40GB IDE hard disk as the only drive in your system. Let's also -say that you want to give half of that space to Windows and half of that space to Linux. -This will present a problem when trying to boot Linux.

      - - - - - -
      -
      -   20GB   Windows boot (C:)
      -   1GB   Linux root (/)
      -   19GB  Linux /usr (/usr)
      -
      -
      - -

      You would also want to set aside an adequate amount of space for a Linux swap -partition. The unwritten rule is to use twice the amount of RAM you have in disk space. A -64MB system would have 128MB of swap, and so on. Adequate swap space is the discussion of -many flames on IRC and Usenet. There's no truly “right” way to do it, but -sticking with the rule above should be sufficient.

      - -

      With your partitions laid out, you should proceed to install Windows. After that is -set up and working, you should install Linux. The LILO installation needs special -attention. You will want to select the expert mode for installing LILO.

      - -

      Begin a new LILO configuration. You will want to install it to Master Boot Record so -that it can be used to choose between the two operating systems. From the menu, add your -Linux partition and add your Windows (or DOS) partition. Once that's complete, you can -install LILO.

      - -

      Reboot the computer. LILO should load and will display a menu letting you select -between the operating systems you have installed. Select the name of the OS you wish to -load (these names were selected when you setup LILO).

      - -

      LILO is quite a configurable boot loader. It's not just limited to booting Linux or -DOS. It can boot just about anything. The man pages for lilo(8) -and lilo.conf(5) provide more detailed information.

      - -

      What if LILO doesn't work? There are instances where LILO just won't work on a -particular machine. Fortunately, there is another way to dual boot Linux and Windows.

      -
      - -
      -

      7.3.1.2 Using LOADLIN

      - -

      This method can be used if LILO doesn't work on your system, or if you just don't want -to set up LILO. This method is also ideal for the user that reinstalls Windows often. -Each time you reinstall Windows, it will overwrite the Master Boot Record, thus -destroying any LILO installation. With LOADLIN, you are not subject to that problem. The -biggest disadvantage is that you can only use LOADLIN to boot Linux.

      - -

      With LOADLIN, you can install the operating systems in any order desired. Be careful -about installing things to the Master Boot Record, you do not want to do that. LOADLIN -relies on the Windows partition being bootable. So during the Slackware installation, -make sure you skip the LILO setup.

      - -

      After installing the operating systems, copy the loadlinX.zip (where X is a version -number, such as 16a) file from root's home directory to your -Windows partition. Also copy your kernel image to the Windows partition. You will need to -be in Linux for this to work. This example shows how to do this:

      - - - - - -
      -
      -# mkdir /win
      -# mount -t vfat /dev/hda1 /win
      -# mkdir /win/linux
      -# cd /root
      -# cp loadlin* /win/linux
      -# cp /boot/vmlinuz /win/linux
      -# cd /win/linuz
      -# unzip loadlin16a.zip
      -
      -
      - -

      That will create a C:\LINUX directory on your Windows -partition (assuming it's /dev/hda1) and copy over the necessary -stuff for LOADLIN. After doing this, you will need to reboot into Windows to setup a boot -menu.

      - -

      Once in Windows, get to a DOS prompt. First, we need to make sure the system is set to -not boot into the graphical interface.

      - - - - - -
      -
      -C:\> cd \
      -C:\> attrib -r -a -s -h MSDOS.SYS
      -C:\> edit MSDOS.SYS
      -
      -
      - -

      Add this line to the file:

      - - - - - -
      -
      -BootGUI=0
      -
      -
      - -

      Now save the file and exit the editor. Now edit C:\AUTOEXEC.BAT so we can add a boot menu. The following provides -an example of what a boot menu block in AUTOEXEC.BAT would look -like:

      - - - - - -
      -
      -cls
      -echo System Boot Menu
      -echo.
      -echo 1 - Linux
      -echo 2 - Windows
      -echo.
      -choice /c:12 "Selection? -> "
      -if errorlevel 2 goto WIN
      -if errorlevel 1 goto LINUX
      -:LINUX
      -cls
      -echo "Starting Linux..."
      -cd \linux
      -loadlin c:\linux\vmlinuz root=/dev/hda2 ro
      -goto END
      -:WIN
      -cls
      -echo "Starting Windows..."
      -win
      -goto END
      -:END
      -
      -
      - -

      The key line is the one that runs LOADLIN. We tell it the kernel to load, the Linux -root partition, and that we want it mounted read-only initially.

      - -

      The tools for these two methods are provided with Slackware Linux. There are numerous -other booters on the market, but these should work for most dual boot setups.

      -
      - -
      -

      7.3.1.3 Deprecated Windows NT -Hack

      - -

      This is the least common dual booting situation. In the days of old, LILO was unable -to boot Windows NT, requiring Linux users to hack NTLDR, which presented several more -problems than dual booting between Windows 9x and Linux. Understand that the following -instructions are deprecated. LILO has been able to boot Windows NT/2000/XP/2003 for many -years now. If you are using a legacy machine though, you may need to use just such a -hack.

      - -
        -
      1. -

        Install Windows NT

        -
      2. - -
      3. -

        Install Linux, making sure LILO is installed to the superblock of the Linux -partition

        -
      4. - -
      5. -

        Get the first 512 bytes of the Linux root partition and store it on the Windows NT -partition

        -
      6. - -
      7. -

        Edit C:\BOOT.INI under Windows NT to add a Linux option

        -
      8. -
      - -

      Installing Windows NT should be fairly straightforward, as should installing Linux. -From there, it gets a little more tricky. Grabbing the first 512 bytes of the Linux -partition is easier than it sounds. You will need to be in Linux to accomplish this. -Assuming your Linux partition is /dev/hda2, issue this -command:

      - - - - - -
      -
      -# dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512
      -
      -
      - -

      That's it. Now you need to copy bootsect.lnx to the Windows NT partition. Here's where -we run into another problem. Linux does not have stable write support for the NTFS -filesystem. If you installed Windows NT and formatted your drive as NTFS, you will need -to copy this file to a FAT floppy and then read from it under Windows NT. If you -formatted the Windows NT drive as FAT, you can simply mount it under Linux and copy the -file over. Either way, you will want to get /tmp/bootsect.lnx -from the Linux drive to C:\BOOTSECT.LNX on the Windows NT -drive.

      - -

      The last step is adding a menu option to the Windows NT boot menu. Under Windows NT -open a command prompt.

      - - - - - -
      -
      -C:\WINNT> cd \
      -C:\> attrib -r -a -s -h boot.ini
      -C:\> edit boot.ini
      -
      -
      - -

      Add this line to the end of the file:

      - - - - - -
      -
      -C:\bootsect.lnx="Slackware Linux"
      -
      -
      - -

      Save the changes and exit the editor. When you reboot Windows NT, you will have a -Linux option on the menu. Choosing it will boot into Linux.

      -
      -
      - -
      -

      7.3.2 -Linux

      - -

      Yes, people really do this. This is definitely the easiest dual boot scenario. You can -simply use LILO and add more entries to the /etc/lilo.conf -file. That's all there is to it.

      -
      -
      - - - - - diff --git a/slackbook/html/booting-loadlin.html b/slackbook/html/booting-loadlin.html deleted file mode 100644 index d11754d34..000000000 --- a/slackbook/html/booting-loadlin.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -LOADLIN - - - - - - - - - - - -
      -

      7.2 LOADLIN

      - -

      The other booting option that comes with Slackware Linux is LOADLIN. LOADLIN is a DOS -executable that can be used to start Linux from a running DOS system. It requires the -Linux kernel to be on the DOS partition so that LOADLIN can load it and properly boot the -system.

      - -

      During the installation process, LOADLIN will be copied to root's home directory as a -.ZIP file. There is no automatic setup process for LOADLIN. You will need to copy the -Linux kernel (typically /boot/vmlinuz) and the LOADLIN file -from root's home directory to the DOS partition.

      - -

      LOADLIN is useful if you would like to make a boot menu on your DOS partition. A menu -could be added to your AUTOEXEC.BAT file that would allow you -to pick between Linux or DOS. A choice of Linux would run LOADLIN, thus booting your -Slackware system. This AUTOEXEC.BAT file under Windows 95 will -provide a sufficient boot menu:

      - - - - - -
      -
      -   @ECHO OFF
      -   SET PROMPT=$P$G
      -   SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\
      -   CLS
      -   ECHO Please Select Your Operating System:
      -   ECHO.
      -   ECHO [1] Slackware Linux
      -   ECHO [2] Windows 95
      -   ECHO.
      -   CHOICE /C:12 "Selection? -> "
      -   IF ERRORLEVEL 2 GOTO WIN
      -   IF ERRORLEVEL 1 GOTO LINUX
      -   :WIN
      -   CLS
      -   ECHO Starting Windows 95...
      -   WIN
      -   GOTO END
      -   :LINUX
      -   ECHO Starting Slackware Linux...
      -   CD \LINUX
      -   LOADLIN C:\LINUX\VMLINUZ ROOT=<root partition device> RO
      -   GOTO END
      -   :END
      -
      -
      - -

      You will want to specify your root partition as a Linux device name, like /dev/hda2 or something else. You can always use LOADLIN at the -command line. You simply use it in the same manner as it is in the example above. The -LOADLIN documentation comes with many examples on how to use it.

      -
      - - - - - diff --git a/slackbook/html/booting.html b/slackbook/html/booting.html deleted file mode 100644 index ca3b7871f..000000000 --- a/slackbook/html/booting.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - -Booting - - - - - - - - - - -
      -

      Chapter 7 Booting

      - -
      -
      -
      Table of Contents
      - -
      7.1 LILO
      - -
      7.2 LOADLIN
      - -
      7.3 Dual Booting
      -
      -
      - -

      The process of booting your Linux system can sometimes be easy and sometimes be -difficult. Many users install Slackware on their computer and that's it. They just turn -it on and it's ready to use. Othertimes, simply booting the machine can be a chore. For -most users, LILO works best. Slackware includes LILO and Loadlin for booting Slackware -Linux. LILO will work from a hard drive partition, a hard drive's master boot record, or -a floppy disk, making it a very versatile tool. Loadlin works from a DOS command line, -killing DOS and invoking Linux.

      - -

      Another popular utility for booting Linux is GRUB. GRUB is not included or officially -supported by Slackware. Slackware holds to the “tried and true” standard for -what gets included inside the distribution. While GRUB works well and includes some -features that LILO does not, LILO handles all the essential tasks of a boot loader -reliably with a proven track record. Being younger, GRUB hasn't quite lived up to that -legacy yet. As it is not included with Slackware, we do not discuss it here. If you wish -to use GRUB (perhaps it came with another Linux OS and you want to use it to dual-boot) -consult GRUB's documentation.

      - -

      This section covers using LILO and Loadlin, the two booters included with Slackware. -It also explains some typical dual booting scenarios and how you could go about setting -it up.

      - -
      -

      7.1 LILO

      - -

      The Linux Loader, or LILO, is the most popular booter in use on Linux systems. It is -quite configurable and can easily be used to boot other operating systems.

      - -

      Slackware Linux comes with a menu-driven configuration utility called liloconfig. This program is first run during the setup process, but -you can invoke it later by typing liloconfig at the prompt.

      - -

      LILO reads its settings from the /etc/lilo.conf(5) file. It -is not read each time you boot up, but instead is read each time you install LILO. LILO -must be reinstalled to the boot sector each time you make a configuration change. Many -LILO errors come from making changes to the lilo.conf file, but -failing to re-run lilo to install these changes. liloconfig will -help you build the configuration file so that you can install LILO for your system. If -you prefer to edit /etc/lilo.conf by hand, then reinstalling -LILO just involves typing /sbin/lilo (as root) at the prompt.

      - -

      When you first invoke liloconfig, it will look like this:

      - -
      -

      Figure 7-1. liloconfig

      - -

      -
      - -

      If this is your first time setting up LILO, you should pick simple. Otherwise, you -might find expert to be faster if you are familiar with LILO and Linux. Selecting simple -will begin the LILO configuration.

      - -

      If kernel frame buffer support is compiled into your kernel, liloconfig will ask which video resolution you would like to use. -This is the resolution that is also used by the XFree86 frame buffer server. If you do -not want the console to run in a special video mode, selecting normal will keep the -standard 80x25 text mode in use.

      - -

      The next part of the LILO configuration is selecting where you want it installed. This -is probably the most important step. The list below explains the installation places:

      - -
      -
      -
      Root
      - -
      -

      This option installs LILO to the beginning of your Linux root partition. This is the -safest option if you have other operating systems on your computer. It ensures that any -other booters are not overwritten. The disadvantage is that LILO will only load from here -if your Linux drive is the first drive on your system. This is why many people chose to -create a very small /boot partition as the first drive on their -system. This allows the kernel and LILO to be installed at the beginning of the drive -where LILO can find them. Previous versions of LILO contained an infamous flaw known as -the “1024 cylinder limit”. LILO was unable to boot kernels on partitions past -the 1024th cylinder. Recent editions of LILO have eliminated this problem.

      -
      - -
      Floppy
      - -
      -

      This method is even safer than the previous one. It creates a boot floppy that you can -use to boot your Linux system. This keeps the booter off the hard disk entirely, so you -only boot this floppy when you want to use Slackware. The flaws with this method are -obvious. Floppies are notoriously fickle, prone to failures. Secondly, the boot loader is -no longer self-contained within the computer. If you loose your floppy disk, you'll have -to make another to boot your system.

      -
      - -
      MBR
      - -
      -

      You will want to use this method if Slackware is the only operating system on your -computer, or if you will be using LILO to choose between multiple operating systems on -your computer. This is the most preferred method for installing LILO and will work with -almost any computer system.

      - -
      - - - - - -
      Warning -

      This option will overwrite any other booter you have in the MBR.

      -
      -
      -
      -
      -
      - -

      After selecting the installation location, liloconfig will -write the configuration file and install LILO. That's it. If you select the expert mode -you will receive a special menu. This menu allows you to tweak the /etc/lilo.conf file, add other operating systems to your boot menu, -and set LILO to pass special kernel parameters at boot time. The expert menu looks like -this:

      - -
      -

      Figure 7-2. liloconfig Expert Menu

      - -

      -
      - -

      Whatever your system configuration is, setting up a working boot loader is easy. liloconfig makes setting it up a cinch.

      -
      -
      - - - - - diff --git a/slackbook/html/booting/setup-lilo-expert-w.png b/slackbook/html/booting/setup-lilo-expert-w.png deleted file mode 100644 index 9c029d78faeb2564c82022b41297b967779843e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6986 zcmb7p2UJsA^Y2Llp#}mdAfa9qM5)qiP!Lc+6r>})cSI>Mz(J}4!UY8s2%rcmy>}8i zN|i1_2wgzw)leSyyX(I9t@r)cd;kC0Yn|D9X74lW%wDti%>16+y`zbs<)8%s0C7u8 zT^|6TAOJuTC}3xtp6@-ZXGHw2&i$Kb6aY@o8gP30*Xv(|Kp=pBJ*Q_4JmdeXcP2jT z@({#>0DxoUmiqPk0qMUo6kn{?Fh|ljQ*u4NMsN=W1my^n>FMR!FB-sGeZd0h&RgFi zd|~BJeJ>>%7R;&@zZI^pKhdZzq`I~2_WX|!Hizw8=FjOtK(Q$0<(JTNw;{Cefe3x@ zhLCFZxvaaicQ5}38<}MwayIQT2Z4MXTwmYqfkmu$j&&b!R7IeNR@=qe7JN?We)`jp z4}00zMk73e@%-@_D^egoEn~v5I(V|vi5|Mz!fv&e(9uduJRV&>Rxa2$eMw9Keo)_F z11vqafpv-Y8moY%+4Y0q+jPLX6*Q|@nu*klXEs8BrJgtM0vim9`~)%^AeS+xd?U6v z1`wMWd_WNp$O@j4$>N9k=ZU3hczQMn2IFspI#$_Nq>@|npZrtsf}}9yXtm@t9X+k+ z(P?DSQnIg)zz#nc$I&HBQF~q>nA<<>hD^y5P;1+}K#TIYjgvrWojRC83C=8OLv^^8 z4^9?QGLwt8RQ02OM(&rwxWV>a#$Q^QG#dt5|7JT4P~bLX?W-B+$5|fxjy2O-Ma^K% z?(m6ZN`%Kti3RgpUOESojb?Vq@l?s%VX4V(tJ_--tp8+{0V>>pI$BjpeC>F3RoJtu zzTBIsN3~VfDnex8AWGh3 zH#>z)t540|wPo7eqE=;1T~R+{Tx21!BRmYl?D5{I!9Z3N=YCwC!X>TB)@nnaM!MCZ zvSw}eEnPBwQF0R;`DGW)M9a-n@pxVdXxV@q zyuihWR=7bDx2F&Z;(@}dU?nB5d}tpq^NHOLk|P_h32B2Ch)k$5ASVdJj=JluCpkf_ zK?py|2_W$IaKVPs806xwdko@Di-$j{_g|T$^+#z`P09->Xjd)>dU$35}r_VN86nY~CpZcYb#vY_3ZllzH(=cWWv!iSzh| zB2~%SCw3F!2IFfRuqoTYQ@1zFzQcP?t{rI2kgXNf2Gl&VJ)N>d_C!=!(JL`7%dyY;}}*y!GYN;iIkbvw+IM*Pre zpjB`4iQ3Lj@B5+Tp`gLM)7t&yBl)_Y+kYJ1^@{K0W^lH#X@ed_j9$cxZ8Mnm*zyNU z9Q6lIkpbpYdd(X4JzD;I`Y^7t^2WxS2wSTbB434v$8mgS0~*3lJX+x7?afT zwRRKa&b-BdRQ5aSbedbqkUrCWBG^HBBhJP#hmV{TM9QN<+QDyGGa;CD4dqoY^IW~S#!@N; z45qe2vs%N13M43_rIonW!+;LPM}vH_K(34U) z{|T#D(9B;|9As^5+HfP~qDB$(xi@SN^ikByKks6^79Q5o}tFejT*;m`~DeuyZ+u(2!TsXcZ7yJ;b!J6d=H)2iK}{ys5Cyd_r+{Sv`gwe9&I} zRuL@Rpn7@QVw=9%jYw=MKXf(4)ijmqiM+VS%+j@GN@TRSQb;m{P=Ei>NOfn3DdtNR zz)>bDR=$8(lgkwax(g)%N-A@EbjlJlfqMd)&D?`pM23m7}JAf zQPj>nfhs33_uwbC91vSmK)MDN3F%v|NovF56 zfOQmwxV(g@Br7+3AY06cGMY%OI$PMBm1z|hsM0p)`&CNevE6p!AlN0aJ$HeE7g>jM3NjWL6T<#OnV;Z?(&DV4=iQ$u zLAXONa`SxaBN8G*Iww>WDe0eWKCx28N<|yaVDB*V*VVPq6|*<=*2Pml?5GCyU?s*%B>q|2z(6iZ z14Zq>g9BG-!e{h0Y}-s=vvOlHvQCWp%ARbm?yobGcWcNO9vQoRwz5DV8H@C(E916W zdV7?M$L%N5%-(jwxE76OYwcVpX5^n^w=*OF+7Ryn2J?V$Qqm{aHIq>-C^AaF zZRwq_pN)NUtZ@>Ug0qsNR`43@zyFX#Xlvk#XV#kHQWqw4MW>$gJG=l!q}=+l-A%F+ z?M<4Z6{jDtONFByGw0@O4jXcn3v-XVxQ`jQ}ywb z6yfP}>9ew66#wmW0@_XTypTt1u3iHx;Me9LoQr%hiftU!(&25C%<oLHvwa-Yfo(8e!BST1=YzNR3>lEgA8#frwb;95H(sLX>egG5S`y=i zCCDsNLD~vFZx%qKk7S{3+vi|9n;072{naYiyie3Q>op01GZic<`IXQCfm3fDLIXnh zxZMNzY8SJKL9#^q3!mQRE_2-w(8mPxp`*$CK2Z?le8!VlCK4%2nbv`^v_UDkIMvsE zwKGgs<1)`gJ!OcGG+}qv17VJrIsVgZhgUXvn#bC$roxYX_p;YrO!~b>NL52)C2sm% z!}VpKx4*{-Vgmn){#+#qM*=tJwo_%<&ytJepNHDCG zttR26t8LK_ZSW6XD+Z@ap3WIAJQtfW1-DO#vyfl`FgT(0sB}E6^PmA@w^y|0-eK+#0S?EJ%US*@V}xWj>M0c0l0qG# zqfFp^uAu&le4F{(TQ}4~pF9_~O4aV!s#q@FGp)4+Ndf18XJT5Co*Xoi{pWY|Zo$wk z2@^LlHJ4P^&c9W>qolIpW!)THQf|jkKR%oAy_!F5T>}NM~^Np zh~<2z^X|5o{%4qLc(%`!m+u>c87hteLLLwkDXQ~s`Qqnhe^Y{x748TSOA0m*?r;HyUh#CNpb z9~0!kK4n4G7-jNK+LJIobeaZ@FitGv1DXzW{U_9!dS zW7aua05W%9@tpKE6CIa^?nwW*TcG>T)ucfQaUmYD87WV+#VRDXS=ytM7L+LRWaYgh zr;~CdtlABE$dV039<@5bO?Kfvne)-UBQ6Oqf17{Kez95eF?E()hA;J25sScg!uWOWIR-6kiFENnNU6SlE(s0@8)N(S&M+ z=eHf+6D?^;k7ye7q#YXIMRp^_uND}G*V*=JJGyf*e+1+6r~5NIQyssASj>$bD&_73 z2TiVvCRJ#Y97J50VMIAE*b^JOHd9fY$fW0Ec{<`bP*QdLKTXTsd^k(6a(h!czb^djQifID5Al z&Bhm3>q#dDYaQP>p*#^i$i@WxfJtwDt{I4Vs7FyV35SCNWepK)x0IZFKurO@ zfr$fL>QgI2$K1*%hwlu+=OA1zHEvDqdxb_uKeVFKK(Ay{U*K+audMTvqi1bL8v@X7 zi9-DK2CE^A^SVk)oeS|ikwCGOF`41EU}=--RukCJ`C=~{7+Tvt&Xp})R0!@|;RA}P zU=6{3;DC+C`OC^QZ%*IsB0+6R?w~}?mAjyo8SUK<+(5_?`>BOzcf_GQ!G{*cgpDFR zoM<*&Vsh$-U9=fvvwPd@?!QTc?M56a2Nz zgu+!WI>*;REcjB73@K|aCN+*$weJ%FTD*Aibg$2w6TOEC2++xWWc+n$T-7P|@H}1Zzho2o0%CN_< zo0{XS(qBaUqedu@1@Ar3}M7jY(_a7+cL`kis7x+>TKFSzDX4ME?zMrlDT%$TM z)7`Z+*6I0^aFew2ziELC2Y_jwUUe^^P6Wv4-U{{vrz3zU7^EdhJW3FL(79jfVa=80 z0JxyKaO+Eu30v+`ehuz(u+)U`>AdFJAvT|)t_-(T}|fUlkIwtfS25guJ^$|GB7ke?=_XSXe*p7%f}>P zSem~*GpJ6&PS$&+V{-KveSe5i$I5&$#pVaeqSR|V-?taHWWBRfXqyA{b`kZ^N87T0 zR`GOYQfNYEQ>e#xj%2N1pM4=`GBPwBAH6i0>OC-{Y7QjzwtGqC{f>-pcqR-9_d~iG zL&OiGG=a$_lu8+D2(CqxU&<6Q0b=_ZEa225T`C>2SbNR7UsSm-c95a^Ap?&7Ixy*H zhff3#BQtF-?~kkLgMV;6q{%Ea2x{#IHtzpzqX)omp!tI~Hlw5ca6C1rlez#kkZQg& zkGuB(7(9^qK|8A9CndtAW)n5uYks@`uZu_wG;k+LG1rorJ{Qsqw0%|GScFslSWvT@ zH5nfxJYlikI>|k+0m0k^abs<3DvU@A7HnT5l>RKW96RKlmIrt0gU*vK0_;CTVDvk# z0G;02@(3Ogdp$YE!}_-+a%FV^H#wAVtf|lj{|z6|m3V5h5W_j+_^zm2mA*k>l)Y&b-B2^|C%Z#?L6RmkB~OKZ5rS=zTtA^Dt~HK0{M7 z2UfPTwUM$pRGF99I)-4mR*d2?Z5UyKP=g4TvjuP@+sM8CzD74IHO{IU6>}s?{s{5h zpwv}r*9GiO#Gu|cQPjV1XA`Q3s@zM)RiUq>ov-`tAgkikc`9u*$A;t}c zCq_?2j|rt$gG?bvC-(#;*H#%LjrO%q80<}G;tP6%t*!PITJP)jU+6y3CJ5eE)CVQs zOBssFRCOuaPuqNL)82?%v;m`0uii z!~L*~tT(X1M&;t`_LtPMXcFRH1>MkxC0!>hHqRvTY3DYCf99;CeykjudHZ)g3sK{ZXussM;Ntk0@OYu=HpTke|FZ`pj26E8V86A0cc1Wn>>=@O z3N%$RtJ_+pVr!c0fzV!odq=dD$1|5?n?x3*0TI)vL48?pAJsus^~KibiTKOs{E*YI zDN8dADZiEeL3$fWlB&Mr$m8pw zS}hw73dgw79#mKk8O1H0=qsQ|-G4`VD=Qts%G#OAXyk9<$rj0R$-be)h$FI=E&ke$ z?Vx6=vpDC+A|M4SZ0eoX%vQ&$dH$wZ-F;|y{CFvS0Pp@+;~oQOLGF8PX;2i#evCJU zQ2T~2&B5%>sba4jTukcU&nPR#j+I2I4VJCbY|5)esDTmafM^9}$r;6-__Ua~TN=nPQR`vvksTqxcEf=vIKc+OJEg@t z%?7J^i{KOvBT17RxhoJA7YNrB-e~Cff?@;kszqvp3k`HhCJi0?7}W-D1U%2hBRzet z+D3B%spmsFA>C8B+VE@WtRnu{2usTQvrgi_1QaG122$~c>gJG7EB{Z(;h*sO44`nm zK>F51^t~FsEqG^q)WYa0+A2G3B7Uu4euh PCU)!Q9rdCc)=&QzhvL(Ir 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 - - - -Basic Editing - - - - - - - - - - - -
      -

      17.4 Basic -Editing

      - -

      When you have opened a file, you can of course move around in it with the cursor. The -cursor keys and PgUp, PgDn do what you'd expect. Home and End jump to the beginning and end of the line. (In older versions, -they would actually jump to the beginning and end of the buffer.) However, there are also -Control and Meta (Alt) -key combos that move the cursor around. Because you do not need to move your hands to -another part of the keyboard for these, they are much quicker once you get used to them. -The most important such commands are listed in Table 17-1.

      - -
      -

      Table 17-1. Basic Emacs Editing Commands

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CommandResult
      C-b go one character back
      C-f go one character forward
      C-n go one line down
      C-p go one line up
      C-a go to the beginning of the line
      C-e go to the end of the line
      M-b go one word back
      M-f go one word forward
      M-} go one paragraph forward
      M-{ go one paragraph backward
      M-a go one sentence backward
      M-e go one sentence forward
      C-d delete the character under the cursor
      M-d delete until the end of the current word
      C-v go down one screen (i.e., PgDn)
      M-v go up one screen (i.e., PgUp)
      M-< go to the beginning of the buffer
      M-> go to the end of the buffer
      C-_ undo the last change (can be repeated); note that you actually have to type Shift+Control+hyphen for -this.
      C-k delete to end of line
      C-s forward search
      C-r backward search
      -
      - -

      Note that many Meta commands are parallel to the Control commands except that they operate on larger units: while C-f goes forward one character, M-f goes forward an entire word, etc.

      - -

      Also note that M-< and M-> require you to type Shift+Alt+comma and Shift+Alt+dot -respectively, since < and > are on Shift+comma and Shift+dot. (Unless of course you have a different keyboard layout from the -standard US layout.)

      - -

      Note that C-k deletes (kills, as it is -commonly called) all the text after the cursor to the end of the line, but doesn't delete -the line itself (i.e., it doesn't delete the final newline). It only deletes the line if -there was no text after the cursor. In other words, in order to delete a complete line, -you have to put the cursor at the beginning of the line, and then hit C-k twice: once to delete the text on the line, -once to delete the line itself.

      -
      - - - - - diff --git a/slackbook/html/emacs-buffers.html b/slackbook/html/emacs-buffers.html deleted file mode 100644 index 53516de81..000000000 --- a/slackbook/html/emacs-buffers.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -Buffers - - - - - - - - - - - -
      -

      17.2 Buffers

      - -

      In Emacs, the concept of “buffers” is essential. Every file that you open -is loaded into its own buffer. Furthermore, Emacs has several special buffers, which do -not contain a file but are used for other things. Such special buffers usually have a -name that starts and ends with an asterisk. For example, the buffer that Emacs shows when -it is first started, is the so-called *scratch* buffer. In the *scratch* buffer, you can -type text in the normal way, but text that is typed there is not saved when Emacs is -closed.

      - -

      There is one other special buffer you need to know about, and that is the minibuffer. -This buffer consists of only one line, and is always on the screen: it is the very last -line of the Emacs window, below the status bar for the current buffer. The minibuffer is -where Emacs shows messages for the user, and it is also the place where commands that -require some user input are executed. For example, when you open a file, Emacs will ask -for its name in the minibuffer.

      - -

      Switching from one buffer to another can be done with the command C-x b. This will prompt -you for the name of a buffer (a buffer's name is usually the name of the file you are -editing in it), and it gives a default choice, which is normally the buffer that you were -in before you switched to or created the current buffer. Just hitting Enter will switch to that default -buffer.

      - -

      If you want to switch to another buffer than the default offered by Emacs, just type -its name. Note that you can use so-called Tab-completion here: type -the first few letters of the buffer's name and hit Tab; Emacs will -then complete the name of the buffer. Tab completion works -everywhere in Emacs where it makes sense.

      - -

      You can get a list of open buffers by hitting C-x C-b. This command will -usually split the screen in two, displaying the buffer you were working in in the top -half, and a new buffer called *Buffer List* in the bottom half. This buffer contains a -list of all the buffers, their sizes and modes, and the files, if any, that those buffers -are visiting (as it is called in Emacs). You can get rid of this split screen by typing -C-x 1.

      - -
      - - - - - -
      Note -

      Under X, the list of buffers is also available in the Buffer menu in the menu bar.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/emacs-modes.html b/slackbook/html/emacs-modes.html deleted file mode 100644 index ed22a3543..000000000 --- a/slackbook/html/emacs-modes.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - -Modes - - - - - - - - - - - -
      -

      17.3 Modes

      - -

      Every buffer in Emacs has an associated mode. This mode is very different from the -idea of modes in vi: a mode tells you what kind of buffer you -are in. For example, there is text-mode for normal text files, but there are also modes -such as c-mode for editing C programs, sh-mode for editing shell scripts, latex-mode for -editing LaTeX files, mail-mode for editing email and news -messages, etc. A mode provides special customizations and functionality that is useful -for the kind of file you are editing. It is even possible for a mode to redefine keys and -key commands. For example, in Text mode, the Tab key simply jumps to the next tab stop, -but in many programming language modes, the Tab key indents the -current line according to the depth of the block that line is in.

      - -

      The modes mentioned above are called major modes. Each buffer has exactly one major -mode. Additionally, a buffer can have one or more minor modes. A minor mode provides -additional features that may be useful for certain editing tasks. For example, if you hit -the INSERT key, you invoke overwrite-mode, which does what you'd -expect. There is also an auto-fill-mode, which is handy in combination with text-mode or -latex-mode: it causes each line that you type to be automatically wrapped once the line -reaches a certain number of characters. Without auto-fill-mode, you have to type M-q to fill out a paragraph. (Which you can also -use to reformat a paragraph after you've edited some text in it and it is no longer -nicely filled out.)

      - -
      -

      17.3.1 Opening -files

      - -

      To open a file in Emacs, type

      - - - - - -
      -
      -C-x C-f
      -
      -
      - -

      Emacs will ask you for the name of the file, filling in some default path for you -(which is usually ~/ ). After you type the filename (you can -use Tab completion) and hit ENTER , Emacs -will open the file in a new buffer and display that buffer on the screen.

      - -
      - - - - - -
      Note -

      Emacs will automatically create a new buffer, it will not load the file into the -current buffer.

      -
      -
      - -

      In order to create a new file in emacs, you cannot just go typing right away. You -first have to create a buffer for it, and come up with a filename. You do this by typing -C-x C-f and typing a filename, just as if you were opening an existing file. -Emacs will notice that the file you typed doesn't exist, and will create a new buffer and -report “(New file)” in the minibuffer.

      - -

      When you type C-x C-f and then enter a directory name instead of a -filename, Emacs will create a new buffer in which you will find a list of all the files -in that directory. You can move the cursor to the file that you are looking for and type -, and Emacs will open it. (There are in fact a lot more actions you can perform here, -such as deleting, renaming and moving files, etc. Emacs is now in dired-mode, which is -basically a simple file manager.)

      - -

      When you have typed C-x C-f and suddenly change your mind, you can type -C-g to cancel the action. C-g works almost everywhere where you want to -cancel an action or command that you've started but don't want to finish.

      -
      -
      - - - - - diff --git a/slackbook/html/emacs-saving-files.html b/slackbook/html/emacs-saving-files.html deleted file mode 100644 index 7e2ee9e19..000000000 --- a/slackbook/html/emacs-saving-files.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - -Saving Files - - - - - - - - - - - -
      -

      17.5 Saving -Files

      - -

      In order to save a file, you type

      - - - - - -
      -
      -C-x C-s
      -
      -
      - -

      Emacs will not ask you for a filename, the buffer will just be saved to the file it -was loaded from. If you want to save your text to another file, type

      - - - - - -
      -
      -C-x C-w
      -
      -
      - -

      When you save the file for the first time in this session, Emacs will normally save -the old version of your file to a backup file, which has the same name appended with a -tilde: so if you're editing a file “cars.txt”, -Emacs will create a backup “cars.txt~”.

      - -

      This backup file is a copy of the file that you opened. While you are working, Emacs -will also regularly create an auto-save copy of the work you are doing, to a file named -with hash signs: #cars.txt#. This backup is deleted when you -save the file with C-x C-s.

      - -

      When you are done editing a file, you can kill the buffer that holds it by typing

      - - - - - -
      -
      -C-x k
      -
      -
      - -

      Emacs will then ask you which buffer you want to kill, with the current buffer as -default, which you can select by hitting ENTER. If you haven't -saved your file yet, Emacs will ask you if you really want to kill the buffer.

      - -
      -

      17.5.1 Quitting -Emacs

      - -

      When you are done with Emacs altogether, you can type

      - - - - - -
      -
      -C-x C-c
      -
      -
      - -

      This quits Emacs. If you have any unsaved files, Emacs will tell you so, and ask if -you want to save them each in turn. If you answer no to any of these, Emacs will ask for -one final confirmation and then quit.

      -
      -
      - - - - - diff --git a/slackbook/html/emacs.html b/slackbook/html/emacs.html deleted file mode 100644 index 8c6479cd1..000000000 --- a/slackbook/html/emacs.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -Emacs - - - - - - - - - - -
      -

      Chapter 17 Emacs

      - -
      -
      -
      Table of Contents
      - -
      17.1 Starting emacs
      - -
      17.2 Buffers
      - -
      17.3 Modes
      - -
      17.4 Basic Editing
      - -
      17.5 Saving Files
      -
      -
      - -

      While vi (with its clones) is without a doubt the most -ubiquitous editor on Unix-like systems, Emacs comes in a good second. Instead of using -different “modes”, like vi does, it uses Control and Alt key combinations to enter -commands, in much the same way that you can use Control and Alt key combinations in a word processor and indeed in many other -applications to execute certain functions. (Though it should be noted that the commands -rarely correspond; so while many modern applications use Ctrl-C/ X/ V for copying, -cutting and pasting, Emacs uses different keys and actually a somewhat different -mechanism for this.)

      - -

      Also unlike vi, which is an (excellent) editor and nothing -more, Emacs is a program with near endless capabilities. Emacs is (for the most part) -written in Lisp, which is a very powerful programming language that has the peculiar -property that every program written in it is automatically a Lisp compiler of its own. -This means that the user can extend Emacs, and in fact write completely new programs -“in Emacs”.

      - -

      As a result, Emacs is not just an editor anymore. There are many add-on packages for -Emacs available (many come with the program's source) that provide all sorts of -functionality. Many of these are related to text editing, which is after all Emacs' basic -task, but it doesn't stop there. There are for example several spreadsheet programs for -Emacs, there are databases, games, mail and news clients (the top one being Gnus), -etc.

      - -

      There are two main versions of Emacs: GNU Emacs (which is the version that comes with -Slackware) and XEmacs. The latter is not a version for Emacs running under X. In fact, both Emacs -and XEmacs run on the console as well as under X. XEmacs was once started as a project to -tidy up the Emacs code. Currently, both versions are being actively developed, and there -is in fact much interaction between the two development teams. For the present chapter, -it is immaterial whether you use Emacs or XEmacs, the differences between them are not -relevant to the normal user.

      - -
      -

      17.1 Starting -emacs

      - -

      Emacs can be started from the shell by simply typing emacs. -When you are running X, Emacs will (normally) come up with its own X window, usually with -a menu bar at the top, where you can find the most important functions. On startup, Emacs -will first show a welcome message, and then after a few seconds will drop you in the -*scratch* buffer. (See Section 17.2.)

      - -
      -

      -
      - -

      You can also start Emacs on an existing file by typing

      - - - - - -
      -
      -% emacs /etc/resolv.conf
      -
      -
      - -

      This will cause Emacs to load the specified file when it starts up, skipping the -welcome message.

      - -
      -

      17.1.1 Command -Keys

      - -

      As mentioned above, Emacs uses Control and Alt combinations for commands. The usual convention is to write these -with C-letter and M-letter, respectively. So C-x means Control+x, and M-x means Alt+x. (The letter M is used instead of A because -originally the key was not the Alt key but the Meta key. The Meta key has all but disappeared -from computer keyboards, and in Emacs the Alt key has taken over -its function.)

      - -

      Many Emacs commands consist of sequences of keys and key combinations. For example, C-x C-c (that is Control-x -followed by Control-c ) quits Emacs, C-x C-s saves the current file. Keep in mind that C-x C-b is not the same as C-x b. The former means Control-x followed by Control-b, while the latter means Control-x followed by just 'b'.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/emacs/emacs.png b/slackbook/html/emacs/emacs.png deleted file mode 100644 index 7571dec42d73ab747bb6c2943f8df83a26061330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7842 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 - - - -Users and Groups, the Hard Way - - - - - - - - - - - -
      -

      12.2 Users and Groups, the Hard Way

      - -

      Of course, it is possible to add, modify, and remove users and groups without using -the scripts and programs that come with Slackware. It's not really difficult, although -after reading this process, you'll probably find it much easier to use the scripts. -However, it's important to know how your password information is actually stored, in case -you ever need to recover this information and don't have the Slackware tools -available.

      - -

      First, we'll add a new user to the /etc/passwd(5), /etc/shadow(5), and /etc/group(5) files. -The passwd file holds some information about the users on your -system, but (strangely enough) not their passwords. This was once the case, but was -halted long ago for security reasons. The passwd file must be readable by all users, but -you don't want encrypted passwords world-readable, as would-be intruders can use the -encrypted passwords as a starting point for decrypting a user's password. Instead, the -encrypted passwords are kept in the shadow file, which is only readable by root, and -everyone's password is entered into the passwd file simply as -“x”. The group file -lists all the groups and who is in each.

      - -

      You can use the vipw command to edit the /etc/passwd file safely, and the vigr -command to edit the /etc/group file safely. Use vipw -s to edit the /etc/shadow file -safely. (“Safely” in this context means someone else won't be able to modify -the file you're editing at the moment. If you're the only administrator of your system, -you're probably safe, but it's best to get into good habits from the start.)

      - -

      Let's examine the /etc/passwd file and look at how to add a -new user. A typical entry in passwd looks like this:

      - - - - - -
      -
      -chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash
      -
      -
      - -

      Each line is an entry for one user, and fields on each line are separated by a colon. -The fields are the login name, encrypted password (“x” for everyone on a Slackware system, since Slackware uses -shadow passwords), user ID, group ID, the optional finger information (separated by -commas), home directory, and shell. To add a new user by hand, add a new line at the end -of the file, filling in the appropriate information.

      - -

      The information you add needs to meet some requirements, or your new user may have -problems logging in. First, make sure that the password field is an x, and that both the user name and user ID is unique. Assign the -user a group, either 100 (the “users” group in Slackware) or your default -group (use its number, not its name). Give the user a valid home directory (which you'll -create later) and shell (remember, valid shells are listed in /etc/shells).

      - -

      Next, we'll need to add an entry in the /etc/shadow file, which holds the encrypted -passwords. A typical entry looks like this:

      - - - - - -
      -
      -chris:$1$w9bsw/N9$uwLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::
      -
      -
      - -

      Again, each line is an entry for one person, with each field delimited by a colon. The -fields are (in order) login name, encrypted password, days since the Epoch (January 1, -1970) that the password was last changed, days before the password may be changed, days -after which the password must be changed, days before password expiration that the user -is notified, days after expiration that the account is disabled, days since the Epoch -that the account is disabled, and a reserved field.

      - -

      As you can see, most of that is for account expiration information. If you aren't -using expiration information, you only need to fill in a few fields with some special -values. Otherwise, you'll need to do some calculations and decision making before you can -fill those fields in. For a new user, just put some random garbage in the password field. -Don't worry about what the password is right now, because you're going to change it in a -minute. The only character you cannot include in the password field is a colon. Leave the -“days since password was changed” field blank as well. Fill in 0, 99999, and 7 just as you see in the example entry, and leave the other fields -blank.

      - -

      (For those of you who think you see my encrypted password above and believe you've got -a leg up on breaking into my system, go right ahead. If you can crack that password, -you'll know the password to a firewalled test system. Now that's useful :) )

      - -

      All normal users are members of the “users” -group on a typical Slackware system. However, if you want to create a new group, or add -the new user to additional groups, you'll need to modify the /etc/group file. Here is a typical entry:

      - - - - - -
      -
      -cvs::102:chris,logan,david,root
      -
      -
      - -

      The fields are group name, group password, group ID, and group members, separated by -commas. Creating a new group is a simple matter of adding a new line with a unique group -ID, and listing all the users you want to be in the group. Any users that are in this new -group and are logged in will have to log out and log back in for those changes to take -effect.

      - -

      At this point, it might be a good idea to use the pwck and -grpck commands to verify that the changes you've made are -consistent. First, use pwck -r and grpck --r: the -r switch makes no changes, but lists the changes -you would be asked to make if you ran the command without the switch. You can use this -output to decide whether you need to further modify any files, to run pwck or grpck without the -r switch, or to simply leave your changes as they are.

      - -

      At this point, you should use the passwd command to create a -proper password for the user. Then, use mkdir to create the new -user's home directory in the location you entered into the /etc/passwd file, and use chown to change -the owner of the new directory to the new user.

      - -

      Removing a user is a simple matter of deleting all of the entries that exist for that -user. Remove the user's entry from /etc/passwd and /etc/shadow, and remove the login name from any groups in the /etc/group file. If you wish, delete the user's home directory, the -mail spool file, and his crontab entry (if they exist).

      - -

      Removing groups is similar: remove the group's entry from /etc/group.

      -
      - - - - - diff --git a/slackbook/html/essential-sysadmin-shutdown.html b/slackbook/html/essential-sysadmin-shutdown.html deleted file mode 100644 index a97c78f6d..000000000 --- a/slackbook/html/essential-sysadmin-shutdown.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - -Shutting Down Properly - - - - - - - - - - - -
      -

      12.3 Shutting Down Properly

      - -

      It is very important that you shut down your system properly. Simply turning the power -off with the power switch can cause serious filesystem damage. While the system is on, -files are in use even if you aren't doing anything. Remember that there are many -processes running in the background all the time. These processes are managing the system -and keep a lot of files open. When the system's power is switched off, these files are -not closed properly and may become corrupted. Depending on what files become damaged, the -system might be rendered completely unusable! In any case, you'll have to go through a -long filesystem check procedure on the next reboot.

      - -
      - - - - - -
      Note -

      If you configured your system with a journalling filesystem, like ext3 or reiserfs, -you'll be partially protected from filesystem damage, and your filesystem check on reboot -will be shorter than if you had used a filesystem without journalling, like ext2. -However, this safety net is no excuse for improperly shutting down your system! A -journalling FS is meant to protect your files from events beyond your control, not from -your own laziness.

      -
      -
      - -

      In any case, when you want to reboot or power down your computer, it is important to -do so properly. There are several ways of doing so; you can pick whichever one you think -is the most fun (or least amount of work). Since a shutdown and a reboot are similar -procedures, most of the ways for powering off the system can also be applied to -rebooting.

      - -

      The first method is through the shutdown(8) program, and it -is probably the most popular. shutdown can be used to reboot or -turn off the system at a given time, and can display a message to all the logged-in users -of the system telling them that the system is going down.

      - -

      The most basic use of shutdown to power down the computer is:

      - - - - - -
      -
      -# shutdown -h now
      -
      -
      - -

      In this case, we are not going to send a custom message to the users; they will see -shutdown's default message. “now” is the time that we want to shutdown, and the “-h” means to halt the system. This is not a very friendly way -to run a multi-user system, but it works just fine on your home computer. A better method -on a multiuser system would be to give everyone a little advance warning:

      - - - - - -
      -
      -# shutdown -h +60
      -
      -
      - -

      This would shutdown the system in one hour (60 minutes), which would be just fine on a -normal multiuser system. Vital systems should have their downtime scheduled far in -advance, and you should post warnings about the downtime in any appropriate locations -used for system notifications (email, bulletin board, /etc/motd, whatever).

      - -

      Rebooting the system uses the same command, but substitutes “-r” for “-h”:

      - - - - - -
      -
      -# shutdown -r now
      -
      -
      - -

      You can use same time notation with shutdown -r that you -could with shutdown -h. There are a lot of other things that you -can do with shutdown to control when to halt or reboot the -machine; see the man page for more details.

      - -

      The second way of shutting down or powering off the computer is to use the halt(8) and reboot(8) commands. As the -names indicate, halt will immediately halt the operating system, -and reboot will reboot the system. (reboot is actually just a symbolic link to halt.) They are invoked like so:

      - - - - - -
      -
      -# halt
      -# reboot
      -
      -
      - -

      A lower-level way to reboot or shutdown the system is to talk directly to init. All the other methods are simply convenient ways to talk to -init, but you can directly tell it what to do using telinit(8) (note that it only has one “l”). Using telinit will tell init what runlevel to -drop into, which will cause a special script to be run. This script will kill or spawn -processes as needed for that runlevel. This works for rebooting and shutting down because -both of those are special runlevels.

      - - - - - -
      -
      -# telinit 0
      -
      -
      - -

      Runlevel 0 is halt mode. Telling init to enter runlevel 0 -will cause all processes to be killed off, the filesystems unmounted, and the machine to -be halted. This is a perfectly acceptable way to bring down the system. On many laptops -and modern desktop computers, this will also cause the machine to be turned off.

      - - - - - -
      -
      -# telinit 6
      -
      -
      - -

      Runlevel 6 is reboot mode. All processes will be killed off, the filesystems will be -unmounted, and the machine will be rebooted. This is a perfectly acceptable method of -rebooting the system.

      - -

      For the curious, when switching to runlevel 0 or 6, whether by using shutdown, halt, or reboot, the script /etc/rc.d/rc.6 is run. -(The script /etc/rc.d/rc.0 is another symbolic link, to /etc/rc.d/rc.6.) You can customize this file to your tastes--but be -sure to test your changes carefully!

      - -

      There is one last method of rebooting the system. All the other methods require you to -be logged in as root. However, it is possible to reboot the -machine even if you aren't root, provided that you have physical access to the keyboard. -Using Control+Alt+Delete (the "three-fingered salute") will cause the machine to -immediately reboot. (Behind the scenes, the shutdown command is -called for you when you use Control+Alt+Delete.) The salute doesn't always work when using X Windows--you may -need to use Control+Alt+F1 (or another Function key) to switch to a non-X Windows terminal -before using it.

      - -

      Finally, the file that ultimately controls every aspect of startup and shutdown is the -/etc/inittab(5) file. In general, you should not need to modify -this file, but it may give you insight into why some things work the way they do. As -always, see the man pages for further details.

      -
      - - - - - diff --git a/slackbook/html/essential-sysadmin.html b/slackbook/html/essential-sysadmin.html deleted file mode 100644 index 85e127ed1..000000000 --- a/slackbook/html/essential-sysadmin.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - -Essential System Administration - - - - - - - - - - -
      -

      Chapter 12 Essential System -Administration

      - -
      -
      -
      Table of Contents
      - -
      12.1 Users and -Groups
      - -
      12.2 Users and Groups, the Hard -Way
      - -
      12.3 Shutting Down Properly
      -
      -
      - -

      Whoa whoa whoa whoa whoa.... I know what you're thinking. “I'm not a system -administrator! I don't even want to be a system administrator!”

      - -

      Fact is, you are the administrator of any computers for which you have the root password. This might be your desktop box with one or two -users, or it might be a big server with several hundred. Regardless, you'll need to know -how to manage users, and how to shut down the system safely. These tasks seem simple, but -they have some quirks to keep in mind.

      - -
      -

      12.1 -Users and Groups

      - -

      As mentioned in Chapter 8, you shouldn't normally use your -system logged in as root. Instead, you should create a normal -user account for everyday use, and use the root account only for system administration -tasks. To create a user, you can either use the tools supplied with Slackware, or you can -edit the password files by hand.

      - -
      -

      12.1.1 Supplied Scripts

      - -

      The easiest way to manage users and groups is with the supplied scripts and programs. -Slackware includes the programs adduser, userdel(8), chfn(1), chsh(1), and passwd(1) for dealing with -users. The commands groupadd(8), groupdel(8), and groupmod(8) are for -dealing with groups. With the exception of chfn, chsh, and passwd, these programs are -generally only run as root, and are therefore located in /usr/sbin. chfn, chsh, and passwd can be run by anyone, and -are located in /usr/bin.

      - -

      Users can be added with the adduser program. We'll start out -by going through the whole procedure, showing all the questions that are asked and a -brief description of what everything means. The default answer is in the brackets, and -can be chosen for almost all the questions, unless you really want to change -something.

      - - - - - -
      -
      -# adduser
      -Login name for new user []: jellyd
      -
      -
      - -

      This is the name that the user will use to login. Traditionally, login names are eight -characters or fewer, and all lowercase characters. (You may use more than eight -characters, or use digits, but avoid doing so unless you have a fairly important -reason.)

      - -

      You can also provide the login name as an argument on the command line:

      - - - - - -
      -
      -# adduser jellyd
      -
      -
      - -

      In either case, after providing the login name, adduser will prompt for the user -ID:

      - - - - - -
      -
      -User ID ('UID') [ defaults to next available ]:
      -
      -
      - -

      The user ID (UID) is how ownerships are really determined in Linux. Each user has a -unique number, starting at 1000 in Slackware. You can pick a UID for the new user, or you -can just let adduser assign the user the next free one.

      - - - - - -
      -
      -Initial group [users]:
      -
      -
      - -

      All users are placed into the users group by default. You -might want to place the new user into a different group, but it is not recommended unless -you know what you're doing.

      - - - - - -
      -
      -Additional groups (comma separated) []:
      -
      -
      - -

      This question allows you to place the new user into additional groups. It is possible -for a user to be in several groups at the same time. This is useful if you have -established groups for things like modifying web site files, playing games, and so on. -For example, some sites define group wheel as the only group -that can use the su command. Or, a default Slackware -installation uses the sys group for users authorized to play -sounds through the internal sound card.

      - - - - - -
      -
      -Home directory [/home/jellyd]
      -
      -
      - -

      Home directories default to being placed under /home. If you -run a very large system, it's possible that you have moved the home directories to a -different location (or to many locations). This step allows you to specify where the -user's home directory will be.

      - - - - - -
      -
      -Shell [ /bin/bash ]
      -
      -
      - -

      bash is the default shell for Slackware Linux, and will be -fine for most people. If your new user comes from a Unix background, they may be familiar -with a different shell. You can change their shell now, or they can change it themselves -later using the chsh command.

      - - - - - -
      -
      -Expiry date (YYYY-MM-DD) []:
      -
      -
      - -

      Accounts can be set up to expire on a specified date. By default, there is no -expiration date. You can change that, if you'd like. This option might be useful for -people running an ISP who might want to make an account expire upon a certain date, -unless they receive the next year's payment.

      - - - - - -
      -
      -New account will be created as follows:
      ----------------------------------------
      -Login name:         jellyd
      -UID:                [ Next available ]
      -Initial group:      users
      -Additional groups:  [ None ]
      -Home directory:     /home/jellyd
      -Shell:              /bin/bash
      -Expiry date:        [ Never ]
      -
      -
      - -

      This is it... if you want to bail out, hit Control+C. Otherwise, press ENTER to go ahead and -make the account.

      - -

      You now see all the information that you've entered about the new account and are -given the opportunity to abort the account creation. If you entered something -incorrectly, you should hit Control+C and -start over. Otherwise, you can hit enter and the account -will be made.

      - - - - - -
      -
      -Creating new account...
      -
      -Changing the user information for jellyd
      -Enter the new value, or press return for the default
      -        Full Name []: Jeremy
      -        Room Number []: Smith 130
      -        Work Phone []:
      -        Home Phone []:
      -        Other []:
      -
      -
      - -

      All of this information is optional. You don't have to enter any of this if you don't -want to, and the user can change it at any time using chfn. -However, you might find it helpful to enter at least the full name and a phone number, in -case you need to get in touch with the person later.

      - - - - - -
      -
      -Changing password for jellyd
      -Enter the new password (minimum of 5, maximum of 127 characters)
      -Please use a combination of upper and lower case letters and numbers.
      -New password:
      -Re-enter new password:
      -Password changed.
      -
      -Account setup complete.
      -
      -
      - -

      You'll have to enter a password for the new user. Generally, if the new user is not -physically present at this point, you'll just pick some default password and tell the -user to change it to something more secure.

      - -
      - - - - - -
      Note -

      Choosing a Password: Having a -secure password is the first line of defense against getting cracked. You do not want to -have an easily guessed password, because that makes it easier for someone to break into -your system. Ideally, a secure password would be a random string of characters, including -upper and lowercase letters, numbers, and random characters. (A tab character might not -be a wise choice, depending on what kinds of computers you'll be logging in from.) There -are many software packages that can generate random passwords for you; search the -Internet for these utilities.

      - -

      In general, just use common sense: don't pick a password that is someone's birthday, a -common phrase, something found on your desk, or anything that is easily associated with -you. A password like “secure1” or any other password you see in print or -online is also bad.

      -
      -
      - -

      Removing users is not difficult at all. Just run userdel with -the name of the account to remove. You should verify that the user is not logged in, and -that no processes are running as that user. Also, remember that once you've deleted the -user, all of that user's password information is gone permanently.

      - - - - - -
      -
      -# userdel jellyd
      -
      -
      - -

      This command removes that annoying jellyd user from your -system. Good riddance! :) The user is removed from the /etc/passwd, /etc/shadow, and /etc/group files, but doesn't remove the user's home directory.

      - -

      If you'd wanted to remove the home directory as well, you would instead use this -command:

      - - - - - -
      -
      -# userdel -r jellyd
      -
      -
      - -

      Temporarily disabling an account will be covered in the next section on passwords, -since a temporary change involves changing the user's password. Changing other account -information is covered in Section 12.1.3.

      - -

      The programs to add and remove groups are very simple. groupadd will just add another entry to the /etc/group file with a unique group ID, while groupdel will remove the specified group. It is up to you to edit -/etc/group to add users to a specific group. For example, to -add a group called cvs:

      - - - - - -
      -
      -# groupadd cvs
      -
      -
      - -

      And to remove it:

      - - - - - -
      -
      -# groupdel cvs
      -
      -
      -
      - -
      -

      12.1.2 Changing Passwords

      - -

      The passwd program changes passwords by modifying the /etc/shadow file. This file holds all the passwords for the system -in an encrypted format. In order to change your own password, you would type:

      - - - - - -
      -
      -% passwd
      -Changing password for chris
      -Old password:
      -Enter the new password (minumum of 5, maximum of 127 characters)
      -Please use a combination of upper and lower case letters and numbers.
      -New password:
      -
      -
      - -

      As you can see, you are prompted to enter your old password. It won't appear on the -screen as you type it, just like when you log in. Then, you are prompted to enter the new -password. passwd performs a lot of checks on your new password, -and it will complain if your new password doesn't pass its checks. You can ignore its -warnings if you want. You will be prompted to enter your new password a second time for -confirmation.

      - -

      If you are root, you can also change another user's -password:

      - - - - - -
      -
      -# passwd ted
      -
      -
      - -

      You will then have to go through the same procedure as above, except that you won't -have to enter the user's old password. (One of the many benefits of being root...)

      - -

      If needed, you can also temporarily disable an account, and reenable it at a later -time if needed. Both disabling an account and reenabling an account can be done with passwd. To disable an account, do the following as root:

      - - - - - -
      -
      -# passwd -l david
      -
      -
      - -

      This will change david's password to something that can never match any encrypted -value. You would reenable the account by using:

      - - - - - -
      -
      -# passwd -u david
      -
      -
      - -

      Now, david's account is back to normal. Disabling an account might be useful if the -user doesn't play by the rules you've set up on your system, or if they've exported a -very large copy of xeyes(1) to your X desktop.

      -
      - -
      -

      12.1.3 Changing User Information

      - -

      There are two pieces of information that users can change at any time: their shell and -their finger information. Slackware Linux uses chsh (change -shell) and chfn (change finger) to modify these values.

      - -

      A user can pick any shell that is listed in the /etc/shells -file. For most people, /bin/bash will do just fine. Others might -be familiar with a shell found on their system at work or school and want to use what -they already know. To change your shell, use chsh:

      - - - - - -
      -
      -% chsh
      -Password:
      -Changing the login shell for chris
      -Enter the new value, or press return for the default
      -        Login Shell [/bin/bash]:
      -
      -
      - -

      After entering your password, enter the full path to the new shell. Make sure that -it's listed in the /etc/shells(5) file first. The root user can also change any user's shell by running chsh with a username as the argument.

      - -

      The finger information is the optional information such as your full name, phone -numbers, and room number. This can be changed using chfn, and -follows the same procedure as it did during account creation. As usual, root can change anyone's finger information.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/file-commands-copymove.html b/slackbook/html/file-commands-copymove.html deleted file mode 100644 index ddb7179a9..000000000 --- a/slackbook/html/file-commands-copymove.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - -Copy and Move - - - - - - - - - - - -
      -

      10.5 Copy -and Move

      - -
      -

      10.5.1 cp

      - -

      cp(1) copies files. DOS users will notice its similarity to -the copy command. There are many options for cp , so you should have a look at the man page before using it.

      - -

      A common use is to use cp to copy a file from one location to -another. For example:

      - - - - - -
      -
      -% cp hejaz /tmp
      -
      -
      - -

      This copies the hejaz file from the current directory to the -/tmp directory.

      - -

      Many users prefer to keep the timestamps preserved, as in this example:

      - - - - - -
      -
      -% cp -a hejaz /tmp
      -
      -
      - -

      This ensures that the timestamps are not modified in the copy.

      - -

      To recursively copy the contents of a directory to another directory, you would issue -this command:

      - - - - - -
      -
      -% cp -R mydir /tmp
      -
      -
      - -

      That will copy the mydir directory to the /tmp directory.

      - -

      Also if you wish to copy a directory or a file and keep all it's old permissions and -time stamps and keep it exactly the same use cp -p.

      - - - - - -
      -
      -% ls -l file
      --rw-r--r--    1 root     vlad            4 Jan  1 15:27 file
      -% cp -p file /tmp
      -% ls -l /tmp/file
      --rw-r--r--    1 root     vlad            4 Jan  1 15:27 file
      -
      -
      - -

      cp has many more options that are discussed in detail in the -online manual page.

      -
      - -
      -

      10.5.2 mv

      - -

      mv(1) moves files from one place to another. Sounds simple -enough doesn't it?

      - - - - - -
      -
      -% mv oldfile /tmp/newfile
      -
      -
      - -

      mv has a few useful command line options that are detailed in -the man page. In practice, mv is almost never used with -commandline options.

      -
      -
      - - - - - diff --git a/slackbook/html/file-commands-creation.html b/slackbook/html/file-commands-creation.html deleted file mode 100644 index cfbf72050..000000000 --- a/slackbook/html/file-commands-creation.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - -Creation: touch and mkdir - - - - - - - - - - - -
      -

      10.4 -Creation: touch and mkdir

      - -
      -

      10.4.1 touch

      - -

      touch(1) is used to change the timestamp on a file. You can -change access timestamps and modification timestamps with this command. If the file -specified does not exist, touch will create a zero length file -with the name specified. To mark a file with the current system time, you would issue -this command:

      - - - - - -
      -
      -% ls -al file1
      --rw-r--r--    1 root     root        9779 Feb  7 21:41 file1
      -% touch file1
      -% ls -al file1
      --rw-r--r--    1 root     root        9779 Feb  8 09:17 file1
      -
      -
      - -

      There are several options for touch, including options to -specify which timestamp to modify, the time to use, and many more. The online manual page -discusses these in detail.

      -
      - -
      -

      10.4.2 mkdir

      - -

      mkdir(1) will create a new directory. You simply specify the -directory to create when you run mkdir. This example creates the hejaz directory in the current directory:

      - - - - - -
      -
      -% mkdir hejaz
      -
      -
      - -

      You can also specify a path, like this:

      - - - - - -
      -
      -% mkdir /usr/local/hejaz
      -
      -
      - -

      The -p option will tell mkdir to -make any parent directories. The above example will fail if /usr/local does not exist. The -p option -will create /usr/local and /usr/local/hejaz:

      - - - - - -
      -
      -% mkdir -p /usr/local/hejaz
      -
      -
      -
      -
      - - - - - diff --git a/slackbook/html/file-commands-deletion.html b/slackbook/html/file-commands-deletion.html deleted file mode 100644 index 5b4277c66..000000000 --- a/slackbook/html/file-commands-deletion.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - -Deletion: rm and rmdir - - - - - - - - - - - -
      -

      10.6 -Deletion: rm and rmdir

      - -
      -

      10.6.1 rm

      - -

      rm(1) removes files and directory trees. DOS users will -notice the similarity to both the del and deltree commands. rm can be very dangerous -if you do not watch yourself. While it is sometimes possible to retrieve a recently -deleted file, it can be complicated (and potentially costly) and is beyond the scope of -this book.

      - -

      To remove a single file, specify its name when you run rm:

      - - - - - -
      -
      -% rm file1
      -
      -
      - -

      If the file has write permissions removed, you may get a permission denied error -message. To force removal of the file no matter what, pass the -f option, like this:

      - - - - - -
      -
      -% rm -f file1
      -
      -
      - -

      To remove an entire directory, you use the -r and -f options together. This is a good example of how to delete the -entire contents of your hard drive. You really don't want to do this. But here's the -command anyway:

      - - - - - -
      -
      -# rm -rf /
      -
      -
      - -

      Be very careful with rm; you can shoot yourself in the foot. -There are several command line options, which are discussed in detail in the online -manual page.

      -
      - -
      -

      10.6.2 rmdir

      - -

      rmdir(1) removes directories from the filesystem. The -directory must be empty before it can be removed. The syntax is simply:

      - - - - - -
      -
      -% rmdir <directory>
      -
      -
      - -

      This example will remove the hejaz subdirectory in the -current working directory:

      - - - - - -
      -
      -% rmdir hejaz
      -
      -
      - -

      If that directory does not exist, rmdir will tell you. You -can also specify a full path to a directory to remove, as this example shows:

      - - - - - -
      -
      -% rmdir /tmp/hejaz
      -
      -
      - -

      That example will try to remove the hejaz directory inside -the /tmp directory.

      - -

      You can also remove a directory and all of its parent directories by passing the -p option.

      - - - - - -
      -
      -% rmdir -p /tmp/hejaz
      -
      -
      - -

      This will first try to remove the hejaz directory inside /tmp. If that is successful, it will try to remove /tmp. rmdir will continue this until an -error is encountered or the entire tree specified is removed.

      -
      -
      - - - - - diff --git a/slackbook/html/file-commands-link.html b/slackbook/html/file-commands-link.html deleted file mode 100644 index 8a3784fa7..000000000 --- a/slackbook/html/file-commands-link.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -Aliasing files with ln - - - - - - - - - - - -
      -

      10.7 Aliasing -files with ln

      - -

      ln(1) is used to create links between files. These links can -be either hard links or soft (symbolic) links. The differences between the two kinds of -links were discussed in Section 9.3. If you -wanted to make a symbolic link to the directory /var/media/mp3 -and place the link in your home directory, you would do this:

      - - - - - -
      -
      -% ln -s /var/media/mp3 ~/mp3
      -
      -
      - -

      The -s option tells ln to make a -symbolic link. The next option is the target of the link, and the final option is what to -call the link. In this case, it will just make a file called mp3 in your home directory that points to /var/media/mp3. You can call the link itself whatever you want by -just changing the last option.

      - -

      Making a hard link is just as simple. All you have to do is leave off the -s option. Hard links may not normally refer to directories or span -file systems, however. To create a hard link /usr/bin/email to -/usr/bin/mutt, simply type the following:

      - - - - - -
      -
      -# ln /usr/bin/mutt /usr/bin/email
      -
      -
      -
      - - - - - diff --git a/slackbook/html/file-commands-output.html b/slackbook/html/file-commands-output.html deleted file mode 100644 index e2419b276..000000000 --- a/slackbook/html/file-commands-output.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - -Simple Output: cat and echo - - - - - - - - - - - -
      -

      10.3 Simple -Output: cat and echo

      - -
      -

      10.3.1 cat

      - -

      cat(1) is short for “concatenate”. It was -originally designed to merge text files into one, but can be used for many other -purposes.

      - -

      To merge two or more files into one, you simply list the files after the cat command and then redirect the new output to a file. cat works with standard input and standard output, so you have to -use the shell redirection characters. For example:

      - - - - - -
      -
      -% cat file1 file2 file3 > bigfile
      -
      -
      - -

      This command takes the contents of file1, file2, and file3 and merges it all -together. The new output is sent to standard out.

      - -

      One can also use cat to display files. Many people cat text files through the more or less commands, like this:

      - - - - - -
      -
      -% cat file1 | more
      -
      -
      - -

      That will display the file1 file and pipe it through the more command so that you only get one screen at a time.

      - -

      Another common use for cat is copying files. You can copy any -file around with cat, like this:

      - - - - - -
      -
      -% cat /bin/bash > ~/mybash
      -
      -
      - -

      The /bin/bash program is copied to your home directory and -named mybash.

      - -

      cat has many uses and the ones discussed here are just a few. -Since cat makes extensive use of standard input and standard -output, it is ideal for use in shell scripts or part of other complex commands.

      -
      - -
      -

      10.3.2 echo

      - -

      The echo(1) command displays the specified text on the -screen. You specify the string to display after the echo -command. By default echo will display the string and print a -newline character after it. You can pass the -n option to -suppress the printing of the newline. The -e option will cause -echo to search for escape characters in the string and execute -them.

      -
      -
      - - - - - diff --git a/slackbook/html/file-commands-pagers.html b/slackbook/html/file-commands-pagers.html deleted file mode 100644 index 731c464b4..000000000 --- a/slackbook/html/file-commands-pagers.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - -Pagers: more, less, and most - - - - - - - - - - - -
      -

      10.2 Pagers: -more, less, and most

      - -
      -

      10.2.1 more

      - -

      more(1) is what we call a pager utility. Oftentimes the -output of a particular command is too big to fit on one screen. The individual commands -do not know how to fit their output to separate screens. They leave this job to the pager -utility.

      - -

      The more command breaks the output into individual screens -and waits for you to press the space bar before continuing on to the next screen. -Pressing the enter key will advance the output one line. Here is a good example:

      - - - - - -
      -
      -% cd /usr/bin
      -% ls -l
      -
      -
      - -

      That should scroll for a while. To break up the output screen by screen, just pipe it -through more:

      - - - - - -
      -
      -% ls -l | more
      -
      -
      - -

      That is the pipe character (shift backslash). The pipe is short for saying take the -output of ls and feed it into more. You -can pipe just about anything through the more command, not just -ls. Piping is also covered in Section 8.2.3.

      -
      - -
      -

      10.2.2 less

      - -

      The more command is quite handy, but often you will find that -you have advanced past the screen you wanted. more does not provide a way to go back. The -less(1) command provides this functionality. It is used in the -same way as the more command, so the previous examples apply -here too. So, less is more than more. -Joost Kremers puts it this way:

      - - -
      -

      less is more, but more more than more is, so more is less less, so use more less if you want less more.

      -
      -
      - -
      -

      10.2.3 most

      - -

      Where more and less leave off, most(1) picks back up. If less is more than -more, most is more than less. Whereas the other pagers can only display one file at a time, -most is capable of viewing any number of files, as long as each -file's window is at least 2 lines long. most has a lot of -options, check the man page for full details.

      -
      -
      - - - - - diff --git a/slackbook/html/file-commands.html b/slackbook/html/file-commands.html deleted file mode 100644 index b541735d7..000000000 --- a/slackbook/html/file-commands.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - -Handling Files and Directories - - - - - - - - - - -
      -

      Chapter 10 Handling Files and -Directories

      - - - -

      Linux aims to the most Unix-like it can be. Traditionally, Unix operating systems have -been command-line oriented. We do have a graphical user interface in Slackware, but the -command-line is still the main level of control for the system. Therefore, it is -important to understand some of the basic file management commands.

      - -

      The following sections explain the common file management commands and provide -examples of how they are used. There are many other commands, but these will help you get -started. Also, the commands are only briefly discussed here. You will find more detail in -the accompanying man pages for each command.

      - -
      -

      10.1 -Navigation : ls, cd, and pwd

      - -
      -

      10.1.1 ls

      - -

      This command lists files in a directory. Windows and DOS users will notice its -similarity to the dir command. By itself, ls(1) will list the files in the current directory. To see what's in -your root directory, you could issue these commands:

      - - - - - -
      -
      -% cd /
      -% ls
      -bin   cdr    dev  home  lost+found  proc  sbin   tmp  var
      -boot  cdrom  etc  lib   mnt         root  suncd  usr  vmlinuz
      -
      -
      - -

      The problem a lot of people have with that output is that you cannot easily tell what -is a directory and what is a file. Some users prefer that ls add -a type identifier to each listing, like this:

      - - - - - -
      -
      -% ls -FC
      -bin/   cdr/    dev/  home/  lost+found/  proc/  sbin/   tmp/  var/
      -boot/  cdrom/  etc/  lib/   mnt/         root/  suncd/  usr/  vmlinuz
      -
      -
      - -

      Directories get a slash at the end of the name, executable files get an asterisk at -the end of the name, and so on.

      - -

      ls can also be used to get other statistics on files. For -example, to see the creation dates, owners, and permissions, you would look at a long -listing:

      - - - - - -
      -
      -% ls -l
      -drwxr-xr-x   2 root     bin          4096 May  7 09:11 bin/
      -drwxr-xr-x   2 root     root         4096 Feb 24 03:55 boot/
      -drwxr-xr-x   2 root     root         4096 Feb 18 01:10 cdr/
      -drwxr-xr-x  14 root     root         6144 Oct 23 18:37 cdrom/
      -drwxr-xr-x   4 root     root        28672 Mar  5 18:01 dev/
      -drwxr-xr-x  10 root     root         4096 Mar  8 03:32 etc/
      -drwxr-xr-x   8 root     root         4096 Mar  8 03:31 home/
      -drwxr-xr-x   3 root     root         4096 Jan 23 21:29 lib/
      -drwxr-xr-x   2 root     root        16384 Nov  1 08:53 lost+found/
      -drwxr-xr-x   2 root     root         4096 Oct  6 12:47 mnt/
      -dr-xr-xr-x  62 root     root            0 Mar  4 15:32 proc/
      -drwxr-x--x  12 root     root         4096 Feb 26 02:06 root/
      -drwxr-xr-x   2 root     bin          4096 Feb 17 02:02 sbin/
      -drwxr-xr-x   5 root     root         2048 Oct 25 10:51 suncd/
      -drwxrwxrwt   4 root     root       487424 Mar  7 20:42 tmp/
      -drwxr-xr-x  21 root     root         4096 Aug 24 03:04 usr/
      -drwxr-xr-x  18 root     root         4096 Mar  8 03:32 var/
      -
      -
      - -

      Suppose you want to get a listing of the hidden files in the current directory. This -command will do just that:

      - - - - - -
      -
      -% ls -a
      -.              bin   cdrom  home        mnt   sbin   usr
      -..             boot  dev    lib         proc  suncd  var
      -.pwrchute_tmp  cdr   etc    lost+found  root  tmp    vmlinuz
      -
      -
      - -

      Files beginning with a period (called dot files) are hidden when you run ls. You will only see them if you pass the -a option.

      - -

      There are many more options that can be found in the online manual page. Don't forget -that you can combine options that you pass to ls.

      -
      - -
      -

      10.1.2 cd

      - -

      The cd command is used to change working directories. You -simply type cd followed by the path name to change to. Here are -some examples:

      - - - - - -
      -
      -darkstar:~$ cd /bin
      -darkstar:/bin$ cd usr
      -bash: cd: usr: No such file or directory
      -darkstar:/bin$ cd /usr
      -darkstar:/usr$ ls
      -bin
      -darkstar:/usr$ cd bin
      -darkstar:/usr/bin$
      -
      -
      - -

      Notice that without the preceding slash, it tries to change to a directory in the -current directory. Also executing cd with no options will move -you to your home directory.

      - -

      The cd command is not like the other commands. It is a -builtin shell command. Shell builtins are discussed in Section 8.3.1. This may not make any -sense to you right now. Basically it means there is no man page for this command. -Instead, you have to use the shell help. Like this:

      - - - - - -
      -
      -% help cd
      -
      -
      - -

      It will display the options for cd and how to use them.

      -
      - -
      -

      10.1.3 pwd

      - -

      The pwd command is used to show your current location. To use -the pwd command just type pwd. For -example:

      - - - - - -
      -
      -% cd /bin
      -% pwd
      -/bin
      -% cd /usr
      -% cd bin
      -% pwd
      -/usr/bin
      -
      -
      -
      -
      -
      - - - - - diff --git a/slackbook/html/filesystem-structure-links.html b/slackbook/html/filesystem-structure-links.html deleted file mode 100644 index 451270e5e..000000000 --- a/slackbook/html/filesystem-structure-links.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -Links - - - - - - - - - - - -
      -

      9.3 Links

      - -

      Links are pointers between files. With links, you can have files exist in many -locations and be accessible by many names. There are two types of links: hard and -soft.

      - -

      Hard links are names for a particular file. They can only exist within a single -filesystem and are only removed when the real name is removed from the system. These are -useful in some cases, but many users find the soft link to be more versatile.

      - -

      The soft link, also called a symbolic link, can point to a file outside of its -filesystem. It is actually a small file containing the information it needs. You can add -and remove soft links without affecting the actual file. And since a symbolic link is -actually a small file containing its own information, they can even point at a directory. -It's rather common to have /var/tmp actually be a symbolic link -to /tmp for example.

      - -

      Links do not have their own set of permissions or ownerships, but instead reflect -those of the file they point to. Slackware uses mostly soft links. Here is a common -example:

      - - - - - -
      -
      -% ls -l /bin/sh
      -lrwxrwxrwx   1 root     root     4 Apr  6 12:34 /bin/sh -> bash
      -
      -
      - -

      The sh shell under Slackware is actually bash. Removing links is done using rm. The -ln command is used to create links. These commands will be -discussed in more depth in Chapter 10.

      - -

      It's very important to be careful about symlinks in particular. Once, I was working on -a machine that was consistently failing to back-up to tape each night. Two symlinks had -been made to directories beneath each other. The back-up software kept appending those -same directories to the tape until it was out of space. Normally, a set of checks will -prevent creating a symlink in this situation, but ours was a special case.

      -
      - - - - - diff --git a/slackbook/html/filesystem-structure-mounting.html b/slackbook/html/filesystem-structure-mounting.html deleted file mode 100644 index e09694e40..000000000 --- a/slackbook/html/filesystem-structure-mounting.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -Mounting Devices - - - - - - - - - - - -
      -

      9.4 Mounting Devices

      - -

      As was previously discussed in Section 4.1.1, all the -drives and devices in your computer are one big filesystem. Various hard drive -partitions, CD-ROMs, and floppies are all placed in the same tree. In order to attach -these drives to the filesystem so that you can access them, you have to use the mount(1) and umount(1) commands.

      - -

      Some devices are automatically mounted when you boot up your computer. These are -listed in the /etc/fstab file. Anything that you want to be -mounted automatically gets an entry in that file. For other devices, you'll have to issue -a command every time you want to use the device.

      - -
      -

      9.4.1 fstab

      - -

      Let's look at an example of the /etc/fstab file:

      - - - - - -
      -
      -% cat /etc/fstab
      -/dev/sda1       /               ext2        defaults        1   1
      -/dev/sda2       /usr/local      ext2        defaults        1   1
      -/dev/sda4       /home           ext2        defaults        1   1
      -/dev/sdb1       swap            swap        defaults        0   0
      -/dev/sdb3       /export         ext2        defaults        1   1
      -none            /dev/pts        devpts      gid=5,mode=620  0   0
      -none            /proc           proc        defaults        0   0
      -/dev/fd0        /mnt            ext2        defaults        0   0
      -/dev/cdrom      /mnt/cdrom      iso9660     ro              0   0
      -
      -
      - -

      The first column is the device name. In this case, the devices are five partitions -spread out across two SCSI hard drives, two special filesystems that don't need a device, -a floppy, and a CD-ROM drive. The second column is where the device will be mounted. This -needs to be a directory name, except in the case of a swap partition. The third column is -the filesystem type of the device. For normal Linux filesystems, this will be ext2 (second extended filesystem). CD-ROM drives are iso9660, and Windows-based devices will either be msdos or vfat.

      - -

      The fourth column is a listing of options that apply to the mounted filesystem. -defaults is fine for just about everything. However, read-only devices should be given -the ro flag. There are a lot of options that can be used. -Check the fstab(5) man page for more information. The last two -columns are used by fsck and other commands that need to -manipulate the devices. Check the man page for that information as well.

      - -

      When you install Slackware Linux, the setup program will build much of the fstab file.

      -
      - -
      -

      9.4.2 mount and -umount

      - -

      Attaching another device to your filesystem is easy. All you have to do is use the mount command, along with a few options. Using mount can simplified if the device has an entry in the /etc/fstab file. For example, let's say that I wanted to mount my -CD-ROM drive and that my fstab file looked like the example from -the previous section. I would call mount like so:

      - - - - - -
      -
      -% mount /cdrom
      -
      -
      - -

      Since there is an entry in fstab for that mount point, mount knows what options to use. If there wasn't an entry for that -device, I would have to use several options for mount:

      - - - - - -
      -
      -% mount -t iso9660 -o ro /dev/cdrom /cdrom
      -
      -
      - -

      That command line includes the same information as the example fstab did, but we'll go over all the parts anyways. The -t iso9660 is the filesystem type of the device to mount. In this -case, it would be the iso9660 filesystem which is what CD-ROM drives most commonly use. -The -o ro tells mount to mount the device read-only. The /dev/cdrom is the name of the device to mount, and /cdrom is the location on the filesystem to mount the drive.

      - -

      Before you can remove a floppy, CD-ROM, or other removable device that is currently -mounted, you'll have to unmount it. That is done using the umount command. Don't ask where the “n” went because we -couldn't tell you. You can use either the mounted device or the mount point as the -argument to umount. For example, if you wanted to unmount the -CD-ROM from the previous example, either of these commands would work:

      - - - - - -
      -
      -# umount /dev/cdrom
      -# umount /cdrom
      -
      -
      -
      -
      - - - - - diff --git a/slackbook/html/filesystem-structure-nfs.html b/slackbook/html/filesystem-structure-nfs.html deleted file mode 100644 index 720cda6e6..000000000 --- a/slackbook/html/filesystem-structure-nfs.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -NFS Mounts - - - - - - - - - - - -
      -

      9.5 -NFS Mounts

      - -

      NFS stands for the Network Filesystem. It is not really part of the real filesystem, -but can be used to add parts to the mounted filesystem.

      - -

      Large Unix environments often times share the same programs, sets of home directories, -and mail spool. The problem of getting the same copy to each machine is solved with NFS. -We can use NFS to share one set of home directories between all of the workstations. The -workstations then mount that NFS share as if it were on their own machines.

      - -

      See Section -5.6.2 and the man pages for exports(5), nfsd(8), and mountd(8) for more -information.

      -
      - - - - - diff --git a/slackbook/html/filesystem-structure-permissions.html b/slackbook/html/filesystem-structure-permissions.html deleted file mode 100644 index 0f951e777..000000000 --- a/slackbook/html/filesystem-structure-permissions.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - -Permissions - - - - - - - - - - - -
      -

      9.2 Permissions

      - -

      Permissions are the other important part of the multiuser aspects of the filesystem. -With these, you can change who can read, write, and execute files.

      - -

      The permission information is stored as four octal digits, each specifying a different -set of permissions. There are owner permissions, group permissions, and world -permissions. The fourth octal digit is used to store special information such as set user -ID, set group ID, and the sticky bit. The octal values assigned to the permission modes -are (they also have letters associated with them that are displayed by programs such as -ls and can be used by chmod):

      - -
      -

      Table 9-1. Octal Permission Values

      - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Permission TypeOctal ValueLetter Value
      “sticky” bit1t
      set user ID4s
      set group ID2s
      read4r
      write2w
      execute1x
      -
      - -

      You add the octal values for each permission group. For example, if you want the group -permissions to be “read” and “write”, you would use -“6” in the group portion of the permission information.

      - -

      bash's default permissions are:

      - - - - - -
      -
      -% ls -l /bin/bash
      --rwxr-xr-x   1 root     bin  477692 Mar 21 19:57 /bin/bash
      -
      -
      - -

      The first dash would be replaced with a “d” if this was a directory. The -three permission groups (owner, group, and world) are displayed next. We see that the -owner has read, write, and execute permissions (rwx). The -group has only read and execute (r-x). And everyone else has -only read and execute (r-x).

      - -

      How would we set permissions on another file to resemble bash's? First, let's make an example file:

      - - - - - -
      -
      -% touch /tmp/example
      -% ls -l /tmp/example
      --rw-rw-r---  1 david    users    0 Apr 19 11:21 /tmp/example
      -
      -
      - -

      We will use chmod(1) (which means “change mode”) -to set the permissions on the example file. Add the octal numbers for the permissions you -want. For the owner to have read, write, and execute, we would have a value of 7. Read and execute would have 5. Run -those together and pass them to chmod like this:

      - - - - - -
      -
      -% chmod 755 /tmp/example
      -% ls -l /tmp/example
      --rwxr-xr-x   1 david    users    0 Apr 19 11:21 /tmp/example
      -
      -
      - -

      Now you may be thinking, “Why didn't it just create a file with those -permissions in the first place?” Well the answer is simple. bash includes a nice little built-in called umask. This is included with most Unix shells as well, and controls -what file permissions are assigned to newly created files. We discussed bash built-ins to some degree in Section 8.3.1. umask takes a little getting used to. It works very similar to chmod, only in reverse. You specify the octal values you do not wish -to have present in newly created files. The default umask value is 0022.

      - - - - - -
      -
      -% umask
      -0022
      -% umask 0077
      -% touch tempfile
      -% ls -l tempfile
      --rw--------  1 david    users    0 Apr 19 11:21 tempfile
      -
      -
      - -

      See the man page for bash for more information.

      - -

      To set special permissions with chmod, add the numbers -together and place them in the first column. For example, to make it set user ID and set -group ID, we use 6 as the first column:

      - - - - - -
      -
      -% chmod 6755 /tmp/example
      -% ls -l /tmp/example
      --rwsr-sr-x   1 david    users    0 Apr 19 11:21 /tmp/example
      -
      -
      - -

      If the octal values confuse you, you can use letters with chmod. The permission groups are represented as:

      - -
      - --- - - - - - - - - - - - - - - - - - - - - -
      Owneru
      Groupg
      Worldo
      All of the abovea
      -
      - -

      To do the above, we would have to use several command lines:

      - - - - - -
      -
      -% chmod a+rx /tmp/example
      -% chmod u+w /tmp/example
      -% chmod ug+s /tmp/example
      -
      -
      - -

      Some people prefer the letters over the numbers. Either way will result in the same -set of permissions.

      - -

      The octal format is often faster, and the one you see most often used in shell -scripts. Sometimes the letters are more powerful however. For example, there's no easy -way to change one group of permissions while preserving the other groups on files and -directories when using the octal format. This is trivial with the letters.

      - - - - - -
      -
      -% ls -l /tmp/
      --rwxr-xr-x   1 alan    users    0 Apr 19 11:21 /tmp/example0
      --rwxr-x---   1 alan    users    0 Apr 19 11:21 /tmp/example1
      -----r-xr-x   1 alan    users    0 Apr 19 11:21 /tmp/example2
      -% chmod g-rwx /tmp/example?
      --rwx---r-x   1 alan    users    0 Apr 19 11:21 /tmp/example0
      --rwx------   1 alan    users    0 Apr 19 11:21 /tmp/example1
      --------r-x   1 alan    users    0 Apr 19 11:21 /tmp/example2
      -
      -
      - -

      We mentioned set user ID and set group ID permissions in several places above. You may -be wondering what this is. Normally when you run a program, it is operating under your -user account. That is, it has all the permissions that you as a user have. The same is -true for the group. When you run a program, it executes under your current group. With -set user ID permissions, you can force the program to always run as the program owner -(such as “root”). Set group ID is the same, but for the group.

      - -

      Be careful with this, set user ID and set group ID programs can open major security -holes on your system. If you frequently set user ID programs that are owned by root, you are allowing anyone to run that program and run it as root. Since root has no restrictions on -the system, you can see how this would pose a major security problem. In short, it's not -bad to use set user ID and set group ID permissions, just use common sense.

      -
      - - - - - diff --git a/slackbook/html/filesystem-structure.html b/slackbook/html/filesystem-structure.html deleted file mode 100644 index 843c07c5d..000000000 --- a/slackbook/html/filesystem-structure.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - -Filesystem Structure - - - - - - - - - - -
      -

      Chapter 9 Filesystem -Structure

      - -
      -
      -
      Table of Contents
      - -
      9.1 Ownership
      - -
      9.2 Permissions
      - -
      9.3 Links
      - -
      9.4 Mounting Devices
      - -
      9.5 NFS Mounts
      -
      -
      - -

      We have already discussed the directory structure in Slackware Linux. By this point, -you should be able to find files and directories that you need. But there is more to the -filesystem than just the directory structure.

      - -

      Linux is a multiuser operating system. Every aspect of the system is multiuser, even -the filesystem. The system stores information like who owns a file and who can read it. -There are other unique parts about the filesystems, such as links and NFS mounts. This -section explains these, as well as the multiuser aspects of the filesystem.

      - -
      -

      9.1 Ownership

      - -

      The filesystem stores ownership information for each file and directory on the system. -This includes what user and group own a particular file. The easiest way to see this -information is with the ls command:

      - - - - - -
      -
      -% ls -l /usr/bin/wc
      --rwxr-xr-x   1 root     bin    7368 Jul 30  1999 /usr/bin/wc
      -
      -
      - -

      We are interested in the third and fourth columns. These contain the username and -group name that owns this file. We see that the user “root” and the group “bin” own this file.

      - -

      We can easily change the file owners with the chown(1) (which -means “change owner”) and chgrp(1) (which means -“change group”) commands. To change the file owner to daemon, we would use chown:

      - - - - - -
      -
      -# chown daemon /usr/bin/wc
      -
      -
      - -

      To change the group owner to “root”, we would -use chgrp:

      - - - - - -
      -
      -# chgrp root /usr/bin/wc
      -
      -
      - -

      We can also use chown to specify the user and group owners -for a file:

      - - - - - -
      -
      -# chown daemon:root /usr/bin/wc
      -
      -
      - -

      In the above example, the user could have used a period instead of a colon. The result -would have been the same; however, the colon is considered better form. Use of the period -is deprecated and may be removed from future versions of chown -to allow usernames with periods in them. These usernames tend to be very popular with -Windows Exchange Servers and are encountered most commonly in email addresses such as: -mr.jones@example.com. In slackware, administrators are advised -to stay away from such usernames because some scripts still use the period to indicate -the user and group of a file or directory. In our example, chmod -would interpret mr.jones as user “mr” and group -“jones”.

      - -

      File ownership is a very important part of using a Linux system, even if you are the -only user. You sometimes need to fix ownerships on files and device nodes.

      -
      -
      - - - - - diff --git a/slackbook/html/glossary.html b/slackbook/html/glossary.html deleted file mode 100644 index efdb63236..000000000 --- a/slackbook/html/glossary.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - -Glossary - - - - - - - - - - -
      -

      Glossary

      - -
      -
      Account
      - -
      -

      All of the information about a user, including username, password, finger information, -UID and GID, and home directory. To create an account is to add and define a user.

      -
      - -
      Background
      - -
      -

      Any process that is running without accepting or controlling the input of a terminal -is said to be running in the background.

      -
      - -
      Boot disk
      - -
      -

      A floppy disk containing an operating system (in our case, the Linux kernel) from -which a computer can be started.

      -
      - -
      Compile
      - -
      -

      To convert source code to machine-readable “binary” code.

      -
      - -
      Daemon
      - -
      -

      A program designed to run in the background and, without user intervention, perform a -specific task (usually providing a service).

      -
      - -
      Darkstar
      - -
      -

      The default hostname in Slackware; your computer will be called darkstar if you do not -specify some other name.

      - -

      One of Patrick Volkerding's development machines, named after “Dark Star”, -a song by the Grateful Dead.

      -
      - -
      Desktop Environment
      - -
      -

      A graphical user interface (GUI) that runs atop the X Window System and provides such -features as integrated applications, cohesive look-and-feel between programs and -components, file and window management capabilities, etc. A step beyond the simple window -manager.

      -
      - -
      Device driver
      - -
      -

      A chunk of code in the kernel that directly controls a piece of hardware.

      -
      - -
      Device node
      - -
      -

      A special type of file in the /dev filesystem that -represents a hardware component to the operating system.

      -
      - -
      DNS
      - -
      -

      Domain Name Service. A system in which networked computers are given names which -translate to numerical addresses.

      -
      - -
      Domain name
      - -
      -

      A computer's DNS name, excluding its host name.

      -
      - -
      Dot file
      - -
      -

      In Linux, files which are to be hidden have filenames beginning with a dot ('.').

      -
      - -
      Dotted quad
      - -
      -

      The format of IP addresses, so called because it consists of four numbers (range 0-255 -decimal) separated by periods.

      -
      - -
      Dynamic loader
      - -
      -

      When programs are compiled under Linux, they usually use pieces of code (functions) -from external libraries. When such programs are run, those libraries must be found and -the required functions loaded into memory. This is the job of the dynamic loader.

      -
      - -
      Environment variable
      - -
      -

      A variable set in the user's shell which can be referenced by that user or programs -run by that user within that shell. Environment variables are generally used to store -preferences and default parameters.

      -
      - -
      Epoch
      - -
      -

      A period of history; in Unix, “The Epoch” begins at 00:00:00 UTC January -1, 1970. This is considered the “dawn of time” by Unix and Unix-like -operating systems, and all other time is calculated relative to this date.

      -
      - -
      Filesystem
      - -
      -

      A representation of stored data in which “files” of data are kept -organized in “directories”. The filesystem is the nearly universal form of -representation for data stored to disks (both fixed and removable).

      -
      - -
      Foreground
      - -
      -

      A program that is accepting or controlling a terminal's input is said to be running in -the foreground.

      -
      - -
      Framebuffer
      - -
      -

      A type of graphics device; in Linux, this most often refers to the software -framebuffer, which provides a standard framebuffer interface to programs while keeping -specific hardware drivers hidden from them. This layer of abstraction frees programs of -the need to speak to various hardware drivers.

      -
      - -
      FTP
      - -
      -

      The File Transfer Protocol. FTP is a very popular method of transferring data between -computers.

      -
      - -
      Gateway
      - -
      -

      A computer through which data on a network is transferred to another network.

      -
      - -
      GID
      - -
      -

      Group Identifier. The GID is a unique number attributed to a group of users.

      -
      - -
      Group
      - -
      -

      Users in Unix belong to “groups”, which can contain many other users and -are used for more general access control than the existence of users alone can easily -allow.

      -
      - -
      GUI
      - -
      -

      Graphical User Interface. A software interface that uses rendered graphical elements -such as buttons, scrollbars, windows, etc. rather than solely text-based input and -output

      -
      - -
      Home directory
      - -
      -

      A user's “home directory” is the directory the user is placed in -immediately upon logging in. Users have full permissions and more or less free reign -within their home directories.

      -
      - -
      HOWTO
      - -
      -

      A document describing “how to” do something, such as configure a firewall -or manage users and groups. There is a large collection of these documents available from -the Linux Documentation Project.

      -
      - -
      HTTP
      - -
      -

      The Hypertext Transfer Protocol. HTTP is the primary protocol on which the World Wide -Web operates.

      -
      - -
      ICMP
      - -
      -

      Internet Control Message Protocol. A very basic networking protocol, used mostly for -pings.

      -
      - -
      Kernel
      - -
      -

      The heart of an operating system. The kernel is the part that provides basic process -control and interfaces with the computer's hardware.

      -
      - -
      Kernel module
      - -
      -

      A piece of kernel code, usually a driver of some sort, that can be loaded and unloaded -from memory separately from the main body of the kernel. Modules are handy when upgrading -drivers or testing kernel settings, because they can be loaded and unloaded without -rebooting.

      -
      - -
      Library
      - -
      -

      A collection of functions which can be shared between programs.

      -
      - -
      LILO
      - -
      -

      The LInux LOader. LILO is the most widely-used Linux boot manager.

      -
      - -
      LOADLIN
      - -
      -

      LOADLIN is a program that runs under MS DOS or Windows and boots a Linux system. It is -most commonly used on computers with multiple operating systems (including Linux and -DOS/Windows, of course).

      -
      - -
      Man section
      - -
      -

      Pages in the standard Unix online manual ("man") are grouped into sections for easy -reference. All C programming pages are in section 3, system administration pages in -section 5, etc.

      -
      - -
      MBR
      - -
      -

      The Master Boot Record. A reserved space on a hard drive where information on what to -do when booting is stored. LILO or other boot managers can be written here.

      -
      - -
      Motif
      - -
      -

      A popular programming toolkit used in many older X programs.

      -
      - -
      MOTD
      - -
      -

      Message of the Day. The motd (stored in Linux in /etc/motd -is a text file that is displayed to all users upon logging in. Traditionally, it is used -by the system administrator as a sort of “bulletin board” for communicating -with users.

      -
      - -
      Mount point
      - -
      -

      An empty directory in a filesystem where another filesystem is to be -“mounted”, or grafted on.

      -
      - -
      Nameserver
      - -
      -

      A DNS information server. Nameservers translate DNS names to numerical IP -addresses.

      -
      - -
      Network interface
      - -
      -

      A virtual representation of a network device provided by the kernel. Network -interfaces allow users and programs to talk to network devices.

      -
      - -
      NFS
      - -
      -

      The Network Filesystem. NFS allows the mounting of remote filesystems as if they were -local to your computer and thus provides a transparent method of file sharing.

      -
      - -
      Octal
      - -
      -

      Base-8 number system, with digits 0-7.

      -
      - -
      Pager
      - -
      -

      An X program that allows the user to see and switch between multiple -“desktops”.

      -
      - -
      Partition
      - -
      -

      A division of a hard drive. Filesystems exist on top of partitions.

      -
      - -
      PPP
      - -
      -

      Point-to-Point Protocol. PPP is used mainly for connecting via modem to an Internet -Service Provider.

      -
      - -
      Process
      - -
      -

      A running program.

      -
      - -
      Root directory
      - -
      -

      Represented as “/”, the root directory exists at the top of the -filesystem, with all other directories branching out beneath it in a “file -tree”.

      -
      - -
      Root disk
      - -
      -

      The disk (usually fixed) on which the root directory is stored.

      -
      - -
      Routing table
      - -
      -

      The set of information the kernel uses in “routing” network data around. -It contains such tidbits as where your default gateway is, which network interface is -connected to which network, etc.

      -
      - -
      Runlevel
      - -
      -

      The overall system state as defined by init. Runlevel 6 is rebooting, runlevel 1 is -“single user mode”, runlevel 4 is an X login, etc. There are 6 available -runlevels on a Slackware system.

      -
      - -
      Secure shell
      - -
      -

      An encrypted (thus secure) method of logging in remotely to a computer. Many secure -shell programs are available; both a client and server are needed.

      -
      - -
      Service
      - -
      -

      The sharing of information and/or data between programs and computers from a single -“server” to multiple “clients”. HTTP, FTP, NFS, etc. are -services.

      -
      - -
      Shadow password suite
      - -
      -

      The shadow password suite allows encrypted passwords to be hidden from users, while -the rest of the information in the /etc/passwd file remains -visible to all. This helps prevent brute-force attempts at cracking passwords.

      -
      - -
      Shell
      - -
      -

      Shells provide a commandline interface to the user. When you're looking at a text -prompt, you're in a shell.

      -
      - -
      Shell builtin
      - -
      -

      A command built into the shell, as opposed to being provided by an external program. -For instance, bash has a cd -builtin.

      -
      - -
      Signal
      - -
      -

      Unix programs can communicate between each other using simple “signals”, -which are enumerated and usually have specific meanings. kill -l -will list the available signals.

      -
      - -
      SLIP
      - -
      -

      Serial Line Interface Protocol. SLIP is a similar protocol to PPP, in that it's used -for connecting two machines via a serial interface.

      -
      - -
      Software package
      - -
      -

      A program and its associated files, archived and compressed into a single file along -with any necessary scripts or information to aid in managing the installation, upgrade, -and removal of those files.

      -
      - -
      Software series
      - -
      -

      A collection of related software packages in Slackware. All KDE packages are in the -“kde” series, networking packages in the “n” series, etc.

      -
      - -
      Source code
      - -
      -

      The (more or less) human-readable code in which most programs are written. Source code -is compiled into “binary” code.

      -
      - -
      Standard Error (stderr)
      - -
      -

      The Unix-standard output stream for errors. Programs write any error messages on -stderr, so that they can be separated from normal output.

      -
      - -
      Standard Input (stdin)
      - -
      -

      The Unix-standard input stream. Data can be redirected or piped into a program's stdin -from any source.

      -
      - -
      Standard Output (stdout)
      - -
      -

      The Unix-standard output stream. Normal text output from a program is written to -stdout, which is separate from the error messages reported on stderr and can be piped or -redirected into other programs' stdin or to a file.

      -
      - -
      Subnet
      - -
      -

      An IP address range that is part of a larger range. For instance, 192.168.1.0 is a -subnet of 192.168.0.0 (where 0 is a mask meaning “undefined”); it is, in -fact, the “.1” subnet.

      -
      - -
      Superblock
      - -
      -

      In Linux, partitions are discussed in terms of blocks. A block is 512 bytes. The -superblock is the first 512 bytes of a partition.

      -
      - -
      Supplemental disk
      - -
      -

      In Slackware, a floppy disk used during installation that contains neither the kernel -(which is on the boot disk) nor the root filesystem (which is on the root disk), but -additional needed files such as network modules or PCMCIA support.

      -
      - -
      Suspended process
      - -
      -

      A process which has been frozen until killed or resumed.

      -
      - -
      Swap space
      - -
      -

      Disk space used by the kernel as “virtual” RAM. It is slower than RAM, but -because disk space is cheaper, swap is usually more plentiful. Swap space is useful to -the kernel for holding lesser-used data and as a fallback when physical RAM is -exhausted.

      -
      - -
      Symbolic link
      - -
      -

      A special file that simply points to the location of another file. Symbolic links are -used to avoid data duplication when a file is needed in multiple locations.

      -
      - -
      Tagfile
      - -
      -

      A file used by the Slackware setup program during -installation, which describes a set of packages to be installed.

      -
      - -
      Terminal
      - -
      -

      A human-computer interface consisting of at least a screen (or virtual screen) and -some method of input (almost always at least a keyboard).

      -
      - -
      Toolkit, GUI
      - -
      -

      A GUI toolkit is a collection of libraries that provide a programmer with code to draw -“widgets” such as scrollbars, checkboxes, etc. and construct a graphical -interface. The GUI toolkit used by a program often defines its “look and -feel”.

      -
      - -
      UID
      - -
      -

      User Identifier. A unique number that identifies a user to the system. UIDs are used -by most programs instead of usernames because a number is easier to deal with; usernames -are generally only used when the user has to see things happen.

      -
      - -
      VESA
      - -
      -

      Video Electronics Standards Association. The term “VESA” is often used to -denote a standard specified by said Association. Nearly all modern video adapters are -VESA-compliant.

      -
      - -
      Virtual terminal
      - -
      -

      The use of software to simulate multiple terminals while using only a single set of -input/output devices (keyboard, monitor, mouse). Special keystrokes switch between -virtual terminals at a single physical terminal.

      -
      - -
      Window manager
      - -
      -

      An X program whose purpose is to provide a graphical interface beyond the simple -rectangle-drawing of the X Window System. Window managers generally provide titlebars, -menus for running programs, etc.

      -
      - -
      Working directory
      - -
      -

      The directory in which a program considers itself to be while running.

      -
      - -
      Wrapper program
      - -
      -

      A program whose sole purpose is to run other programs, but change their behavior in -some way by altering their environments or filtering their input.

      -
      - -
      X server
      - -
      -

      The program in the X Window System which interfaces with graphics hardware and handles -the actual running of X programs.

      -
      - -
      X Window System
      - -
      -

      Network-oriented graphical interface system used on most Unix-like operating systems, -including Linux.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/gpl.html b/slackbook/html/gpl.html deleted file mode 100644 index 7e41435cc..000000000 --- a/slackbook/html/gpl.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - -The GNU General Public License - - - - - - - - - -
      -

      Appendix A. The GNU General Public License

      - -
      -
      -
      Table of Contents
      - -
      A.1. Preamble
      - -
      A.2. TERMS AND CONDITIONS
      - -
      A.3. How to Apply These Terms to Your New -Programs
      -
      -
      - -

      GNU GENERAL PUBLIC LICENSE
      -
      -Version 2, June 1991
      -Copyright (C) 1989, 1991 Free Software Foundation, Inc.
      - -59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
      - -Everyone is permitted to copy and distribute verbatim copies of this
      - -license document, but changing it is not allowed.

      - -
      -

      A.1. Preamble

      - -

      The licenses for most software are designed to take away your freedom to share and -change it. By contrast, the GNU General Public License is intended to guarantee your -freedom to share and change free software--to make sure the software is free for all its -users. This General Public License applies to most of the Free Software Foundation's -software and to any other program whose authors commit to using it. (Some other Free -Software Foundation software is covered by the GNU Library General Public License -instead.) You can apply it to your programs, too.

      - -

      When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute copies -of free software (and charge for this service if you wish), that you receive source code -or can get it if you want it, that you can change the software or use pieces of it in new -free programs; and that you know you can do these things.

      - -

      To protect your rights, we need to make restrictions that forbid anyone to deny you -these rights or to ask you to surrender the rights. These restrictions translate to -certain responsibilities for you if you distribute copies of the software, or if you -modify it.

      - -

      For example, if you distribute copies of such a program, whether gratis or for a fee, -you must give the recipients all the rights that you have. You must make sure that they, -too, receive or can get the source code. And you must show them these terms so they know -their rights.

      - -

      We protect your rights with two steps: (1) copyright the software, and (2) offer you -this license which gives you legal permission to copy, distribute and/or modify the -software.

      - -

      Also, for each author's protection and ours, we want to make certain that everyone -understands that there is no warranty for this free software. If the software is modified -by someone else and passed on, we want its recipients to know that what they have is not -the original, so that any problems introduced by others will not reflect on the original -authors' reputations.

      - -

      Finally, any free program is threatened constantly by software patents. We wish to -avoid the danger that redistributors of a free program will individually obtain patent -licenses, in effect making the program proprietary. To prevent this, we have made it -clear that any patent must be licensed for everyone's free use or not licensed at -all.

      - -

      The precise terms and conditions for copying, distribution and modification -follow.

      -
      - -
      -

      A.2. TERMS AND CONDITIONS

      - -

      TERMS AND CONDITIONS FOR COPYING, -DISTRIBUTION AND MODIFICATION

      - -
        -
      1. -

        This License applies to any program or other work which contains a notice placed by -the copyright holder saying it may be distributed under the terms of this General Public -License. The “Program”, below, refers to any such program or work, and a -“work based on the Program” means either the Program or any derivative work -under copyright law: that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another language. -(Hereinafter, translation is included without limitation in the term -“modification”.) Each licensee is addressed as “you”.

        - -

        Activities other than copying, distribution and modification are not covered by this -License; they are outside its scope. The act of running the Program is not restricted, -and the output from the Program is covered only if its contents constitute a work based -on the Program (independent of having been made by running the Program). Whether that is -true depends on what the Program does.

        -
      2. - -
      3. -

        You may copy and distribute verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and appropriately publish on -each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; and give any other -recipients of the Program a copy of this License along with the Program.

        - -

        You may charge a fee for the physical act of transferring a copy, and you may at your -option offer warranty protection in exchange for a fee.

        -
      4. - -
      5. -

        You may modify your copy or copies of the Program or any portion of it, thus forming a -work based on the Program, and copy and distribute such modifications or work under the -terms of Section 1 above, provided that you also meet all of these conditions:

        - -
          -
        1. -

          You must cause the modified files to carry prominent notices stating that you changed -the files and the date of any change.

          -
        2. - -
        3. -

          You must cause any work that you distribute or publish, that in whole or in part -contains or is derived from the Program or any part thereof, to be licensed as a whole at -no charge to all third parties under the terms of this License.

          -
        4. - -
        5. -

          If the modified program normally reads commands interactively when run, you must cause -it, when started running for such interactive use in the most ordinary way, to print or -display an announcement including an appropriate copyright notice and a notice that there -is no warranty (or else, saying that you provide a warranty) and that users may -redistribute the program under these conditions, and telling the user how to view a copy -of this License. (Exception: if the Program itself is interactive but does not normally -print such an announcement, your work based on the Program is not required to print an -announcement.)

          -
        6. -
        - -

        These requirements apply to the modified work as a whole. If identifiable sections of -that work are not derived from the Program, and can be reasonably considered independent -and separate works in themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you distribute the same -sections as part of a whole which is a work based on the Program, the distribution of the -whole must be on the terms of this License, whose permissions for other licensees extend -to the entire whole, and thus to each and every part regardless of who wrote it.

        - -

        Thus, it is not the intent of this section to claim rights or contest your rights to -work written entirely by you; rather, the intent is to exercise the right to control the -distribution of derivative or collective works based on the Program.

        - -

        In addition, mere aggregation of another work not based on the Program with the -Program (or with a work based on the Program) on a volume of a storage or distribution -medium does not bring the other work under the scope of this License.

        -
      6. - -
      7. -

        You may copy and distribute the Program (or a work based on it, under Section 2) in -object code or executable form under the terms of Sections 1 and 2 above provided that -you also do one of the following:

        - -
          -
        1. -

          Accompany it with the complete corresponding machine-readable source code, which must -be distributed under the terms of Sections 1 and 2 above on a medium customarily used for -software interchange; or,

          -
        2. - -
        3. -

          Accompany it with a written offer, valid for at least three years, to give any third -party, for a charge no more than your cost of physically performing source distribution, -a complete machine-readable copy of the corresponding source code, to be distributed -under the terms of Sections 1 and 2 above on a medium customarily used for software -interchange; or,

          -
        4. - -
        5. -

          Accompany it with the information you received as to the offer to distribute -corresponding source code. (This alternative is allowed only for noncommercial -distribution and only if you received the program in object code or executable form with -such an offer, in accord with Subsection b above.)

          -
        6. -
        - -

        The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all the source -code for all modules it contains, plus any associated interface definition files, plus -the scripts used to control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major components (compiler, -kernel, and so on) of the operating system on which the executable runs, unless that -component itself accompanies the executable.

        - -

        If distribution of executable or object code is made by offering access to copy from a -designated place, then offering equivalent access to copy the source code from the same -place counts as distribution of the source code, even though third parties are not -compelled to copy the source along with the object code.

        -
      8. - -
      9. -

        You may not copy, modify, sublicense, or distribute the Program except as expressly -provided under this License. Any attempt otherwise to copy, modify, sublicense or -distribute the Program is void, and will automatically terminate your rights under this -License. However, parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such parties remain in full -compliance.

        -
      10. - -
      11. -

        You are not required to accept this License, since you have not signed it. However, -nothing else grants you permission to modify or distribute the Program or its derivative -works. These actions are prohibited by law if you do not accept this License. Therefore, -by modifying or distributing the Program (or any work based on the Program), you indicate -your acceptance of this License to do so, and all its terms and conditions for copying, -distributing or modifying the Program or works based on it.

        -
      12. - -
      13. -

        Each time you redistribute the Program (or any work based on the Program), the -recipient automatically receives a license from the original licensor to copy, distribute -or modify the Program subject to these terms and conditions. You may not impose any -further restrictions on the recipients' exercise of the rights granted herein. You are -not responsible for enforcing compliance by third parties to this License.

        -
      14. - -
      15. -

        If, as a consequence of a court judgment or allegation of patent infringement or for -any other reason (not limited to patent issues), conditions are imposed on you (whether -by court order, agreement or otherwise) that contradict the conditions of this License, -they do not excuse you from the conditions of this License. If you cannot distribute so -as to satisfy simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not distribute the Program at all. For -example, if a patent license would not permit royalty-free redistribution of the Program -by all those who receive copies directly or indirectly through you, then the only way you -could satisfy both it and this License would be to refrain entirely from distribution of -the Program.

        - -

        If any portion of this section is held invalid or unenforceable under any particular -circumstance, the balance of the section is intended to apply and the section as a whole -is intended to apply in other circumstances.

        - -

        It is not the purpose of this section to induce you to infringe any patents or other -property right claims or to contest validity of any such claims; this section has the -sole purpose of protecting the integrity of the free software distribution system, which -is implemented by public license practices. Many people have made generous contributions -to the wide range of software distributed through that system in reliance on consistent -application of that system; it is up to the author/donor to decide if he or she is -willing to distribute software through any other system and a licensee cannot impose that -choice.

        - -

        This section is intended to make thoroughly clear what is believed to be a consequence -of the rest of this License.

        -
      16. - -
      17. -

        If the distribution and/or use of the Program is restricted in certain countries -either by patents or by copyrighted interfaces, the original copyright holder who places -the Program under this License may add an explicit geographical distribution limitation -excluding those countries, so that distribution is permitted only in or among countries -not thus excluded. In such case, this License incorporates the limitation as if written -in the body of this License.

        -
      18. - -
      19. -

        The Free Software Foundation may publish revised and/or new versions of the General -Public License from time to time. Such new versions will be similar in spirit to the -present version, but may differ in detail to address new problems or concerns.

        - -

        Each version is given a distinguishing version number. If the Program specifies a -version number of this License which applies to it and “any later version”, -you have the option of following the terms and conditions either of that version or of -any later version published by the Free Software Foundation. If the Program does not -specify a version number of this License, you may choose any version ever published by -the Free Software Foundation.

        -
      20. - -
      21. -

        If you wish to incorporate parts of the Program into other free programs whose -distribution conditions are different, write to the author to ask for permission. For -software which is copyrighted by the Free Software Foundation, write to the Free Software -Foundation; we sometimes make exceptions for this. Our decision will be guided by the two -goals of preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally.

        -
      22. - -
      23. -

        NO WARRANTY

        - -

        BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, -TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE -COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE -RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM -PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION.

        -
      24. - -
      25. -

        IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS -PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL -OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM -(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES -SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES.

        -
      26. -
      - -

      END OF TERMS AND CONDITIONS

      -
      - -
      -

      A.3. How to Apply These Terms to -Your New Programs

      - -

      If you develop a new program, and you want it to be of the greatest possible use to -the public, the best way to achieve this is to make it free software which everyone can -redistribute and change under these terms.

      - -

      To do so, attach the following notices to the program. It is safest to attach them to -the start of each source file to most effectively convey the exclusion of warranty; and -each file should have at least the “copyright” line and a pointer to where -the full notice is found.

      - - - - - -
      -
      -<one line to give the program's name and a brief idea of what it does.>
      -   Copyright (C) <year>  <name of author>
      -
      -   This program is free software; you can redistribute it and/or modify
      -   it under the terms of the GNU General Public License as published by
      -   the Free Software Foundation; either version 2 of the License, or
      -   (at your option) any later version.
      -
      -   This program is distributed in the hope that it will be useful,
      -   but WITHOUT ANY WARRANTY; without even the implied warranty of
      -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      -   GNU General Public License for more details.
      -
      -   You should have received a copy of the GNU General Public License
      -   along with this program; if not, write to the Free Software
      -   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA
      -
      -
      - -

      Also add information on how to contact you by electronic and paper mail.

      - -

      If the program is interactive, make it output a short notice like this when it starts -in an interactive mode:

      - - - - - -
      -
      -Gnomovision version 69, Copyright (C) year  name of author
      -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
      -This is free software, and you are welcome to redistribute it
      -under certain conditions; type `show c' for details.
      -
      -
      - -

      The hypothetical commands `show w' and `show c' should show the appropriate parts of -the General Public License. Of course, the commands you use may be called something other -than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits -your program.

      - -

      You should also get your employer (if you work as a programmer) or your school, if -any, to sign a “copyright disclaimer” for the program, if necessary. Here is -a sample; alter the names:

      - - - - - -
      -
      -  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
      -  `Gnomovision' (which makes passes at compilers) written by James Hacker.
      -
      -  <signature of Ty Coon>, 1 April 1989
      -  Ty Coon, President of Vice
      -
      -
      - -

      This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider it more -useful to permit linking proprietary applications with the library. If this is what you -want to do, use the GNU Library General Public License instead of this License.

      -
      -
      - - - - - diff --git a/slackbook/html/help-online.html b/slackbook/html/help-online.html deleted file mode 100644 index fdd253881..000000000 --- a/slackbook/html/help-online.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - -Online Help - - - - - - - - - - - -
      -

      2.2 Online Help

      - -

      In addition to the documentation provided and installable with the Slackware Linux -Operating System, there are a vast multitude of online resources available for you to -learn from as well.

      - -
      -

      2.2.1 The -Official Website and Help Forums

      - -

      The Official Slackware -Website

      - -

      The Official Slackware Linux website is sometimes out of date, but still contains -information relevant to the latest Slackware versions. At one time an active help forum -existed there before a horde of trolls, troublemakers, and whiners descended on the -forum. Maintaining the forum was beginning to be too much work, and so Pat shut it down. -One can find that old forum back up and running complete with searchable archives of the -old data at http://www.userlocal.com/phorum/.

      - -

      After the forums were taken down on http://slackware.com, several other sites sprang up that offered forum -support for Slackware. After much thought, Pat chose to endorse www.linuxquestions.org as the official -forum for Slackware Linux.

      -
      - -
      -

      2.2.2 E-mail -Support

      - -

      Everyone who purchases an official CD set is entitled to free installation support via -e-mail from the developer. That having been said, please keep in mind that we, the -developers, (and a vast majority of users) of Slackware are of “The Old -School”. That means that we prefer to help those who have a sincere interest and -are willing to help themselves in the process. We will always do our best to help -everyone who emails us with support questions. However, Please check your documentation -and the website (especially the FAQs and maybe some of the forums listed below) before -e-mailing. You may get a faster answer that way, and the less e-mail we have to answer, -obviously the sooner we will be of assistance to those that need it.

      - -

      The e-mail address for technical support is: support@slackware.com. Other e-mail addresses and contact -information are listed on the website.

      - -
      -

      2.2.2.1 Slackware Linux Project Mailing -Lists

      - -

      We have several mailing lists, available in digest and normal forms. Check the -instructions for how to subscribe.

      - -

      To subscribe to a mailing list, email:

      - -

      majordomo@slackware.com

      - -

      with the phrase “subscribe [name -of list]” in the body of the email. The list choices are described -below (use one the names below for the name of the list).

      - -

      Archives of the mailing list can be found on Slackware's website at:

      - -

      http://slackware.com/lists/archive/

      - -
      -
      -
      slackware-announce
      - -
      -

      The slackware-announce mailing list is for announcements of -new versions, major updates and other general information.

      -
      - -
      slackware-security
      - -
      -

      The slackware-security mailing list is for announcements -relating to security issues. Any exploits or other vulnerabilities directly pertaining to -Slackware will get posted to this list immediately.

      -
      -
      -
      - -

      These lists are also available in digest format. This means that you get one large -message per day instead of several messages throughout the day. Since the slackware -mailing lists do not allow users to post, and the lists are such low traffic, most users -find little advantage in the digest lists. Still, they are available if you want them by -subscribing to slackware-announce-digest or slackware-security-digest.

      -
      -
      - -
      -

      2.2.3 -Non-Official Websites and Help Forums

      - -
      -

      2.2.3.1 Websites

      - -
      -
      -
      Google
      - -
      -

      The Kung-Fu Master of Search Engines. When you absolutely, positively gotta find every -last kernel of information on a subject: Accept no substitutes.

      -
      - -
      Google:Linux
      - -
      -

      Linux-Specific searches

      -
      - -
      Google:BSD
      - -
      -

      BSD-Specific searches. Slackware is so generic as a Unix work-a-like operating system -that one can as often as not find very detailed information that is almost 100% relevant -to Slackware here. Many times a BSD search reveals far more technical information than -the often PR-related Linux searches.

      -
      - -
      Google:Groups
      - -
      -

      Search through decades of Usenet posts for your pearls of wisdom.

      -
      - -
      http://userlocal.com
      - -
      -

      A virtual treasure-trove of knowledge, good advice, first-hand experience and -interesting articles. Often the first place you'll hear about new developments in the -world of Slackware.

      -
      -
      -
      -
      - -
      -

      2.2.3.2 Web-based Resources

      - -
      -
      -
      linuxquestions.org
      - -
      -

      The officially sanctioned web-forum for Slackware users.

      -
      - -
      LinuxISO.org -Slackware Forum
      - -
      -

      “A place to download and get help with Linux.”

      -
      - -
      alt.os.linux.slackware FAQ
      - -
      -

      Another FAQ

      -
      -
      -
      -
      - -
      -

      2.2.3.3 Usenet Groups (NNTP)

      - -

      Usenet has long been a place for geeks to gather and help one another. There are few -newsgroups dedicated to Slackware Linux, but they tend to be filled with very -knowledgeable people.

      - -

      alt.os.linux.slackware

      - -

      alt.os.linux.slackware, better known as aols (not to be -confused with AOL®!) is one of the most active places -to find technical help with Slackware problems. Like every Usenet newsgroup, a few -unhelpful participants (“trolls”) can mar the experience with constant -arguing. Learning to ignore the trolls and identifying the truly helpful people is key to -making the most of this resource.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/help.html b/slackbook/html/help.html deleted file mode 100644 index 691282f6e..000000000 --- a/slackbook/html/help.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - -Help - - - - - - - - - - -
      -

      Chapter 2 Help

      - -
      -
      -
      Table of Contents
      - -
      2.1 System Help
      - -
      2.2 Online Help
      -
      -
      - -

      Often there are times when you might need help with a specific command, setting up a -program, or getting a piece of hardware to work. Maybe you simply want to understand a -given command better, or see what other options are available to use with it. Luckily, -there are a variety of ways that you can get the help you're looking for. When you -install Slackware you have the option of installing packages from the “F” -series which includes FAQs and HOWTOs. Programs also come with help about their options, -configuration files, and usage.

      - -
      -

      2.1 System Help

      - -
      -

      2.1.1 man

      - -

      The man command (short for “manual”) is the -traditional form of online documentation in Unix and Linux operating systems. Comprised -of specially formatted files, the “man pages”, are written for the vast -majority of commands and are distributed with the software itself. Executing man somecommand will display the man page for (naturally) the -command specified, in our example this would be the imaginary program somecommand.

      - -

      As you might imagine, the amount of man pages can quickly add up, becoming overly -confusing and seriously complicated, even for an advanced user. So, for this reason, man -pages are grouped into enumerated sections. This system has been around for a very long -time; enough so that you will often see commands, programs, and even programming library -functions referred to with their man section number.

      - -

      For example:

      - -

      You might see a reference to man(1). The numbering tells you -that “man” is documented in section 1 (user -commands); you can specify that you want the section 1 man page for “man” -with the command man 1 man. Specifying the section that man -should look in is useful in the case of multiple items with the same name.

      - -
      -

      Table 2-1. Man Page Sections

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      SectionContents
      Section 1user commands (intro only)
      Section 2system calls
      Section 3C library calls
      Section 4devices (e.g., hd, sd)
      Section 5file formats and protocols (e.g., wtmp, /etc/passwd, -nfs)
      Section 6games (intro only)
      Section 7conventions, macro packages, etc. (e.g., nroff, ascii)
      Section 8system administration (intro only)
      -
      - -

      In addition to man(1), there are the commands whatis(1) and apropos(1) available to you, -whose shared purpose is to make it easier to find information in the man system.

      - -

      The command whatis gives a very brief description of system -commands, somewhat in the style of a pocket command reference.

      - -

      Example:

      - - - - - -
      -
      -% whatis whatis
      -whatis (1)  - search the whatis database for complete words
      -
      -
      - -

      The command apropos is used to search for a man page -containing a given keyword.

      - -

      Example:

      - - - - - -
      -
      -% apropos wav
      -cdda2wav    (1)  - a sampling utility that dumps CD audio data into wav sound files
      -netwave_cs  (4)  - Xircom Creditcard Netwave device driver
      -oggdec      (1)  - simple decoder, Ogg Vorbis file to PCM audio file (WAV or RAW)
      -wavelan     (4)  - AT&T GIS WaveLAN ISA device driver
      -wavelan_cs  (4)  - AT&T GIS WaveLAN PCMCIA device driver
      -wvlan_cs    (4)  - Lucent WaveLAN/IEEE 802.11 device driver
      -
      -
      - -

      If you'd like further information on any of these commands, read their man pages for -the details. ;)

      -
      - -
      -

      2.1.2 The /usr/doc Directory

      - -

      The source for most packages that we build comes with some sort of documentation: -README files, usage instructions, license files, etc. Any sort of documentation that -comes with the source is included and installed on your system in the /usr/doc directory. Each program will (usually) install its own -documentation in the order of:

      - -

      /usr/doc/$program-$version

      - -

      Where $program is the name of the program you are -wanting to read about, and $version is (obviously) the -appropriate version of software package installed on your system.

      - -

      For example, to read the documentation for the command man(1) -you would want to cd to:

      - - - - - -
      -
      -% cd /usr/doc/man-$version
      -
      -
      - -

      If reading the appropriate man page(s) doesn't provide you with enough information, or -address what you're looking for in particular, the /usr/doc -directory should be your next stop.

      -
      - -
      -

      2.1.3 HOWTOs and -mini-HOWTOs

      - -

      It is in the truest spirit of the Open Source community that brings us to the -HOWTO/mini-HOWTO collection. These files are exactly what they sound like - documents and -guides describing how to do stuff. If you installed the HOWTO collection, the HOWTOs will -be installed to /usr/doc/Linux-HOWTOs and the mini-HOWTOs to -/usr/doc/Linux-mini-HOWTOs.

      - -

      Also included in the same package series is a collection of FAQs, which is an acronym -which stands for

      - -
      - -- - - - - - - - - - - - - -
      Frequently
      Asked
      Questions
      -
      - -

      These documents are written in a “Question and answer” style for -(surprise) Frequently Asked Questions. The FAQs can often be a very useful place to look -if you're just looking for a “Quick Fix” to something. If you decide to -install the FAQs during setup, you will find them installed to the /usr/doc/Linux-FAQs directory.

      - -

      These files are well worth reading whenever you're not quite sure how to proceed with -something. They cover an amazing range of topics, more often than not in a surprisingly -detailed manner. Good stuff!

      -
      -
      -
      - - - - - diff --git a/slackbook/html/imagelib/admon/note.png b/slackbook/html/imagelib/admon/note.png deleted file mode 100644 index b0ee5555b28501a0d11804cb50c9a468940d1221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmV-Y0j>UtP) zXOlE-rOAxr=Wk2jF5?WJasHKKAOxcP^bJI-)IB1+0r~ z0{7pa+X`Wp7LH;&kX6kHBQnR>6jpr-7O>Q#a^C<}ig>JD+j>;)R0j7k82XU9+)oQg z%jh)SU2hAX?bUkB&Zp1jnP=xB(~?g9WSXdAasU7T07*qoM6N<$g5#iyCjbBd diff --git a/slackbook/html/imagelib/admon/warning.png b/slackbook/html/imagelib/admon/warning.png deleted file mode 100644 index bc0adf33f224e4cd1f4756a537e67c16c5b82643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1090 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&ZP5fk6N)r^vvd$-rR9 zz~IEd;KjfI)DgwNkj=nQ%)n61z|g|L(8Itm1&FGv=L7}KiHe$2UA>fnVX39%QZKKi zEiFr@Oj){g=~@PcwT6akr%c((z_3+Qb8An});V*wE?v5H>(;#t413qE-Me+`F$RWX z0s_Y*B#s?Bc8-DJoPfYN35j!>n%5W@t^vtw*X}Ve+`D)0IRnFUMaAdOpTB2dc+bJ{ z{{8#!3=H4DfB(|$KIu~e4ThOm1|+ifd?6KA0mItyyc1CdVZnvoeJ4snL@v1 zpS!+%|50ccpW!^_ - - - -Slackware Linux Essentials - - - - - - -
      -
      -

      Slackware Linux Essentials

      - -

      - -

      Alan Hicks

      - -

      Chris Lumens

      - -

      David Cantrell

      - -

      Logan Johnson

      - - - -1-57176-338-4
      -
      - - -
      -
      - -
      -
      -
      Table of Contents
      - -
      Preface
      - -
      1 An Introduction to Slackware Linux
      - -
      -
      -
      1.1 What is Linux?
      - -
      -
      -
      1.1.1 A Word on GNU
      -
      -
      - -
      1.2 What is Slackware?
      - -
      1.3 Open Source and Free Software
      -
      -
      - -
      2 Help
      - -
      -
      -
      2.1 System Help
      - -
      -
      -
      2.1.1 man
      - -
      2.1.2 The /usr/doc -Directory
      - -
      2.1.3 HOWTOs and mini-HOWTOs
      -
      -
      - -
      2.2 Online Help
      - -
      -
      -
      2.2.1 The Official Website and Help -Forums
      - -
      2.2.2 E-mail Support
      - -
      2.2.3 Non-Official Websites and -Help Forums
      -
      -
      -
      -
      - -
      3 Installation
      - -
      -
      -
      3.1 Getting Slackware
      - -
      -
      -
      3.1.1 The Official Disc and Box Sets
      - -
      3.1.2 Via the Internet
      -
      -
      - -
      3.2 System Requirements
      - -
      -
      -
      3.2.1 The -Software Series
      - -
      3.2.2 Installation -Methods
      - -
      3.2.3 Boot -Disk
      - -
      3.2.4 Root -Disk
      - -
      3.2.5 Supplemental -Disk
      - -
      3.2.6 Making -the Disks
      -
      -
      - -
      3.3 Partitioning
      - -
      3.4 The setup -Program
      - -
      -
      -
      3.4.1 HELP
      - -
      3.4.2 KEYMAP
      - -
      3.4.3 ADDSWAP
      - -
      3.4.4 TARGET
      - -
      3.4.5 SOURCE
      - -
      3.4.6 SELECT
      - -
      3.4.7 INSTALL
      - -
      3.4.8 CONFIGURE
      -
      -
      -
      -
      - -
      4 System Configuration
      - -
      -
      -
      4.1 System -Overview
      - -
      -
      -
      4.1.1 File System -Layout
      - -
      4.1.2 Finding -Files
      - -
      4.1.3 The /etc/rc.d Directory
      -
      -
      - -
      4.2 Selecting a Kernel
      - -
      -
      -
      4.2.1 The /kernels Directory on the Slackware CD-ROM
      - -
      4.2.2 Compiling a -Kernel from Source
      - -
      4.2.3 Using Kernel -Modules
      -
      -
      -
      -
      - -
      5 Network Configuration
      - -
      -
      -
      5.1 Introduction: netconfig -is your friend.
      - -
      5.2 Network Hardware -Configuration
      - -
      -
      -
      5.2.1 Loading -Network Modules
      - -
      5.2.2 LAN -(10/100/1000Base-T and Base-2) cards
      - -
      5.2.3 Modems
      - -
      5.2.4 PCMCIA
      -
      -
      - -
      5.3 TCP/IP Configuration
      - -
      -
      -
      5.3.1 DHCP
      - -
      5.3.2 Static -IP
      - -
      5.3.3 /etc/rc.d/rc.inet1.conf
      - -
      5.3.4 /etc/resolv.conf
      - -
      5.3.5 /etc/hosts
      -
      -
      - -
      5.4 PPP
      - -
      -
      -
      5.4.1 pppsetup
      - -
      5.4.2 /etc/ppp
      -
      -
      - -
      5.5 Wireless
      - -
      -
      -
      5.5.1 Hardware Support
      - -
      5.5.2 Configure the Wireless -Settings
      - -
      5.5.3 Configure the -Network
      -
      -
      - -
      5.6 Network File Systems
      - -
      -
      -
      5.6.1 SMB/Samba/CIFS
      - -
      5.6.2 Network -File System (NFS)
      -
      -
      -
      -
      - -
      6 X Configuration
      - -
      -
      -
      6.1 xorgconfig
      - -
      6.2 xorgsetup
      - -
      6.3 xinitrc
      - -
      6.4 xwmconfig
      - -
      6.5 xdm
      -
      -
      - -
      7 Booting
      - -
      -
      -
      7.1 LILO
      - -
      7.2 LOADLIN
      - -
      7.3 Dual Booting
      - -
      -
      -
      7.3.1 Windows
      - -
      7.3.2 Linux
      -
      -
      -
      -
      - -
      8 The Shell
      - -
      -
      -
      8.1 Users
      - -
      -
      -
      8.1.1 Logging In
      - -
      8.1.2 Root: The Superuser
      -
      -
      - -
      8.2 The Command Line
      - -
      -
      -
      8.2.1 Running -Programs
      - -
      8.2.2 Wildcard -Matching
      - -
      8.2.3 Input/Output -Redirection and Piping
      -
      -
      - -
      8.3 The Bourne Again Shell (bash)
      - -
      -
      -
      8.3.1 Environment Variables
      - -
      8.3.2 Tab Completion
      -
      -
      - -
      8.4 Virtual Terminals
      - -
      -
      -
      8.4.1 Screen
      -
      -
      -
      -
      - -
      9 Filesystem Structure
      - -
      -
      -
      9.1 Ownership
      - -
      9.2 Permissions
      - -
      9.3 Links
      - -
      9.4 Mounting Devices
      - -
      -
      -
      9.4.1 fstab
      - -
      9.4.2 mount and umount
      -
      -
      - -
      9.5 NFS Mounts
      -
      -
      - -
      10 Handling Files and Directories
      - -
      -
      -
      10.1 Navigation : ls, cd, and pwd
      - -
      -
      -
      10.1.1 ls
      - -
      10.1.2 cd
      - -
      10.1.3 pwd
      -
      -
      - -
      10.2 Pagers: more, less, and most
      - -
      -
      -
      10.2.1 more
      - -
      10.2.2 less
      - -
      10.2.3 most
      -
      -
      - -
      10.3 Simple Output: cat -and echo
      - -
      -
      -
      10.3.1 cat
      - -
      10.3.2 echo
      -
      -
      - -
      10.4 Creation: touch -and mkdir
      - -
      -
      -
      10.4.1 touch
      - -
      10.4.2 mkdir
      -
      -
      - -
      10.5 Copy and Move
      - -
      -
      -
      10.5.1 cp
      - -
      10.5.2 mv
      -
      -
      - -
      10.6 Deletion: rm and -rmdir
      - -
      -
      -
      10.6.1 rm
      - -
      10.6.2 rmdir
      -
      -
      - -
      10.7 Aliasing files with ln
      -
      -
      - -
      11 Process Control
      - -
      -
      -
      11.1 Backgrounding
      - -
      11.2 Foregrounding
      - -
      11.3 ps
      - -
      11.4 kill
      - -
      11.5 top
      -
      -
      - -
      12 Essential System Administration
      - -
      -
      -
      12.1 Users and -Groups
      - -
      -
      -
      12.1.1 Supplied -Scripts
      - -
      12.1.2 Changing -Passwords
      - -
      12.1.3 Changing -User Information
      -
      -
      - -
      12.2 Users and Groups, the Hard -Way
      - -
      12.3 Shutting Down Properly
      -
      -
      - -
      13 Basic Network Commands
      - -
      -
      -
      13.1 ping
      - -
      13.2 traceroute
      - -
      13.3 DNS Tools
      - -
      -
      -
      13.3.1 host
      - -
      13.3.2 nslookup
      - -
      13.3.3 dig
      -
      -
      - -
      13.4 finger
      - -
      13.5 telnet
      - -
      -
      -
      13.5.1 The other use of -telnet
      -
      -
      - -
      13.6 The Secure shell
      - -
      13.7 email
      - -
      -
      -
      13.7.1 pine
      - -
      13.7.2 elm
      - -
      13.7.3 mutt
      - -
      13.7.4 nail
      -
      -
      - -
      13.8 Browsers
      - -
      -
      -
      13.8.1 lynx
      - -
      13.8.2 links
      - -
      13.8.3 wget
      -
      -
      - -
      13.9 FTP Clients
      - -
      -
      -
      13.9.1 ftp
      - -
      13.9.2 ncftp
      -
      -
      - -
      13.10 Talking to Other People
      - -
      -
      -
      13.10.1 wall
      - -
      13.10.2 talk
      - -
      13.10.3 ytalk
      -
      -
      -
      -
      - -
      14 Security
      - -
      -
      -
      14.1 Disabling Services
      - -
      -
      -
      14.1.1 Services started from inetd
      - -
      14.1.2 Services started from init scripts
      -
      -
      - -
      14.2 Host Access Control
      - -
      -
      -
      14.2.1 iptables
      - -
      14.2.2 tcpwrappers
      -
      -
      - -
      14.3 Keeping Current
      - -
      -
      -
      14.3.1 slackware-security mailing list
      - -
      14.3.2 The /patches directory
      -
      -
      -
      -
      - -
      15 Archive Files
      - -
      -
      -
      15.1 gzip
      - -
      15.2 bzip2
      - -
      15.3 tar
      - -
      15.4 zip
      -
      -
      - -
      16 Vi
      - -
      -
      -
      16.1 Starting vi
      - -
      16.2 Modes
      - -
      -
      -
      16.2.1 Command Mode
      - -
      16.2.2 Insert Mode
      -
      -
      - -
      16.3 Opening Files
      - -
      16.4 Saving Files
      - -
      16.5 Quitting vi
      - -
      16.6 vi Configuration
      - -
      16.7 Vi Keys
      -
      -
      - -
      17 Emacs
      - -
      -
      -
      17.1 Starting emacs
      - -
      -
      -
      17.1.1 Command Keys
      -
      -
      - -
      17.2 Buffers
      - -
      17.3 Modes
      - -
      -
      -
      17.3.1 Opening files
      -
      -
      - -
      17.4 Basic Editing
      - -
      17.5 Saving Files
      - -
      -
      -
      17.5.1 Quitting Emacs
      -
      -
      -
      -
      - -
      18 Slackware Package Management
      - -
      -
      -
      18.1 Overview of -Package Format
      - -
      18.2 Package Utilities
      - -
      -
      -
      18.2.1 -pkgtool
      - -
      18.2.2 -installpkg
      - -
      18.2.3 -removepkg
      - -
      18.2.4 -upgradepkg
      - -
      18.2.5 -rpm2tgz/rpm2targz
      -
      -
      - -
      18.3 Making Packages
      - -
      -
      -
      18.3.1 explodepkg
      - -
      18.3.2 makepkg
      - -
      18.3.3 SlackBuild -Scripts
      -
      -
      - -
      18.4 Making Tags and -Tagfiles (for setup)
      -
      -
      - -
      19 ZipSlack
      - -
      -
      -
      19.1 What is ZipSlack?
      - -
      -
      -
      19.1.1 Advantages
      - -
      19.1.2 Disadvantages
      -
      -
      - -
      19.2 Getting ZipSlack
      - -
      -
      -
      19.2.1 Installation
      -
      -
      - -
      19.3 Booting ZipSlack
      -
      -
      - -
      Glossary
      - -
      A. The GNU General Public License
      - -
      -
      -
      A.1. Preamble
      - -
      A.2. TERMS AND CONDITIONS
      - -
      A.3. How to Apply These Terms to Your New -Programs
      -
      -
      -
      -
      - - - - - -
      -
      -
      List of Examples
      - -
      8-1. Listing Environment -Variables with set
      -
      -
      -
      - - - - - diff --git a/slackbook/html/installation-partitioning.html b/slackbook/html/installation-partitioning.html deleted file mode 100644 index 3d3821e5e..000000000 --- a/slackbook/html/installation-partitioning.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - -Partitioning - - - - - - - - - - - -
      -

      3.3 -Partitioning

      - -

      After booting from your preferred media, you will need to partition your hard disk. -The disk partition is where the Linux filesystem will be created and is where Slackware -will be installed. At the very minimum we recommend creating two partitions; one for your -root filesystem (/) and one for swap space.

      - -

      After the root disk finishes loading, it will present you with a login prompt. Log in -as root (there is no password). At the shell prompt, run either cfdisk(8) or fdisk(8). The cfdisk program provides a more user-friendly interface than the -regular fdisk program, but does lack some features. We will -briefly explain the fdisk program below.

      - -

      Begin by running fdisk for your hard disk. In Linux, the hard -disks do not have drive letters, but are represented by a file. The first IDE hard disk -(primary master) is /dev/hda, the primary slave is /dev/hdb, and so on. SCSI disks follow the same type system, but -are in the form of /dev/sdX. You -will need to start fdisk and pass it your hard disk:

      - - - - - -
      -
      -# fdisk /dev/hda
      -
      -
      - -

      Like all good Unix programs, fdisk gives you a prompt -(thought you were getting a menu, right?). The first thing you should do is examine your -current partitions. We do that by typing p at the fdisk prompt:

      - - - - - -
      -
      -Command (m for help): p
      -
      -
      - -

      This will display all sorts of information about your current partitions. Most people -pick a free drive to install to and then remove any existing partitions on it to create -room for the Linux partitions.

      - -
      - - - - - -
      Warning -

      IT IS VERY IMPORTANT THAT YOU BACK UP ANY INFORMATION YOU WANT TO SAVE BEFORE -DESTROYING THE PARTITION IT LIVES ON.

      -
      -
      - -

      There is no easy way to recover from deleting a partition, so always back up before -playing with them.

      - -

      Looking at the table of partition information you should see a partition number, the -size of the partition, and its type. There's more information, but don't worry about that -for now. We are going to delete all of the partitions on this drive to create the Linux -ones. We run the d command to delete those:

      - - - - - -
      -
      -Command (m for help): d
      -Partition number (1-4): 1
      -
      -
      - -

      This process should be continued for each of the partitions. After deleting the -partitions we are ready to create the Linux ones. We have decided to create one partition -for our root filesystem and one for swap. It is worth noting that Unix partitioning -schemes are the subject of many flame wars, and that most users will tell you the best -way to do it. At a minimum, you should create one partition for / and one for swap. Over time, you'll develop a method that works -well for you.

      - -

      I use two basic partition schemes. The first is for a desktop. I make 4 partitions, -/, /home, /usr/local, and swap. This lets me re-install or upgrade the entire -installation under / without wiping out my data files under -/home or my custom compiled applications under /usr/local. For -servers, I often replace the /usr/local partition with a /var partition. Many different servers store information on that -partition and having it kept separate from / has certain -performance benefits. For now, we're sticking with just two partitions: / and swap.

      - -

      Now we create the partitions with the n command:

      - - - - - -
      -
      -Command (m for help): n
      -Command action
      -   e   extended
      -   p   primary partition (1-4)
      -p
      -Partition number (1-4):1
      -First cylinder (0-1060, default 0):0
      - Last cylinder or +size or +sizeM or +sizeK (0-1060, default 1060):+64M
      -
      -
      - -

      You need to make sure you create primary partitions. The first partition is going to -be our swap partition. We tell fdisk to make partition number 1 a primary partition. We -start it at cylinder 0 and for the ending cylinder we type +64M. This will give us a 64 -megabyte partition for swap. (The size of the swap partition you need actually depends on -the amount of RAM you have. It is conventional wisdom that a swap space double the size -of your RAM should be created.) Then we define primary partition number 2 starting at the -first available cylinder and going all the way to the end of the drive.

      - - - - - -
      -
      -Command (m for help):n
      -Command action
      -   e   extended
      -   p   primary partition (1-4)
      -p
      -Partition number (1-4):2
      -First cylinder (124-1060, default 124):124
      -Last cylinder or +size or +sizeM or +sizeK (124-1060, default 1060):1060
      -
      -
      - -

      We are almost done. We need to change the type of the first partition to type 82 -(Linux swap). Type t to change the type, select the first -partition, and type 82. Before writing your changes to the -disk, you should look at the new partition table one last time. Use the p in fdisk to display the partition -table. If everything looks good, type w to write your -changes to the disk and quit fdisk.

      -
      - - - - - diff --git a/slackbook/html/installation-requirements.html b/slackbook/html/installation-requirements.html deleted file mode 100644 index e0e53dbf5..000000000 --- a/slackbook/html/installation-requirements.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - -System Requirements - - - - - - - - - - - -
      -

      3.2 -System Requirements

      - -

      An easy Slackware installation requires, at minimum, the following:

      - -
      -

      Table 3-2. System Requirements

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      HardwareRequirement
      Processor586
      RAM32 MB
      Disk Space1GB
      Media Drive4x CD-ROM
      -
      - -

      If you have the bootable CD, you will probably not need a floppy drive. Of course, it -stands to reason that if you don't possess a CD-ROM drive, you will need a floppy drive -to do a network install. A network card is required for an NFS install. See the section -called NFS for more information.

      - -

      The disk space requirement is somewhat tricky. The 1GB recommendation is usually safe -for a minimal install, but if you do a full install, you will need around two gigabytes -of available hard disk space plus additional space for personal files.. Most users don't -do a full install. In fact, many run Slackware on as little as 100MB of hard disk -space.

      - -

      Slackware can be installed to systems with less RAM, smaller hard drives, and weaker -CPUs, but doing so will require a little elbow grease. If you're up for a little work, -take a look at the LOWMEM.TXT file in the distribution tree for -a few helpful hints.

      - -
      -

      3.2.1 The Software Series

      - -

      For reasons of simplicity, Slackware has historically been divided into software -series. Once called “disk sets” because they were designed for floppy-based -installation, the software series are now used primarily to categorize the packages -included in Slackware. Today, floppy installation is no longer possible.

      - -

      The following is a brief description of each software series.

      - -
      -

      Table 3-3. Software Series

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      SeriesContents
      AThe base system. Contains enough software to get up and running and have a text -editor and basic communication program.
      APVarious applications that do not require the X Window System.
      DProgram development tools. Compilers, debuggers, interpreters, and man pages are all -here.
      EGNU Emacs.
      FFAQs, HOWTOs, and other miscellaneous documentation.
      GNOMEThe GNOME desktop environment.
      KThe source code for the Linux kernel.
      KDEThe K Desktop Environment. An X environment which shares a lot of look-and-feel -features with MacOS and Windows. The Qt library, which KDE requires, is also in this -series.
      KDEIInternationalization packages for the KDE desktop.
      LLibraries. Dynamically linked libraries required by many other programs.
      NNetworking programs. Daemons, mail programs, telnet, news readers, and so on.
      TteTeX document formatting system.
      TCLThe Tool Command Language. Tk, TclX, and TkDesk.
      XThe base X Window System.
      XAPX Applications that are not part of a major desktop environment (for example, -Ghostscript and Netscape).
      YBSD Console games
      -
      -
      - -
      -

      3.2.2 -Installation Methods

      - -
      -

      3.2.2.1 Floppy

      - -

      While it was once possible to install all of Slackware Linux from floppy disks, the -increasing size of software packages (indeed, of some individual programs) has forced the -abandonment of the floppy install. As late as Slackware version 7.1 a partial install was -possible using floppy disks. The A and N series could be nearly entirely installed, -providing a base system from which to install the rest of the distribution. If you are -considering a floppy install (typically on older hardware), it is typically recommended -to find another way, or use an older release. Slackware 4.0 is still very popular for -this reason, as is 7.0.

      - -

      Please note that floppy disks are still required for a CD-ROM install if you do not -have a bootable CD, as well as for an NFS install.

      -
      - -
      -

      3.2.2.2 CD-ROM

      - -

      If you have the bootable CD, available in the official disc set published by Slackware -Linux, Inc. (see the section called Getting Slackware), a CD-based installation will be a -bit simpler for you. If not, you will need to boot from floppies. Also, if you have -special hardware that makes usage of the kernel on the bootable CD problematic, you may -need to use specialized floppies.

      - -

      As of Slackware version 8.1, a new method is used for creating the bootable CDs, which -does not work as well with certain flaky BIOS chips (it is worth noting that most all -Linux CDs suffer from this these days). If that is the case, we recommend booting from a -floppy disk.

      - -

      Section -3.2.3 and Section 3.2.5 -provide information on choosing and creating floppies from which to boot, should this be -necessary.

      -
      - -
      -

      3.2.2.3 NFS

      - -

      NFS (the Network File System) is a way of making filesystems available to remote -machines. An NFS install allows you to install Slackware from another computer on your -network. The machine from which you are installing needs to be configured to export the -Slackware distribution tree to the machine to which you're installing. This, of course, -involves some knowledge of NFS, which is covered in Section 5.6.

      - -

      It is possible to perform an NFS install via such methods as PLIP (over a parallel -port), SLIP, and PPP (though not over a modem connection). However, we recommend the use -of a network card if available. After all, installing an operating system through your -printer port is going to be a very, very slow process.

      -
      -
      - -
      -

      3.2.3 Boot Disk

      - -

      The boot disk is the floppy you actually boot from to begin the installation. It -contains a compressed kernel image which is used to control the hardware during -installation. Therefore, it is very much required (unless you're booting from CD, as is -discussed in the section called CD-ROM). The boot disks are located in the bootdisks/ directory in the distribution tree.

      - -

      There are more Slackware boot disks than you can shake a stick at (which is to say -about 16). A complete list of boot disks, with a description of each, is available in the -Slackware distribution tree in the file bootdisks/README.TXT. -However, most people are able to use the bare.i (for IDE -devices) or scsi.s (for SCSI devices) boot disk image.

      - -

      See Section -3.2.6 for instructions on making a disk from an image.

      - -

      After booting, you will be prompted to insert the root disk. We recommend that you -just humor the boot disk and play along.

      -
      - -
      -

      3.2.4 Root Disk

      - -

      The root disks contain the setup program and a filesystem which is used during -installation. They are also required. The root disk images are located in the directory -rootdisks in the distribution tree. You'll have to make two root disks from the install.1 and install.2 images. Here you -can also find the network.dsk, pcmcia.dsk, rescue.dsk, and sbootmgr.dsk disks.

      -
      - -
      -

      3.2.5 Supplemental Disk

      - -

      A supplemental disk is needed if you are performing an NFS install or installing to a -system with PCMCIA devices. Supplemental disks are in the rootdsks directory in the -distribution tree, with the filenames network.dsk and pcmcia.dsk. Recently other supplemental disks such as rescue.dsk and sbootmgr.dsk have been -added. The rescue disk is a small floppy root image that runs in a 4MB RAM drive. It -includes some basic networking utilities and the vi editor for quick fixes on busted -machines. The sbootmgr.dsk disk is used to boot other devices. -Boot off this disk if your bootable CD-ROM drive doesn't want to boot the Slackware CDs. -It will prompt you for different things to boot and may offer a convenient way to work -around a buggy BIOS.

      - -

      The root disk will instruct you on the use of supplemental disks when it is -loaded.

      -
      - -
      -

      3.2.6 Making the Disks

      - -

      Once you've selected a boot disk image, you need to put it on a floppy. The process is -slightly different depending on which operating system you're using to make the disks. If -you're running Linux (or pretty much any Unix-like OS) you'll need to use the dd(1) command. Assuming bare.i is your -disk image file and your floppy drive is /dev/fd0, the command -to make a bare.i floppy is:

      - - - - - -
      -
      -% dd if=bare.i of=/dev/fd0
      -
      -
      - -

      If you're running a Microsoft OS, you'll need to use the RAWRITE.EXE program, which is included in the distribution tree in -the same directories as the floppy images. Again assuming that bare.i is your disk image file and your floppy drive is A:, open a DOS prompt and type the following:

      - - - - - -
      -
      -C:\ rawrite a: bare.i
      -
      -
      -
      -
      - - - - - diff --git a/slackbook/html/installation-setup.html b/slackbook/html/installation-setup.html deleted file mode 100644 index 68b06ce10..000000000 --- a/slackbook/html/installation-setup.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - -The setup Program - - - - - - - - - - - -
      -

      3.4 The setup Program

      - -

      Once you have created your partitions, you are ready to install Slackware. The next -step in the installation process is running the setup(8) -program. To do so, simply type setup at the shell prompt. setup is a menu-driven system for actually installing the Slackware -packages and configuring your system.

      - -
      -

      -
      - -

      The setup process goes something like this: You step through each option in the setup program, in the order they are listed. (Of course, you are -free to do things in almost any order you choose, but chances are it isn't going to work -out very well.) Menu items are selected using the up and down arrow keys, and the -“Okay” and “Cancel” buttons can be chosen by using the left and -right arrow keys. Alternatively, each option has a corresponding key, which is -highlighted in the option name. Options which are flaggable (those indicated with a [X]) are toggled using the spacebar.

      - -

      Of course, all of that is described in the “help” section of setup, but we believe in giving our readers their money's worth.

      - -
      -

      3.4.1 HELP

      - -

      If this is your first time installing Slackware, you might want to take a look at the -help screen. It will give a description of each part of setup -(much like the one we're writing now, but less involved) and instructions for navigating -the rest of the install.

      - -
      -

      -
      -
      - -
      -

      3.4.2 KEYMAP

      - -

      If you require a keymap other than the United States “qwerty” layout, you -may want to take a look at this section. It offers a number of alternate layouts for your -keyboarding enjoyment.

      - -
      -

      -
      -
      - -
      -

      3.4.3 ADDSWAP

      - -
      -

      -
      - -

      If you created a swap partition (back in Section 3.3), this section will allow you to -enable it. It will autodetect and display the swap partitions on your hard drive, -allowing you to select one to format and enable.

      -
      - -
      -

      3.4.4 TARGET

      - -
      -

      -
      - -

      The target section is where your other (non-swap) partitions are formatted and mapped -to filesystem mount points. A list of the partitions on your hard disk will be displayed. -For each partition, you will be given the option of whether to format that partition or -not. Depending on the kernel used, you can choose between reiserfs (the default), ext3, -ext2, jfs, and xfs. Most people use either reiserfs or ext3. In the near future we may -see support for reiserfs4 slip in.

      - -

      The first option in the target section is the selection of a partition on which to -install your root (/) filesystem. After that, you will be able -to map other partitions to filesystems as you choose. (For instance, you may want your -third partition, say /dev/hda3, to be your home filesystem. -This is just an example; map the partitions as you see fit.)

      -
      - -
      -

      3.4.5 SOURCE

      - -

      The source section is where you select the source media from which you are installing -Slackware. Currently there are four sources to choose from. These are CD-ROM, NFS, or a -premounted directory.

      - -
      -

      -
      - -

      The CD-ROM selection enables a CD-ROM based installation. It will offer the option of -scanning for a CD-ROM drive or displaying a list from which you can pick your drive type. -Make sure you have the Slackware CD in your drive before allowing it to scan.

      - -

      The NFS selection prompts for your network information and the network information for -your NFS server. The NFS server must be set up in advance. Also note that you cannot use -hostnames, you must use the IP addresses for both your machine and the NFS server (there -is no name resolver on the setup disk). Naturally you must have used the network.dsk floppy to add support for your network controller.

      - -

      The premounted directory offers the most flexibility. You can use this method to -install from things such as Jaz disks, NFS mounts over PLIP, and FAT filesystems. Mount -the filesystem to a location of your choosing before running setup, then specify that -location here.

      -
      - -
      -

      3.4.6 SELECT

      - -

      The select option allows you to select the software series that you wish to install. -These series are described in Section 3.2.1. -Please note that you must install the A series to have a working base system. All other -series are optional.

      - -
      -

      -
      -
      - -
      -

      3.4.7 INSTALL

      - -

      Assuming that you have gone through the “target”, “source”, -and “select” options, the install option will allow -you to select packages from your chosen software series. If not, it will prompt you to go -back and complete the other sections of the setup program. This option allows you to -select from six different installation methods: full, newbie, menu, expert, custom, and tag path.

      - -
      -

      -
      - -

      The full option will install every package from all the -software series that you chose in the “select” section. There is no further -prompting. This is the easiest installation method, since you do not need to make any -decisions on the actual packages to install. Of course, this option also takes up the -most hard drive space.

      - -

      The next option is newbie. This option installs all of the -required packages in the selected series. For all other packages, it offers a prompt -where you can select “Yes”, “No”, or “Skip”. Yes and -No do the obvious, while Skip will go ahead to the next software series. Additionally, -you will see a description and size requirement for each package to help you decide if -you need it. We recommend this option for new users, as it ensures that you get all the -required packages installed. However, it is a little slow because of the prompting.

      - -

      Menu is a faster and more advanced version of the newbie -option. For each series, a menu is displayed, from which you can select all the -non-required packages you want to install. Required packages are not displayed on this -menu.

      - -

      For the more advanced user, install offers the expert -option. This allows you complete control over what packages get installed. You can -deselect packages that are absolutely required, resulting in a broken system. On the -other hand, you can control exactly what goes onto your system. Simply select the -packages from each series that you want installed. This is not recommended for the new -user, as it is quite easy to shoot yourself in the foot.

      - -

      The custom and tag path options -are also for advanced users. These options allow you to install based upon custom tag -files that you created in the distribution tree. This is useful for installing to large -numbers of machines fairly quickly. For more information on using tag files, see Section 18.4.

      - -

      After selecting your installation method, one of a few things will happen. If you -selected full or menu, a menu screen will appear, allowing you to select the packages to -be installed. If you selected full, packages will immediately start getting installed to -the target. If you selected newbie, packages will be installed until an optional package -is reached.

      - -

      Note that it is possible to run out of space while installing. If you selected too -many packages for the amount of free space on the target device, you will have problems. -The safest thing to do is to select some software and add more later, if you need it. -This can easily be done using Slackware's package management tools. For this information, -see Chapter 18.

      -
      - -
      -

      3.4.8 CONFIGURE

      - -

      The configure section allows you to do some basic system configuration, now that the -packages have been installed. What you see here depends in large part upon which software -you have installed. You will, however, always see the following:

      - -
      -

      3.4.8.1 Kernel selection

      - -

      Here you will be asked to select a kernel to install. You can install the kernel from -the boot disk you used to install, the Slackware CD-ROM, or from another floppy which you -(always thinking ahead) have prepared. Or you can elect to skip, in which case the -default kernel will be installed and play will continue to the dealer's left.

      - -
      -

      -
      -
      - -
      -

      3.4.8.2 Make a boot disk

      - -

      Making a boot disk for future use is probably a good idea. You will have the option of -formatting a floppy and then creating one of two types of boot disk. The first type, simple, simply (go figure) writes a kernel to the floppy. A more -flexible (and highly recommended) option is lilo, which will of -course create a lilo boot disk. See LILO in Section -7.1 for more information. Of course, you may also choose to simply continue, in which case no boot disk will be made.

      - -
      -

      -
      -
      - -
      -

      3.4.8.3 Modem

      - -

      You will be prompted for modem information. More specifically, you will be asked -whether you have a modem, and if so, what serial port it is on.

      - -
      -

      -
      - -

      These next configuration subsections may or may not appear, depending on whether or -not you installed their corresponding packages.

      -
      - -
      -

      3.4.8.4 Timezone

      - -

      This one's pretty straightforward: you will be asked what time zone you are in. If you -operate on Zulu time, we are very sorry; the (extremely long) list is alphabetically -ordered, and you're at the bottom.

      - -
      -

      -
      -
      - -
      -

      3.4.8.5 Mouse

      - -

      This subsection simply asks what kind of mouse you have, and whether you want gpm(8) console mouse support enabled on bootup.

      - -
      -

      -
      -
      - -
      -

      3.4.8.6 Hardware clock

      - -

      This subsection asks if your computer's hardware clock is set to Coordinated Universal -Time (UTC or GMT). Most PCs are not, so you should probably say no.

      - -
      -

      -
      -
      - -
      -

      3.4.8.7 Font

      - -

      The font subsection allows you to choose from a list of custom console fonts.

      - -
      -

      -
      -
      - -
      -

      3.4.8.8 LILO

      - -

      Here you are prompted for installation of LILO (the LInux LOader; see Section 7.1 for more information).

      - -
      -

      -
      - -

      If Slackware is to be the only operating system on your computer, simple should work just fine for you. If you are dual-booting, the -expert option is a better choice. See Section 7.3 for more information on dual-booting. The third -option, do not install, is not recommended unless you know what -you're doing and have a very good reason for not installing LILO. If you are performing -an expert install, you will be given a choice as to where LILO will be put. You may place -LILO in the MBR (Master Boot Record) of your hard drive, in the superblock of your root -Linux partition, or on a floppy disk.

      -
      - -
      -

      3.4.8.9 Network

      - -

      The network configuration subsection is actually netconfig. -See Section 5.1 -for more information.

      -
      - -
      -

      3.4.8.10 X Window Manager

      - -

      This subsection will allow you to choose a default window manager for X. See Chapter 6 for more details on X and window managers.

      - -
      -

      -
      - -

      No matter which packages you installed, the last thing configure will do is ask you -whether you want to go ahead and set a root password. For -security reasons, this is probably a good idea; however, like almost everything else in -Slackware, this is your call.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/installation.html b/slackbook/html/installation.html deleted file mode 100644 index c2d1140e2..000000000 --- a/slackbook/html/installation.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - -Installation - - - - - - - - - - -
      -

      Chapter 3 Installation

      - -
      -
      -
      Table of Contents
      - -
      3.1 Getting Slackware
      - -
      3.2 System Requirements
      - -
      3.3 Partitioning
      - -
      3.4 The setup -Program
      -
      -
      - -

      Before you can use Slackware Linux, you'll have to obtain and install it. Getting -Slackware is as easy as purchasing it or downloading it for free over the Internet. -Installing it is also easy as long as you have some basic knowledge about your computer -and are willing to learn a few other things. The installation program itself is very much -a step-by-step process. Because of this, you can be up and running very quickly. In fact, -Slackware boasts one of the lowest installation times of any full-featured Linux -distribution.

      - -
      -

      3.1 Getting -Slackware

      - -
      -

      3.1.1 The Official Disc and Box -Sets

      - -

      The official Slackware Linux CD set is available from Slackware Linux, Inc. The CD set -consists of 4 discs. The first disk contains all the software needed for a basic server -install, and the X window system. The second cd is a “live” cd; that is, a -bootable cd that installs into RAM and gives you a temporary installation to play around -with or do a data or machine rescue. This cd also contains a few packages such as the KDE -and GNOME desktop environments. A few other goodies are included on the second cd -including many non-vital packages in the “extra” folder. The third and fourth -CDs contain the source code to all of Slackware, along with the original edition of this -book.

      - -

      One may also purchase a boxed set that includes the 4 discs and a copy of this book, -as well as lots of neat Slackware gear to show off your geek pride. CD subscriptions are -available at a reduced rate also.

      - -

      The preferred method for shopping for Slackware merchandise is online at the Slackware -store.

      - -

      http://store.slackware.com

      - -

      You can also call or e-mail your order in.

      - -
      -

      Table 3-1. Slackware Linux, Inc. Contact Information

      - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MethodContact Details
      Telephone1-(925) 674-0783
      Websitehttp://store.slackware.com
      Emailorders@slackware.com
      Postal1164 Claremont Drive, Brentwood, CA 94513
      -
      -
      - -
      -

      3.1.2 Via the Internet

      - -

      Slackware Linux is also freely available over the Internet. You may email in your -support questions, but higher priority will be given to those who have purchased the -official CD set. With that said, we get a lot of e-mails and our time is rather limited. -Before e-mailing for support consider reading Chapter 2 -first.

      - -

      The official Slackware Linux Project website is located at:

      - -

      http://www.slackware.com/

      - -

      The primary FTP location for Slackware Linux is:

      - -

      ftp://ftp.slackware.com/pub/slackware/

      - -

      Bear in mind that our ftp site, while open for general use, does not have unlimited -bandwidth. Please consider using a mirror near you to download Slackware. An incomplete -list of mirrors can be found on our site at http://www.slackware.com/getslack.

      -
      -
      -
      - - - - - diff --git a/slackbook/html/installation/setup-bootdisk-w.png b/slackbook/html/installation/setup-bootdisk-w.png deleted file mode 100644 index 55eb7b2a3142fb8618094dbe0eb1b07e24d01cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4010 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 WDrjv|3;*78o1eR2Qf2IU=f412e=$q| diff --git a/slackbook/html/installation/setup-font-w.png b/slackbook/html/installation/setup-font-w.png deleted file mode 100644 index c187696699a8d4c32fcb3a9d16135c7c0aca20cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3856 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 diff --git a/slackbook/html/installation/setup-hardware-clock-w.png b/slackbook/html/installation/setup-hardware-clock-w.png deleted file mode 100644 index 784975daca0f0402ef23822f5375db2de98acc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3916 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 CV)q^Z diff --git a/slackbook/html/installation/setup-help-w.png b/slackbook/html/installation/setup-help-w.png deleted file mode 100644 index 21958005ed27f185b8bbe802b538a853b5e81ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4715 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 rSFW4YzYqNH4XOXf*8dOnAb3?zvz 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

      #DGp>NM7Fk)l=J#{G}*XM4dHAX`>wkJhWgA5L4% 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 diff --git a/slackbook/html/installation/setup-keymap-w.png b/slackbook/html/installation/setup-keymap-w.png deleted file mode 100644 index ab7dd6f4535d26b38825170bd3b853deb0bfb7ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4526 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 diff --git a/slackbook/html/installation/setup-lilo-w.png b/slackbook/html/installation/setup-lilo-w.png deleted file mode 100644 index 638a29ff196df1e0658fe8326688659f090a27f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5824 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

      -

      Slackware Linux is a registered trademark of Patrick Volkerding and Slackware Linux, -Inc.

      - -

      Linux is a registered trademark of Linus Torvalds.

      - -

      America Online and AOL are registered trademarks of America Online, Inc. in the United -States and/or other countries.

      - -

      Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of -Apple Computer, Inc., registered in the United States and other countries.

      - -

      IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks -of International Business Machines Corporation in the United States, other countries, or -both.

      - -

      IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and -Electronics Engineers, Inc. in the United States.

      - -

      Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or -registered trademarks of Intel Corporation or its subsidiaries in the United States and -other countries.

      - -

      Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are -either registered trademarks or trademarks of Microsoft Corporation in the United States -and/or other countries.

      - -

      Netscape and the Netscape Navigator are registered trademarks of Netscape -Communications Corporation in the U.S. and other countries.

      - -

      Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United -States and other countries.

      - -

      XFree86 is a trademark of The XFree86 Project, Inc.

      - -

      Many of the designations used by manufacturers and sellers to distinguish their -products are claimed as trademarks. Where those designations appear in this document, and -Slackware Linux, Inc. was aware of the trademark claim, the designations have been -followed by the “™” or the “®” symbol.

      -

      IID4T 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