]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge branch 'core110'
authorArne Fitzenreiter <arne_f@ipfire.org>
Tue, 30 May 2017 19:29:20 +0000 (21:29 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Tue, 30 May 2017 19:29:20 +0000 (21:29 +0200)
218 files changed:
config/cfgroot/network-functions.pl
config/qos/makeqosscripts.pl
config/rootfiles/common/armv5tel/gcc
config/rootfiles/common/armv5tel/gmp
config/rootfiles/common/cpio
config/rootfiles/common/diffutils
config/rootfiles/common/gzip
config/rootfiles/common/i586/gcc
config/rootfiles/common/i586/gmp
config/rootfiles/common/kbd
config/rootfiles/common/libevent2
config/rootfiles/common/libevent2-compat [new file with mode: 0644]
config/rootfiles/common/logrotate
config/rootfiles/common/logwatch
config/rootfiles/common/mpfr
config/rootfiles/common/pcre
config/rootfiles/common/rrdtool
config/rootfiles/common/strongswan
config/rootfiles/common/unbound
config/rootfiles/common/unzip
config/rootfiles/common/web-user-interface
config/rootfiles/common/x86_64/gcc
config/rootfiles/common/x86_64/gmp
config/rootfiles/core/111/exclude [new file with mode: 0644]
config/rootfiles/core/111/filelists/armv5tel/gcc [new symlink]
config/rootfiles/core/111/filelists/armv5tel/gmp [new symlink]
config/rootfiles/core/111/filelists/bind [new symlink]
config/rootfiles/core/111/filelists/coreutils [new symlink]
config/rootfiles/core/111/filelists/cpio [new symlink]
config/rootfiles/core/111/filelists/dhcp [new symlink]
config/rootfiles/core/111/filelists/file [new symlink]
config/rootfiles/core/111/filelists/files [new file with mode: 0644]
config/rootfiles/core/111/filelists/gzip [new symlink]
config/rootfiles/core/111/filelists/i586/gcc [new symlink]
config/rootfiles/core/111/filelists/i586/gmp [new symlink]
config/rootfiles/core/111/filelists/i586/openssl-sse2 [new symlink]
config/rootfiles/core/111/filelists/i586/strongswan-padlock [new symlink]
config/rootfiles/core/111/filelists/libevent2 [new symlink]
config/rootfiles/core/111/filelists/libevent2-compat [new symlink]
config/rootfiles/core/111/filelists/logrotate [new symlink]
config/rootfiles/core/111/filelists/logwatch [new symlink]
config/rootfiles/core/111/filelists/mpfr [new symlink]
config/rootfiles/core/111/filelists/openssl [new symlink]
config/rootfiles/core/111/filelists/openvpn [new symlink]
config/rootfiles/core/111/filelists/pcre [new symlink]
config/rootfiles/core/111/filelists/php [new symlink]
config/rootfiles/core/111/filelists/rrdtool [new symlink]
config/rootfiles/core/111/filelists/strongswan [new symlink]
config/rootfiles/core/111/filelists/unbound [new symlink]
config/rootfiles/core/111/filelists/vnstat [new symlink]
config/rootfiles/core/111/filelists/x86_64/gcc [new symlink]
config/rootfiles/core/111/filelists/x86_64/gmp [new symlink]
config/rootfiles/core/111/meta [new file with mode: 0644]
config/rootfiles/core/111/update.sh [new file with mode: 0644]
config/rootfiles/packages/armv5tel/python3
config/rootfiles/packages/cups
config/rootfiles/packages/dbus
config/rootfiles/packages/elfutils [new file with mode: 0644]
config/rootfiles/packages/git
config/rootfiles/packages/i586/python3
config/rootfiles/packages/i586/python3-libvirt [new file with mode: 0644]
config/rootfiles/packages/libvirt
config/rootfiles/packages/ltrace [new file with mode: 0644]
config/rootfiles/packages/nano
config/rootfiles/packages/netsnmpd
config/rootfiles/packages/nmap
config/rootfiles/packages/x86_64/python3
config/rootfiles/packages/x86_64/python3-libvirt [new file with mode: 0644]
doc/language_issues.de
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.it
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/guardian.cgi
html/cgi-bin/index.cgi
html/cgi-bin/ipinfo.cgi
html/cgi-bin/iptables.cgi
html/cgi-bin/logs.cgi/firewalllogcountry.dat
html/cgi-bin/logs.cgi/firewalllogip.dat
html/cgi-bin/logs.cgi/firewalllogport.dat
html/cgi-bin/logs.cgi/showrequestfromcountry.dat
html/cgi-bin/logs.cgi/showrequestfromip.dat
html/cgi-bin/logs.cgi/showrequestfromport.dat
html/cgi-bin/ovpnmain.cgi
html/cgi-bin/vpnmain.cgi
html/cgi-bin/wirelessclient.cgi
html/html/images/back.png [new file with mode: 0644]
langs/de/cgi-bin/de.pl
langs/en/cgi-bin/en.pl
langs/it/cgi-bin/it.pl
lfs/acpid
lfs/bind
lfs/ccache
lfs/coreutils
lfs/cpio
lfs/dbus
lfs/dhcp
lfs/elfutils [new file with mode: 0644]
lfs/file
lfs/flash-images
lfs/gcc
lfs/git
lfs/gmp
lfs/gzip
lfs/ipset
lfs/libevent2
lfs/libevent2-compat [new file with mode: 0644]
lfs/libvirt
lfs/linux
lfs/logrotate
lfs/logwatch
lfs/ltrace [new file with mode: 0644]
lfs/m4
lfs/mpfr
lfs/nano
lfs/netsnmpd
lfs/nmap
lfs/openssl
lfs/openvpn
lfs/pcre
lfs/php
lfs/pkg-config
lfs/python3
lfs/python3-libvirt [new file with mode: 0644]
lfs/rrdtool
lfs/samba
lfs/stage2
lfs/strongswan
lfs/tor
lfs/unbound
lfs/unzip
lfs/vnstat
make.sh
src/fake-environ/Makefile
src/initscripts/networking/dhcpcd.exe
src/initscripts/networking/red
src/initscripts/system/unbound
src/initscripts/system/wlanclient
src/misc-progs/getipstat.c
src/misc-progs/ipsecctrl.c
src/paks/dbus/install.sh
src/paks/dbus/uninstall.sh
src/patches/coreutils-8.27-i18n-1.patch [moved from src/patches/coreutils-8.25-i18n-2.patch with 72% similarity]
src/patches/coreutils-8.27-uname-1.patch [new file with mode: 0644]
src/patches/dbus-1.0.3-compile-fix-1.patch [deleted file]
src/patches/gzip-1.3.5-security_fixes-1.patch [deleted file]
src/patches/mpfr-3.1.3-upstream_fixes-1.patch [deleted file]
src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch [new file with mode: 0644]
src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch [new file with mode: 0644]
src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch [new file with mode: 0644]
src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch [new file with mode: 0644]
src/patches/samba/CVE-2016-2125-v3.6.patch [new file with mode: 0644]
src/patches/samba/CVE-2016-2126-v3.6.patch [new file with mode: 0644]
src/patches/samba/CVE-2017-7494-v3-6.patch [new file with mode: 0644]
src/patches/samba/doc-update.patch [new file with mode: 0644]
src/patches/samba/samba-3.2.0pre1-grouppwd.patch [new file with mode: 0644]
src/patches/samba/samba-3.2.0pre1-pipedir.patch [new file with mode: 0644]
src/patches/samba/samba-3.2.5-inotify.patch [new file with mode: 0644]
src/patches/samba/samba-3.5.11-docs.patch [new file with mode: 0644]
src/patches/samba/samba-3.5.11-idmapdebug.patch [new file with mode: 0644]
src/patches/samba/samba-3.5.11-nss_info_doc.patch [new file with mode: 0644]
src/patches/samba/samba-3.5.11-wbinfo_manpage.patch [new file with mode: 0644]
src/patches/samba/samba-3.5.12-dns.patch [new file with mode: 0644]
src/patches/samba/samba-3.5.12-pam_radio_type.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.19-valid_users_doc.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.23-gecos.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.23-glusterfs.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.23-libsmbclient.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-bug-1117059.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-bug-1192211.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_dropbox_share.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_force_group.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_symlink_verification.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch [new file with mode: 0644]
src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch [new file with mode: 0644]
tools/make-functions

index 5f53704cd18e552ca4f12670f6bce91449b62b54..66f1ed554ab12041c31cc0b3163f9e1c8a75710f 100644 (file)
@@ -315,6 +315,65 @@ sub setup_upstream_proxy() {
        }
 }
 
+my %wireless_status = ();
+
+sub _get_wireless_status($) {
+       my $intf = shift;
+
+       if (!$wireless_status{$intf}) {
+               $wireless_status{$intf} = `iwconfig $intf`;
+       }
+
+       return $wireless_status{$intf};
+}
+
+sub wifi_get_essid($) {
+       my $status = &_get_wireless_status(shift);
+
+       my ($essid) = $status =~ /ESSID:\"(.*)\"/;
+
+       return $essid;
+}
+
+sub wifi_get_frequency($) {
+       my $status = &_get_wireless_status(shift);
+
+       my ($frequency) = $status =~ /Frequency:(\d+\.\d+ GHz)/;
+
+       return $frequency;
+}
+
+sub wifi_get_access_point($) {
+       my $status = &_get_wireless_status(shift);
+
+       my ($access_point) = $status =~ /Access Point: ([0-9A-F:]+)/;
+
+       return $access_point;
+}
+
+sub wifi_get_bit_rate($) {
+       my $status = &_get_wireless_status(shift);
+
+       my ($bit_rate) = $status =~ /Bit Rate=(\d+ [GM]b\/s)/;
+
+       return $bit_rate;
+}
+
+sub wifi_get_link_quality($) {
+       my $status = &_get_wireless_status(shift);
+
+       my ($cur, $max) = $status =~ /Link Quality=(\d+)\/(\d+)/;
+
+       return $cur * 100 / $max;
+}
+
+sub wifi_get_signal_level($) {
+       my $status = &_get_wireless_status(shift);
+
+       my ($signal_level) = $status =~ /Signal level=(\-\d+ dBm)/;
+
+       return $signal_level;
+}
 1;
 
 # Remove the next line to enable the testsuite
index b623cbec91a73495fb42a9e431cb7d5c8dcbf0df..19809615a9312f48ade3c472dd95a4bb5fa49a27 100644 (file)
@@ -411,7 +411,7 @@ print <<END
                insmod ipt_IMQ
                sleep 2
        fi
-       modprobe imq numdevs=1
+       modprobe imq numdevs=1 numqueues=\$(grep -c "^processor" /proc/cpuinfo || echo 1)
        ip link set $qossettings{'IMQ_DEV'} up
 
        ### ADD HTB QDISC FOR $qossettings{'IMQ_DEV'}
index 121ac1759097158ad26c3d3558d764bd863e1ed7..a7d971614a4ebb817153f42aa0162fe9e207d4e5 100644 (file)
@@ -2,7 +2,7 @@
 #usr/bin/armv5tel-unknown-linux-gnueabi-c++
 #usr/bin/armv5tel-unknown-linux-gnueabi-g++
 #usr/bin/armv5tel-unknown-linux-gnueabi-gcc
-#usr/bin/armv5tel-unknown-linux-gnueabi-gcc-4.9.3
+#usr/bin/armv5tel-unknown-linux-gnueabi-gcc-4.9.4
 #usr/bin/armv5tel-unknown-linux-gnueabi-gcc-ar
 #usr/bin/armv5tel-unknown-linux-gnueabi-gcc-nm
 #usr/bin/armv5tel-unknown-linux-gnueabi-gcc-ranlib
 #usr/bin/gcc-ranlib
 #usr/bin/gcov
 #usr/include/c++
-#usr/include/c++/4.9.3
-#usr/include/c++/4.9.3/algorithm
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/atomic_word.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/basic_file.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/c++allocator.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/c++config.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/c++io.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/c++locale.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/cpu_defines.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/ctype_base.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/ctype_inline.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/cxxabi_tweaks.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/error_constants.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/extc++.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/gthr-default.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/gthr-posix.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/gthr-single.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/gthr.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/messages_members.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/opt_random.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/os_defines.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/stdc++.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/stdtr1c++.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/bits/time_members.h
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/ext
-#usr/include/c++/4.9.3/armv5tel-unknown-linux-gnueabi/ext/opt_random.h
-#usr/include/c++/4.9.3/array
-#usr/include/c++/4.9.3/atomic
-#usr/include/c++/4.9.3/backward
-#usr/include/c++/4.9.3/backward/auto_ptr.h
-#usr/include/c++/4.9.3/backward/backward_warning.h
-#usr/include/c++/4.9.3/backward/binders.h
-#usr/include/c++/4.9.3/backward/hash_fun.h
-#usr/include/c++/4.9.3/backward/hash_map
-#usr/include/c++/4.9.3/backward/hash_set
-#usr/include/c++/4.9.3/backward/hashtable.h
-#usr/include/c++/4.9.3/backward/strstream
-#usr/include/c++/4.9.3/bits
-#usr/include/c++/4.9.3/bits/algorithmfwd.h
-#usr/include/c++/4.9.3/bits/alloc_traits.h
-#usr/include/c++/4.9.3/bits/allocator.h
-#usr/include/c++/4.9.3/bits/atomic_base.h
-#usr/include/c++/4.9.3/bits/atomic_lockfree_defines.h
-#usr/include/c++/4.9.3/bits/basic_ios.h
-#usr/include/c++/4.9.3/bits/basic_ios.tcc
-#usr/include/c++/4.9.3/bits/basic_string.h
-#usr/include/c++/4.9.3/bits/basic_string.tcc
-#usr/include/c++/4.9.3/bits/boost_concept_check.h
-#usr/include/c++/4.9.3/bits/c++0x_warning.h
-#usr/include/c++/4.9.3/bits/c++14_warning.h
-#usr/include/c++/4.9.3/bits/char_traits.h
-#usr/include/c++/4.9.3/bits/codecvt.h
-#usr/include/c++/4.9.3/bits/concept_check.h
-#usr/include/c++/4.9.3/bits/cpp_type_traits.h
-#usr/include/c++/4.9.3/bits/cxxabi_forced.h
-#usr/include/c++/4.9.3/bits/deque.tcc
-#usr/include/c++/4.9.3/bits/enable_special_members.h
-#usr/include/c++/4.9.3/bits/exception_defines.h
-#usr/include/c++/4.9.3/bits/exception_ptr.h
-#usr/include/c++/4.9.3/bits/forward_list.h
-#usr/include/c++/4.9.3/bits/forward_list.tcc
-#usr/include/c++/4.9.3/bits/fstream.tcc
-#usr/include/c++/4.9.3/bits/functexcept.h
-#usr/include/c++/4.9.3/bits/functional_hash.h
-#usr/include/c++/4.9.3/bits/gslice.h
-#usr/include/c++/4.9.3/bits/gslice_array.h
-#usr/include/c++/4.9.3/bits/hash_bytes.h
-#usr/include/c++/4.9.3/bits/hashtable.h
-#usr/include/c++/4.9.3/bits/hashtable_policy.h
-#usr/include/c++/4.9.3/bits/indirect_array.h
-#usr/include/c++/4.9.3/bits/ios_base.h
-#usr/include/c++/4.9.3/bits/istream.tcc
-#usr/include/c++/4.9.3/bits/list.tcc
-#usr/include/c++/4.9.3/bits/locale_classes.h
-#usr/include/c++/4.9.3/bits/locale_classes.tcc
-#usr/include/c++/4.9.3/bits/locale_facets.h
-#usr/include/c++/4.9.3/bits/locale_facets.tcc
-#usr/include/c++/4.9.3/bits/locale_facets_nonio.h
-#usr/include/c++/4.9.3/bits/locale_facets_nonio.tcc
-#usr/include/c++/4.9.3/bits/localefwd.h
-#usr/include/c++/4.9.3/bits/mask_array.h
-#usr/include/c++/4.9.3/bits/memoryfwd.h
-#usr/include/c++/4.9.3/bits/move.h
-#usr/include/c++/4.9.3/bits/nested_exception.h
-#usr/include/c++/4.9.3/bits/ostream.tcc
-#usr/include/c++/4.9.3/bits/ostream_insert.h
-#usr/include/c++/4.9.3/bits/parse_numbers.h
-#usr/include/c++/4.9.3/bits/postypes.h
-#usr/include/c++/4.9.3/bits/predefined_ops.h
-#usr/include/c++/4.9.3/bits/ptr_traits.h
-#usr/include/c++/4.9.3/bits/random.h
-#usr/include/c++/4.9.3/bits/random.tcc
-#usr/include/c++/4.9.3/bits/range_access.h
-#usr/include/c++/4.9.3/bits/regex.h
-#usr/include/c++/4.9.3/bits/regex.tcc
-#usr/include/c++/4.9.3/bits/regex_automaton.h
-#usr/include/c++/4.9.3/bits/regex_automaton.tcc
-#usr/include/c++/4.9.3/bits/regex_compiler.h
-#usr/include/c++/4.9.3/bits/regex_compiler.tcc
-#usr/include/c++/4.9.3/bits/regex_constants.h
-#usr/include/c++/4.9.3/bits/regex_error.h
-#usr/include/c++/4.9.3/bits/regex_executor.h
-#usr/include/c++/4.9.3/bits/regex_executor.tcc
-#usr/include/c++/4.9.3/bits/regex_scanner.h
-#usr/include/c++/4.9.3/bits/regex_scanner.tcc
-#usr/include/c++/4.9.3/bits/shared_ptr.h
-#usr/include/c++/4.9.3/bits/shared_ptr_base.h
-#usr/include/c++/4.9.3/bits/slice_array.h
-#usr/include/c++/4.9.3/bits/sstream.tcc
-#usr/include/c++/4.9.3/bits/stl_algo.h
-#usr/include/c++/4.9.3/bits/stl_algobase.h
-#usr/include/c++/4.9.3/bits/stl_bvector.h
-#usr/include/c++/4.9.3/bits/stl_construct.h
-#usr/include/c++/4.9.3/bits/stl_deque.h
-#usr/include/c++/4.9.3/bits/stl_function.h
-#usr/include/c++/4.9.3/bits/stl_heap.h
-#usr/include/c++/4.9.3/bits/stl_iterator.h
-#usr/include/c++/4.9.3/bits/stl_iterator_base_funcs.h
-#usr/include/c++/4.9.3/bits/stl_iterator_base_types.h
-#usr/include/c++/4.9.3/bits/stl_list.h
-#usr/include/c++/4.9.3/bits/stl_map.h
-#usr/include/c++/4.9.3/bits/stl_multimap.h
-#usr/include/c++/4.9.3/bits/stl_multiset.h
-#usr/include/c++/4.9.3/bits/stl_numeric.h
-#usr/include/c++/4.9.3/bits/stl_pair.h
-#usr/include/c++/4.9.3/bits/stl_queue.h
-#usr/include/c++/4.9.3/bits/stl_raw_storage_iter.h
-#usr/include/c++/4.9.3/bits/stl_relops.h
-#usr/include/c++/4.9.3/bits/stl_set.h
-#usr/include/c++/4.9.3/bits/stl_stack.h
-#usr/include/c++/4.9.3/bits/stl_tempbuf.h
-#usr/include/c++/4.9.3/bits/stl_tree.h
-#usr/include/c++/4.9.3/bits/stl_uninitialized.h
-#usr/include/c++/4.9.3/bits/stl_vector.h
-#usr/include/c++/4.9.3/bits/stream_iterator.h
-#usr/include/c++/4.9.3/bits/streambuf.tcc
-#usr/include/c++/4.9.3/bits/streambuf_iterator.h
-#usr/include/c++/4.9.3/bits/stringfwd.h
-#usr/include/c++/4.9.3/bits/unique_ptr.h
-#usr/include/c++/4.9.3/bits/unordered_map.h
-#usr/include/c++/4.9.3/bits/unordered_set.h
-#usr/include/c++/4.9.3/bits/uses_allocator.h
-#usr/include/c++/4.9.3/bits/valarray_after.h
-#usr/include/c++/4.9.3/bits/valarray_array.h
-#usr/include/c++/4.9.3/bits/valarray_array.tcc
-#usr/include/c++/4.9.3/bits/valarray_before.h
-#usr/include/c++/4.9.3/bits/vector.tcc
-#usr/include/c++/4.9.3/bitset
-#usr/include/c++/4.9.3/cassert
-#usr/include/c++/4.9.3/ccomplex
-#usr/include/c++/4.9.3/cctype
-#usr/include/c++/4.9.3/cerrno
-#usr/include/c++/4.9.3/cfenv
-#usr/include/c++/4.9.3/cfloat
-#usr/include/c++/4.9.3/chrono
-#usr/include/c++/4.9.3/cinttypes
-#usr/include/c++/4.9.3/ciso646
-#usr/include/c++/4.9.3/climits
-#usr/include/c++/4.9.3/clocale
-#usr/include/c++/4.9.3/cmath
-#usr/include/c++/4.9.3/complex
-#usr/include/c++/4.9.3/complex.h
-#usr/include/c++/4.9.3/condition_variable
-#usr/include/c++/4.9.3/csetjmp
-#usr/include/c++/4.9.3/csignal
-#usr/include/c++/4.9.3/cstdalign
-#usr/include/c++/4.9.3/cstdarg
-#usr/include/c++/4.9.3/cstdbool
-#usr/include/c++/4.9.3/cstddef
-#usr/include/c++/4.9.3/cstdint
-#usr/include/c++/4.9.3/cstdio
-#usr/include/c++/4.9.3/cstdlib
-#usr/include/c++/4.9.3/cstring
-#usr/include/c++/4.9.3/ctgmath
-#usr/include/c++/4.9.3/ctime
-#usr/include/c++/4.9.3/cwchar
-#usr/include/c++/4.9.3/cwctype
-#usr/include/c++/4.9.3/cxxabi.h
-#usr/include/c++/4.9.3/debug
-#usr/include/c++/4.9.3/debug/array
-#usr/include/c++/4.9.3/debug/bitset
-#usr/include/c++/4.9.3/debug/debug.h
-#usr/include/c++/4.9.3/debug/deque
-#usr/include/c++/4.9.3/debug/formatter.h
-#usr/include/c++/4.9.3/debug/forward_list
-#usr/include/c++/4.9.3/debug/functions.h
-#usr/include/c++/4.9.3/debug/list
-#usr/include/c++/4.9.3/debug/macros.h
-#usr/include/c++/4.9.3/debug/map
-#usr/include/c++/4.9.3/debug/map.h
-#usr/include/c++/4.9.3/debug/multimap.h
-#usr/include/c++/4.9.3/debug/multiset.h
-#usr/include/c++/4.9.3/debug/safe_base.h
-#usr/include/c++/4.9.3/debug/safe_iterator.h
-#usr/include/c++/4.9.3/debug/safe_iterator.tcc
-#usr/include/c++/4.9.3/debug/safe_local_iterator.h
-#usr/include/c++/4.9.3/debug/safe_local_iterator.tcc
-#usr/include/c++/4.9.3/debug/safe_sequence.h
-#usr/include/c++/4.9.3/debug/safe_sequence.tcc
-#usr/include/c++/4.9.3/debug/safe_unordered_base.h
-#usr/include/c++/4.9.3/debug/safe_unordered_container.h
-#usr/include/c++/4.9.3/debug/safe_unordered_container.tcc
-#usr/include/c++/4.9.3/debug/set
-#usr/include/c++/4.9.3/debug/set.h
-#usr/include/c++/4.9.3/debug/string
-#usr/include/c++/4.9.3/debug/unordered_map
-#usr/include/c++/4.9.3/debug/unordered_set
-#usr/include/c++/4.9.3/debug/vector
-#usr/include/c++/4.9.3/decimal
-#usr/include/c++/4.9.3/decimal/decimal
-#usr/include/c++/4.9.3/decimal/decimal.h
-#usr/include/c++/4.9.3/deque
-#usr/include/c++/4.9.3/exception
-#usr/include/c++/4.9.3/experimental
-#usr/include/c++/4.9.3/experimental/optional
-#usr/include/c++/4.9.3/experimental/string_view
-#usr/include/c++/4.9.3/experimental/string_view.tcc
-#usr/include/c++/4.9.3/ext
-#usr/include/c++/4.9.3/ext/algorithm
-#usr/include/c++/4.9.3/ext/aligned_buffer.h
-#usr/include/c++/4.9.3/ext/alloc_traits.h
-#usr/include/c++/4.9.3/ext/array_allocator.h
-#usr/include/c++/4.9.3/ext/atomicity.h
-#usr/include/c++/4.9.3/ext/bitmap_allocator.h
-#usr/include/c++/4.9.3/ext/cast.h
-#usr/include/c++/4.9.3/ext/cmath
-#usr/include/c++/4.9.3/ext/codecvt_specializations.h
-#usr/include/c++/4.9.3/ext/concurrence.h
-#usr/include/c++/4.9.3/ext/debug_allocator.h
-#usr/include/c++/4.9.3/ext/enc_filebuf.h
-#usr/include/c++/4.9.3/ext/extptr_allocator.h
-#usr/include/c++/4.9.3/ext/functional
-#usr/include/c++/4.9.3/ext/hash_map
-#usr/include/c++/4.9.3/ext/hash_set
-#usr/include/c++/4.9.3/ext/iterator
-#usr/include/c++/4.9.3/ext/malloc_allocator.h
-#usr/include/c++/4.9.3/ext/memory
-#usr/include/c++/4.9.3/ext/mt_allocator.h
-#usr/include/c++/4.9.3/ext/new_allocator.h
-#usr/include/c++/4.9.3/ext/numeric
-#usr/include/c++/4.9.3/ext/numeric_traits.h
-#usr/include/c++/4.9.3/ext/pb_ds
-#usr/include/c++/4.9.3/ext/pb_ds/assoc_container.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/branch_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cond_dealtor.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/container_base_dispatch.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/debug_map_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/standard_policies.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_trace_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/type_utils.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/types_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/exception.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/hash_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/list_update_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/priority_queue.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/tag_and_trait.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/tree_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/trie_policy.hpp
-#usr/include/c++/4.9.3/ext/pod_char_traits.h
-#usr/include/c++/4.9.3/ext/pointer.h
-#usr/include/c++/4.9.3/ext/pool_allocator.h
-#usr/include/c++/4.9.3/ext/random
-#usr/include/c++/4.9.3/ext/random.tcc
-#usr/include/c++/4.9.3/ext/rb_tree
-#usr/include/c++/4.9.3/ext/rc_string_base.h
-#usr/include/c++/4.9.3/ext/rope
-#usr/include/c++/4.9.3/ext/ropeimpl.h
-#usr/include/c++/4.9.3/ext/slist
-#usr/include/c++/4.9.3/ext/sso_string_base.h
-#usr/include/c++/4.9.3/ext/stdio_filebuf.h
-#usr/include/c++/4.9.3/ext/stdio_sync_filebuf.h
-#usr/include/c++/4.9.3/ext/string_conversions.h
-#usr/include/c++/4.9.3/ext/throw_allocator.h
-#usr/include/c++/4.9.3/ext/type_traits.h
-#usr/include/c++/4.9.3/ext/typelist.h
-#usr/include/c++/4.9.3/ext/vstring.h
-#usr/include/c++/4.9.3/ext/vstring.tcc
-#usr/include/c++/4.9.3/ext/vstring_fwd.h
-#usr/include/c++/4.9.3/ext/vstring_util.h
-#usr/include/c++/4.9.3/fenv.h
-#usr/include/c++/4.9.3/forward_list
-#usr/include/c++/4.9.3/fstream
-#usr/include/c++/4.9.3/functional
-#usr/include/c++/4.9.3/future
-#usr/include/c++/4.9.3/initializer_list
-#usr/include/c++/4.9.3/iomanip
-#usr/include/c++/4.9.3/ios
-#usr/include/c++/4.9.3/iosfwd
-#usr/include/c++/4.9.3/iostream
-#usr/include/c++/4.9.3/istream
-#usr/include/c++/4.9.3/iterator
-#usr/include/c++/4.9.3/limits
-#usr/include/c++/4.9.3/list
-#usr/include/c++/4.9.3/locale
-#usr/include/c++/4.9.3/map
-#usr/include/c++/4.9.3/memory
-#usr/include/c++/4.9.3/mutex
-#usr/include/c++/4.9.3/new
-#usr/include/c++/4.9.3/numeric
-#usr/include/c++/4.9.3/ostream
-#usr/include/c++/4.9.3/parallel
-#usr/include/c++/4.9.3/parallel/algo.h
-#usr/include/c++/4.9.3/parallel/algobase.h
-#usr/include/c++/4.9.3/parallel/algorithm
-#usr/include/c++/4.9.3/parallel/algorithmfwd.h
-#usr/include/c++/4.9.3/parallel/balanced_quicksort.h
-#usr/include/c++/4.9.3/parallel/base.h
-#usr/include/c++/4.9.3/parallel/basic_iterator.h
-#usr/include/c++/4.9.3/parallel/checkers.h
-#usr/include/c++/4.9.3/parallel/compatibility.h
-#usr/include/c++/4.9.3/parallel/compiletime_settings.h
-#usr/include/c++/4.9.3/parallel/equally_split.h
-#usr/include/c++/4.9.3/parallel/features.h
-#usr/include/c++/4.9.3/parallel/find.h
-#usr/include/c++/4.9.3/parallel/find_selectors.h
-#usr/include/c++/4.9.3/parallel/for_each.h
-#usr/include/c++/4.9.3/parallel/for_each_selectors.h
-#usr/include/c++/4.9.3/parallel/iterator.h
-#usr/include/c++/4.9.3/parallel/list_partition.h
-#usr/include/c++/4.9.3/parallel/losertree.h
-#usr/include/c++/4.9.3/parallel/merge.h
-#usr/include/c++/4.9.3/parallel/multiseq_selection.h
-#usr/include/c++/4.9.3/parallel/multiway_merge.h
-#usr/include/c++/4.9.3/parallel/multiway_mergesort.h
-#usr/include/c++/4.9.3/parallel/numeric
-#usr/include/c++/4.9.3/parallel/numericfwd.h
-#usr/include/c++/4.9.3/parallel/omp_loop.h
-#usr/include/c++/4.9.3/parallel/omp_loop_static.h
-#usr/include/c++/4.9.3/parallel/par_loop.h
-#usr/include/c++/4.9.3/parallel/parallel.h
-#usr/include/c++/4.9.3/parallel/partial_sum.h
-#usr/include/c++/4.9.3/parallel/partition.h
-#usr/include/c++/4.9.3/parallel/queue.h
-#usr/include/c++/4.9.3/parallel/quicksort.h
-#usr/include/c++/4.9.3/parallel/random_number.h
-#usr/include/c++/4.9.3/parallel/random_shuffle.h
-#usr/include/c++/4.9.3/parallel/search.h
-#usr/include/c++/4.9.3/parallel/set_operations.h
-#usr/include/c++/4.9.3/parallel/settings.h
-#usr/include/c++/4.9.3/parallel/sort.h
-#usr/include/c++/4.9.3/parallel/tags.h
-#usr/include/c++/4.9.3/parallel/types.h
-#usr/include/c++/4.9.3/parallel/unique_copy.h
-#usr/include/c++/4.9.3/parallel/workstealing.h
-#usr/include/c++/4.9.3/profile
-#usr/include/c++/4.9.3/profile/array
-#usr/include/c++/4.9.3/profile/base.h
-#usr/include/c++/4.9.3/profile/bitset
-#usr/include/c++/4.9.3/profile/deque
-#usr/include/c++/4.9.3/profile/forward_list
-#usr/include/c++/4.9.3/profile/impl
-#usr/include/c++/4.9.3/profile/impl/profiler.h
-#usr/include/c++/4.9.3/profile/impl/profiler_algos.h
-#usr/include/c++/4.9.3/profile/impl/profiler_container_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_hash_func.h
-#usr/include/c++/4.9.3/profile/impl/profiler_hashtable_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_list_to_slist.h
-#usr/include/c++/4.9.3/profile/impl/profiler_list_to_vector.h
-#usr/include/c++/4.9.3/profile/impl/profiler_map_to_unordered_map.h
-#usr/include/c++/4.9.3/profile/impl/profiler_node.h
-#usr/include/c++/4.9.3/profile/impl/profiler_state.h
-#usr/include/c++/4.9.3/profile/impl/profiler_trace.h
-#usr/include/c++/4.9.3/profile/impl/profiler_vector_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_vector_to_list.h
-#usr/include/c++/4.9.3/profile/iterator_tracker.h
-#usr/include/c++/4.9.3/profile/list
-#usr/include/c++/4.9.3/profile/map
-#usr/include/c++/4.9.3/profile/map.h
-#usr/include/c++/4.9.3/profile/multimap.h
-#usr/include/c++/4.9.3/profile/multiset.h
-#usr/include/c++/4.9.3/profile/set
-#usr/include/c++/4.9.3/profile/set.h
-#usr/include/c++/4.9.3/profile/unordered_base.h
-#usr/include/c++/4.9.3/profile/unordered_map
-#usr/include/c++/4.9.3/profile/unordered_set
-#usr/include/c++/4.9.3/profile/vector
-#usr/include/c++/4.9.3/queue
-#usr/include/c++/4.9.3/random
-#usr/include/c++/4.9.3/ratio
-#usr/include/c++/4.9.3/regex
-#usr/include/c++/4.9.3/scoped_allocator
-#usr/include/c++/4.9.3/set
-#usr/include/c++/4.9.3/shared_mutex
-#usr/include/c++/4.9.3/sstream
-#usr/include/c++/4.9.3/stack
-#usr/include/c++/4.9.3/stdexcept
-#usr/include/c++/4.9.3/streambuf
-#usr/include/c++/4.9.3/string
-#usr/include/c++/4.9.3/system_error
-#usr/include/c++/4.9.3/tgmath.h
-#usr/include/c++/4.9.3/thread
-#usr/include/c++/4.9.3/tr1
-#usr/include/c++/4.9.3/tr1/array
-#usr/include/c++/4.9.3/tr1/bessel_function.tcc
-#usr/include/c++/4.9.3/tr1/beta_function.tcc
-#usr/include/c++/4.9.3/tr1/ccomplex
-#usr/include/c++/4.9.3/tr1/cctype
-#usr/include/c++/4.9.3/tr1/cfenv
-#usr/include/c++/4.9.3/tr1/cfloat
-#usr/include/c++/4.9.3/tr1/cinttypes
-#usr/include/c++/4.9.3/tr1/climits
-#usr/include/c++/4.9.3/tr1/cmath
-#usr/include/c++/4.9.3/tr1/complex
-#usr/include/c++/4.9.3/tr1/complex.h
-#usr/include/c++/4.9.3/tr1/cstdarg
-#usr/include/c++/4.9.3/tr1/cstdbool
-#usr/include/c++/4.9.3/tr1/cstdint
-#usr/include/c++/4.9.3/tr1/cstdio
-#usr/include/c++/4.9.3/tr1/cstdlib
-#usr/include/c++/4.9.3/tr1/ctgmath
-#usr/include/c++/4.9.3/tr1/ctime
-#usr/include/c++/4.9.3/tr1/ctype.h
-#usr/include/c++/4.9.3/tr1/cwchar
-#usr/include/c++/4.9.3/tr1/cwctype
-#usr/include/c++/4.9.3/tr1/ell_integral.tcc
-#usr/include/c++/4.9.3/tr1/exp_integral.tcc
-#usr/include/c++/4.9.3/tr1/fenv.h
-#usr/include/c++/4.9.3/tr1/float.h
-#usr/include/c++/4.9.3/tr1/functional
-#usr/include/c++/4.9.3/tr1/functional_hash.h
-#usr/include/c++/4.9.3/tr1/gamma.tcc
-#usr/include/c++/4.9.3/tr1/hashtable.h
-#usr/include/c++/4.9.3/tr1/hashtable_policy.h
-#usr/include/c++/4.9.3/tr1/hypergeometric.tcc
-#usr/include/c++/4.9.3/tr1/inttypes.h
-#usr/include/c++/4.9.3/tr1/legendre_function.tcc
-#usr/include/c++/4.9.3/tr1/limits.h
-#usr/include/c++/4.9.3/tr1/math.h
-#usr/include/c++/4.9.3/tr1/memory
-#usr/include/c++/4.9.3/tr1/modified_bessel_func.tcc
-#usr/include/c++/4.9.3/tr1/poly_hermite.tcc
-#usr/include/c++/4.9.3/tr1/poly_laguerre.tcc
-#usr/include/c++/4.9.3/tr1/random
-#usr/include/c++/4.9.3/tr1/random.h
-#usr/include/c++/4.9.3/tr1/random.tcc
-#usr/include/c++/4.9.3/tr1/regex
-#usr/include/c++/4.9.3/tr1/riemann_zeta.tcc
-#usr/include/c++/4.9.3/tr1/shared_ptr.h
-#usr/include/c++/4.9.3/tr1/special_function_util.h
-#usr/include/c++/4.9.3/tr1/stdarg.h
-#usr/include/c++/4.9.3/tr1/stdbool.h
-#usr/include/c++/4.9.3/tr1/stdint.h
-#usr/include/c++/4.9.3/tr1/stdio.h
-#usr/include/c++/4.9.3/tr1/stdlib.h
-#usr/include/c++/4.9.3/tr1/tgmath.h
-#usr/include/c++/4.9.3/tr1/tuple
-#usr/include/c++/4.9.3/tr1/type_traits
-#usr/include/c++/4.9.3/tr1/unordered_map
-#usr/include/c++/4.9.3/tr1/unordered_map.h
-#usr/include/c++/4.9.3/tr1/unordered_set
-#usr/include/c++/4.9.3/tr1/unordered_set.h
-#usr/include/c++/4.9.3/tr1/utility
-#usr/include/c++/4.9.3/tr1/wchar.h
-#usr/include/c++/4.9.3/tr1/wctype.h
-#usr/include/c++/4.9.3/tr2
-#usr/include/c++/4.9.3/tr2/bool_set
-#usr/include/c++/4.9.3/tr2/bool_set.tcc
-#usr/include/c++/4.9.3/tr2/dynamic_bitset
-#usr/include/c++/4.9.3/tr2/dynamic_bitset.tcc
-#usr/include/c++/4.9.3/tr2/ratio
-#usr/include/c++/4.9.3/tr2/type_traits
-#usr/include/c++/4.9.3/tuple
-#usr/include/c++/4.9.3/type_traits
-#usr/include/c++/4.9.3/typeindex
-#usr/include/c++/4.9.3/typeinfo
-#usr/include/c++/4.9.3/unordered_map
-#usr/include/c++/4.9.3/unordered_set
-#usr/include/c++/4.9.3/utility
-#usr/include/c++/4.9.3/valarray
-#usr/include/c++/4.9.3/vector
+#usr/include/c++/4.9.4
+#usr/include/c++/4.9.4/algorithm
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/atomic_word.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/basic_file.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/c++allocator.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/c++config.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/c++io.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/c++locale.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/cpu_defines.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/ctype_base.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/ctype_inline.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/cxxabi_tweaks.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/error_constants.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/extc++.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/gthr-default.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/gthr-posix.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/gthr-single.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/gthr.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/messages_members.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/opt_random.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/os_defines.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/stdc++.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/stdtr1c++.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/bits/time_members.h
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/ext
+#usr/include/c++/4.9.4/armv5tel-unknown-linux-gnueabi/ext/opt_random.h
+#usr/include/c++/4.9.4/array
+#usr/include/c++/4.9.4/atomic
+#usr/include/c++/4.9.4/backward
+#usr/include/c++/4.9.4/backward/auto_ptr.h
+#usr/include/c++/4.9.4/backward/backward_warning.h
+#usr/include/c++/4.9.4/backward/binders.h
+#usr/include/c++/4.9.4/backward/hash_fun.h
+#usr/include/c++/4.9.4/backward/hash_map
+#usr/include/c++/4.9.4/backward/hash_set
+#usr/include/c++/4.9.4/backward/hashtable.h
+#usr/include/c++/4.9.4/backward/strstream
+#usr/include/c++/4.9.4/bits
+#usr/include/c++/4.9.4/bits/algorithmfwd.h
+#usr/include/c++/4.9.4/bits/alloc_traits.h
+#usr/include/c++/4.9.4/bits/allocator.h
+#usr/include/c++/4.9.4/bits/atomic_base.h
+#usr/include/c++/4.9.4/bits/atomic_lockfree_defines.h
+#usr/include/c++/4.9.4/bits/basic_ios.h
+#usr/include/c++/4.9.4/bits/basic_ios.tcc
+#usr/include/c++/4.9.4/bits/basic_string.h
+#usr/include/c++/4.9.4/bits/basic_string.tcc
+#usr/include/c++/4.9.4/bits/boost_concept_check.h
+#usr/include/c++/4.9.4/bits/c++0x_warning.h
+#usr/include/c++/4.9.4/bits/c++14_warning.h
+#usr/include/c++/4.9.4/bits/char_traits.h
+#usr/include/c++/4.9.4/bits/codecvt.h
+#usr/include/c++/4.9.4/bits/concept_check.h
+#usr/include/c++/4.9.4/bits/cpp_type_traits.h
+#usr/include/c++/4.9.4/bits/cxxabi_forced.h
+#usr/include/c++/4.9.4/bits/deque.tcc
+#usr/include/c++/4.9.4/bits/enable_special_members.h
+#usr/include/c++/4.9.4/bits/exception_defines.h
+#usr/include/c++/4.9.4/bits/exception_ptr.h
+#usr/include/c++/4.9.4/bits/forward_list.h
+#usr/include/c++/4.9.4/bits/forward_list.tcc
+#usr/include/c++/4.9.4/bits/fstream.tcc
+#usr/include/c++/4.9.4/bits/functexcept.h
+#usr/include/c++/4.9.4/bits/functional_hash.h
+#usr/include/c++/4.9.4/bits/gslice.h
+#usr/include/c++/4.9.4/bits/gslice_array.h
+#usr/include/c++/4.9.4/bits/hash_bytes.h
+#usr/include/c++/4.9.4/bits/hashtable.h
+#usr/include/c++/4.9.4/bits/hashtable_policy.h
+#usr/include/c++/4.9.4/bits/indirect_array.h
+#usr/include/c++/4.9.4/bits/ios_base.h
+#usr/include/c++/4.9.4/bits/istream.tcc
+#usr/include/c++/4.9.4/bits/list.tcc
+#usr/include/c++/4.9.4/bits/locale_classes.h
+#usr/include/c++/4.9.4/bits/locale_classes.tcc
+#usr/include/c++/4.9.4/bits/locale_facets.h
+#usr/include/c++/4.9.4/bits/locale_facets.tcc
+#usr/include/c++/4.9.4/bits/locale_facets_nonio.h
+#usr/include/c++/4.9.4/bits/locale_facets_nonio.tcc
+#usr/include/c++/4.9.4/bits/localefwd.h
+#usr/include/c++/4.9.4/bits/mask_array.h
+#usr/include/c++/4.9.4/bits/memoryfwd.h
+#usr/include/c++/4.9.4/bits/move.h
+#usr/include/c++/4.9.4/bits/nested_exception.h
+#usr/include/c++/4.9.4/bits/ostream.tcc
+#usr/include/c++/4.9.4/bits/ostream_insert.h
+#usr/include/c++/4.9.4/bits/parse_numbers.h
+#usr/include/c++/4.9.4/bits/postypes.h
+#usr/include/c++/4.9.4/bits/predefined_ops.h
+#usr/include/c++/4.9.4/bits/ptr_traits.h
+#usr/include/c++/4.9.4/bits/random.h
+#usr/include/c++/4.9.4/bits/random.tcc
+#usr/include/c++/4.9.4/bits/range_access.h
+#usr/include/c++/4.9.4/bits/regex.h
+#usr/include/c++/4.9.4/bits/regex.tcc
+#usr/include/c++/4.9.4/bits/regex_automaton.h
+#usr/include/c++/4.9.4/bits/regex_automaton.tcc
+#usr/include/c++/4.9.4/bits/regex_compiler.h
+#usr/include/c++/4.9.4/bits/regex_compiler.tcc
+#usr/include/c++/4.9.4/bits/regex_constants.h
+#usr/include/c++/4.9.4/bits/regex_error.h
+#usr/include/c++/4.9.4/bits/regex_executor.h
+#usr/include/c++/4.9.4/bits/regex_executor.tcc
+#usr/include/c++/4.9.4/bits/regex_scanner.h
+#usr/include/c++/4.9.4/bits/regex_scanner.tcc
+#usr/include/c++/4.9.4/bits/shared_ptr.h
+#usr/include/c++/4.9.4/bits/shared_ptr_base.h
+#usr/include/c++/4.9.4/bits/slice_array.h
+#usr/include/c++/4.9.4/bits/sstream.tcc
+#usr/include/c++/4.9.4/bits/stl_algo.h
+#usr/include/c++/4.9.4/bits/stl_algobase.h
+#usr/include/c++/4.9.4/bits/stl_bvector.h
+#usr/include/c++/4.9.4/bits/stl_construct.h
+#usr/include/c++/4.9.4/bits/stl_deque.h
+#usr/include/c++/4.9.4/bits/stl_function.h
+#usr/include/c++/4.9.4/bits/stl_heap.h
+#usr/include/c++/4.9.4/bits/stl_iterator.h
+#usr/include/c++/4.9.4/bits/stl_iterator_base_funcs.h
+#usr/include/c++/4.9.4/bits/stl_iterator_base_types.h
+#usr/include/c++/4.9.4/bits/stl_list.h
+#usr/include/c++/4.9.4/bits/stl_map.h
+#usr/include/c++/4.9.4/bits/stl_multimap.h
+#usr/include/c++/4.9.4/bits/stl_multiset.h
+#usr/include/c++/4.9.4/bits/stl_numeric.h
+#usr/include/c++/4.9.4/bits/stl_pair.h
+#usr/include/c++/4.9.4/bits/stl_queue.h
+#usr/include/c++/4.9.4/bits/stl_raw_storage_iter.h
+#usr/include/c++/4.9.4/bits/stl_relops.h
+#usr/include/c++/4.9.4/bits/stl_set.h
+#usr/include/c++/4.9.4/bits/stl_stack.h
+#usr/include/c++/4.9.4/bits/stl_tempbuf.h
+#usr/include/c++/4.9.4/bits/stl_tree.h
+#usr/include/c++/4.9.4/bits/stl_uninitialized.h
+#usr/include/c++/4.9.4/bits/stl_vector.h
+#usr/include/c++/4.9.4/bits/stream_iterator.h
+#usr/include/c++/4.9.4/bits/streambuf.tcc
+#usr/include/c++/4.9.4/bits/streambuf_iterator.h
+#usr/include/c++/4.9.4/bits/stringfwd.h
+#usr/include/c++/4.9.4/bits/unique_ptr.h
+#usr/include/c++/4.9.4/bits/unordered_map.h
+#usr/include/c++/4.9.4/bits/unordered_set.h
+#usr/include/c++/4.9.4/bits/uses_allocator.h
+#usr/include/c++/4.9.4/bits/valarray_after.h
+#usr/include/c++/4.9.4/bits/valarray_array.h
+#usr/include/c++/4.9.4/bits/valarray_array.tcc
+#usr/include/c++/4.9.4/bits/valarray_before.h
+#usr/include/c++/4.9.4/bits/vector.tcc
+#usr/include/c++/4.9.4/bitset
+#usr/include/c++/4.9.4/cassert
+#usr/include/c++/4.9.4/ccomplex
+#usr/include/c++/4.9.4/cctype
+#usr/include/c++/4.9.4/cerrno
+#usr/include/c++/4.9.4/cfenv
+#usr/include/c++/4.9.4/cfloat
+#usr/include/c++/4.9.4/chrono
+#usr/include/c++/4.9.4/cinttypes
+#usr/include/c++/4.9.4/ciso646
+#usr/include/c++/4.9.4/climits
+#usr/include/c++/4.9.4/clocale
+#usr/include/c++/4.9.4/cmath
+#usr/include/c++/4.9.4/complex
+#usr/include/c++/4.9.4/complex.h
+#usr/include/c++/4.9.4/condition_variable
+#usr/include/c++/4.9.4/csetjmp
+#usr/include/c++/4.9.4/csignal
+#usr/include/c++/4.9.4/cstdalign
+#usr/include/c++/4.9.4/cstdarg
+#usr/include/c++/4.9.4/cstdbool
+#usr/include/c++/4.9.4/cstddef
+#usr/include/c++/4.9.4/cstdint
+#usr/include/c++/4.9.4/cstdio
+#usr/include/c++/4.9.4/cstdlib
+#usr/include/c++/4.9.4/cstring
+#usr/include/c++/4.9.4/ctgmath
+#usr/include/c++/4.9.4/ctime
+#usr/include/c++/4.9.4/cwchar
+#usr/include/c++/4.9.4/cwctype
+#usr/include/c++/4.9.4/cxxabi.h
+#usr/include/c++/4.9.4/debug
+#usr/include/c++/4.9.4/debug/array
+#usr/include/c++/4.9.4/debug/bitset
+#usr/include/c++/4.9.4/debug/debug.h
+#usr/include/c++/4.9.4/debug/deque
+#usr/include/c++/4.9.4/debug/formatter.h
+#usr/include/c++/4.9.4/debug/forward_list
+#usr/include/c++/4.9.4/debug/functions.h
+#usr/include/c++/4.9.4/debug/list
+#usr/include/c++/4.9.4/debug/macros.h
+#usr/include/c++/4.9.4/debug/map
+#usr/include/c++/4.9.4/debug/map.h
+#usr/include/c++/4.9.4/debug/multimap.h
+#usr/include/c++/4.9.4/debug/multiset.h
+#usr/include/c++/4.9.4/debug/safe_base.h
+#usr/include/c++/4.9.4/debug/safe_iterator.h
+#usr/include/c++/4.9.4/debug/safe_iterator.tcc
+#usr/include/c++/4.9.4/debug/safe_local_iterator.h
+#usr/include/c++/4.9.4/debug/safe_local_iterator.tcc
+#usr/include/c++/4.9.4/debug/safe_sequence.h
+#usr/include/c++/4.9.4/debug/safe_sequence.tcc
+#usr/include/c++/4.9.4/debug/safe_unordered_base.h
+#usr/include/c++/4.9.4/debug/safe_unordered_container.h
+#usr/include/c++/4.9.4/debug/safe_unordered_container.tcc
+#usr/include/c++/4.9.4/debug/set
+#usr/include/c++/4.9.4/debug/set.h
+#usr/include/c++/4.9.4/debug/string
+#usr/include/c++/4.9.4/debug/unordered_map
+#usr/include/c++/4.9.4/debug/unordered_set
+#usr/include/c++/4.9.4/debug/vector
+#usr/include/c++/4.9.4/decimal
+#usr/include/c++/4.9.4/decimal/decimal
+#usr/include/c++/4.9.4/decimal/decimal.h
+#usr/include/c++/4.9.4/deque
+#usr/include/c++/4.9.4/exception
+#usr/include/c++/4.9.4/experimental
+#usr/include/c++/4.9.4/experimental/optional
+#usr/include/c++/4.9.4/experimental/string_view
+#usr/include/c++/4.9.4/experimental/string_view.tcc
+#usr/include/c++/4.9.4/ext
+#usr/include/c++/4.9.4/ext/algorithm
+#usr/include/c++/4.9.4/ext/aligned_buffer.h
+#usr/include/c++/4.9.4/ext/alloc_traits.h
+#usr/include/c++/4.9.4/ext/array_allocator.h
+#usr/include/c++/4.9.4/ext/atomicity.h
+#usr/include/c++/4.9.4/ext/bitmap_allocator.h
+#usr/include/c++/4.9.4/ext/cast.h
+#usr/include/c++/4.9.4/ext/cmath
+#usr/include/c++/4.9.4/ext/codecvt_specializations.h
+#usr/include/c++/4.9.4/ext/concurrence.h
+#usr/include/c++/4.9.4/ext/debug_allocator.h
+#usr/include/c++/4.9.4/ext/enc_filebuf.h
+#usr/include/c++/4.9.4/ext/extptr_allocator.h
+#usr/include/c++/4.9.4/ext/functional
+#usr/include/c++/4.9.4/ext/hash_map
+#usr/include/c++/4.9.4/ext/hash_set
+#usr/include/c++/4.9.4/ext/iterator
+#usr/include/c++/4.9.4/ext/malloc_allocator.h
+#usr/include/c++/4.9.4/ext/memory
+#usr/include/c++/4.9.4/ext/mt_allocator.h
+#usr/include/c++/4.9.4/ext/new_allocator.h
+#usr/include/c++/4.9.4/ext/numeric
+#usr/include/c++/4.9.4/ext/numeric_traits.h
+#usr/include/c++/4.9.4/ext/pb_ds
+#usr/include/c++/4.9.4/ext/pb_ds/assoc_container.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/branch_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cond_dealtor.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/container_base_dispatch.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/debug_map_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/standard_policies.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_trace_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/type_utils.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/types_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/exception.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/hash_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/list_update_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/priority_queue.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/tag_and_trait.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/tree_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/trie_policy.hpp
+#usr/include/c++/4.9.4/ext/pod_char_traits.h
+#usr/include/c++/4.9.4/ext/pointer.h
+#usr/include/c++/4.9.4/ext/pool_allocator.h
+#usr/include/c++/4.9.4/ext/random
+#usr/include/c++/4.9.4/ext/random.tcc
+#usr/include/c++/4.9.4/ext/rb_tree
+#usr/include/c++/4.9.4/ext/rc_string_base.h
+#usr/include/c++/4.9.4/ext/rope
+#usr/include/c++/4.9.4/ext/ropeimpl.h
+#usr/include/c++/4.9.4/ext/slist
+#usr/include/c++/4.9.4/ext/sso_string_base.h
+#usr/include/c++/4.9.4/ext/stdio_filebuf.h
+#usr/include/c++/4.9.4/ext/stdio_sync_filebuf.h
+#usr/include/c++/4.9.4/ext/string_conversions.h
+#usr/include/c++/4.9.4/ext/throw_allocator.h
+#usr/include/c++/4.9.4/ext/type_traits.h
+#usr/include/c++/4.9.4/ext/typelist.h
+#usr/include/c++/4.9.4/ext/vstring.h
+#usr/include/c++/4.9.4/ext/vstring.tcc
+#usr/include/c++/4.9.4/ext/vstring_fwd.h
+#usr/include/c++/4.9.4/ext/vstring_util.h
+#usr/include/c++/4.9.4/fenv.h
+#usr/include/c++/4.9.4/forward_list
+#usr/include/c++/4.9.4/fstream
+#usr/include/c++/4.9.4/functional
+#usr/include/c++/4.9.4/future
+#usr/include/c++/4.9.4/initializer_list
+#usr/include/c++/4.9.4/iomanip
+#usr/include/c++/4.9.4/ios
+#usr/include/c++/4.9.4/iosfwd
+#usr/include/c++/4.9.4/iostream
+#usr/include/c++/4.9.4/istream
+#usr/include/c++/4.9.4/iterator
+#usr/include/c++/4.9.4/limits
+#usr/include/c++/4.9.4/list
+#usr/include/c++/4.9.4/locale
+#usr/include/c++/4.9.4/map
+#usr/include/c++/4.9.4/memory
+#usr/include/c++/4.9.4/mutex
+#usr/include/c++/4.9.4/new
+#usr/include/c++/4.9.4/numeric
+#usr/include/c++/4.9.4/ostream
+#usr/include/c++/4.9.4/parallel
+#usr/include/c++/4.9.4/parallel/algo.h
+#usr/include/c++/4.9.4/parallel/algobase.h
+#usr/include/c++/4.9.4/parallel/algorithm
+#usr/include/c++/4.9.4/parallel/algorithmfwd.h
+#usr/include/c++/4.9.4/parallel/balanced_quicksort.h
+#usr/include/c++/4.9.4/parallel/base.h
+#usr/include/c++/4.9.4/parallel/basic_iterator.h
+#usr/include/c++/4.9.4/parallel/checkers.h
+#usr/include/c++/4.9.4/parallel/compatibility.h
+#usr/include/c++/4.9.4/parallel/compiletime_settings.h
+#usr/include/c++/4.9.4/parallel/equally_split.h
+#usr/include/c++/4.9.4/parallel/features.h
+#usr/include/c++/4.9.4/parallel/find.h
+#usr/include/c++/4.9.4/parallel/find_selectors.h
+#usr/include/c++/4.9.4/parallel/for_each.h
+#usr/include/c++/4.9.4/parallel/for_each_selectors.h
+#usr/include/c++/4.9.4/parallel/iterator.h
+#usr/include/c++/4.9.4/parallel/list_partition.h
+#usr/include/c++/4.9.4/parallel/losertree.h
+#usr/include/c++/4.9.4/parallel/merge.h
+#usr/include/c++/4.9.4/parallel/multiseq_selection.h
+#usr/include/c++/4.9.4/parallel/multiway_merge.h
+#usr/include/c++/4.9.4/parallel/multiway_mergesort.h
+#usr/include/c++/4.9.4/parallel/numeric
+#usr/include/c++/4.9.4/parallel/numericfwd.h
+#usr/include/c++/4.9.4/parallel/omp_loop.h
+#usr/include/c++/4.9.4/parallel/omp_loop_static.h
+#usr/include/c++/4.9.4/parallel/par_loop.h
+#usr/include/c++/4.9.4/parallel/parallel.h
+#usr/include/c++/4.9.4/parallel/partial_sum.h
+#usr/include/c++/4.9.4/parallel/partition.h
+#usr/include/c++/4.9.4/parallel/queue.h
+#usr/include/c++/4.9.4/parallel/quicksort.h
+#usr/include/c++/4.9.4/parallel/random_number.h
+#usr/include/c++/4.9.4/parallel/random_shuffle.h
+#usr/include/c++/4.9.4/parallel/search.h
+#usr/include/c++/4.9.4/parallel/set_operations.h
+#usr/include/c++/4.9.4/parallel/settings.h
+#usr/include/c++/4.9.4/parallel/sort.h
+#usr/include/c++/4.9.4/parallel/tags.h
+#usr/include/c++/4.9.4/parallel/types.h
+#usr/include/c++/4.9.4/parallel/unique_copy.h
+#usr/include/c++/4.9.4/parallel/workstealing.h
+#usr/include/c++/4.9.4/profile
+#usr/include/c++/4.9.4/profile/array
+#usr/include/c++/4.9.4/profile/base.h
+#usr/include/c++/4.9.4/profile/bitset
+#usr/include/c++/4.9.4/profile/deque
+#usr/include/c++/4.9.4/profile/forward_list
+#usr/include/c++/4.9.4/profile/impl
+#usr/include/c++/4.9.4/profile/impl/profiler.h
+#usr/include/c++/4.9.4/profile/impl/profiler_algos.h
+#usr/include/c++/4.9.4/profile/impl/profiler_container_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_hash_func.h
+#usr/include/c++/4.9.4/profile/impl/profiler_hashtable_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_list_to_slist.h
+#usr/include/c++/4.9.4/profile/impl/profiler_list_to_vector.h
+#usr/include/c++/4.9.4/profile/impl/profiler_map_to_unordered_map.h
+#usr/include/c++/4.9.4/profile/impl/profiler_node.h
+#usr/include/c++/4.9.4/profile/impl/profiler_state.h
+#usr/include/c++/4.9.4/profile/impl/profiler_trace.h
+#usr/include/c++/4.9.4/profile/impl/profiler_vector_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_vector_to_list.h
+#usr/include/c++/4.9.4/profile/iterator_tracker.h
+#usr/include/c++/4.9.4/profile/list
+#usr/include/c++/4.9.4/profile/map
+#usr/include/c++/4.9.4/profile/map.h
+#usr/include/c++/4.9.4/profile/multimap.h
+#usr/include/c++/4.9.4/profile/multiset.h
+#usr/include/c++/4.9.4/profile/set
+#usr/include/c++/4.9.4/profile/set.h
+#usr/include/c++/4.9.4/profile/unordered_base.h
+#usr/include/c++/4.9.4/profile/unordered_map
+#usr/include/c++/4.9.4/profile/unordered_set
+#usr/include/c++/4.9.4/profile/vector
+#usr/include/c++/4.9.4/queue
+#usr/include/c++/4.9.4/random
+#usr/include/c++/4.9.4/ratio
+#usr/include/c++/4.9.4/regex
+#usr/include/c++/4.9.4/scoped_allocator
+#usr/include/c++/4.9.4/set
+#usr/include/c++/4.9.4/shared_mutex
+#usr/include/c++/4.9.4/sstream
+#usr/include/c++/4.9.4/stack
+#usr/include/c++/4.9.4/stdexcept
+#usr/include/c++/4.9.4/streambuf
+#usr/include/c++/4.9.4/string
+#usr/include/c++/4.9.4/system_error
+#usr/include/c++/4.9.4/tgmath.h
+#usr/include/c++/4.9.4/thread
+#usr/include/c++/4.9.4/tr1
+#usr/include/c++/4.9.4/tr1/array
+#usr/include/c++/4.9.4/tr1/bessel_function.tcc
+#usr/include/c++/4.9.4/tr1/beta_function.tcc
+#usr/include/c++/4.9.4/tr1/ccomplex
+#usr/include/c++/4.9.4/tr1/cctype
+#usr/include/c++/4.9.4/tr1/cfenv
+#usr/include/c++/4.9.4/tr1/cfloat
+#usr/include/c++/4.9.4/tr1/cinttypes
+#usr/include/c++/4.9.4/tr1/climits
+#usr/include/c++/4.9.4/tr1/cmath
+#usr/include/c++/4.9.4/tr1/complex
+#usr/include/c++/4.9.4/tr1/complex.h
+#usr/include/c++/4.9.4/tr1/cstdarg
+#usr/include/c++/4.9.4/tr1/cstdbool
+#usr/include/c++/4.9.4/tr1/cstdint
+#usr/include/c++/4.9.4/tr1/cstdio
+#usr/include/c++/4.9.4/tr1/cstdlib
+#usr/include/c++/4.9.4/tr1/ctgmath
+#usr/include/c++/4.9.4/tr1/ctime
+#usr/include/c++/4.9.4/tr1/ctype.h
+#usr/include/c++/4.9.4/tr1/cwchar
+#usr/include/c++/4.9.4/tr1/cwctype
+#usr/include/c++/4.9.4/tr1/ell_integral.tcc
+#usr/include/c++/4.9.4/tr1/exp_integral.tcc
+#usr/include/c++/4.9.4/tr1/fenv.h
+#usr/include/c++/4.9.4/tr1/float.h
+#usr/include/c++/4.9.4/tr1/functional
+#usr/include/c++/4.9.4/tr1/functional_hash.h
+#usr/include/c++/4.9.4/tr1/gamma.tcc
+#usr/include/c++/4.9.4/tr1/hashtable.h
+#usr/include/c++/4.9.4/tr1/hashtable_policy.h
+#usr/include/c++/4.9.4/tr1/hypergeometric.tcc
+#usr/include/c++/4.9.4/tr1/inttypes.h
+#usr/include/c++/4.9.4/tr1/legendre_function.tcc
+#usr/include/c++/4.9.4/tr1/limits.h
+#usr/include/c++/4.9.4/tr1/math.h
+#usr/include/c++/4.9.4/tr1/memory
+#usr/include/c++/4.9.4/tr1/modified_bessel_func.tcc
+#usr/include/c++/4.9.4/tr1/poly_hermite.tcc
+#usr/include/c++/4.9.4/tr1/poly_laguerre.tcc
+#usr/include/c++/4.9.4/tr1/random
+#usr/include/c++/4.9.4/tr1/random.h
+#usr/include/c++/4.9.4/tr1/random.tcc
+#usr/include/c++/4.9.4/tr1/regex
+#usr/include/c++/4.9.4/tr1/riemann_zeta.tcc
+#usr/include/c++/4.9.4/tr1/shared_ptr.h
+#usr/include/c++/4.9.4/tr1/special_function_util.h
+#usr/include/c++/4.9.4/tr1/stdarg.h
+#usr/include/c++/4.9.4/tr1/stdbool.h
+#usr/include/c++/4.9.4/tr1/stdint.h
+#usr/include/c++/4.9.4/tr1/stdio.h
+#usr/include/c++/4.9.4/tr1/stdlib.h
+#usr/include/c++/4.9.4/tr1/tgmath.h
+#usr/include/c++/4.9.4/tr1/tuple
+#usr/include/c++/4.9.4/tr1/type_traits
+#usr/include/c++/4.9.4/tr1/unordered_map
+#usr/include/c++/4.9.4/tr1/unordered_map.h
+#usr/include/c++/4.9.4/tr1/unordered_set
+#usr/include/c++/4.9.4/tr1/unordered_set.h
+#usr/include/c++/4.9.4/tr1/utility
+#usr/include/c++/4.9.4/tr1/wchar.h
+#usr/include/c++/4.9.4/tr1/wctype.h
+#usr/include/c++/4.9.4/tr2
+#usr/include/c++/4.9.4/tr2/bool_set
+#usr/include/c++/4.9.4/tr2/bool_set.tcc
+#usr/include/c++/4.9.4/tr2/dynamic_bitset
+#usr/include/c++/4.9.4/tr2/dynamic_bitset.tcc
+#usr/include/c++/4.9.4/tr2/ratio
+#usr/include/c++/4.9.4/tr2/type_traits
+#usr/include/c++/4.9.4/tuple
+#usr/include/c++/4.9.4/type_traits
+#usr/include/c++/4.9.4/typeindex
+#usr/include/c++/4.9.4/typeinfo
+#usr/include/c++/4.9.4/unordered_map
+#usr/include/c++/4.9.4/unordered_set
+#usr/include/c++/4.9.4/utility
+#usr/include/c++/4.9.4/valarray
+#usr/include/c++/4.9.4/vector
 #usr/lib/gcc
 #usr/lib/gcc/armv5tel-unknown-linux-gnueabi
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/cc1
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/cc1plus
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/collect2
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/crtbegin.o
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/crtbeginS.o
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/crtbeginT.o
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/crtend.o
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/crtendS.o
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/finclude
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include-fixed
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include-fixed/README
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include-fixed/limits.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include-fixed/syslimits.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/arm_acle.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/arm_neon.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/float.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/iso646.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/mmintrin.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/omp.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/sanitizer
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/sanitizer/asan_interface.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/sanitizer/common_interface_defs.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/sanitizer/lsan_interface.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/ssp
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/ssp/ssp.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/ssp/stdio.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/ssp/string.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/ssp/unistd.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdalign.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdarg.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdatomic.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdbool.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stddef.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdfix.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdint-gcc.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdint.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/stdnoreturn.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/unwind-arm-common.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/unwind.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/include/varargs.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/fixinc.sh
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/fixinc_list
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/fixincl
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/gsyslimits.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/include
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/include/README
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/include/limits.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/macro_list
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/mkheaders
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/mkheaders.conf
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/install-tools/mkinstalldirs
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/libgcc.a
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/libgcc_eh.a
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/libgcov.a
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/liblto_plugin.la
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/liblto_plugin.so
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/liblto_plugin.so.0
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/liblto_plugin.so.0.0.0
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/lto-wrapper
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/lto1
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/gengtype
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/gtype.state
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ada
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ada/gcc-interface
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ada/gcc-interface/ada-tree.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/alias.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/all-tree.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/alloc-pool.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ansidecl.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/attribs.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/auto-host.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/b-header-vars
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/basic-block.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/bitmap.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/builtins.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/bversion.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-family
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-family/c-common.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-family/c-common.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-family/c-objc.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-family/c-pragma.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-family/c-pretty-print.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/c-tree.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/calls.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cfg-flags.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cfgexpand.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cfghooks.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cfgloop.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cgraph.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cif-code.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cilk-builtins.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cilkplus.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/aarch-common-protos.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/aout.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/arm-cores.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/arm-opts.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/arm-protos.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/arm.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/bpabi.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/elf.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/linux-eabi.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/linux-elf.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/arm/linux-gas.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/dbxelf.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/elfos.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/glibc-stdint.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/gnu-user.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/initfini-array.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/linux-android.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/linux-protos.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/linux.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/config/vxworks-dummy.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/configargs.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/context.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/coretypes.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cp
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cp/cp-tree.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cp/cp-tree.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cp/cxx-pretty-print.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cp/name-lookup.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cp/type-utils.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cppdefault.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/cpplib.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/debug.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/defaults.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/df.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/diagnostic-color.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/diagnostic-core.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/diagnostic.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/diagnostic.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/double-int.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/dumpfile.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/emit-rtl.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/except.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/filenames.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/fixed-value.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/flag-types.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/flags.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/fold-const.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/function.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gcc-plugin.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gcc-symtab.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/genrtl.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ggc.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-builder.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-expr.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-fold.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-iterator.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-low.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-pretty-print.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-ssa.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple-walk.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimple.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimplify-me.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gimplify.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gsstruct.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gtm-builtins.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/gtype-desc.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/hard-reg-set.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/hash-table.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/hashtab.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/highlev-plugin-common.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/hwint.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/incpath.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/input.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/insn-codes.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/insn-constants.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/insn-flags.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/insn-modes.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/insn-notes.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/internal-fn.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/internal-fn.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/intl.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ipa-prop.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ipa-ref-inline.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ipa-ref.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ipa-reference.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ipa-utils.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/is-a.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/java
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/java/java-tree.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/langhooks.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/libiberty.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/line-map.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/machmode.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/md5.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/mode-classes.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/objc
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/objc/objc-tree.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/obstack.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/omp-builtins.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/options.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/opts.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/output.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/params.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/params.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/pass-instances.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/pass_manager.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/plugin-api.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/plugin-version.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/plugin.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/plugin.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/pointer-set.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/predict.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/predict.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/prefix.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/pretty-print.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/print-rtl.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/print-tree.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/real.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/realmpfr.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/reg-notes.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/regset.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/resource.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/rtl.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/rtl.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/safe-ctype.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/sanitizer.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/sbitmap.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/splay-tree.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/ssa-iterators.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/statistics.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/stmt.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/stor-layout.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/stringpool.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/symtab.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/sync-builtins.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/system.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/target-hooks-macros.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/target.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/target.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/timevar.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/timevar.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tm-preds.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tm.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tm_p.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/toplev.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-cfg.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-cfgcleanup.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-check.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-core.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-dfa.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-dump.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-eh.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-hasher.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-inline.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-into-ssa.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-iterator.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-nested.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-object-size.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-outof-ssa.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-parloops.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-pass.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-phinodes.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-pretty-print.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-address.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-alias.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-coalesce.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-dom.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-loop-ivopts.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-loop-manip.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-loop-niter.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-loop.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-operands.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-sccvn.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-ter.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-threadedge.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa-threadupdate.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssa.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree-ssanames.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/tree.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/treestruct.def
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/varasm.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/vec.h
-#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.3/plugin/include/version.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/cc1
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/cc1plus
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/collect2
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/crtbegin.o
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/crtbeginS.o
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/crtbeginT.o
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/crtend.o
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/crtendS.o
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/finclude
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include-fixed
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include-fixed/README
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include-fixed/limits.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include-fixed/syslimits.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/arm_acle.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/arm_neon.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/float.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/iso646.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/mmintrin.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/omp.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/sanitizer
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/sanitizer/asan_interface.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/sanitizer/common_interface_defs.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/sanitizer/lsan_interface.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/ssp
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/ssp/ssp.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/ssp/stdio.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/ssp/string.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/ssp/unistd.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdalign.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdarg.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdatomic.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdbool.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stddef.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdfix.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdint-gcc.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdint.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/stdnoreturn.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/unwind-arm-common.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/unwind.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/include/varargs.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/fixinc.sh
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/fixinc_list
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/fixincl
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/gsyslimits.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/include
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/include/README
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/include/limits.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/macro_list
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/mkheaders
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/mkheaders.conf
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/install-tools/mkinstalldirs
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/libgcc.a
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/libgcc_eh.a
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/libgcov.a
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/liblto_plugin.la
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/liblto_plugin.so
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/liblto_plugin.so.0
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/liblto_plugin.so.0.0.0
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/lto-wrapper
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/lto1
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/gengtype
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/gtype.state
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ada
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ada/gcc-interface
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ada/gcc-interface/ada-tree.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/alias.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/all-tree.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/alloc-pool.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ansidecl.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/attribs.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/auto-host.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/b-header-vars
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/basic-block.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/bitmap.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/builtins.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/bversion.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-family
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-family/c-common.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-family/c-common.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-family/c-objc.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-family/c-pragma.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-family/c-pretty-print.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/c-tree.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/calls.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cfg-flags.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cfgexpand.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cfghooks.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cfgloop.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cgraph.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cif-code.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cilk-builtins.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cilkplus.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/aarch-common-protos.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/aout.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/arm-cores.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/arm-opts.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/arm-protos.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/arm.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/bpabi.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/elf.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/linux-eabi.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/linux-elf.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/arm/linux-gas.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/dbxelf.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/elfos.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/glibc-stdint.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/gnu-user.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/initfini-array.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/linux-android.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/linux-protos.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/linux.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/config/vxworks-dummy.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/configargs.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/context.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/coretypes.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cp
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cp/cp-tree.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cp/cp-tree.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cp/cxx-pretty-print.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cp/name-lookup.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cp/type-utils.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cppdefault.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/cpplib.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/debug.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/defaults.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/df.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/diagnostic-color.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/diagnostic-core.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/diagnostic.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/diagnostic.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/double-int.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/dumpfile.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/emit-rtl.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/except.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/filenames.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/fixed-value.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/flag-types.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/flags.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/fold-const.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/function.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gcc-plugin.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gcc-symtab.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/genrtl.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ggc.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-builder.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-expr.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-fold.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-iterator.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-low.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-pretty-print.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-ssa.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple-walk.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimple.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimplify-me.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gimplify.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gsstruct.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gtm-builtins.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/gtype-desc.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/hard-reg-set.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/hash-table.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/hashtab.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/highlev-plugin-common.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/hwint.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/incpath.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/input.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/insn-codes.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/insn-constants.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/insn-flags.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/insn-modes.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/insn-notes.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/internal-fn.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/internal-fn.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/intl.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ipa-prop.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ipa-ref-inline.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ipa-ref.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ipa-reference.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ipa-utils.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/is-a.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/java
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/java/java-tree.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/langhooks.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/libiberty.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/line-map.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/machmode.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/md5.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/mode-classes.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/objc
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/objc/objc-tree.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/obstack.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/omp-builtins.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/options.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/opts.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/output.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/params.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/params.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/pass-instances.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/pass_manager.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/plugin-api.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/plugin-version.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/plugin.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/plugin.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/pointer-set.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/predict.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/predict.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/prefix.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/pretty-print.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/print-rtl.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/print-tree.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/real.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/realmpfr.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/reg-notes.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/regset.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/resource.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/rtl.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/rtl.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/safe-ctype.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/sanitizer.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/sbitmap.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/splay-tree.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/ssa-iterators.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/statistics.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/stmt.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/stor-layout.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/stringpool.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/symtab.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/sync-builtins.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/system.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/target-hooks-macros.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/target.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/target.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/timevar.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/timevar.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tm-preds.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tm.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tm_p.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/toplev.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-cfg.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-cfgcleanup.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-check.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-core.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-dfa.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-dump.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-eh.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-hasher.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-inline.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-into-ssa.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-iterator.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-nested.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-object-size.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-outof-ssa.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-parloops.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-pass.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-phinodes.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-pretty-print.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-address.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-alias.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-coalesce.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-dom.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-loop-ivopts.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-loop-manip.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-loop-niter.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-loop.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-operands.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-sccvn.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-ter.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-threadedge.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa-threadupdate.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssa.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree-ssanames.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/tree.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/treestruct.def
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/varasm.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/vec.h
+#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.9.4/plugin/include/version.h
 #usr/lib/libasan.a
 #usr/lib/libasan.la
 #usr/lib/libasan.so
@@ -1067,13 +1067,13 @@ usr/lib/libstdc++.so.6.0.20
 #usr/lib/libubsan.so
 usr/lib/libubsan.so.0
 usr/lib/libubsan.so.0.0.0
-#usr/share/gcc-4.9.3
-#usr/share/gcc-4.9.3/python
-#usr/share/gcc-4.9.3/python/libstdcxx
-#usr/share/gcc-4.9.3/python/libstdcxx/__init__.py
-#usr/share/gcc-4.9.3/python/libstdcxx/v6
-#usr/share/gcc-4.9.3/python/libstdcxx/v6/__init__.py
-#usr/share/gcc-4.9.3/python/libstdcxx/v6/printers.py
+#usr/share/gcc-4.9.4
+#usr/share/gcc-4.9.4/python
+#usr/share/gcc-4.9.4/python/libstdcxx
+#usr/share/gcc-4.9.4/python/libstdcxx/__init__.py
+#usr/share/gcc-4.9.4/python/libstdcxx/v6
+#usr/share/gcc-4.9.4/python/libstdcxx/v6/__init__.py
+#usr/share/gcc-4.9.4/python/libstdcxx/v6/printers.py
 #usr/share/info/cpp.info
 #usr/share/info/cppinternals.info
 #usr/share/info/gcc.info
index de549fcf448148f9d0bcca30b92e494b9ef1d406..919b0845aadce0b7bba495c62884ef9c1c7b5442 100644 (file)
@@ -4,12 +4,12 @@
 #usr/lib/libgmp.la
 #usr/lib/libgmp.so
 usr/lib/libgmp.so.10
-usr/lib/libgmp.so.10.3.0
+usr/lib/libgmp.so.10.3.2
 #usr/lib/libgmpxx.a
 #usr/lib/libgmpxx.la
 #usr/lib/libgmpxx.so
 usr/lib/libgmpxx.so.4
-usr/lib/libgmpxx.so.4.5.0
+usr/lib/libgmpxx.so.4.5.2
 #usr/share/info/gmp.info
 #usr/share/info/gmp.info-1
 #usr/share/info/gmp.info-2
index 53bb1e0aa2bba46f04596d5da2c711d6e809bda6..26ca6f376f2b8b3f0826036cdcfa3412f448b01f 100644 (file)
@@ -1,32 +1,28 @@
 bin/cpio
-bin/mt
 #usr/share/info/cpio.info
 #usr/share/locale/da/LC_MESSAGES/cpio.mo
 #usr/share/locale/de/LC_MESSAGES/cpio.mo
 #usr/share/locale/es/LC_MESSAGES/cpio.mo
 #usr/share/locale/fi/LC_MESSAGES/cpio.mo
 #usr/share/locale/fr/LC_MESSAGES/cpio.mo
-#usr/share/locale/ga
-#usr/share/locale/ga/LC_MESSAGES
 #usr/share/locale/ga/LC_MESSAGES/cpio.mo
 #usr/share/locale/gl/LC_MESSAGES/cpio.mo
+#usr/share/locale/hr/LC_MESSAGES/cpio.mo
 #usr/share/locale/hu/LC_MESSAGES/cpio.mo
-#usr/share/locale/id
-#usr/share/locale/id/LC_MESSAGES
 #usr/share/locale/id/LC_MESSAGES/cpio.mo
+#usr/share/locale/it/LC_MESSAGES/cpio.mo
+#usr/share/locale/ja/LC_MESSAGES/cpio.mo
 #usr/share/locale/ko/LC_MESSAGES/cpio.mo
 #usr/share/locale/nl/LC_MESSAGES/cpio.mo
 #usr/share/locale/pl/LC_MESSAGES/cpio.mo
 #usr/share/locale/pt_BR/LC_MESSAGES/cpio.mo
 #usr/share/locale/ro/LC_MESSAGES/cpio.mo
 #usr/share/locale/ru/LC_MESSAGES/cpio.mo
+#usr/share/locale/sr/LC_MESSAGES/cpio.mo
 #usr/share/locale/sv/LC_MESSAGES/cpio.mo
 #usr/share/locale/tr/LC_MESSAGES/cpio.mo
 #usr/share/locale/uk/LC_MESSAGES/cpio.mo
-#usr/share/locale/vi
-#usr/share/locale/vi/LC_MESSAGES
 #usr/share/locale/vi/LC_MESSAGES/cpio.mo
 #usr/share/locale/zh_CN/LC_MESSAGES/cpio.mo
 #usr/share/locale/zh_TW/LC_MESSAGES/cpio.mo
 #usr/share/man/man1/cpio.1
-#usr/share/man/man1/mt.1
index bb02f1b8be652b491c5655e7265fd4a165086327..f43effe956a0bd9bfee15baa792cc823386b3730 100644 (file)
@@ -4,5 +4,6 @@ usr/bin/diff
 #usr/bin/sdiff
 #usr/share/info/diffutils.info
 #usr/share/man/man1/cmp.1
+#usr/share/man/man1/diff.1
 #usr/share/man/man1/diff3.1
 #usr/share/man/man1/sdiff.1
index f01fb59fd11650d3cb64dec94827bbffd0d78c04..c470a385ca9691dea9c1c288089fa14b56577ed6 100644 (file)
@@ -1,4 +1,3 @@
-#bin/compress
 bin/gunzip
 bin/gzip
 bin/uncompress
@@ -13,15 +12,15 @@ bin/zcat
 #usr/bin/zless
 #usr/bin/zmore
 #usr/bin/znew
-#usr/info/gzip.info
-#usr/man/man1/gunzip.1
-#usr/man/man1/gzexe.1
-#usr/man/man1/gzip.1
-#usr/man/man1/zcat.1
-#usr/man/man1/zcmp.1
-#usr/man/man1/zdiff.1
-#usr/man/man1/zforce.1
-#usr/man/man1/zgrep.1
-#usr/man/man1/zless.1
-#usr/man/man1/zmore.1
-#usr/man/man1/znew.1
+#usr/share/info/gzip.info
+#usr/share/man/man1/gunzip.1
+#usr/share/man/man1/gzexe.1
+#usr/share/man/man1/gzip.1
+#usr/share/man/man1/zcat.1
+#usr/share/man/man1/zcmp.1
+#usr/share/man/man1/zdiff.1
+#usr/share/man/man1/zforce.1
+#usr/share/man/man1/zgrep.1
+#usr/share/man/man1/zless.1
+#usr/share/man/man1/zmore.1
+#usr/share/man/man1/znew.1
index 0e4b5c7baa045737fc747d4f7b7053ccdf5dbcdd..96d54f73a26244f1ca94c1ff2ac33fa80a7b2529 100644 (file)
 #usr/bin/i586-pc-linux-gnu-c++
 #usr/bin/i586-pc-linux-gnu-g++
 #usr/bin/i586-pc-linux-gnu-gcc
-#usr/bin/i586-pc-linux-gnu-gcc-4.9.3
+#usr/bin/i586-pc-linux-gnu-gcc-4.9.4
 #usr/bin/i586-pc-linux-gnu-gcc-ar
 #usr/bin/i586-pc-linux-gnu-gcc-nm
 #usr/bin/i586-pc-linux-gnu-gcc-ranlib
 #usr/include/c++
-#usr/include/c++/4.9.3
-#usr/include/c++/4.9.3/algorithm
-#usr/include/c++/4.9.3/array
-#usr/include/c++/4.9.3/atomic
-#usr/include/c++/4.9.3/backward
-#usr/include/c++/4.9.3/backward/auto_ptr.h
-#usr/include/c++/4.9.3/backward/backward_warning.h
-#usr/include/c++/4.9.3/backward/binders.h
-#usr/include/c++/4.9.3/backward/hash_fun.h
-#usr/include/c++/4.9.3/backward/hash_map
-#usr/include/c++/4.9.3/backward/hash_set
-#usr/include/c++/4.9.3/backward/hashtable.h
-#usr/include/c++/4.9.3/backward/strstream
-#usr/include/c++/4.9.3/bits
-#usr/include/c++/4.9.3/bits/algorithmfwd.h
-#usr/include/c++/4.9.3/bits/alloc_traits.h
-#usr/include/c++/4.9.3/bits/allocator.h
-#usr/include/c++/4.9.3/bits/atomic_base.h
-#usr/include/c++/4.9.3/bits/atomic_lockfree_defines.h
-#usr/include/c++/4.9.3/bits/basic_ios.h
-#usr/include/c++/4.9.3/bits/basic_ios.tcc
-#usr/include/c++/4.9.3/bits/basic_string.h
-#usr/include/c++/4.9.3/bits/basic_string.tcc
-#usr/include/c++/4.9.3/bits/boost_concept_check.h
-#usr/include/c++/4.9.3/bits/c++0x_warning.h
-#usr/include/c++/4.9.3/bits/c++14_warning.h
-#usr/include/c++/4.9.3/bits/char_traits.h
-#usr/include/c++/4.9.3/bits/codecvt.h
-#usr/include/c++/4.9.3/bits/concept_check.h
-#usr/include/c++/4.9.3/bits/cpp_type_traits.h
-#usr/include/c++/4.9.3/bits/cxxabi_forced.h
-#usr/include/c++/4.9.3/bits/deque.tcc
-#usr/include/c++/4.9.3/bits/enable_special_members.h
-#usr/include/c++/4.9.3/bits/exception_defines.h
-#usr/include/c++/4.9.3/bits/exception_ptr.h
-#usr/include/c++/4.9.3/bits/forward_list.h
-#usr/include/c++/4.9.3/bits/forward_list.tcc
-#usr/include/c++/4.9.3/bits/fstream.tcc
-#usr/include/c++/4.9.3/bits/functexcept.h
-#usr/include/c++/4.9.3/bits/functional_hash.h
-#usr/include/c++/4.9.3/bits/gslice.h
-#usr/include/c++/4.9.3/bits/gslice_array.h
-#usr/include/c++/4.9.3/bits/hash_bytes.h
-#usr/include/c++/4.9.3/bits/hashtable.h
-#usr/include/c++/4.9.3/bits/hashtable_policy.h
-#usr/include/c++/4.9.3/bits/indirect_array.h
-#usr/include/c++/4.9.3/bits/ios_base.h
-#usr/include/c++/4.9.3/bits/istream.tcc
-#usr/include/c++/4.9.3/bits/list.tcc
-#usr/include/c++/4.9.3/bits/locale_classes.h
-#usr/include/c++/4.9.3/bits/locale_classes.tcc
-#usr/include/c++/4.9.3/bits/locale_facets.h
-#usr/include/c++/4.9.3/bits/locale_facets.tcc
-#usr/include/c++/4.9.3/bits/locale_facets_nonio.h
-#usr/include/c++/4.9.3/bits/locale_facets_nonio.tcc
-#usr/include/c++/4.9.3/bits/localefwd.h
-#usr/include/c++/4.9.3/bits/mask_array.h
-#usr/include/c++/4.9.3/bits/memoryfwd.h
-#usr/include/c++/4.9.3/bits/move.h
-#usr/include/c++/4.9.3/bits/nested_exception.h
-#usr/include/c++/4.9.3/bits/ostream.tcc
-#usr/include/c++/4.9.3/bits/ostream_insert.h
-#usr/include/c++/4.9.3/bits/parse_numbers.h
-#usr/include/c++/4.9.3/bits/postypes.h
-#usr/include/c++/4.9.3/bits/predefined_ops.h
-#usr/include/c++/4.9.3/bits/ptr_traits.h
-#usr/include/c++/4.9.3/bits/random.h
-#usr/include/c++/4.9.3/bits/random.tcc
-#usr/include/c++/4.9.3/bits/range_access.h
-#usr/include/c++/4.9.3/bits/regex.h
-#usr/include/c++/4.9.3/bits/regex.tcc
-#usr/include/c++/4.9.3/bits/regex_automaton.h
-#usr/include/c++/4.9.3/bits/regex_automaton.tcc
-#usr/include/c++/4.9.3/bits/regex_compiler.h
-#usr/include/c++/4.9.3/bits/regex_compiler.tcc
-#usr/include/c++/4.9.3/bits/regex_constants.h
-#usr/include/c++/4.9.3/bits/regex_error.h
-#usr/include/c++/4.9.3/bits/regex_executor.h
-#usr/include/c++/4.9.3/bits/regex_executor.tcc
-#usr/include/c++/4.9.3/bits/regex_scanner.h
-#usr/include/c++/4.9.3/bits/regex_scanner.tcc
-#usr/include/c++/4.9.3/bits/shared_ptr.h
-#usr/include/c++/4.9.3/bits/shared_ptr_base.h
-#usr/include/c++/4.9.3/bits/slice_array.h
-#usr/include/c++/4.9.3/bits/sstream.tcc
-#usr/include/c++/4.9.3/bits/stl_algo.h
-#usr/include/c++/4.9.3/bits/stl_algobase.h
-#usr/include/c++/4.9.3/bits/stl_bvector.h
-#usr/include/c++/4.9.3/bits/stl_construct.h
-#usr/include/c++/4.9.3/bits/stl_deque.h
-#usr/include/c++/4.9.3/bits/stl_function.h
-#usr/include/c++/4.9.3/bits/stl_heap.h
-#usr/include/c++/4.9.3/bits/stl_iterator.h
-#usr/include/c++/4.9.3/bits/stl_iterator_base_funcs.h
-#usr/include/c++/4.9.3/bits/stl_iterator_base_types.h
-#usr/include/c++/4.9.3/bits/stl_list.h
-#usr/include/c++/4.9.3/bits/stl_map.h
-#usr/include/c++/4.9.3/bits/stl_multimap.h
-#usr/include/c++/4.9.3/bits/stl_multiset.h
-#usr/include/c++/4.9.3/bits/stl_numeric.h
-#usr/include/c++/4.9.3/bits/stl_pair.h
-#usr/include/c++/4.9.3/bits/stl_queue.h
-#usr/include/c++/4.9.3/bits/stl_raw_storage_iter.h
-#usr/include/c++/4.9.3/bits/stl_relops.h
-#usr/include/c++/4.9.3/bits/stl_set.h
-#usr/include/c++/4.9.3/bits/stl_stack.h
-#usr/include/c++/4.9.3/bits/stl_tempbuf.h
-#usr/include/c++/4.9.3/bits/stl_tree.h
-#usr/include/c++/4.9.3/bits/stl_uninitialized.h
-#usr/include/c++/4.9.3/bits/stl_vector.h
-#usr/include/c++/4.9.3/bits/stream_iterator.h
-#usr/include/c++/4.9.3/bits/streambuf.tcc
-#usr/include/c++/4.9.3/bits/streambuf_iterator.h
-#usr/include/c++/4.9.3/bits/stringfwd.h
-#usr/include/c++/4.9.3/bits/unique_ptr.h
-#usr/include/c++/4.9.3/bits/unordered_map.h
-#usr/include/c++/4.9.3/bits/unordered_set.h
-#usr/include/c++/4.9.3/bits/uses_allocator.h
-#usr/include/c++/4.9.3/bits/valarray_after.h
-#usr/include/c++/4.9.3/bits/valarray_array.h
-#usr/include/c++/4.9.3/bits/valarray_array.tcc
-#usr/include/c++/4.9.3/bits/valarray_before.h
-#usr/include/c++/4.9.3/bits/vector.tcc
-#usr/include/c++/4.9.3/bitset
-#usr/include/c++/4.9.3/cassert
-#usr/include/c++/4.9.3/ccomplex
-#usr/include/c++/4.9.3/cctype
-#usr/include/c++/4.9.3/cerrno
-#usr/include/c++/4.9.3/cfenv
-#usr/include/c++/4.9.3/cfloat
-#usr/include/c++/4.9.3/chrono
-#usr/include/c++/4.9.3/cinttypes
-#usr/include/c++/4.9.3/ciso646
-#usr/include/c++/4.9.3/climits
-#usr/include/c++/4.9.3/clocale
-#usr/include/c++/4.9.3/cmath
-#usr/include/c++/4.9.3/complex
-#usr/include/c++/4.9.3/complex.h
-#usr/include/c++/4.9.3/condition_variable
-#usr/include/c++/4.9.3/csetjmp
-#usr/include/c++/4.9.3/csignal
-#usr/include/c++/4.9.3/cstdalign
-#usr/include/c++/4.9.3/cstdarg
-#usr/include/c++/4.9.3/cstdbool
-#usr/include/c++/4.9.3/cstddef
-#usr/include/c++/4.9.3/cstdint
-#usr/include/c++/4.9.3/cstdio
-#usr/include/c++/4.9.3/cstdlib
-#usr/include/c++/4.9.3/cstring
-#usr/include/c++/4.9.3/ctgmath
-#usr/include/c++/4.9.3/ctime
-#usr/include/c++/4.9.3/cwchar
-#usr/include/c++/4.9.3/cwctype
-#usr/include/c++/4.9.3/cxxabi.h
-#usr/include/c++/4.9.3/debug
-#usr/include/c++/4.9.3/debug/array
-#usr/include/c++/4.9.3/debug/bitset
-#usr/include/c++/4.9.3/debug/debug.h
-#usr/include/c++/4.9.3/debug/deque
-#usr/include/c++/4.9.3/debug/formatter.h
-#usr/include/c++/4.9.3/debug/forward_list
-#usr/include/c++/4.9.3/debug/functions.h
-#usr/include/c++/4.9.3/debug/list
-#usr/include/c++/4.9.3/debug/macros.h
-#usr/include/c++/4.9.3/debug/map
-#usr/include/c++/4.9.3/debug/map.h
-#usr/include/c++/4.9.3/debug/multimap.h
-#usr/include/c++/4.9.3/debug/multiset.h
-#usr/include/c++/4.9.3/debug/safe_base.h
-#usr/include/c++/4.9.3/debug/safe_iterator.h
-#usr/include/c++/4.9.3/debug/safe_iterator.tcc
-#usr/include/c++/4.9.3/debug/safe_local_iterator.h
-#usr/include/c++/4.9.3/debug/safe_local_iterator.tcc
-#usr/include/c++/4.9.3/debug/safe_sequence.h
-#usr/include/c++/4.9.3/debug/safe_sequence.tcc
-#usr/include/c++/4.9.3/debug/safe_unordered_base.h
-#usr/include/c++/4.9.3/debug/safe_unordered_container.h
-#usr/include/c++/4.9.3/debug/safe_unordered_container.tcc
-#usr/include/c++/4.9.3/debug/set
-#usr/include/c++/4.9.3/debug/set.h
-#usr/include/c++/4.9.3/debug/string
-#usr/include/c++/4.9.3/debug/unordered_map
-#usr/include/c++/4.9.3/debug/unordered_set
-#usr/include/c++/4.9.3/debug/vector
-#usr/include/c++/4.9.3/decimal
-#usr/include/c++/4.9.3/decimal/decimal
-#usr/include/c++/4.9.3/decimal/decimal.h
-#usr/include/c++/4.9.3/deque
-#usr/include/c++/4.9.3/exception
-#usr/include/c++/4.9.3/experimental
-#usr/include/c++/4.9.3/experimental/optional
-#usr/include/c++/4.9.3/experimental/string_view
-#usr/include/c++/4.9.3/experimental/string_view.tcc
-#usr/include/c++/4.9.3/ext
-#usr/include/c++/4.9.3/ext/algorithm
-#usr/include/c++/4.9.3/ext/aligned_buffer.h
-#usr/include/c++/4.9.3/ext/alloc_traits.h
-#usr/include/c++/4.9.3/ext/array_allocator.h
-#usr/include/c++/4.9.3/ext/atomicity.h
-#usr/include/c++/4.9.3/ext/bitmap_allocator.h
-#usr/include/c++/4.9.3/ext/cast.h
-#usr/include/c++/4.9.3/ext/cmath
-#usr/include/c++/4.9.3/ext/codecvt_specializations.h
-#usr/include/c++/4.9.3/ext/concurrence.h
-#usr/include/c++/4.9.3/ext/debug_allocator.h
-#usr/include/c++/4.9.3/ext/enc_filebuf.h
-#usr/include/c++/4.9.3/ext/extptr_allocator.h
-#usr/include/c++/4.9.3/ext/functional
-#usr/include/c++/4.9.3/ext/hash_map
-#usr/include/c++/4.9.3/ext/hash_set
-#usr/include/c++/4.9.3/ext/iterator
-#usr/include/c++/4.9.3/ext/malloc_allocator.h
-#usr/include/c++/4.9.3/ext/memory
-#usr/include/c++/4.9.3/ext/mt_allocator.h
-#usr/include/c++/4.9.3/ext/new_allocator.h
-#usr/include/c++/4.9.3/ext/numeric
-#usr/include/c++/4.9.3/ext/numeric_traits.h
-#usr/include/c++/4.9.3/ext/pb_ds
-#usr/include/c++/4.9.3/ext/pb_ds/assoc_container.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/branch_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cond_dealtor.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/container_base_dispatch.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/debug_map_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/standard_policies.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_trace_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/type_utils.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/types_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/exception.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/hash_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/list_update_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/priority_queue.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/tag_and_trait.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/tree_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/trie_policy.hpp
-#usr/include/c++/4.9.3/ext/pod_char_traits.h
-#usr/include/c++/4.9.3/ext/pointer.h
-#usr/include/c++/4.9.3/ext/pool_allocator.h
-#usr/include/c++/4.9.3/ext/random
-#usr/include/c++/4.9.3/ext/random.tcc
-#usr/include/c++/4.9.3/ext/rb_tree
-#usr/include/c++/4.9.3/ext/rc_string_base.h
-#usr/include/c++/4.9.3/ext/rope
-#usr/include/c++/4.9.3/ext/ropeimpl.h
-#usr/include/c++/4.9.3/ext/slist
-#usr/include/c++/4.9.3/ext/sso_string_base.h
-#usr/include/c++/4.9.3/ext/stdio_filebuf.h
-#usr/include/c++/4.9.3/ext/stdio_sync_filebuf.h
-#usr/include/c++/4.9.3/ext/string_conversions.h
-#usr/include/c++/4.9.3/ext/throw_allocator.h
-#usr/include/c++/4.9.3/ext/type_traits.h
-#usr/include/c++/4.9.3/ext/typelist.h
-#usr/include/c++/4.9.3/ext/vstring.h
-#usr/include/c++/4.9.3/ext/vstring.tcc
-#usr/include/c++/4.9.3/ext/vstring_fwd.h
-#usr/include/c++/4.9.3/ext/vstring_util.h
-#usr/include/c++/4.9.3/fenv.h
-#usr/include/c++/4.9.3/forward_list
-#usr/include/c++/4.9.3/fstream
-#usr/include/c++/4.9.3/functional
-#usr/include/c++/4.9.3/future
-#usr/include/c++/4.9.3/i586-pc-linux-gnu
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/atomic_word.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/basic_file.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/c++allocator.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/c++config.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/c++io.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/c++locale.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/cpu_defines.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/ctype_base.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/ctype_inline.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/cxxabi_tweaks.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/error_constants.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/extc++.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/gthr-default.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/gthr-posix.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/gthr-single.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/gthr.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/messages_members.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/opt_random.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/os_defines.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/stdc++.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/stdtr1c++.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/bits/time_members.h
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/ext
-#usr/include/c++/4.9.3/i586-pc-linux-gnu/ext/opt_random.h
-#usr/include/c++/4.9.3/initializer_list
-#usr/include/c++/4.9.3/iomanip
-#usr/include/c++/4.9.3/ios
-#usr/include/c++/4.9.3/iosfwd
-#usr/include/c++/4.9.3/iostream
-#usr/include/c++/4.9.3/istream
-#usr/include/c++/4.9.3/iterator
-#usr/include/c++/4.9.3/limits
-#usr/include/c++/4.9.3/list
-#usr/include/c++/4.9.3/locale
-#usr/include/c++/4.9.3/map
-#usr/include/c++/4.9.3/memory
-#usr/include/c++/4.9.3/mutex
-#usr/include/c++/4.9.3/new
-#usr/include/c++/4.9.3/numeric
-#usr/include/c++/4.9.3/ostream
-#usr/include/c++/4.9.3/parallel
-#usr/include/c++/4.9.3/parallel/algo.h
-#usr/include/c++/4.9.3/parallel/algobase.h
-#usr/include/c++/4.9.3/parallel/algorithm
-#usr/include/c++/4.9.3/parallel/algorithmfwd.h
-#usr/include/c++/4.9.3/parallel/balanced_quicksort.h
-#usr/include/c++/4.9.3/parallel/base.h
-#usr/include/c++/4.9.3/parallel/basic_iterator.h
-#usr/include/c++/4.9.3/parallel/checkers.h
-#usr/include/c++/4.9.3/parallel/compatibility.h
-#usr/include/c++/4.9.3/parallel/compiletime_settings.h
-#usr/include/c++/4.9.3/parallel/equally_split.h
-#usr/include/c++/4.9.3/parallel/features.h
-#usr/include/c++/4.9.3/parallel/find.h
-#usr/include/c++/4.9.3/parallel/find_selectors.h
-#usr/include/c++/4.9.3/parallel/for_each.h
-#usr/include/c++/4.9.3/parallel/for_each_selectors.h
-#usr/include/c++/4.9.3/parallel/iterator.h
-#usr/include/c++/4.9.3/parallel/list_partition.h
-#usr/include/c++/4.9.3/parallel/losertree.h
-#usr/include/c++/4.9.3/parallel/merge.h
-#usr/include/c++/4.9.3/parallel/multiseq_selection.h
-#usr/include/c++/4.9.3/parallel/multiway_merge.h
-#usr/include/c++/4.9.3/parallel/multiway_mergesort.h
-#usr/include/c++/4.9.3/parallel/numeric
-#usr/include/c++/4.9.3/parallel/numericfwd.h
-#usr/include/c++/4.9.3/parallel/omp_loop.h
-#usr/include/c++/4.9.3/parallel/omp_loop_static.h
-#usr/include/c++/4.9.3/parallel/par_loop.h
-#usr/include/c++/4.9.3/parallel/parallel.h
-#usr/include/c++/4.9.3/parallel/partial_sum.h
-#usr/include/c++/4.9.3/parallel/partition.h
-#usr/include/c++/4.9.3/parallel/queue.h
-#usr/include/c++/4.9.3/parallel/quicksort.h
-#usr/include/c++/4.9.3/parallel/random_number.h
-#usr/include/c++/4.9.3/parallel/random_shuffle.h
-#usr/include/c++/4.9.3/parallel/search.h
-#usr/include/c++/4.9.3/parallel/set_operations.h
-#usr/include/c++/4.9.3/parallel/settings.h
-#usr/include/c++/4.9.3/parallel/sort.h
-#usr/include/c++/4.9.3/parallel/tags.h
-#usr/include/c++/4.9.3/parallel/types.h
-#usr/include/c++/4.9.3/parallel/unique_copy.h
-#usr/include/c++/4.9.3/parallel/workstealing.h
-#usr/include/c++/4.9.3/profile
-#usr/include/c++/4.9.3/profile/array
-#usr/include/c++/4.9.3/profile/base.h
-#usr/include/c++/4.9.3/profile/bitset
-#usr/include/c++/4.9.3/profile/deque
-#usr/include/c++/4.9.3/profile/forward_list
-#usr/include/c++/4.9.3/profile/impl
-#usr/include/c++/4.9.3/profile/impl/profiler.h
-#usr/include/c++/4.9.3/profile/impl/profiler_algos.h
-#usr/include/c++/4.9.3/profile/impl/profiler_container_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_hash_func.h
-#usr/include/c++/4.9.3/profile/impl/profiler_hashtable_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_list_to_slist.h
-#usr/include/c++/4.9.3/profile/impl/profiler_list_to_vector.h
-#usr/include/c++/4.9.3/profile/impl/profiler_map_to_unordered_map.h
-#usr/include/c++/4.9.3/profile/impl/profiler_node.h
-#usr/include/c++/4.9.3/profile/impl/profiler_state.h
-#usr/include/c++/4.9.3/profile/impl/profiler_trace.h
-#usr/include/c++/4.9.3/profile/impl/profiler_vector_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_vector_to_list.h
-#usr/include/c++/4.9.3/profile/iterator_tracker.h
-#usr/include/c++/4.9.3/profile/list
-#usr/include/c++/4.9.3/profile/map
-#usr/include/c++/4.9.3/profile/map.h
-#usr/include/c++/4.9.3/profile/multimap.h
-#usr/include/c++/4.9.3/profile/multiset.h
-#usr/include/c++/4.9.3/profile/set
-#usr/include/c++/4.9.3/profile/set.h
-#usr/include/c++/4.9.3/profile/unordered_base.h
-#usr/include/c++/4.9.3/profile/unordered_map
-#usr/include/c++/4.9.3/profile/unordered_set
-#usr/include/c++/4.9.3/profile/vector
-#usr/include/c++/4.9.3/queue
-#usr/include/c++/4.9.3/random
-#usr/include/c++/4.9.3/ratio
-#usr/include/c++/4.9.3/regex
-#usr/include/c++/4.9.3/scoped_allocator
-#usr/include/c++/4.9.3/set
-#usr/include/c++/4.9.3/shared_mutex
-#usr/include/c++/4.9.3/sstream
-#usr/include/c++/4.9.3/stack
-#usr/include/c++/4.9.3/stdexcept
-#usr/include/c++/4.9.3/streambuf
-#usr/include/c++/4.9.3/string
-#usr/include/c++/4.9.3/system_error
-#usr/include/c++/4.9.3/tgmath.h
-#usr/include/c++/4.9.3/thread
-#usr/include/c++/4.9.3/tr1
-#usr/include/c++/4.9.3/tr1/array
-#usr/include/c++/4.9.3/tr1/bessel_function.tcc
-#usr/include/c++/4.9.3/tr1/beta_function.tcc
-#usr/include/c++/4.9.3/tr1/ccomplex
-#usr/include/c++/4.9.3/tr1/cctype
-#usr/include/c++/4.9.3/tr1/cfenv
-#usr/include/c++/4.9.3/tr1/cfloat
-#usr/include/c++/4.9.3/tr1/cinttypes
-#usr/include/c++/4.9.3/tr1/climits
-#usr/include/c++/4.9.3/tr1/cmath
-#usr/include/c++/4.9.3/tr1/complex
-#usr/include/c++/4.9.3/tr1/complex.h
-#usr/include/c++/4.9.3/tr1/cstdarg
-#usr/include/c++/4.9.3/tr1/cstdbool
-#usr/include/c++/4.9.3/tr1/cstdint
-#usr/include/c++/4.9.3/tr1/cstdio
-#usr/include/c++/4.9.3/tr1/cstdlib
-#usr/include/c++/4.9.3/tr1/ctgmath
-#usr/include/c++/4.9.3/tr1/ctime
-#usr/include/c++/4.9.3/tr1/ctype.h
-#usr/include/c++/4.9.3/tr1/cwchar
-#usr/include/c++/4.9.3/tr1/cwctype
-#usr/include/c++/4.9.3/tr1/ell_integral.tcc
-#usr/include/c++/4.9.3/tr1/exp_integral.tcc
-#usr/include/c++/4.9.3/tr1/fenv.h
-#usr/include/c++/4.9.3/tr1/float.h
-#usr/include/c++/4.9.3/tr1/functional
-#usr/include/c++/4.9.3/tr1/functional_hash.h
-#usr/include/c++/4.9.3/tr1/gamma.tcc
-#usr/include/c++/4.9.3/tr1/hashtable.h
-#usr/include/c++/4.9.3/tr1/hashtable_policy.h
-#usr/include/c++/4.9.3/tr1/hypergeometric.tcc
-#usr/include/c++/4.9.3/tr1/inttypes.h
-#usr/include/c++/4.9.3/tr1/legendre_function.tcc
-#usr/include/c++/4.9.3/tr1/limits.h
-#usr/include/c++/4.9.3/tr1/math.h
-#usr/include/c++/4.9.3/tr1/memory
-#usr/include/c++/4.9.3/tr1/modified_bessel_func.tcc
-#usr/include/c++/4.9.3/tr1/poly_hermite.tcc
-#usr/include/c++/4.9.3/tr1/poly_laguerre.tcc
-#usr/include/c++/4.9.3/tr1/random
-#usr/include/c++/4.9.3/tr1/random.h
-#usr/include/c++/4.9.3/tr1/random.tcc
-#usr/include/c++/4.9.3/tr1/regex
-#usr/include/c++/4.9.3/tr1/riemann_zeta.tcc
-#usr/include/c++/4.9.3/tr1/shared_ptr.h
-#usr/include/c++/4.9.3/tr1/special_function_util.h
-#usr/include/c++/4.9.3/tr1/stdarg.h
-#usr/include/c++/4.9.3/tr1/stdbool.h
-#usr/include/c++/4.9.3/tr1/stdint.h
-#usr/include/c++/4.9.3/tr1/stdio.h
-#usr/include/c++/4.9.3/tr1/stdlib.h
-#usr/include/c++/4.9.3/tr1/tgmath.h
-#usr/include/c++/4.9.3/tr1/tuple
-#usr/include/c++/4.9.3/tr1/type_traits
-#usr/include/c++/4.9.3/tr1/unordered_map
-#usr/include/c++/4.9.3/tr1/unordered_map.h
-#usr/include/c++/4.9.3/tr1/unordered_set
-#usr/include/c++/4.9.3/tr1/unordered_set.h
-#usr/include/c++/4.9.3/tr1/utility
-#usr/include/c++/4.9.3/tr1/wchar.h
-#usr/include/c++/4.9.3/tr1/wctype.h
-#usr/include/c++/4.9.3/tr2
-#usr/include/c++/4.9.3/tr2/bool_set
-#usr/include/c++/4.9.3/tr2/bool_set.tcc
-#usr/include/c++/4.9.3/tr2/dynamic_bitset
-#usr/include/c++/4.9.3/tr2/dynamic_bitset.tcc
-#usr/include/c++/4.9.3/tr2/ratio
-#usr/include/c++/4.9.3/tr2/type_traits
-#usr/include/c++/4.9.3/tuple
-#usr/include/c++/4.9.3/type_traits
-#usr/include/c++/4.9.3/typeindex
-#usr/include/c++/4.9.3/typeinfo
-#usr/include/c++/4.9.3/unordered_map
-#usr/include/c++/4.9.3/unordered_set
-#usr/include/c++/4.9.3/utility
-#usr/include/c++/4.9.3/valarray
-#usr/include/c++/4.9.3/vector
+#usr/include/c++/4.9.4
+#usr/include/c++/4.9.4/algorithm
+#usr/include/c++/4.9.4/array
+#usr/include/c++/4.9.4/atomic
+#usr/include/c++/4.9.4/backward
+#usr/include/c++/4.9.4/backward/auto_ptr.h
+#usr/include/c++/4.9.4/backward/backward_warning.h
+#usr/include/c++/4.9.4/backward/binders.h
+#usr/include/c++/4.9.4/backward/hash_fun.h
+#usr/include/c++/4.9.4/backward/hash_map
+#usr/include/c++/4.9.4/backward/hash_set
+#usr/include/c++/4.9.4/backward/hashtable.h
+#usr/include/c++/4.9.4/backward/strstream
+#usr/include/c++/4.9.4/bits
+#usr/include/c++/4.9.4/bits/algorithmfwd.h
+#usr/include/c++/4.9.4/bits/alloc_traits.h
+#usr/include/c++/4.9.4/bits/allocator.h
+#usr/include/c++/4.9.4/bits/atomic_base.h
+#usr/include/c++/4.9.4/bits/atomic_lockfree_defines.h
+#usr/include/c++/4.9.4/bits/basic_ios.h
+#usr/include/c++/4.9.4/bits/basic_ios.tcc
+#usr/include/c++/4.9.4/bits/basic_string.h
+#usr/include/c++/4.9.4/bits/basic_string.tcc
+#usr/include/c++/4.9.4/bits/boost_concept_check.h
+#usr/include/c++/4.9.4/bits/c++0x_warning.h
+#usr/include/c++/4.9.4/bits/c++14_warning.h
+#usr/include/c++/4.9.4/bits/char_traits.h
+#usr/include/c++/4.9.4/bits/codecvt.h
+#usr/include/c++/4.9.4/bits/concept_check.h
+#usr/include/c++/4.9.4/bits/cpp_type_traits.h
+#usr/include/c++/4.9.4/bits/cxxabi_forced.h
+#usr/include/c++/4.9.4/bits/deque.tcc
+#usr/include/c++/4.9.4/bits/enable_special_members.h
+#usr/include/c++/4.9.4/bits/exception_defines.h
+#usr/include/c++/4.9.4/bits/exception_ptr.h
+#usr/include/c++/4.9.4/bits/forward_list.h
+#usr/include/c++/4.9.4/bits/forward_list.tcc
+#usr/include/c++/4.9.4/bits/fstream.tcc
+#usr/include/c++/4.9.4/bits/functexcept.h
+#usr/include/c++/4.9.4/bits/functional_hash.h
+#usr/include/c++/4.9.4/bits/gslice.h
+#usr/include/c++/4.9.4/bits/gslice_array.h
+#usr/include/c++/4.9.4/bits/hash_bytes.h
+#usr/include/c++/4.9.4/bits/hashtable.h
+#usr/include/c++/4.9.4/bits/hashtable_policy.h
+#usr/include/c++/4.9.4/bits/indirect_array.h
+#usr/include/c++/4.9.4/bits/ios_base.h
+#usr/include/c++/4.9.4/bits/istream.tcc
+#usr/include/c++/4.9.4/bits/list.tcc
+#usr/include/c++/4.9.4/bits/locale_classes.h
+#usr/include/c++/4.9.4/bits/locale_classes.tcc
+#usr/include/c++/4.9.4/bits/locale_facets.h
+#usr/include/c++/4.9.4/bits/locale_facets.tcc
+#usr/include/c++/4.9.4/bits/locale_facets_nonio.h
+#usr/include/c++/4.9.4/bits/locale_facets_nonio.tcc
+#usr/include/c++/4.9.4/bits/localefwd.h
+#usr/include/c++/4.9.4/bits/mask_array.h
+#usr/include/c++/4.9.4/bits/memoryfwd.h
+#usr/include/c++/4.9.4/bits/move.h
+#usr/include/c++/4.9.4/bits/nested_exception.h
+#usr/include/c++/4.9.4/bits/ostream.tcc
+#usr/include/c++/4.9.4/bits/ostream_insert.h
+#usr/include/c++/4.9.4/bits/parse_numbers.h
+#usr/include/c++/4.9.4/bits/postypes.h
+#usr/include/c++/4.9.4/bits/predefined_ops.h
+#usr/include/c++/4.9.4/bits/ptr_traits.h
+#usr/include/c++/4.9.4/bits/random.h
+#usr/include/c++/4.9.4/bits/random.tcc
+#usr/include/c++/4.9.4/bits/range_access.h
+#usr/include/c++/4.9.4/bits/regex.h
+#usr/include/c++/4.9.4/bits/regex.tcc
+#usr/include/c++/4.9.4/bits/regex_automaton.h
+#usr/include/c++/4.9.4/bits/regex_automaton.tcc
+#usr/include/c++/4.9.4/bits/regex_compiler.h
+#usr/include/c++/4.9.4/bits/regex_compiler.tcc
+#usr/include/c++/4.9.4/bits/regex_constants.h
+#usr/include/c++/4.9.4/bits/regex_error.h
+#usr/include/c++/4.9.4/bits/regex_executor.h
+#usr/include/c++/4.9.4/bits/regex_executor.tcc
+#usr/include/c++/4.9.4/bits/regex_scanner.h
+#usr/include/c++/4.9.4/bits/regex_scanner.tcc
+#usr/include/c++/4.9.4/bits/shared_ptr.h
+#usr/include/c++/4.9.4/bits/shared_ptr_base.h
+#usr/include/c++/4.9.4/bits/slice_array.h
+#usr/include/c++/4.9.4/bits/sstream.tcc
+#usr/include/c++/4.9.4/bits/stl_algo.h
+#usr/include/c++/4.9.4/bits/stl_algobase.h
+#usr/include/c++/4.9.4/bits/stl_bvector.h
+#usr/include/c++/4.9.4/bits/stl_construct.h
+#usr/include/c++/4.9.4/bits/stl_deque.h
+#usr/include/c++/4.9.4/bits/stl_function.h
+#usr/include/c++/4.9.4/bits/stl_heap.h
+#usr/include/c++/4.9.4/bits/stl_iterator.h
+#usr/include/c++/4.9.4/bits/stl_iterator_base_funcs.h
+#usr/include/c++/4.9.4/bits/stl_iterator_base_types.h
+#usr/include/c++/4.9.4/bits/stl_list.h
+#usr/include/c++/4.9.4/bits/stl_map.h
+#usr/include/c++/4.9.4/bits/stl_multimap.h
+#usr/include/c++/4.9.4/bits/stl_multiset.h
+#usr/include/c++/4.9.4/bits/stl_numeric.h
+#usr/include/c++/4.9.4/bits/stl_pair.h
+#usr/include/c++/4.9.4/bits/stl_queue.h
+#usr/include/c++/4.9.4/bits/stl_raw_storage_iter.h
+#usr/include/c++/4.9.4/bits/stl_relops.h
+#usr/include/c++/4.9.4/bits/stl_set.h
+#usr/include/c++/4.9.4/bits/stl_stack.h
+#usr/include/c++/4.9.4/bits/stl_tempbuf.h
+#usr/include/c++/4.9.4/bits/stl_tree.h
+#usr/include/c++/4.9.4/bits/stl_uninitialized.h
+#usr/include/c++/4.9.4/bits/stl_vector.h
+#usr/include/c++/4.9.4/bits/stream_iterator.h
+#usr/include/c++/4.9.4/bits/streambuf.tcc
+#usr/include/c++/4.9.4/bits/streambuf_iterator.h
+#usr/include/c++/4.9.4/bits/stringfwd.h
+#usr/include/c++/4.9.4/bits/unique_ptr.h
+#usr/include/c++/4.9.4/bits/unordered_map.h
+#usr/include/c++/4.9.4/bits/unordered_set.h
+#usr/include/c++/4.9.4/bits/uses_allocator.h
+#usr/include/c++/4.9.4/bits/valarray_after.h
+#usr/include/c++/4.9.4/bits/valarray_array.h
+#usr/include/c++/4.9.4/bits/valarray_array.tcc
+#usr/include/c++/4.9.4/bits/valarray_before.h
+#usr/include/c++/4.9.4/bits/vector.tcc
+#usr/include/c++/4.9.4/bitset
+#usr/include/c++/4.9.4/cassert
+#usr/include/c++/4.9.4/ccomplex
+#usr/include/c++/4.9.4/cctype
+#usr/include/c++/4.9.4/cerrno
+#usr/include/c++/4.9.4/cfenv
+#usr/include/c++/4.9.4/cfloat
+#usr/include/c++/4.9.4/chrono
+#usr/include/c++/4.9.4/cinttypes
+#usr/include/c++/4.9.4/ciso646
+#usr/include/c++/4.9.4/climits
+#usr/include/c++/4.9.4/clocale
+#usr/include/c++/4.9.4/cmath
+#usr/include/c++/4.9.4/complex
+#usr/include/c++/4.9.4/complex.h
+#usr/include/c++/4.9.4/condition_variable
+#usr/include/c++/4.9.4/csetjmp
+#usr/include/c++/4.9.4/csignal
+#usr/include/c++/4.9.4/cstdalign
+#usr/include/c++/4.9.4/cstdarg
+#usr/include/c++/4.9.4/cstdbool
+#usr/include/c++/4.9.4/cstddef
+#usr/include/c++/4.9.4/cstdint
+#usr/include/c++/4.9.4/cstdio
+#usr/include/c++/4.9.4/cstdlib
+#usr/include/c++/4.9.4/cstring
+#usr/include/c++/4.9.4/ctgmath
+#usr/include/c++/4.9.4/ctime
+#usr/include/c++/4.9.4/cwchar
+#usr/include/c++/4.9.4/cwctype
+#usr/include/c++/4.9.4/cxxabi.h
+#usr/include/c++/4.9.4/debug
+#usr/include/c++/4.9.4/debug/array
+#usr/include/c++/4.9.4/debug/bitset
+#usr/include/c++/4.9.4/debug/debug.h
+#usr/include/c++/4.9.4/debug/deque
+#usr/include/c++/4.9.4/debug/formatter.h
+#usr/include/c++/4.9.4/debug/forward_list
+#usr/include/c++/4.9.4/debug/functions.h
+#usr/include/c++/4.9.4/debug/list
+#usr/include/c++/4.9.4/debug/macros.h
+#usr/include/c++/4.9.4/debug/map
+#usr/include/c++/4.9.4/debug/map.h
+#usr/include/c++/4.9.4/debug/multimap.h
+#usr/include/c++/4.9.4/debug/multiset.h
+#usr/include/c++/4.9.4/debug/safe_base.h
+#usr/include/c++/4.9.4/debug/safe_iterator.h
+#usr/include/c++/4.9.4/debug/safe_iterator.tcc
+#usr/include/c++/4.9.4/debug/safe_local_iterator.h
+#usr/include/c++/4.9.4/debug/safe_local_iterator.tcc
+#usr/include/c++/4.9.4/debug/safe_sequence.h
+#usr/include/c++/4.9.4/debug/safe_sequence.tcc
+#usr/include/c++/4.9.4/debug/safe_unordered_base.h
+#usr/include/c++/4.9.4/debug/safe_unordered_container.h
+#usr/include/c++/4.9.4/debug/safe_unordered_container.tcc
+#usr/include/c++/4.9.4/debug/set
+#usr/include/c++/4.9.4/debug/set.h
+#usr/include/c++/4.9.4/debug/string
+#usr/include/c++/4.9.4/debug/unordered_map
+#usr/include/c++/4.9.4/debug/unordered_set
+#usr/include/c++/4.9.4/debug/vector
+#usr/include/c++/4.9.4/decimal
+#usr/include/c++/4.9.4/decimal/decimal
+#usr/include/c++/4.9.4/decimal/decimal.h
+#usr/include/c++/4.9.4/deque
+#usr/include/c++/4.9.4/exception
+#usr/include/c++/4.9.4/experimental
+#usr/include/c++/4.9.4/experimental/optional
+#usr/include/c++/4.9.4/experimental/string_view
+#usr/include/c++/4.9.4/experimental/string_view.tcc
+#usr/include/c++/4.9.4/ext
+#usr/include/c++/4.9.4/ext/algorithm
+#usr/include/c++/4.9.4/ext/aligned_buffer.h
+#usr/include/c++/4.9.4/ext/alloc_traits.h
+#usr/include/c++/4.9.4/ext/array_allocator.h
+#usr/include/c++/4.9.4/ext/atomicity.h
+#usr/include/c++/4.9.4/ext/bitmap_allocator.h
+#usr/include/c++/4.9.4/ext/cast.h
+#usr/include/c++/4.9.4/ext/cmath
+#usr/include/c++/4.9.4/ext/codecvt_specializations.h
+#usr/include/c++/4.9.4/ext/concurrence.h
+#usr/include/c++/4.9.4/ext/debug_allocator.h
+#usr/include/c++/4.9.4/ext/enc_filebuf.h
+#usr/include/c++/4.9.4/ext/extptr_allocator.h
+#usr/include/c++/4.9.4/ext/functional
+#usr/include/c++/4.9.4/ext/hash_map
+#usr/include/c++/4.9.4/ext/hash_set
+#usr/include/c++/4.9.4/ext/iterator
+#usr/include/c++/4.9.4/ext/malloc_allocator.h
+#usr/include/c++/4.9.4/ext/memory
+#usr/include/c++/4.9.4/ext/mt_allocator.h
+#usr/include/c++/4.9.4/ext/new_allocator.h
+#usr/include/c++/4.9.4/ext/numeric
+#usr/include/c++/4.9.4/ext/numeric_traits.h
+#usr/include/c++/4.9.4/ext/pb_ds
+#usr/include/c++/4.9.4/ext/pb_ds/assoc_container.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/branch_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cond_dealtor.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/container_base_dispatch.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/debug_map_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/standard_policies.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_trace_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/type_utils.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/types_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/exception.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/hash_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/list_update_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/priority_queue.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/tag_and_trait.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/tree_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/trie_policy.hpp
+#usr/include/c++/4.9.4/ext/pod_char_traits.h
+#usr/include/c++/4.9.4/ext/pointer.h
+#usr/include/c++/4.9.4/ext/pool_allocator.h
+#usr/include/c++/4.9.4/ext/random
+#usr/include/c++/4.9.4/ext/random.tcc
+#usr/include/c++/4.9.4/ext/rb_tree
+#usr/include/c++/4.9.4/ext/rc_string_base.h
+#usr/include/c++/4.9.4/ext/rope
+#usr/include/c++/4.9.4/ext/ropeimpl.h
+#usr/include/c++/4.9.4/ext/slist
+#usr/include/c++/4.9.4/ext/sso_string_base.h
+#usr/include/c++/4.9.4/ext/stdio_filebuf.h
+#usr/include/c++/4.9.4/ext/stdio_sync_filebuf.h
+#usr/include/c++/4.9.4/ext/string_conversions.h
+#usr/include/c++/4.9.4/ext/throw_allocator.h
+#usr/include/c++/4.9.4/ext/type_traits.h
+#usr/include/c++/4.9.4/ext/typelist.h
+#usr/include/c++/4.9.4/ext/vstring.h
+#usr/include/c++/4.9.4/ext/vstring.tcc
+#usr/include/c++/4.9.4/ext/vstring_fwd.h
+#usr/include/c++/4.9.4/ext/vstring_util.h
+#usr/include/c++/4.9.4/fenv.h
+#usr/include/c++/4.9.4/forward_list
+#usr/include/c++/4.9.4/fstream
+#usr/include/c++/4.9.4/functional
+#usr/include/c++/4.9.4/future
+#usr/include/c++/4.9.4/i586-pc-linux-gnu
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/atomic_word.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/basic_file.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++allocator.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++config.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++io.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++locale.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/cpu_defines.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/ctype_base.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/ctype_inline.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/cxxabi_tweaks.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/error_constants.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/extc++.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr-default.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr-posix.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr-single.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/messages_members.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/opt_random.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/os_defines.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/stdc++.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/stdtr1c++.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/time_members.h
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/ext
+#usr/include/c++/4.9.4/i586-pc-linux-gnu/ext/opt_random.h
+#usr/include/c++/4.9.4/initializer_list
+#usr/include/c++/4.9.4/iomanip
+#usr/include/c++/4.9.4/ios
+#usr/include/c++/4.9.4/iosfwd
+#usr/include/c++/4.9.4/iostream
+#usr/include/c++/4.9.4/istream
+#usr/include/c++/4.9.4/iterator
+#usr/include/c++/4.9.4/limits
+#usr/include/c++/4.9.4/list
+#usr/include/c++/4.9.4/locale
+#usr/include/c++/4.9.4/map
+#usr/include/c++/4.9.4/memory
+#usr/include/c++/4.9.4/mutex
+#usr/include/c++/4.9.4/new
+#usr/include/c++/4.9.4/numeric
+#usr/include/c++/4.9.4/ostream
+#usr/include/c++/4.9.4/parallel
+#usr/include/c++/4.9.4/parallel/algo.h
+#usr/include/c++/4.9.4/parallel/algobase.h
+#usr/include/c++/4.9.4/parallel/algorithm
+#usr/include/c++/4.9.4/parallel/algorithmfwd.h
+#usr/include/c++/4.9.4/parallel/balanced_quicksort.h
+#usr/include/c++/4.9.4/parallel/base.h
+#usr/include/c++/4.9.4/parallel/basic_iterator.h
+#usr/include/c++/4.9.4/parallel/checkers.h
+#usr/include/c++/4.9.4/parallel/compatibility.h
+#usr/include/c++/4.9.4/parallel/compiletime_settings.h
+#usr/include/c++/4.9.4/parallel/equally_split.h
+#usr/include/c++/4.9.4/parallel/features.h
+#usr/include/c++/4.9.4/parallel/find.h
+#usr/include/c++/4.9.4/parallel/find_selectors.h
+#usr/include/c++/4.9.4/parallel/for_each.h
+#usr/include/c++/4.9.4/parallel/for_each_selectors.h
+#usr/include/c++/4.9.4/parallel/iterator.h
+#usr/include/c++/4.9.4/parallel/list_partition.h
+#usr/include/c++/4.9.4/parallel/losertree.h
+#usr/include/c++/4.9.4/parallel/merge.h
+#usr/include/c++/4.9.4/parallel/multiseq_selection.h
+#usr/include/c++/4.9.4/parallel/multiway_merge.h
+#usr/include/c++/4.9.4/parallel/multiway_mergesort.h
+#usr/include/c++/4.9.4/parallel/numeric
+#usr/include/c++/4.9.4/parallel/numericfwd.h
+#usr/include/c++/4.9.4/parallel/omp_loop.h
+#usr/include/c++/4.9.4/parallel/omp_loop_static.h
+#usr/include/c++/4.9.4/parallel/par_loop.h
+#usr/include/c++/4.9.4/parallel/parallel.h
+#usr/include/c++/4.9.4/parallel/partial_sum.h
+#usr/include/c++/4.9.4/parallel/partition.h
+#usr/include/c++/4.9.4/parallel/queue.h
+#usr/include/c++/4.9.4/parallel/quicksort.h
+#usr/include/c++/4.9.4/parallel/random_number.h
+#usr/include/c++/4.9.4/parallel/random_shuffle.h
+#usr/include/c++/4.9.4/parallel/search.h
+#usr/include/c++/4.9.4/parallel/set_operations.h
+#usr/include/c++/4.9.4/parallel/settings.h
+#usr/include/c++/4.9.4/parallel/sort.h
+#usr/include/c++/4.9.4/parallel/tags.h
+#usr/include/c++/4.9.4/parallel/types.h
+#usr/include/c++/4.9.4/parallel/unique_copy.h
+#usr/include/c++/4.9.4/parallel/workstealing.h
+#usr/include/c++/4.9.4/profile
+#usr/include/c++/4.9.4/profile/array
+#usr/include/c++/4.9.4/profile/base.h
+#usr/include/c++/4.9.4/profile/bitset
+#usr/include/c++/4.9.4/profile/deque
+#usr/include/c++/4.9.4/profile/forward_list
+#usr/include/c++/4.9.4/profile/impl
+#usr/include/c++/4.9.4/profile/impl/profiler.h
+#usr/include/c++/4.9.4/profile/impl/profiler_algos.h
+#usr/include/c++/4.9.4/profile/impl/profiler_container_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_hash_func.h
+#usr/include/c++/4.9.4/profile/impl/profiler_hashtable_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_list_to_slist.h
+#usr/include/c++/4.9.4/profile/impl/profiler_list_to_vector.h
+#usr/include/c++/4.9.4/profile/impl/profiler_map_to_unordered_map.h
+#usr/include/c++/4.9.4/profile/impl/profiler_node.h
+#usr/include/c++/4.9.4/profile/impl/profiler_state.h
+#usr/include/c++/4.9.4/profile/impl/profiler_trace.h
+#usr/include/c++/4.9.4/profile/impl/profiler_vector_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_vector_to_list.h
+#usr/include/c++/4.9.4/profile/iterator_tracker.h
+#usr/include/c++/4.9.4/profile/list
+#usr/include/c++/4.9.4/profile/map
+#usr/include/c++/4.9.4/profile/map.h
+#usr/include/c++/4.9.4/profile/multimap.h
+#usr/include/c++/4.9.4/profile/multiset.h
+#usr/include/c++/4.9.4/profile/set
+#usr/include/c++/4.9.4/profile/set.h
+#usr/include/c++/4.9.4/profile/unordered_base.h
+#usr/include/c++/4.9.4/profile/unordered_map
+#usr/include/c++/4.9.4/profile/unordered_set
+#usr/include/c++/4.9.4/profile/vector
+#usr/include/c++/4.9.4/queue
+#usr/include/c++/4.9.4/random
+#usr/include/c++/4.9.4/ratio
+#usr/include/c++/4.9.4/regex
+#usr/include/c++/4.9.4/scoped_allocator
+#usr/include/c++/4.9.4/set
+#usr/include/c++/4.9.4/shared_mutex
+#usr/include/c++/4.9.4/sstream
+#usr/include/c++/4.9.4/stack
+#usr/include/c++/4.9.4/stdexcept
+#usr/include/c++/4.9.4/streambuf
+#usr/include/c++/4.9.4/string
+#usr/include/c++/4.9.4/system_error
+#usr/include/c++/4.9.4/tgmath.h
+#usr/include/c++/4.9.4/thread
+#usr/include/c++/4.9.4/tr1
+#usr/include/c++/4.9.4/tr1/array
+#usr/include/c++/4.9.4/tr1/bessel_function.tcc
+#usr/include/c++/4.9.4/tr1/beta_function.tcc
+#usr/include/c++/4.9.4/tr1/ccomplex
+#usr/include/c++/4.9.4/tr1/cctype
+#usr/include/c++/4.9.4/tr1/cfenv
+#usr/include/c++/4.9.4/tr1/cfloat
+#usr/include/c++/4.9.4/tr1/cinttypes
+#usr/include/c++/4.9.4/tr1/climits
+#usr/include/c++/4.9.4/tr1/cmath
+#usr/include/c++/4.9.4/tr1/complex
+#usr/include/c++/4.9.4/tr1/complex.h
+#usr/include/c++/4.9.4/tr1/cstdarg
+#usr/include/c++/4.9.4/tr1/cstdbool
+#usr/include/c++/4.9.4/tr1/cstdint
+#usr/include/c++/4.9.4/tr1/cstdio
+#usr/include/c++/4.9.4/tr1/cstdlib
+#usr/include/c++/4.9.4/tr1/ctgmath
+#usr/include/c++/4.9.4/tr1/ctime
+#usr/include/c++/4.9.4/tr1/ctype.h
+#usr/include/c++/4.9.4/tr1/cwchar
+#usr/include/c++/4.9.4/tr1/cwctype
+#usr/include/c++/4.9.4/tr1/ell_integral.tcc
+#usr/include/c++/4.9.4/tr1/exp_integral.tcc
+#usr/include/c++/4.9.4/tr1/fenv.h
+#usr/include/c++/4.9.4/tr1/float.h
+#usr/include/c++/4.9.4/tr1/functional
+#usr/include/c++/4.9.4/tr1/functional_hash.h
+#usr/include/c++/4.9.4/tr1/gamma.tcc
+#usr/include/c++/4.9.4/tr1/hashtable.h
+#usr/include/c++/4.9.4/tr1/hashtable_policy.h
+#usr/include/c++/4.9.4/tr1/hypergeometric.tcc
+#usr/include/c++/4.9.4/tr1/inttypes.h
+#usr/include/c++/4.9.4/tr1/legendre_function.tcc
+#usr/include/c++/4.9.4/tr1/limits.h
+#usr/include/c++/4.9.4/tr1/math.h
+#usr/include/c++/4.9.4/tr1/memory
+#usr/include/c++/4.9.4/tr1/modified_bessel_func.tcc
+#usr/include/c++/4.9.4/tr1/poly_hermite.tcc
+#usr/include/c++/4.9.4/tr1/poly_laguerre.tcc
+#usr/include/c++/4.9.4/tr1/random
+#usr/include/c++/4.9.4/tr1/random.h
+#usr/include/c++/4.9.4/tr1/random.tcc
+#usr/include/c++/4.9.4/tr1/regex
+#usr/include/c++/4.9.4/tr1/riemann_zeta.tcc
+#usr/include/c++/4.9.4/tr1/shared_ptr.h
+#usr/include/c++/4.9.4/tr1/special_function_util.h
+#usr/include/c++/4.9.4/tr1/stdarg.h
+#usr/include/c++/4.9.4/tr1/stdbool.h
+#usr/include/c++/4.9.4/tr1/stdint.h
+#usr/include/c++/4.9.4/tr1/stdio.h
+#usr/include/c++/4.9.4/tr1/stdlib.h
+#usr/include/c++/4.9.4/tr1/tgmath.h
+#usr/include/c++/4.9.4/tr1/tuple
+#usr/include/c++/4.9.4/tr1/type_traits
+#usr/include/c++/4.9.4/tr1/unordered_map
+#usr/include/c++/4.9.4/tr1/unordered_map.h
+#usr/include/c++/4.9.4/tr1/unordered_set
+#usr/include/c++/4.9.4/tr1/unordered_set.h
+#usr/include/c++/4.9.4/tr1/utility
+#usr/include/c++/4.9.4/tr1/wchar.h
+#usr/include/c++/4.9.4/tr1/wctype.h
+#usr/include/c++/4.9.4/tr2
+#usr/include/c++/4.9.4/tr2/bool_set
+#usr/include/c++/4.9.4/tr2/bool_set.tcc
+#usr/include/c++/4.9.4/tr2/dynamic_bitset
+#usr/include/c++/4.9.4/tr2/dynamic_bitset.tcc
+#usr/include/c++/4.9.4/tr2/ratio
+#usr/include/c++/4.9.4/tr2/type_traits
+#usr/include/c++/4.9.4/tuple
+#usr/include/c++/4.9.4/type_traits
+#usr/include/c++/4.9.4/typeindex
+#usr/include/c++/4.9.4/typeinfo
+#usr/include/c++/4.9.4/unordered_map
+#usr/include/c++/4.9.4/unordered_set
+#usr/include/c++/4.9.4/utility
+#usr/include/c++/4.9.4/valarray
+#usr/include/c++/4.9.4/vector
 #usr/lib/gcc
 #usr/lib/gcc/i586-pc-linux-gnu
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/cc1
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/cc1plus
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/collect2
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtbegin.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtbeginS.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtbeginT.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtend.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtendS.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtfastmath.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtprec32.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtprec64.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/crtprec80.o
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/finclude
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include-fixed
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include-fixed/README
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include-fixed/limits.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include-fixed/syslimits.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/adxintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ammintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/avx2intrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/avx512cdintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/avx512erintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/avx512fintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/avx512pfintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/avxintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/bmi2intrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/bmiintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/bmmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/cilk.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/cilk_api.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/cilk_api_linux.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/cilk_stub.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/cilk_undocumented.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/common.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/holder.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/hyperobject_base.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/metaprogramming.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_file.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_list.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_max.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_min.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_min_max.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_opadd.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_opand.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_opmul.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_opor.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_opxor.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_ostream.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cilk/reducer_string.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cpuid.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/cross-stdarg.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/emmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/f16cintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/float.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/fma4intrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/fmaintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/fxsrintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ia32intrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/immintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/iso646.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/lwpintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/lzcntintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/mm3dnow.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/mm_malloc.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/mmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/nmmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/omp.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/pmmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/popcntintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/prfchwintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/quadmath.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/quadmath_weak.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/rdseedintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/rtmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/sanitizer
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/sanitizer/asan_interface.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/sanitizer/common_interface_defs.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/sanitizer/lsan_interface.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/shaintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/smmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ssp
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ssp/ssp.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ssp/stdio.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ssp/string.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/ssp/unistd.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdalign.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdarg.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdatomic.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdbool.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stddef.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdfix.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdint-gcc.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdint.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/stdnoreturn.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/tbmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/tmmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/unwind.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/varargs.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/wmmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/x86intrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/xmmintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/xopintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/xsaveintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/xsaveoptintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/include/xtestintrin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/fixinc.sh
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/fixinc_list
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/fixincl
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/gsyslimits.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/include
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/include/README
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/include/limits.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/macro_list
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/mkheaders
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/mkheaders.conf
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/install-tools/mkinstalldirs
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/libgcc.a
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/libgcc_eh.a
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/libgcov.a
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/liblto_plugin.la
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/liblto_plugin.so
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/liblto_plugin.so.0
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/liblto_plugin.so.0.0.0
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/lto-wrapper
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/lto1
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/gengtype
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/gtype.state
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ada
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ada/gcc-interface
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ada/gcc-interface/ada-tree.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/alias.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/all-tree.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/alloc-pool.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ansidecl.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/attribs.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/auto-host.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/b-header-vars
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/basic-block.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/bitmap.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/builtins.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/bversion.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-family
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-family/c-common.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-family/c-common.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-family/c-objc.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-family/c-pragma.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-family/c-pretty-print.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/c-tree.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/calls.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cfg-flags.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cfgexpand.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cfghooks.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cfgloop.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cgraph.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cif-code.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cilk-builtins.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cilkplus.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/dbxelf.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/elfos.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/glibc-stdint.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/gnu-user.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/att.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/gnu-user-common.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/gnu-user.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/i386-opts.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/i386-protos.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/i386.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/linux-common.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/linux.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/stringop.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/unix.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/i386/x86-tune.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/initfini-array.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/linux-android.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/linux-protos.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/linux.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/config/vxworks-dummy.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/configargs.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/context.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/coretypes.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cp
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cp/cp-tree.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cp/cp-tree.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cp/cxx-pretty-print.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cp/name-lookup.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cp/type-utils.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cppdefault.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/cpplib.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/debug.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/defaults.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/df.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/diagnostic-color.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/diagnostic-core.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/diagnostic.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/diagnostic.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/double-int.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/dumpfile.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/emit-rtl.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/except.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/filenames.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/fixed-value.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/flag-types.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/flags.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/fold-const.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/function.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gcc-plugin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gcc-symtab.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/genrtl.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ggc.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-builder.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-expr.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-fold.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-iterator.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-low.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-pretty-print.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-ssa.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple-walk.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimple.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimplify-me.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gimplify.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gsstruct.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gtm-builtins.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/gtype-desc.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/hard-reg-set.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/hash-table.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/hashtab.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/highlev-plugin-common.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/hwint.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/incpath.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/input.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/insn-codes.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/insn-constants.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/insn-flags.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/insn-modes.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/insn-notes.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/internal-fn.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/internal-fn.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/intl.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ipa-prop.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ipa-ref-inline.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ipa-ref.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ipa-reference.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ipa-utils.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/is-a.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/java
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/java/java-tree.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/langhooks.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/libiberty.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/line-map.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/machmode.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/md5.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/mode-classes.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/objc
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/objc/objc-tree.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/obstack.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/omp-builtins.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/options.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/opts.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/output.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/params.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/params.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/pass-instances.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/pass_manager.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/plugin-api.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/plugin-version.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/plugin.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/plugin.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/pointer-set.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/predict.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/predict.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/prefix.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/pretty-print.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/print-rtl.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/print-tree.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/real.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/realmpfr.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/reg-notes.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/regset.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/resource.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/rtl.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/rtl.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/safe-ctype.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/sanitizer.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/sbitmap.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/splay-tree.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/ssa-iterators.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/statistics.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/stmt.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/stor-layout.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/stringpool.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/symtab.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/sync-builtins.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/system.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/target-hooks-macros.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/target.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/target.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/timevar.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/timevar.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tm-preds.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tm.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tm_p.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/toplev.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-cfg.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-cfgcleanup.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-check.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-core.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-dfa.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-dump.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-eh.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-hasher.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-inline.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-into-ssa.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-iterator.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-nested.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-object-size.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-outof-ssa.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-parloops.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-pass.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-phinodes.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-pretty-print.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-address.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-alias.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-coalesce.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-dom.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-loop-ivopts.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-loop-manip.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-loop-niter.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-loop.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-operands.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-sccvn.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-ter.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-threadedge.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa-threadupdate.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssa.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree-ssanames.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/tree.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/treestruct.def
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/varasm.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/vec.h
-#usr/lib/gcc/i586-pc-linux-gnu/4.9.3/plugin/include/version.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/cc1
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/cc1plus
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/collect2
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtbegin.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtbeginS.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtbeginT.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtend.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtendS.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtfastmath.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtprec32.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtprec64.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtprec80.o
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/finclude
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed/README
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed/limits.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed/syslimits.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/adxintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ammintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx2intrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512cdintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512erintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512fintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512pfintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avxintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/bmi2intrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/bmiintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/bmmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_api.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_api_linux.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_stub.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_undocumented.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/common.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/holder.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/hyperobject_base.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/metaprogramming.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_file.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_list.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_max.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_min.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_min_max.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opadd.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opand.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opmul.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opor.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opxor.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_ostream.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_string.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cpuid.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cross-stdarg.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/emmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/f16cintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/float.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/fma4intrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/fmaintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/fxsrintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ia32intrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/immintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/iso646.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/lwpintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/lzcntintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/mm3dnow.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/mm_malloc.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/mmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/nmmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/omp.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/pmmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/popcntintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/prfchwintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/quadmath.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/quadmath_weak.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/rdseedintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/rtmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer/asan_interface.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer/common_interface_defs.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer/lsan_interface.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/shaintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/smmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/ssp.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/stdio.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/string.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/unistd.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdalign.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdarg.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdatomic.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdbool.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stddef.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdfix.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdint-gcc.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdint.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdnoreturn.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/tbmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/tmmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/unwind.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/varargs.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/wmmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/x86intrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xmmintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xopintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xsaveintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xsaveoptintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xtestintrin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/fixinc.sh
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/fixinc_list
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/fixincl
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/gsyslimits.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/include
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/include/README
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/include/limits.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/macro_list
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/mkheaders
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/mkheaders.conf
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/mkinstalldirs
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/libgcc.a
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/libgcc_eh.a
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/libgcov.a
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.la
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.so
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.so.0
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.so.0.0.0
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/lto-wrapper
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/lto1
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/gengtype
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/gtype.state
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ada
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ada/gcc-interface
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ada/gcc-interface/ada-tree.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/alias.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/all-tree.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/alloc-pool.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ansidecl.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/attribs.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/auto-host.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/b-header-vars
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/basic-block.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/bitmap.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/builtins.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/bversion.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-common.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-common.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-objc.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-pragma.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-pretty-print.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-tree.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/calls.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfg-flags.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfgexpand.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfghooks.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfgloop.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cgraph.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cif-code.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cilk-builtins.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cilkplus.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/dbxelf.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/elfos.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/glibc-stdint.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/gnu-user.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/att.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user-common.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/i386-opts.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/i386-protos.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/i386.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/linux-common.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/linux.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/stringop.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/unix.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/x86-tune.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/initfini-array.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/linux-android.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/linux-protos.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/linux.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/vxworks-dummy.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/configargs.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/context.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/coretypes.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/cp-tree.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/cp-tree.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/cxx-pretty-print.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/name-lookup.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/type-utils.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cppdefault.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cpplib.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/debug.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/defaults.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/df.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic-color.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic-core.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/double-int.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/dumpfile.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/emit-rtl.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/except.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/filenames.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/fixed-value.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/flag-types.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/flags.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/fold-const.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/function.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gcc-plugin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gcc-symtab.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/genrtl.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ggc.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-builder.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-expr.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-fold.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-iterator.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-low.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-pretty-print.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-ssa.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-walk.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimplify-me.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimplify.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gsstruct.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gtm-builtins.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gtype-desc.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hard-reg-set.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hash-table.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hashtab.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/highlev-plugin-common.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hwint.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/incpath.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/input.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-codes.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-constants.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-flags.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-modes.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-notes.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/internal-fn.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/internal-fn.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/intl.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-prop.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-ref-inline.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-ref.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-reference.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-utils.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/is-a.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/java
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/java/java-tree.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/langhooks.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/libiberty.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/line-map.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/machmode.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/md5.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/mode-classes.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/objc
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/objc/objc-tree.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/obstack.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/omp-builtins.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/options.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/opts.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/output.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/params.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/params.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pass-instances.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pass_manager.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin-api.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin-version.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pointer-set.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/predict.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/predict.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/prefix.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pretty-print.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/print-rtl.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/print-tree.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/real.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/realmpfr.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/reg-notes.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/regset.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/resource.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/rtl.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/rtl.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/safe-ctype.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/sanitizer.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/sbitmap.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/splay-tree.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ssa-iterators.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/statistics.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/stmt.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/stor-layout.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/stringpool.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/symtab.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/sync-builtins.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/system.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/target-hooks-macros.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/target.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/target.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/timevar.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/timevar.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tm-preds.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tm.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tm_p.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/toplev.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-cfg.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-cfgcleanup.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-check.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-core.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-dfa.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-dump.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-eh.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-hasher.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-inline.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-into-ssa.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-iterator.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-nested.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-object-size.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-outof-ssa.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-parloops.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-pass.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-phinodes.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-pretty-print.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-address.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-alias.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-coalesce.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-dom.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-ivopts.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-manip.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-niter.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-operands.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-sccvn.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-ter.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-threadedge.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-threadupdate.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssanames.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/treestruct.def
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/varasm.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/vec.h
+#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/version.h
 #usr/lib/libasan.a
 #usr/lib/libasan.la
 #usr/lib/libasan.so
@@ -1150,13 +1150,13 @@ usr/lib/libubsan.so.0.0.0
 #usr/lib/libvtv.so
 usr/lib/libvtv.so.0
 usr/lib/libvtv.so.0.0.0
-#usr/share/gcc-4.9.3
-#usr/share/gcc-4.9.3/python
-#usr/share/gcc-4.9.3/python/libstdcxx
-#usr/share/gcc-4.9.3/python/libstdcxx/__init__.py
-#usr/share/gcc-4.9.3/python/libstdcxx/v6
-#usr/share/gcc-4.9.3/python/libstdcxx/v6/__init__.py
-#usr/share/gcc-4.9.3/python/libstdcxx/v6/printers.py
+#usr/share/gcc-4.9.4
+#usr/share/gcc-4.9.4/python
+#usr/share/gcc-4.9.4/python/libstdcxx
+#usr/share/gcc-4.9.4/python/libstdcxx/__init__.py
+#usr/share/gcc-4.9.4/python/libstdcxx/v6
+#usr/share/gcc-4.9.4/python/libstdcxx/v6/__init__.py
+#usr/share/gcc-4.9.4/python/libstdcxx/v6/printers.py
 #usr/share/info/cpp.info
 #usr/share/info/cppinternals.info
 #usr/share/info/gcc.info
index 972bca1a06d91e0bafc25ddfaa419d64aa5ea2f8..636dc5c45b05b055fa54c04be64adb111969330d 100644 (file)
@@ -4,14 +4,14 @@
 #usr/lib/libgmp.la
 #usr/lib/libgmp.so
 usr/lib/libgmp.so.10
-usr/lib/libgmp.so.10.3.0
+usr/lib/libgmp.so.10.3.2
 #usr/lib/libgmpxx.a
 #usr/lib/libgmpxx.la
 #usr/lib/libgmpxx.so
 usr/lib/libgmpxx.so.4
-usr/lib/libgmpxx.so.4.5.0
+usr/lib/libgmpxx.so.4.5.2
 usr/lib/sse2/libgmp.so.10
-usr/lib/sse2/libgmp.so.10.3.0
+usr/lib/sse2/libgmp.so.10.3.2
 #usr/share/info/gmp.info
 #usr/share/info/gmp.info-1
 #usr/share/info/gmp.info-2
index 5f694ff0c900070fcb661fa8baf9e1e9402704ec..d8d7657cea9dd4ead50b9083c4cbdda3edd16a38 100644 (file)
@@ -19,7 +19,7 @@ bin/setfont
 #lib/kbd/consolefonts/Cyr_a8x14.psfu.gz
 #lib/kbd/consolefonts/Cyr_a8x16.psfu.gz
 #lib/kbd/consolefonts/Cyr_a8x8.psfu.gz
-#lib/kbd/consolefonts/ERRORS
+#lib/kbd/consolefonts/ERRORS.gz
 #lib/kbd/consolefonts/Goha-12.psfu.gz
 #lib/kbd/consolefonts/Goha-14.psfu.gz
 #lib/kbd/consolefonts/Goha-16.psfu.gz
@@ -32,19 +32,19 @@ lib/kbd/consolefonts/LatArCyrHeb-16+.psfu.gz
 lib/kbd/consolefonts/LatArCyrHeb-16.psfu.gz
 #lib/kbd/consolefonts/LatArCyrHeb-19.psfu.gz
 #lib/kbd/consolefonts/Mik_8x16.gz
-#lib/kbd/consolefonts/README.12x22
-#lib/kbd/consolefonts/README.Arabic
-#lib/kbd/consolefonts/README.Cyrillic
-#lib/kbd/consolefonts/README.Ethiopic
-#lib/kbd/consolefonts/README.Greek
-#lib/kbd/consolefonts/README.Hebrew
-#lib/kbd/consolefonts/README.cp1250
-#lib/kbd/consolefonts/README.cybercafe
-#lib/kbd/consolefonts/README.drdos
-#lib/kbd/consolefonts/README.lat0
-#lib/kbd/consolefonts/README.lat7
-#lib/kbd/consolefonts/README.lat9
-#lib/kbd/consolefonts/README.psfu
+#lib/kbd/consolefonts/README.12x22.gz
+#lib/kbd/consolefonts/README.Arabic.gz
+#lib/kbd/consolefonts/README.Cyrillic.gz
+#lib/kbd/consolefonts/README.Ethiopic.gz
+#lib/kbd/consolefonts/README.Greek.gz
+#lib/kbd/consolefonts/README.Hebrew.gz
+#lib/kbd/consolefonts/README.cp1250.gz
+#lib/kbd/consolefonts/README.cybercafe.gz
+#lib/kbd/consolefonts/README.drdos.gz
+#lib/kbd/consolefonts/README.lat0.gz
+#lib/kbd/consolefonts/README.lat7.gz
+#lib/kbd/consolefonts/README.lat9.gz
+#lib/kbd/consolefonts/README.psfu.gz
 #lib/kbd/consolefonts/alt-8x14.gz
 #lib/kbd/consolefonts/alt-8x16.gz
 #lib/kbd/consolefonts/alt-8x8.gz
index aab354ebee540dcd3a894e600cdb792d889d4680..d5c60c23329d3d74dc03a7f572f6a27fbe52643b 100644 (file)
 #usr/include/event2/tag_compat.h
 #usr/include/event2/thread.h
 #usr/include/event2/util.h
-usr/lib/libevent-2.0.so.5
-usr/lib/libevent-2.0.so.5.1.9
-usr/lib/libevent_core-2.0.so.5
-usr/lib/libevent_core-2.0.so.5.1.9
-usr/lib/libevent_extra-2.0.so.5
-usr/lib/libevent_extra-2.0.so.5.1.9
-usr/lib/libevent_openssl-2.0.so.5
-usr/lib/libevent_openssl-2.0.so.5.1.9
-#usr/lib/libevent_openssl.a
+#usr/include/event2/visibility.h
+usr/lib/libevent-2.1.so.6
+usr/lib/libevent-2.1.so.6.0.2
+usr/lib/libevent_core-2.1.so.6
+usr/lib/libevent_core-2.1.so.6.0.2
+usr/lib/libevent_extra-2.1.so.6
+usr/lib/libevent_extra-2.1.so.6.0.2
+usr/lib/libevent_openssl-2.1.so.6
+usr/lib/libevent_openssl-2.1.so.6.0.2
 #usr/lib/libevent_openssl.la
 usr/lib/libevent_openssl.so
-usr/lib/libevent_pthreads-2.0.so.5
-usr/lib/libevent_pthreads-2.0.so.5.1.9
-#usr/lib/libevent_pthreads.a
+usr/lib/libevent_pthreads-2.1.so.6
+usr/lib/libevent_pthreads-2.1.so.6.0.2
 #usr/lib/libevent_pthreads.la
 usr/lib/libevent_pthreads.so
 #usr/lib/pkgconfig/libevent.pc
+#usr/lib/pkgconfig/libevent_core.pc
+#usr/lib/pkgconfig/libevent_extra.pc
 #usr/lib/pkgconfig/libevent_openssl.pc
 #usr/lib/pkgconfig/libevent_pthreads.pc
diff --git a/config/rootfiles/common/libevent2-compat b/config/rootfiles/common/libevent2-compat
new file mode 100644 (file)
index 0000000..edeb449
--- /dev/null
@@ -0,0 +1,10 @@
+usr/lib/libevent-2.0.so.5
+usr/lib/libevent-2.0.so.5.1.9
+usr/lib/libevent_core-2.0.so.5
+usr/lib/libevent_core-2.0.so.5.1.9
+usr/lib/libevent_extra-2.0.so.5
+usr/lib/libevent_extra-2.0.so.5.1.9
+usr/lib/libevent_openssl-2.0.so.5
+usr/lib/libevent_openssl-2.0.so.5.1.9
+usr/lib/libevent_pthreads-2.0.so.5
+usr/lib/libevent_pthreads-2.0.so.5.1.9
index 8ef728c94a1000f35e15d2bd3939d657e2a0a644..0583525ea0ccb0698c0572d1c1ab281de22bbf5c 100644 (file)
@@ -1,6 +1,6 @@
 #etc/logrotate.d
 etc/logrotate.d/.empty
-#usr/man/man5/logrotate.conf.5
-#usr/man/man8/logrotate.8
 usr/sbin/logrotate
+#usr/share/man/man5/logrotate.conf.5
+#usr/share/man/man8/logrotate.8
 var/lib/logrotate.status
index 998ab8ae2a2d670ea0524eaa596f7a107a2e4aab..fe67a8c8463aa3420d1b8a05915435bd1a83ed10 100644 (file)
@@ -1,11 +1,6 @@
 #etc/logwatch
 etc/logwatch/conf
 #etc/logwatch/logwatch.cron
-#etc/logwatch/conf/ignore.conf
-#etc/logwatch/conf/logfiles
-#etc/logwatch/conf/logwatch.conf
-#etc/logwatch/conf/override.conf
-#etc/logwatch/conf/services
 etc/logwatch/scripts
 etc/logwatch/scripts/services
 usr/sbin/logwatch
@@ -72,7 +67,7 @@ usr/share/logwatch/default.conf/logfiles/xferlog.conf
 #usr/share/logwatch/default.conf/logfiles/yum.conf
 #usr/share/logwatch/default.conf/logfiles/zypp.conf
 usr/share/logwatch/default.conf/logwatch.conf
-usr/share/logwatch/default.conf/services
+#usr/share/logwatch/default.conf/services
 #usr/share/logwatch/default.conf/services/afpd.conf
 usr/share/logwatch/default.conf/services/amavis.conf
 #usr/share/logwatch/default.conf/services/arpwatch.conf
@@ -99,7 +94,7 @@ usr/share/logwatch/default.conf/services/dhcpd.conf
 #usr/share/logwatch/default.conf/services/evtsecurity.conf
 #usr/share/logwatch/default.conf/services/evtsystem.conf
 #usr/share/logwatch/default.conf/services/exim.conf
-#usr/share/logwatch/default.conf/services/eximstats.conf
+usr/share/logwatch/default.conf/services/eximstats.conf
 #usr/share/logwatch/default.conf/services/extreme-networks.conf
 #usr/share/logwatch/default.conf/services/fail2ban.conf
 #usr/share/logwatch/default.conf/services/fetchmail.conf
@@ -166,10 +161,12 @@ usr/share/logwatch/default.conf/services/scsi.conf
 #usr/share/logwatch/default.conf/services/spamassassin.conf
 usr/share/logwatch/default.conf/services/sshd.conf
 usr/share/logwatch/default.conf/services/sshd2.conf
+#usr/share/logwatch/default.conf/services/sssd.conf
 #usr/share/logwatch/default.conf/services/stunnel.conf
 usr/share/logwatch/default.conf/services/sudo.conf
 #usr/share/logwatch/default.conf/services/syslog-ng.conf
 usr/share/logwatch/default.conf/services/syslogd.conf
+#usr/share/logwatch/default.conf/services/systemd.conf
 #usr/share/logwatch/default.conf/services/tac_acc.conf
 #usr/share/logwatch/default.conf/services/tivoli-smc.conf
 #usr/share/logwatch/default.conf/services/up2date.conf
@@ -182,10 +179,10 @@ usr/share/logwatch/default.conf/services/windows.conf
 #usr/share/logwatch/default.conf/services/zypp.conf
 usr/share/logwatch/default.conf/services/zz-disk_space.conf
 #usr/share/logwatch/default.conf/services/zz-fortune.conf
-#usr/share/logwatch/default.conf/services/zz-lm_sensors.conf
+usr/share/logwatch/default.conf/services/zz-lm_sensors.conf
 usr/share/logwatch/default.conf/services/zz-network.conf
 usr/share/logwatch/default.conf/services/zz-runtime.conf
-#usr/share/logwatch/default.conf/services/zz-sys.conf
+usr/share/logwatch/default.conf/services/zz-sys.conf
 #usr/share/logwatch/default.conf/services/zz-zfs.conf
 #usr/share/logwatch/dist.conf
 usr/share/logwatch/dist.conf/logfiles
@@ -213,7 +210,7 @@ usr/share/logwatch/scripts/logfiles/xferlog/removeheaders
 #usr/share/logwatch/scripts/logfiles/yum
 #usr/share/logwatch/scripts/logfiles/yum/applydate
 usr/share/logwatch/scripts/logwatch.pl
-usr/share/logwatch/scripts/services
+#usr/share/logwatch/scripts/services
 #usr/share/logwatch/scripts/services/afpd
 usr/share/logwatch/scripts/services/amavis
 #usr/share/logwatch/scripts/services/arpwatch
@@ -241,7 +238,7 @@ usr/share/logwatch/scripts/services/dialup
 #usr/share/logwatch/scripts/services/evtsecurity
 #usr/share/logwatch/scripts/services/evtsystem
 #usr/share/logwatch/scripts/services/exim
-#usr/share/logwatch/scripts/services/eximstats
+usr/share/logwatch/scripts/services/eximstats
 #usr/share/logwatch/scripts/services/extreme-networks
 #usr/share/logwatch/scripts/services/fail2ban
 #usr/share/logwatch/scripts/services/fetchmail
@@ -292,7 +289,7 @@ usr/share/logwatch/scripts/services/postfix
 #usr/share/logwatch/scripts/services/qmail-send
 #usr/share/logwatch/scripts/services/qmail-smtpd
 #usr/share/logwatch/scripts/services/raid
-#usr/share/logwatch/scripts/services/resolver
+usr/share/logwatch/scripts/services/resolver
 #usr/share/logwatch/scripts/services/rsyslogd
 #usr/share/logwatch/scripts/services/rt314
 usr/share/logwatch/scripts/services/samba
@@ -308,10 +305,12 @@ usr/share/logwatch/scripts/services/scsi
 #usr/share/logwatch/scripts/services/spamassassin
 usr/share/logwatch/scripts/services/sshd
 usr/share/logwatch/scripts/services/sshd2
+#usr/share/logwatch/scripts/services/sssd
 #usr/share/logwatch/scripts/services/stunnel
 usr/share/logwatch/scripts/services/sudo
 #usr/share/logwatch/scripts/services/syslog-ng
 usr/share/logwatch/scripts/services/syslogd
+#usr/share/logwatch/scripts/services/systemd
 #usr/share/logwatch/scripts/services/tac_acc
 #usr/share/logwatch/scripts/services/tivoli-smc
 #usr/share/logwatch/scripts/services/up2date
@@ -324,10 +323,10 @@ usr/share/logwatch/scripts/services/windows
 #usr/share/logwatch/scripts/services/zypp
 usr/share/logwatch/scripts/services/zz-disk_space
 #usr/share/logwatch/scripts/services/zz-fortune
-#usr/share/logwatch/scripts/services/zz-lm_sensors
+usr/share/logwatch/scripts/services/zz-lm_sensors
 usr/share/logwatch/scripts/services/zz-network
 usr/share/logwatch/scripts/services/zz-runtime
-#usr/share/logwatch/scripts/services/zz-sys
+usr/share/logwatch/scripts/services/zz-sys
 #usr/share/logwatch/scripts/services/zz-zfs
 #usr/share/logwatch/scripts/shared
 usr/share/logwatch/scripts/shared/applybinddate
index 7cdd31f440515b945251178ce898cb2646ce68db..34c4dbe7817b293bbf14dbddc513141c0b50e222 100644 (file)
@@ -4,7 +4,7 @@
 #usr/lib/libmpfr.la
 #usr/lib/libmpfr.so
 usr/lib/libmpfr.so.4
-usr/lib/libmpfr.so.4.1.3
+usr/lib/libmpfr.so.4.1.5
 #usr/share/doc/mpfr
 #usr/share/doc/mpfr/AUTHORS
 #usr/share/doc/mpfr/BUGS
index 55fb9d721bf709f99b3a39daa2fa4dbc76db1270..c551c0dd3ce92eab33caab43557801e1975d3d37 100644 (file)
 #usr/lib/libpcre.la
 usr/lib/libpcre.so
 usr/lib/libpcre.so.1
-usr/lib/libpcre.so.1.2.7
+usr/lib/libpcre.so.1.2.8
 #usr/lib/libpcre16.la
 usr/lib/libpcre16.so
 usr/lib/libpcre16.so.0
-usr/lib/libpcre16.so.0.2.7
+usr/lib/libpcre16.so.0.2.8
 #usr/lib/libpcre32.la
 usr/lib/libpcre32.so
 usr/lib/libpcre32.so.0
-usr/lib/libpcre32.so.0.0.7
+usr/lib/libpcre32.so.0.0.8
 #usr/lib/libpcrecpp.la
 usr/lib/libpcrecpp.so
 usr/lib/libpcrecpp.so.0
@@ -32,72 +32,72 @@ usr/lib/libpcreposix.so.0.0.4
 #usr/lib/pkgconfig/libpcre32.pc
 #usr/lib/pkgconfig/libpcrecpp.pc
 #usr/lib/pkgconfig/libpcreposix.pc
-#usr/share/doc/pcre-pcre-8.39
-#usr/share/doc/pcre-pcre-8.39/AUTHORS
-#usr/share/doc/pcre-pcre-8.39/COPYING
-#usr/share/doc/pcre-pcre-8.39/ChangeLog
-#usr/share/doc/pcre-pcre-8.39/LICENCE
-#usr/share/doc/pcre-pcre-8.39/NEWS
-#usr/share/doc/pcre-pcre-8.39/README
-#usr/share/doc/pcre-pcre-8.39/html
-#usr/share/doc/pcre-pcre-8.39/html/NON-AUTOTOOLS-BUILD.txt
-#usr/share/doc/pcre-pcre-8.39/html/README.txt
-#usr/share/doc/pcre-pcre-8.39/html/index.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre-config.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre16.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre32.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_assign_jit_stack.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_compile.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_compile2.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_config.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_copy_named_substring.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_copy_substring.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_dfa_exec.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_exec.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_free_study.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_free_substring.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_free_substring_list.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_fullinfo.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_get_named_substring.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_get_stringnumber.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_get_stringtable_entries.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_get_substring.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_get_substring_list.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_jit_exec.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_jit_stack_alloc.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_jit_stack_free.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_maketables.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_pattern_to_host_byte_order.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_refcount.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_study.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_utf16_to_host_byte_order.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_utf32_to_host_byte_order.html
-#usr/share/doc/pcre-pcre-8.39/html/pcre_version.html
-#usr/share/doc/pcre-pcre-8.39/html/pcreapi.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrebuild.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrecallout.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrecompat.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrecpp.html
-#usr/share/doc/pcre-pcre-8.39/html/pcredemo.html
-#usr/share/doc/pcre-pcre-8.39/html/pcregrep.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrejit.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrelimits.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrematching.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrepartial.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrepattern.html
-#usr/share/doc/pcre-pcre-8.39/html/pcreperform.html
-#usr/share/doc/pcre-pcre-8.39/html/pcreposix.html
-#usr/share/doc/pcre-pcre-8.39/html/pcreprecompile.html
-#usr/share/doc/pcre-pcre-8.39/html/pcresample.html
-#usr/share/doc/pcre-pcre-8.39/html/pcrestack.html
-#usr/share/doc/pcre-pcre-8.39/html/pcresyntax.html
-#usr/share/doc/pcre-pcre-8.39/html/pcretest.html
-#usr/share/doc/pcre-pcre-8.39/html/pcreunicode.html
-#usr/share/doc/pcre-pcre-8.39/pcre-config.txt
-#usr/share/doc/pcre-pcre-8.39/pcre.txt
-#usr/share/doc/pcre-pcre-8.39/pcregrep.txt
-#usr/share/doc/pcre-pcre-8.39/pcretest.txt
+#usr/share/doc/pcre-pcre-8.40
+#usr/share/doc/pcre-pcre-8.40/AUTHORS
+#usr/share/doc/pcre-pcre-8.40/COPYING
+#usr/share/doc/pcre-pcre-8.40/ChangeLog
+#usr/share/doc/pcre-pcre-8.40/LICENCE
+#usr/share/doc/pcre-pcre-8.40/NEWS
+#usr/share/doc/pcre-pcre-8.40/README
+#usr/share/doc/pcre-pcre-8.40/html
+#usr/share/doc/pcre-pcre-8.40/html/NON-AUTOTOOLS-BUILD.txt
+#usr/share/doc/pcre-pcre-8.40/html/README.txt
+#usr/share/doc/pcre-pcre-8.40/html/index.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre-config.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre16.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre32.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_assign_jit_stack.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_compile.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_compile2.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_config.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_copy_named_substring.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_copy_substring.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_dfa_exec.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_exec.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_free_study.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_free_substring.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_free_substring_list.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_fullinfo.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_get_named_substring.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_get_stringnumber.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_get_stringtable_entries.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_get_substring.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_get_substring_list.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_jit_exec.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_jit_stack_alloc.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_jit_stack_free.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_maketables.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_pattern_to_host_byte_order.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_refcount.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_study.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_utf16_to_host_byte_order.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_utf32_to_host_byte_order.html
+#usr/share/doc/pcre-pcre-8.40/html/pcre_version.html
+#usr/share/doc/pcre-pcre-8.40/html/pcreapi.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrebuild.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrecallout.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrecompat.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrecpp.html
+#usr/share/doc/pcre-pcre-8.40/html/pcredemo.html
+#usr/share/doc/pcre-pcre-8.40/html/pcregrep.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrejit.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrelimits.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrematching.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrepartial.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrepattern.html
+#usr/share/doc/pcre-pcre-8.40/html/pcreperform.html
+#usr/share/doc/pcre-pcre-8.40/html/pcreposix.html
+#usr/share/doc/pcre-pcre-8.40/html/pcreprecompile.html
+#usr/share/doc/pcre-pcre-8.40/html/pcresample.html
+#usr/share/doc/pcre-pcre-8.40/html/pcrestack.html
+#usr/share/doc/pcre-pcre-8.40/html/pcresyntax.html
+#usr/share/doc/pcre-pcre-8.40/html/pcretest.html
+#usr/share/doc/pcre-pcre-8.40/html/pcreunicode.html
+#usr/share/doc/pcre-pcre-8.40/pcre-config.txt
+#usr/share/doc/pcre-pcre-8.40/pcre.txt
+#usr/share/doc/pcre-pcre-8.40/pcregrep.txt
+#usr/share/doc/pcre-pcre-8.40/pcretest.txt
 #usr/share/man/man1/pcre-config.1
 #usr/share/man/man1/pcregrep.1
 #usr/share/man/man1/pcretest.1
index 98d76b582a7f6827cfac2fb9baf247e0f492dadf..4254b2ec9b49baec4dd8782dca23b5d68982360d 100644 (file)
@@ -1,7 +1,7 @@
 #srv/web/ipfire/html/graphs
 usr/bin/rrdcached
-#usr/bin/rrdcreate
-#usr/bin/rrdinfo
+usr/bin/rrdcreate
+usr/bin/rrdinfo
 usr/bin/rrdtool
 usr/bin/rrdupdate
 #usr/include/rrd.h
@@ -10,13 +10,8 @@ usr/bin/rrdupdate
 #usr/lib/librrd.a
 #usr/lib/librrd.la
 #usr/lib/librrd.so
-usr/lib/librrd.so.4
-usr/lib/librrd.so.4.3.5
-#usr/lib/librrd_th.a
-#usr/lib/librrd_th.la
-#usr/lib/librrd_th.so
-usr/lib/librrd_th.so.4
-usr/lib/librrd_th.so.4.3.5
+usr/lib/librrd.so.8
+usr/lib/librrd.so.8.0.0
 usr/lib/perl5/site_perl/5.12.3/RRDp.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/RRDs.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDp
@@ -26,98 +21,101 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/RRDs.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.bs
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.so
 #usr/lib/pkgconfig/librrd.pc
-#usr/share/doc/rrdtool-1.5.5
-#usr/share/doc/rrdtool-1.5.5/html
-#usr/share/doc/rrdtool-1.5.5/html/RRDp.html
-#usr/share/doc/rrdtool-1.5.5/html/RRDs.html
-#usr/share/doc/rrdtool-1.5.5/html/bin_dec_hex.html
-#usr/share/doc/rrdtool-1.5.5/html/cdeftutorial.html
-#usr/share/doc/rrdtool-1.5.5/html/index.html
-#usr/share/doc/rrdtool-1.5.5/html/librrd.html
-#usr/share/doc/rrdtool-1.5.5/html/rpntutorial.html
-#usr/share/doc/rrdtool-1.5.5/html/rrd-beginners.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdbuild.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdcached.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdcgi.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdcreate.html
-#usr/share/doc/rrdtool-1.5.5/html/rrddump.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdfetch.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdfirst.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdflushcached.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdgraph.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdgraph_data.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdgraph_examples.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdgraph_graph.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdgraph_rpn.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdinfo.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdlast.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdlastupdate.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdresize.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdrestore.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdthreads.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdtool.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdtune.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdtutorial.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdupdate.html
-#usr/share/doc/rrdtool-1.5.5/html/rrdxport.html
-#usr/share/doc/rrdtool-1.5.5/txt
-#usr/share/doc/rrdtool-1.5.5/txt/bin_dec_hex.pod
-#usr/share/doc/rrdtool-1.5.5/txt/bin_dec_hex.txt
-#usr/share/doc/rrdtool-1.5.5/txt/cdeftutorial.pod
-#usr/share/doc/rrdtool-1.5.5/txt/cdeftutorial.txt
-#usr/share/doc/rrdtool-1.5.5/txt/librrd.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rpntutorial.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rpntutorial.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrd-beginners.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrd-beginners.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdbuild.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdbuild.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdcached.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdcached.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdcgi.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdcgi.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdcreate.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdcreate.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrddump.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrddump.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdfetch.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdfetch.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdfirst.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdfirst.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdflushcached.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdflushcached.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_data.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_data.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_examples.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_examples.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_graph.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_graph.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_rpn.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdgraph_rpn.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdinfo.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdinfo.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdlast.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdlast.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdlastupdate.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdlastupdate.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdresize.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdresize.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdrestore.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdrestore.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdthreads.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdthreads.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdtool.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdtool.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdtune.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdtune.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdtutorial.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdtutorial.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdupdate.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdupdate.txt
-#usr/share/doc/rrdtool-1.5.5/txt/rrdxport.pod
-#usr/share/doc/rrdtool-1.5.5/txt/rrdxport.txt
+#usr/share/doc/rrdtool-1.6.0
+#usr/share/doc/rrdtool-1.6.0/html
+#usr/share/doc/rrdtool-1.6.0/html/RRDp.html
+#usr/share/doc/rrdtool-1.6.0/html/RRDs.html
+#usr/share/doc/rrdtool-1.6.0/html/bin_dec_hex.html
+#usr/share/doc/rrdtool-1.6.0/html/cdeftutorial.html
+#usr/share/doc/rrdtool-1.6.0/html/index.html
+#usr/share/doc/rrdtool-1.6.0/html/librrd.html
+#usr/share/doc/rrdtool-1.6.0/html/rpntutorial.html
+#usr/share/doc/rrdtool-1.6.0/html/rrd-beginners.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdbuild.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdcached.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdcgi.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdcreate.html
+#usr/share/doc/rrdtool-1.6.0/html/rrddump.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdfetch.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdfirst.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdflushcached.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdgraph.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdgraph_data.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdgraph_examples.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdgraph_graph.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdgraph_rpn.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdinfo.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdlast.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdlastupdate.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdlua.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdresize.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdrestore.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdthreads.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdtool.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdtune.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdtutorial.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdupdate.html
+#usr/share/doc/rrdtool-1.6.0/html/rrdxport.html
+#usr/share/doc/rrdtool-1.6.0/txt
+#usr/share/doc/rrdtool-1.6.0/txt/bin_dec_hex.pod
+#usr/share/doc/rrdtool-1.6.0/txt/bin_dec_hex.txt
+#usr/share/doc/rrdtool-1.6.0/txt/cdeftutorial.pod
+#usr/share/doc/rrdtool-1.6.0/txt/cdeftutorial.txt
+#usr/share/doc/rrdtool-1.6.0/txt/librrd.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rpntutorial.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rpntutorial.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrd-beginners.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrd-beginners.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdbuild.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdbuild.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdcached.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdcached.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdcgi.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdcgi.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdcreate.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdcreate.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrddump.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrddump.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdfetch.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdfetch.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdfirst.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdfirst.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdflushcached.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdflushcached.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_data.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_data.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_examples.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_examples.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_graph.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_graph.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_rpn.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdgraph_rpn.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdinfo.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdinfo.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdlast.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdlast.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdlastupdate.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdlastupdate.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdlua.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdlua.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdresize.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdresize.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdrestore.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdrestore.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdthreads.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdthreads.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdtool.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdtool.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdtune.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdtune.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdtutorial.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdtutorial.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdupdate.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdupdate.txt
+#usr/share/doc/rrdtool-1.6.0/txt/rrdxport.pod
+#usr/share/doc/rrdtool-1.6.0/txt/rrdxport.txt
 #usr/share/man/man1/bin_dec_hex.1
 #usr/share/man/man1/cdeftutorial.1
 #usr/share/man/man1/rpntutorial.1
@@ -138,6 +136,7 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.so
 #usr/share/man/man1/rrdinfo.1
 #usr/share/man/man1/rrdlast.1
 #usr/share/man/man1/rrdlastupdate.1
+#usr/share/man/man1/rrdlua.1
 #usr/share/man/man1/rrdresize.1
 #usr/share/man/man1/rrdrestore.1
 #usr/share/man/man1/rrdthreads.1
index 354ecd7b55bf670f52c22d03475fe99e67624346..fbc57866ab627e8d2a4add8a6bb34e873defb103 100644 (file)
@@ -21,6 +21,7 @@ etc/strongswan.d/charon/cmac.conf
 etc/strongswan.d/charon/constraints.conf
 etc/strongswan.d/charon/ctr.conf
 etc/strongswan.d/charon/curl.conf
+etc/strongswan.d/charon/curve25519.conf
 etc/strongswan.d/charon/des.conf
 etc/strongswan.d/charon/dhcp.conf
 etc/strongswan.d/charon/dnskey.conf
@@ -105,6 +106,11 @@ usr/lib/ipsec/libstrongswan.so.0.0.0
 usr/lib/ipsec/libtls.so
 usr/lib/ipsec/libtls.so.0
 usr/lib/ipsec/libtls.so.0.0.0
+#usr/lib/ipsec/libtpmtss.a
+#usr/lib/ipsec/libtpmtss.la
+usr/lib/ipsec/libtpmtss.so
+usr/lib/ipsec/libtpmtss.so.0
+usr/lib/ipsec/libtpmtss.so.0.0.0
 #usr/lib/ipsec/libvici.a
 #usr/lib/ipsec/libvici.la
 usr/lib/ipsec/libvici.so
@@ -118,6 +124,7 @@ usr/lib/ipsec/plugins/libstrongswan-cmac.so
 usr/lib/ipsec/plugins/libstrongswan-constraints.so
 usr/lib/ipsec/plugins/libstrongswan-ctr.so
 usr/lib/ipsec/plugins/libstrongswan-curl.so
+usr/lib/ipsec/plugins/libstrongswan-curve25519.so
 usr/lib/ipsec/plugins/libstrongswan-des.so
 usr/lib/ipsec/plugins/libstrongswan-dhcp.so
 usr/lib/ipsec/plugins/libstrongswan-dnskey.so
@@ -201,6 +208,7 @@ usr/sbin/swanctl
 #usr/share/strongswan/templates/config/plugins/constraints.conf
 #usr/share/strongswan/templates/config/plugins/ctr.conf
 #usr/share/strongswan/templates/config/plugins/curl.conf
+#usr/share/strongswan/templates/config/plugins/curve25519.conf
 #usr/share/strongswan/templates/config/plugins/des.conf
 #usr/share/strongswan/templates/config/plugins/dhcp.conf
 #usr/share/strongswan/templates/config/plugins/dnskey.conf
index a94ea25643aabac5b0ab4eae8583333073e627ad..c626fd639b21679564fb798475b0b563dce73cfc 100644 (file)
@@ -6,11 +6,12 @@ etc/unbound/icannbundle.pem
 etc/unbound/local.d
 etc/unbound/root.hints
 etc/unbound/unbound.conf
+#usr/include/unbound-event.h
 #usr/include/unbound.h
 #usr/lib/libunbound.la
 #usr/lib/libunbound.so
 usr/lib/libunbound.so.2
-usr/lib/libunbound.so.2.4.4
+usr/lib/libunbound.so.2.5.1
 usr/sbin/unbound
 usr/sbin/unbound-anchor
 usr/sbin/unbound-checkconf
index 7d559c0ec3fdac58bddcb0c9aca7ba563d7db922..6213bcbc2fd635713f14e47e99982eee688e6d43 100644 (file)
@@ -3,8 +3,8 @@ usr/bin/unzip
 #usr/bin/unzipsfx
 #usr/bin/zipgrep
 #usr/bin/zipinfo
-#usr/man/man1/funzip.1
-#usr/man/man1/unzip.1
-#usr/man/man1/unzipsfx.1
-#usr/man/man1/zipgrep.1
-#usr/man/man1/zipinfo.1
+#usr/share/man/man1/funzip.1
+#usr/share/man/man1/unzip.1
+#usr/share/man/man1/unzipsfx.1
+#usr/share/man/man1/zipgrep.1
+#usr/share/man/man1/zipinfo.1
index 8c94d2e16eb934b9ae6777f353d6d83360b57fe5..1330ed7a8fc77d2c3adc0960d00a5aa63cd7d26e 100644 (file)
@@ -117,6 +117,7 @@ srv/web/ipfire/html/images/audio-volume-low-red.png
 srv/web/ipfire/html/images/audio-volume-low.png
 srv/web/ipfire/html/images/audio-x-generic-red.png
 srv/web/ipfire/html/images/audio-x-generic.png
+srv/web/ipfire/html/images/back.png
 srv/web/ipfire/html/images/background.gif
 srv/web/ipfire/html/images/bookmark-new.png
 srv/web/ipfire/html/images/clock.gif
index 55d07afd0cfaa26cd3497c867e98145a2b5d8d80..ccd3a75d6162742f6a38f4c2d28675c68c3f1f1a 100644 (file)
 #usr/bin/x86_64-unknown-linux-gnu-c++
 #usr/bin/x86_64-unknown-linux-gnu-g++
 #usr/bin/x86_64-unknown-linux-gnu-gcc
-#usr/bin/x86_64-unknown-linux-gnu-gcc-4.9.3
+#usr/bin/x86_64-unknown-linux-gnu-gcc-4.9.4
 #usr/bin/x86_64-unknown-linux-gnu-gcc-ar
 #usr/bin/x86_64-unknown-linux-gnu-gcc-nm
 #usr/bin/x86_64-unknown-linux-gnu-gcc-ranlib
 #usr/include/c++
-#usr/include/c++/4.9.3
-#usr/include/c++/4.9.3/algorithm
-#usr/include/c++/4.9.3/array
-#usr/include/c++/4.9.3/atomic
-#usr/include/c++/4.9.3/backward
-#usr/include/c++/4.9.3/backward/auto_ptr.h
-#usr/include/c++/4.9.3/backward/backward_warning.h
-#usr/include/c++/4.9.3/backward/binders.h
-#usr/include/c++/4.9.3/backward/hash_fun.h
-#usr/include/c++/4.9.3/backward/hash_map
-#usr/include/c++/4.9.3/backward/hash_set
-#usr/include/c++/4.9.3/backward/hashtable.h
-#usr/include/c++/4.9.3/backward/strstream
-#usr/include/c++/4.9.3/bits
-#usr/include/c++/4.9.3/bits/algorithmfwd.h
-#usr/include/c++/4.9.3/bits/alloc_traits.h
-#usr/include/c++/4.9.3/bits/allocator.h
-#usr/include/c++/4.9.3/bits/atomic_base.h
-#usr/include/c++/4.9.3/bits/atomic_lockfree_defines.h
-#usr/include/c++/4.9.3/bits/basic_ios.h
-#usr/include/c++/4.9.3/bits/basic_ios.tcc
-#usr/include/c++/4.9.3/bits/basic_string.h
-#usr/include/c++/4.9.3/bits/basic_string.tcc
-#usr/include/c++/4.9.3/bits/boost_concept_check.h
-#usr/include/c++/4.9.3/bits/c++0x_warning.h
-#usr/include/c++/4.9.3/bits/c++14_warning.h
-#usr/include/c++/4.9.3/bits/char_traits.h
-#usr/include/c++/4.9.3/bits/codecvt.h
-#usr/include/c++/4.9.3/bits/concept_check.h
-#usr/include/c++/4.9.3/bits/cpp_type_traits.h
-#usr/include/c++/4.9.3/bits/cxxabi_forced.h
-#usr/include/c++/4.9.3/bits/deque.tcc
-#usr/include/c++/4.9.3/bits/enable_special_members.h
-#usr/include/c++/4.9.3/bits/exception_defines.h
-#usr/include/c++/4.9.3/bits/exception_ptr.h
-#usr/include/c++/4.9.3/bits/forward_list.h
-#usr/include/c++/4.9.3/bits/forward_list.tcc
-#usr/include/c++/4.9.3/bits/fstream.tcc
-#usr/include/c++/4.9.3/bits/functexcept.h
-#usr/include/c++/4.9.3/bits/functional_hash.h
-#usr/include/c++/4.9.3/bits/gslice.h
-#usr/include/c++/4.9.3/bits/gslice_array.h
-#usr/include/c++/4.9.3/bits/hash_bytes.h
-#usr/include/c++/4.9.3/bits/hashtable.h
-#usr/include/c++/4.9.3/bits/hashtable_policy.h
-#usr/include/c++/4.9.3/bits/indirect_array.h
-#usr/include/c++/4.9.3/bits/ios_base.h
-#usr/include/c++/4.9.3/bits/istream.tcc
-#usr/include/c++/4.9.3/bits/list.tcc
-#usr/include/c++/4.9.3/bits/locale_classes.h
-#usr/include/c++/4.9.3/bits/locale_classes.tcc
-#usr/include/c++/4.9.3/bits/locale_facets.h
-#usr/include/c++/4.9.3/bits/locale_facets.tcc
-#usr/include/c++/4.9.3/bits/locale_facets_nonio.h
-#usr/include/c++/4.9.3/bits/locale_facets_nonio.tcc
-#usr/include/c++/4.9.3/bits/localefwd.h
-#usr/include/c++/4.9.3/bits/mask_array.h
-#usr/include/c++/4.9.3/bits/memoryfwd.h
-#usr/include/c++/4.9.3/bits/move.h
-#usr/include/c++/4.9.3/bits/nested_exception.h
-#usr/include/c++/4.9.3/bits/ostream.tcc
-#usr/include/c++/4.9.3/bits/ostream_insert.h
-#usr/include/c++/4.9.3/bits/parse_numbers.h
-#usr/include/c++/4.9.3/bits/postypes.h
-#usr/include/c++/4.9.3/bits/predefined_ops.h
-#usr/include/c++/4.9.3/bits/ptr_traits.h
-#usr/include/c++/4.9.3/bits/random.h
-#usr/include/c++/4.9.3/bits/random.tcc
-#usr/include/c++/4.9.3/bits/range_access.h
-#usr/include/c++/4.9.3/bits/regex.h
-#usr/include/c++/4.9.3/bits/regex.tcc
-#usr/include/c++/4.9.3/bits/regex_automaton.h
-#usr/include/c++/4.9.3/bits/regex_automaton.tcc
-#usr/include/c++/4.9.3/bits/regex_compiler.h
-#usr/include/c++/4.9.3/bits/regex_compiler.tcc
-#usr/include/c++/4.9.3/bits/regex_constants.h
-#usr/include/c++/4.9.3/bits/regex_error.h
-#usr/include/c++/4.9.3/bits/regex_executor.h
-#usr/include/c++/4.9.3/bits/regex_executor.tcc
-#usr/include/c++/4.9.3/bits/regex_scanner.h
-#usr/include/c++/4.9.3/bits/regex_scanner.tcc
-#usr/include/c++/4.9.3/bits/shared_ptr.h
-#usr/include/c++/4.9.3/bits/shared_ptr_base.h
-#usr/include/c++/4.9.3/bits/slice_array.h
-#usr/include/c++/4.9.3/bits/sstream.tcc
-#usr/include/c++/4.9.3/bits/stl_algo.h
-#usr/include/c++/4.9.3/bits/stl_algobase.h
-#usr/include/c++/4.9.3/bits/stl_bvector.h
-#usr/include/c++/4.9.3/bits/stl_construct.h
-#usr/include/c++/4.9.3/bits/stl_deque.h
-#usr/include/c++/4.9.3/bits/stl_function.h
-#usr/include/c++/4.9.3/bits/stl_heap.h
-#usr/include/c++/4.9.3/bits/stl_iterator.h
-#usr/include/c++/4.9.3/bits/stl_iterator_base_funcs.h
-#usr/include/c++/4.9.3/bits/stl_iterator_base_types.h
-#usr/include/c++/4.9.3/bits/stl_list.h
-#usr/include/c++/4.9.3/bits/stl_map.h
-#usr/include/c++/4.9.3/bits/stl_multimap.h
-#usr/include/c++/4.9.3/bits/stl_multiset.h
-#usr/include/c++/4.9.3/bits/stl_numeric.h
-#usr/include/c++/4.9.3/bits/stl_pair.h
-#usr/include/c++/4.9.3/bits/stl_queue.h
-#usr/include/c++/4.9.3/bits/stl_raw_storage_iter.h
-#usr/include/c++/4.9.3/bits/stl_relops.h
-#usr/include/c++/4.9.3/bits/stl_set.h
-#usr/include/c++/4.9.3/bits/stl_stack.h
-#usr/include/c++/4.9.3/bits/stl_tempbuf.h
-#usr/include/c++/4.9.3/bits/stl_tree.h
-#usr/include/c++/4.9.3/bits/stl_uninitialized.h
-#usr/include/c++/4.9.3/bits/stl_vector.h
-#usr/include/c++/4.9.3/bits/stream_iterator.h
-#usr/include/c++/4.9.3/bits/streambuf.tcc
-#usr/include/c++/4.9.3/bits/streambuf_iterator.h
-#usr/include/c++/4.9.3/bits/stringfwd.h
-#usr/include/c++/4.9.3/bits/unique_ptr.h
-#usr/include/c++/4.9.3/bits/unordered_map.h
-#usr/include/c++/4.9.3/bits/unordered_set.h
-#usr/include/c++/4.9.3/bits/uses_allocator.h
-#usr/include/c++/4.9.3/bits/valarray_after.h
-#usr/include/c++/4.9.3/bits/valarray_array.h
-#usr/include/c++/4.9.3/bits/valarray_array.tcc
-#usr/include/c++/4.9.3/bits/valarray_before.h
-#usr/include/c++/4.9.3/bits/vector.tcc
-#usr/include/c++/4.9.3/bitset
-#usr/include/c++/4.9.3/cassert
-#usr/include/c++/4.9.3/ccomplex
-#usr/include/c++/4.9.3/cctype
-#usr/include/c++/4.9.3/cerrno
-#usr/include/c++/4.9.3/cfenv
-#usr/include/c++/4.9.3/cfloat
-#usr/include/c++/4.9.3/chrono
-#usr/include/c++/4.9.3/cinttypes
-#usr/include/c++/4.9.3/ciso646
-#usr/include/c++/4.9.3/climits
-#usr/include/c++/4.9.3/clocale
-#usr/include/c++/4.9.3/cmath
-#usr/include/c++/4.9.3/complex
-#usr/include/c++/4.9.3/complex.h
-#usr/include/c++/4.9.3/condition_variable
-#usr/include/c++/4.9.3/csetjmp
-#usr/include/c++/4.9.3/csignal
-#usr/include/c++/4.9.3/cstdalign
-#usr/include/c++/4.9.3/cstdarg
-#usr/include/c++/4.9.3/cstdbool
-#usr/include/c++/4.9.3/cstddef
-#usr/include/c++/4.9.3/cstdint
-#usr/include/c++/4.9.3/cstdio
-#usr/include/c++/4.9.3/cstdlib
-#usr/include/c++/4.9.3/cstring
-#usr/include/c++/4.9.3/ctgmath
-#usr/include/c++/4.9.3/ctime
-#usr/include/c++/4.9.3/cwchar
-#usr/include/c++/4.9.3/cwctype
-#usr/include/c++/4.9.3/cxxabi.h
-#usr/include/c++/4.9.3/debug
-#usr/include/c++/4.9.3/debug/array
-#usr/include/c++/4.9.3/debug/bitset
-#usr/include/c++/4.9.3/debug/debug.h
-#usr/include/c++/4.9.3/debug/deque
-#usr/include/c++/4.9.3/debug/formatter.h
-#usr/include/c++/4.9.3/debug/forward_list
-#usr/include/c++/4.9.3/debug/functions.h
-#usr/include/c++/4.9.3/debug/list
-#usr/include/c++/4.9.3/debug/macros.h
-#usr/include/c++/4.9.3/debug/map
-#usr/include/c++/4.9.3/debug/map.h
-#usr/include/c++/4.9.3/debug/multimap.h
-#usr/include/c++/4.9.3/debug/multiset.h
-#usr/include/c++/4.9.3/debug/safe_base.h
-#usr/include/c++/4.9.3/debug/safe_iterator.h
-#usr/include/c++/4.9.3/debug/safe_iterator.tcc
-#usr/include/c++/4.9.3/debug/safe_local_iterator.h
-#usr/include/c++/4.9.3/debug/safe_local_iterator.tcc
-#usr/include/c++/4.9.3/debug/safe_sequence.h
-#usr/include/c++/4.9.3/debug/safe_sequence.tcc
-#usr/include/c++/4.9.3/debug/safe_unordered_base.h
-#usr/include/c++/4.9.3/debug/safe_unordered_container.h
-#usr/include/c++/4.9.3/debug/safe_unordered_container.tcc
-#usr/include/c++/4.9.3/debug/set
-#usr/include/c++/4.9.3/debug/set.h
-#usr/include/c++/4.9.3/debug/string
-#usr/include/c++/4.9.3/debug/unordered_map
-#usr/include/c++/4.9.3/debug/unordered_set
-#usr/include/c++/4.9.3/debug/vector
-#usr/include/c++/4.9.3/decimal
-#usr/include/c++/4.9.3/decimal/decimal
-#usr/include/c++/4.9.3/decimal/decimal.h
-#usr/include/c++/4.9.3/deque
-#usr/include/c++/4.9.3/exception
-#usr/include/c++/4.9.3/experimental
-#usr/include/c++/4.9.3/experimental/optional
-#usr/include/c++/4.9.3/experimental/string_view
-#usr/include/c++/4.9.3/experimental/string_view.tcc
-#usr/include/c++/4.9.3/ext
-#usr/include/c++/4.9.3/ext/algorithm
-#usr/include/c++/4.9.3/ext/aligned_buffer.h
-#usr/include/c++/4.9.3/ext/alloc_traits.h
-#usr/include/c++/4.9.3/ext/array_allocator.h
-#usr/include/c++/4.9.3/ext/atomicity.h
-#usr/include/c++/4.9.3/ext/bitmap_allocator.h
-#usr/include/c++/4.9.3/ext/cast.h
-#usr/include/c++/4.9.3/ext/cmath
-#usr/include/c++/4.9.3/ext/codecvt_specializations.h
-#usr/include/c++/4.9.3/ext/concurrence.h
-#usr/include/c++/4.9.3/ext/debug_allocator.h
-#usr/include/c++/4.9.3/ext/enc_filebuf.h
-#usr/include/c++/4.9.3/ext/extptr_allocator.h
-#usr/include/c++/4.9.3/ext/functional
-#usr/include/c++/4.9.3/ext/hash_map
-#usr/include/c++/4.9.3/ext/hash_set
-#usr/include/c++/4.9.3/ext/iterator
-#usr/include/c++/4.9.3/ext/malloc_allocator.h
-#usr/include/c++/4.9.3/ext/memory
-#usr/include/c++/4.9.3/ext/mt_allocator.h
-#usr/include/c++/4.9.3/ext/new_allocator.h
-#usr/include/c++/4.9.3/ext/numeric
-#usr/include/c++/4.9.3/ext/numeric_traits.h
-#usr/include/c++/4.9.3/ext/pb_ds
-#usr/include/c++/4.9.3/ext/pb_ds/assoc_container.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/bin_search_tree_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/branch_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/branch_policy/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/cond_dealtor.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/container_base_dispatch.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/debug_map_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/ov_tree_map_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rb_tree_map_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/node.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/splay_tree_/traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/standard_policies.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/tree_trace_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/type_utils.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/types_traits.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/exception.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/hash_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/list_update_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/priority_queue.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/tag_and_trait.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/tree_policy.hpp
-#usr/include/c++/4.9.3/ext/pb_ds/trie_policy.hpp
-#usr/include/c++/4.9.3/ext/pod_char_traits.h
-#usr/include/c++/4.9.3/ext/pointer.h
-#usr/include/c++/4.9.3/ext/pool_allocator.h
-#usr/include/c++/4.9.3/ext/random
-#usr/include/c++/4.9.3/ext/random.tcc
-#usr/include/c++/4.9.3/ext/rb_tree
-#usr/include/c++/4.9.3/ext/rc_string_base.h
-#usr/include/c++/4.9.3/ext/rope
-#usr/include/c++/4.9.3/ext/ropeimpl.h
-#usr/include/c++/4.9.3/ext/slist
-#usr/include/c++/4.9.3/ext/sso_string_base.h
-#usr/include/c++/4.9.3/ext/stdio_filebuf.h
-#usr/include/c++/4.9.3/ext/stdio_sync_filebuf.h
-#usr/include/c++/4.9.3/ext/string_conversions.h
-#usr/include/c++/4.9.3/ext/throw_allocator.h
-#usr/include/c++/4.9.3/ext/type_traits.h
-#usr/include/c++/4.9.3/ext/typelist.h
-#usr/include/c++/4.9.3/ext/vstring.h
-#usr/include/c++/4.9.3/ext/vstring.tcc
-#usr/include/c++/4.9.3/ext/vstring_fwd.h
-#usr/include/c++/4.9.3/ext/vstring_util.h
-#usr/include/c++/4.9.3/fenv.h
-#usr/include/c++/4.9.3/forward_list
-#usr/include/c++/4.9.3/fstream
-#usr/include/c++/4.9.3/functional
-#usr/include/c++/4.9.3/future
-#usr/include/c++/4.9.3/initializer_list
-#usr/include/c++/4.9.3/iomanip
-#usr/include/c++/4.9.3/ios
-#usr/include/c++/4.9.3/iosfwd
-#usr/include/c++/4.9.3/iostream
-#usr/include/c++/4.9.3/istream
-#usr/include/c++/4.9.3/iterator
-#usr/include/c++/4.9.3/limits
-#usr/include/c++/4.9.3/list
-#usr/include/c++/4.9.3/locale
-#usr/include/c++/4.9.3/map
-#usr/include/c++/4.9.3/memory
-#usr/include/c++/4.9.3/mutex
-#usr/include/c++/4.9.3/new
-#usr/include/c++/4.9.3/numeric
-#usr/include/c++/4.9.3/ostream
-#usr/include/c++/4.9.3/parallel
-#usr/include/c++/4.9.3/parallel/algo.h
-#usr/include/c++/4.9.3/parallel/algobase.h
-#usr/include/c++/4.9.3/parallel/algorithm
-#usr/include/c++/4.9.3/parallel/algorithmfwd.h
-#usr/include/c++/4.9.3/parallel/balanced_quicksort.h
-#usr/include/c++/4.9.3/parallel/base.h
-#usr/include/c++/4.9.3/parallel/basic_iterator.h
-#usr/include/c++/4.9.3/parallel/checkers.h
-#usr/include/c++/4.9.3/parallel/compatibility.h
-#usr/include/c++/4.9.3/parallel/compiletime_settings.h
-#usr/include/c++/4.9.3/parallel/equally_split.h
-#usr/include/c++/4.9.3/parallel/features.h
-#usr/include/c++/4.9.3/parallel/find.h
-#usr/include/c++/4.9.3/parallel/find_selectors.h
-#usr/include/c++/4.9.3/parallel/for_each.h
-#usr/include/c++/4.9.3/parallel/for_each_selectors.h
-#usr/include/c++/4.9.3/parallel/iterator.h
-#usr/include/c++/4.9.3/parallel/list_partition.h
-#usr/include/c++/4.9.3/parallel/losertree.h
-#usr/include/c++/4.9.3/parallel/merge.h
-#usr/include/c++/4.9.3/parallel/multiseq_selection.h
-#usr/include/c++/4.9.3/parallel/multiway_merge.h
-#usr/include/c++/4.9.3/parallel/multiway_mergesort.h
-#usr/include/c++/4.9.3/parallel/numeric
-#usr/include/c++/4.9.3/parallel/numericfwd.h
-#usr/include/c++/4.9.3/parallel/omp_loop.h
-#usr/include/c++/4.9.3/parallel/omp_loop_static.h
-#usr/include/c++/4.9.3/parallel/par_loop.h
-#usr/include/c++/4.9.3/parallel/parallel.h
-#usr/include/c++/4.9.3/parallel/partial_sum.h
-#usr/include/c++/4.9.3/parallel/partition.h
-#usr/include/c++/4.9.3/parallel/queue.h
-#usr/include/c++/4.9.3/parallel/quicksort.h
-#usr/include/c++/4.9.3/parallel/random_number.h
-#usr/include/c++/4.9.3/parallel/random_shuffle.h
-#usr/include/c++/4.9.3/parallel/search.h
-#usr/include/c++/4.9.3/parallel/set_operations.h
-#usr/include/c++/4.9.3/parallel/settings.h
-#usr/include/c++/4.9.3/parallel/sort.h
-#usr/include/c++/4.9.3/parallel/tags.h
-#usr/include/c++/4.9.3/parallel/types.h
-#usr/include/c++/4.9.3/parallel/unique_copy.h
-#usr/include/c++/4.9.3/parallel/workstealing.h
-#usr/include/c++/4.9.3/profile
-#usr/include/c++/4.9.3/profile/array
-#usr/include/c++/4.9.3/profile/base.h
-#usr/include/c++/4.9.3/profile/bitset
-#usr/include/c++/4.9.3/profile/deque
-#usr/include/c++/4.9.3/profile/forward_list
-#usr/include/c++/4.9.3/profile/impl
-#usr/include/c++/4.9.3/profile/impl/profiler.h
-#usr/include/c++/4.9.3/profile/impl/profiler_algos.h
-#usr/include/c++/4.9.3/profile/impl/profiler_container_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_hash_func.h
-#usr/include/c++/4.9.3/profile/impl/profiler_hashtable_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_list_to_slist.h
-#usr/include/c++/4.9.3/profile/impl/profiler_list_to_vector.h
-#usr/include/c++/4.9.3/profile/impl/profiler_map_to_unordered_map.h
-#usr/include/c++/4.9.3/profile/impl/profiler_node.h
-#usr/include/c++/4.9.3/profile/impl/profiler_state.h
-#usr/include/c++/4.9.3/profile/impl/profiler_trace.h
-#usr/include/c++/4.9.3/profile/impl/profiler_vector_size.h
-#usr/include/c++/4.9.3/profile/impl/profiler_vector_to_list.h
-#usr/include/c++/4.9.3/profile/iterator_tracker.h
-#usr/include/c++/4.9.3/profile/list
-#usr/include/c++/4.9.3/profile/map
-#usr/include/c++/4.9.3/profile/map.h
-#usr/include/c++/4.9.3/profile/multimap.h
-#usr/include/c++/4.9.3/profile/multiset.h
-#usr/include/c++/4.9.3/profile/set
-#usr/include/c++/4.9.3/profile/set.h
-#usr/include/c++/4.9.3/profile/unordered_base.h
-#usr/include/c++/4.9.3/profile/unordered_map
-#usr/include/c++/4.9.3/profile/unordered_set
-#usr/include/c++/4.9.3/profile/vector
-#usr/include/c++/4.9.3/queue
-#usr/include/c++/4.9.3/random
-#usr/include/c++/4.9.3/ratio
-#usr/include/c++/4.9.3/regex
-#usr/include/c++/4.9.3/scoped_allocator
-#usr/include/c++/4.9.3/set
-#usr/include/c++/4.9.3/shared_mutex
-#usr/include/c++/4.9.3/sstream
-#usr/include/c++/4.9.3/stack
-#usr/include/c++/4.9.3/stdexcept
-#usr/include/c++/4.9.3/streambuf
-#usr/include/c++/4.9.3/string
-#usr/include/c++/4.9.3/system_error
-#usr/include/c++/4.9.3/tgmath.h
-#usr/include/c++/4.9.3/thread
-#usr/include/c++/4.9.3/tr1
-#usr/include/c++/4.9.3/tr1/array
-#usr/include/c++/4.9.3/tr1/bessel_function.tcc
-#usr/include/c++/4.9.3/tr1/beta_function.tcc
-#usr/include/c++/4.9.3/tr1/ccomplex
-#usr/include/c++/4.9.3/tr1/cctype
-#usr/include/c++/4.9.3/tr1/cfenv
-#usr/include/c++/4.9.3/tr1/cfloat
-#usr/include/c++/4.9.3/tr1/cinttypes
-#usr/include/c++/4.9.3/tr1/climits
-#usr/include/c++/4.9.3/tr1/cmath
-#usr/include/c++/4.9.3/tr1/complex
-#usr/include/c++/4.9.3/tr1/complex.h
-#usr/include/c++/4.9.3/tr1/cstdarg
-#usr/include/c++/4.9.3/tr1/cstdbool
-#usr/include/c++/4.9.3/tr1/cstdint
-#usr/include/c++/4.9.3/tr1/cstdio
-#usr/include/c++/4.9.3/tr1/cstdlib
-#usr/include/c++/4.9.3/tr1/ctgmath
-#usr/include/c++/4.9.3/tr1/ctime
-#usr/include/c++/4.9.3/tr1/ctype.h
-#usr/include/c++/4.9.3/tr1/cwchar
-#usr/include/c++/4.9.3/tr1/cwctype
-#usr/include/c++/4.9.3/tr1/ell_integral.tcc
-#usr/include/c++/4.9.3/tr1/exp_integral.tcc
-#usr/include/c++/4.9.3/tr1/fenv.h
-#usr/include/c++/4.9.3/tr1/float.h
-#usr/include/c++/4.9.3/tr1/functional
-#usr/include/c++/4.9.3/tr1/functional_hash.h
-#usr/include/c++/4.9.3/tr1/gamma.tcc
-#usr/include/c++/4.9.3/tr1/hashtable.h
-#usr/include/c++/4.9.3/tr1/hashtable_policy.h
-#usr/include/c++/4.9.3/tr1/hypergeometric.tcc
-#usr/include/c++/4.9.3/tr1/inttypes.h
-#usr/include/c++/4.9.3/tr1/legendre_function.tcc
-#usr/include/c++/4.9.3/tr1/limits.h
-#usr/include/c++/4.9.3/tr1/math.h
-#usr/include/c++/4.9.3/tr1/memory
-#usr/include/c++/4.9.3/tr1/modified_bessel_func.tcc
-#usr/include/c++/4.9.3/tr1/poly_hermite.tcc
-#usr/include/c++/4.9.3/tr1/poly_laguerre.tcc
-#usr/include/c++/4.9.3/tr1/random
-#usr/include/c++/4.9.3/tr1/random.h
-#usr/include/c++/4.9.3/tr1/random.tcc
-#usr/include/c++/4.9.3/tr1/regex
-#usr/include/c++/4.9.3/tr1/riemann_zeta.tcc
-#usr/include/c++/4.9.3/tr1/shared_ptr.h
-#usr/include/c++/4.9.3/tr1/special_function_util.h
-#usr/include/c++/4.9.3/tr1/stdarg.h
-#usr/include/c++/4.9.3/tr1/stdbool.h
-#usr/include/c++/4.9.3/tr1/stdint.h
-#usr/include/c++/4.9.3/tr1/stdio.h
-#usr/include/c++/4.9.3/tr1/stdlib.h
-#usr/include/c++/4.9.3/tr1/tgmath.h
-#usr/include/c++/4.9.3/tr1/tuple
-#usr/include/c++/4.9.3/tr1/type_traits
-#usr/include/c++/4.9.3/tr1/unordered_map
-#usr/include/c++/4.9.3/tr1/unordered_map.h
-#usr/include/c++/4.9.3/tr1/unordered_set
-#usr/include/c++/4.9.3/tr1/unordered_set.h
-#usr/include/c++/4.9.3/tr1/utility
-#usr/include/c++/4.9.3/tr1/wchar.h
-#usr/include/c++/4.9.3/tr1/wctype.h
-#usr/include/c++/4.9.3/tr2
-#usr/include/c++/4.9.3/tr2/bool_set
-#usr/include/c++/4.9.3/tr2/bool_set.tcc
-#usr/include/c++/4.9.3/tr2/dynamic_bitset
-#usr/include/c++/4.9.3/tr2/dynamic_bitset.tcc
-#usr/include/c++/4.9.3/tr2/ratio
-#usr/include/c++/4.9.3/tr2/type_traits
-#usr/include/c++/4.9.3/tuple
-#usr/include/c++/4.9.3/type_traits
-#usr/include/c++/4.9.3/typeindex
-#usr/include/c++/4.9.3/typeinfo
-#usr/include/c++/4.9.3/unordered_map
-#usr/include/c++/4.9.3/unordered_set
-#usr/include/c++/4.9.3/utility
-#usr/include/c++/4.9.3/valarray
-#usr/include/c++/4.9.3/vector
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/atomic_word.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/basic_file.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/c++allocator.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/c++config.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/c++io.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/c++locale.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/cpu_defines.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/ctype_base.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/ctype_inline.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/cxxabi_tweaks.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/error_constants.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/extc++.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/gthr-default.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/gthr-posix.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/gthr-single.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/gthr.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/messages_members.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/opt_random.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/os_defines.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/stdc++.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/stdtr1c++.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/bits/time_members.h
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/ext
-#usr/include/c++/4.9.3/x86_64-unknown-linux-gnu/ext/opt_random.h
+#usr/include/c++/4.9.4
+#usr/include/c++/4.9.4/algorithm
+#usr/include/c++/4.9.4/array
+#usr/include/c++/4.9.4/atomic
+#usr/include/c++/4.9.4/backward
+#usr/include/c++/4.9.4/backward/auto_ptr.h
+#usr/include/c++/4.9.4/backward/backward_warning.h
+#usr/include/c++/4.9.4/backward/binders.h
+#usr/include/c++/4.9.4/backward/hash_fun.h
+#usr/include/c++/4.9.4/backward/hash_map
+#usr/include/c++/4.9.4/backward/hash_set
+#usr/include/c++/4.9.4/backward/hashtable.h
+#usr/include/c++/4.9.4/backward/strstream
+#usr/include/c++/4.9.4/bits
+#usr/include/c++/4.9.4/bits/algorithmfwd.h
+#usr/include/c++/4.9.4/bits/alloc_traits.h
+#usr/include/c++/4.9.4/bits/allocator.h
+#usr/include/c++/4.9.4/bits/atomic_base.h
+#usr/include/c++/4.9.4/bits/atomic_lockfree_defines.h
+#usr/include/c++/4.9.4/bits/basic_ios.h
+#usr/include/c++/4.9.4/bits/basic_ios.tcc
+#usr/include/c++/4.9.4/bits/basic_string.h
+#usr/include/c++/4.9.4/bits/basic_string.tcc
+#usr/include/c++/4.9.4/bits/boost_concept_check.h
+#usr/include/c++/4.9.4/bits/c++0x_warning.h
+#usr/include/c++/4.9.4/bits/c++14_warning.h
+#usr/include/c++/4.9.4/bits/char_traits.h
+#usr/include/c++/4.9.4/bits/codecvt.h
+#usr/include/c++/4.9.4/bits/concept_check.h
+#usr/include/c++/4.9.4/bits/cpp_type_traits.h
+#usr/include/c++/4.9.4/bits/cxxabi_forced.h
+#usr/include/c++/4.9.4/bits/deque.tcc
+#usr/include/c++/4.9.4/bits/enable_special_members.h
+#usr/include/c++/4.9.4/bits/exception_defines.h
+#usr/include/c++/4.9.4/bits/exception_ptr.h
+#usr/include/c++/4.9.4/bits/forward_list.h
+#usr/include/c++/4.9.4/bits/forward_list.tcc
+#usr/include/c++/4.9.4/bits/fstream.tcc
+#usr/include/c++/4.9.4/bits/functexcept.h
+#usr/include/c++/4.9.4/bits/functional_hash.h
+#usr/include/c++/4.9.4/bits/gslice.h
+#usr/include/c++/4.9.4/bits/gslice_array.h
+#usr/include/c++/4.9.4/bits/hash_bytes.h
+#usr/include/c++/4.9.4/bits/hashtable.h
+#usr/include/c++/4.9.4/bits/hashtable_policy.h
+#usr/include/c++/4.9.4/bits/indirect_array.h
+#usr/include/c++/4.9.4/bits/ios_base.h
+#usr/include/c++/4.9.4/bits/istream.tcc
+#usr/include/c++/4.9.4/bits/list.tcc
+#usr/include/c++/4.9.4/bits/locale_classes.h
+#usr/include/c++/4.9.4/bits/locale_classes.tcc
+#usr/include/c++/4.9.4/bits/locale_facets.h
+#usr/include/c++/4.9.4/bits/locale_facets.tcc
+#usr/include/c++/4.9.4/bits/locale_facets_nonio.h
+#usr/include/c++/4.9.4/bits/locale_facets_nonio.tcc
+#usr/include/c++/4.9.4/bits/localefwd.h
+#usr/include/c++/4.9.4/bits/mask_array.h
+#usr/include/c++/4.9.4/bits/memoryfwd.h
+#usr/include/c++/4.9.4/bits/move.h
+#usr/include/c++/4.9.4/bits/nested_exception.h
+#usr/include/c++/4.9.4/bits/ostream.tcc
+#usr/include/c++/4.9.4/bits/ostream_insert.h
+#usr/include/c++/4.9.4/bits/parse_numbers.h
+#usr/include/c++/4.9.4/bits/postypes.h
+#usr/include/c++/4.9.4/bits/predefined_ops.h
+#usr/include/c++/4.9.4/bits/ptr_traits.h
+#usr/include/c++/4.9.4/bits/random.h
+#usr/include/c++/4.9.4/bits/random.tcc
+#usr/include/c++/4.9.4/bits/range_access.h
+#usr/include/c++/4.9.4/bits/regex.h
+#usr/include/c++/4.9.4/bits/regex.tcc
+#usr/include/c++/4.9.4/bits/regex_automaton.h
+#usr/include/c++/4.9.4/bits/regex_automaton.tcc
+#usr/include/c++/4.9.4/bits/regex_compiler.h
+#usr/include/c++/4.9.4/bits/regex_compiler.tcc
+#usr/include/c++/4.9.4/bits/regex_constants.h
+#usr/include/c++/4.9.4/bits/regex_error.h
+#usr/include/c++/4.9.4/bits/regex_executor.h
+#usr/include/c++/4.9.4/bits/regex_executor.tcc
+#usr/include/c++/4.9.4/bits/regex_scanner.h
+#usr/include/c++/4.9.4/bits/regex_scanner.tcc
+#usr/include/c++/4.9.4/bits/shared_ptr.h
+#usr/include/c++/4.9.4/bits/shared_ptr_base.h
+#usr/include/c++/4.9.4/bits/slice_array.h
+#usr/include/c++/4.9.4/bits/sstream.tcc
+#usr/include/c++/4.9.4/bits/stl_algo.h
+#usr/include/c++/4.9.4/bits/stl_algobase.h
+#usr/include/c++/4.9.4/bits/stl_bvector.h
+#usr/include/c++/4.9.4/bits/stl_construct.h
+#usr/include/c++/4.9.4/bits/stl_deque.h
+#usr/include/c++/4.9.4/bits/stl_function.h
+#usr/include/c++/4.9.4/bits/stl_heap.h
+#usr/include/c++/4.9.4/bits/stl_iterator.h
+#usr/include/c++/4.9.4/bits/stl_iterator_base_funcs.h
+#usr/include/c++/4.9.4/bits/stl_iterator_base_types.h
+#usr/include/c++/4.9.4/bits/stl_list.h
+#usr/include/c++/4.9.4/bits/stl_map.h
+#usr/include/c++/4.9.4/bits/stl_multimap.h
+#usr/include/c++/4.9.4/bits/stl_multiset.h
+#usr/include/c++/4.9.4/bits/stl_numeric.h
+#usr/include/c++/4.9.4/bits/stl_pair.h
+#usr/include/c++/4.9.4/bits/stl_queue.h
+#usr/include/c++/4.9.4/bits/stl_raw_storage_iter.h
+#usr/include/c++/4.9.4/bits/stl_relops.h
+#usr/include/c++/4.9.4/bits/stl_set.h
+#usr/include/c++/4.9.4/bits/stl_stack.h
+#usr/include/c++/4.9.4/bits/stl_tempbuf.h
+#usr/include/c++/4.9.4/bits/stl_tree.h
+#usr/include/c++/4.9.4/bits/stl_uninitialized.h
+#usr/include/c++/4.9.4/bits/stl_vector.h
+#usr/include/c++/4.9.4/bits/stream_iterator.h
+#usr/include/c++/4.9.4/bits/streambuf.tcc
+#usr/include/c++/4.9.4/bits/streambuf_iterator.h
+#usr/include/c++/4.9.4/bits/stringfwd.h
+#usr/include/c++/4.9.4/bits/unique_ptr.h
+#usr/include/c++/4.9.4/bits/unordered_map.h
+#usr/include/c++/4.9.4/bits/unordered_set.h
+#usr/include/c++/4.9.4/bits/uses_allocator.h
+#usr/include/c++/4.9.4/bits/valarray_after.h
+#usr/include/c++/4.9.4/bits/valarray_array.h
+#usr/include/c++/4.9.4/bits/valarray_array.tcc
+#usr/include/c++/4.9.4/bits/valarray_before.h
+#usr/include/c++/4.9.4/bits/vector.tcc
+#usr/include/c++/4.9.4/bitset
+#usr/include/c++/4.9.4/cassert
+#usr/include/c++/4.9.4/ccomplex
+#usr/include/c++/4.9.4/cctype
+#usr/include/c++/4.9.4/cerrno
+#usr/include/c++/4.9.4/cfenv
+#usr/include/c++/4.9.4/cfloat
+#usr/include/c++/4.9.4/chrono
+#usr/include/c++/4.9.4/cinttypes
+#usr/include/c++/4.9.4/ciso646
+#usr/include/c++/4.9.4/climits
+#usr/include/c++/4.9.4/clocale
+#usr/include/c++/4.9.4/cmath
+#usr/include/c++/4.9.4/complex
+#usr/include/c++/4.9.4/complex.h
+#usr/include/c++/4.9.4/condition_variable
+#usr/include/c++/4.9.4/csetjmp
+#usr/include/c++/4.9.4/csignal
+#usr/include/c++/4.9.4/cstdalign
+#usr/include/c++/4.9.4/cstdarg
+#usr/include/c++/4.9.4/cstdbool
+#usr/include/c++/4.9.4/cstddef
+#usr/include/c++/4.9.4/cstdint
+#usr/include/c++/4.9.4/cstdio
+#usr/include/c++/4.9.4/cstdlib
+#usr/include/c++/4.9.4/cstring
+#usr/include/c++/4.9.4/ctgmath
+#usr/include/c++/4.9.4/ctime
+#usr/include/c++/4.9.4/cwchar
+#usr/include/c++/4.9.4/cwctype
+#usr/include/c++/4.9.4/cxxabi.h
+#usr/include/c++/4.9.4/debug
+#usr/include/c++/4.9.4/debug/array
+#usr/include/c++/4.9.4/debug/bitset
+#usr/include/c++/4.9.4/debug/debug.h
+#usr/include/c++/4.9.4/debug/deque
+#usr/include/c++/4.9.4/debug/formatter.h
+#usr/include/c++/4.9.4/debug/forward_list
+#usr/include/c++/4.9.4/debug/functions.h
+#usr/include/c++/4.9.4/debug/list
+#usr/include/c++/4.9.4/debug/macros.h
+#usr/include/c++/4.9.4/debug/map
+#usr/include/c++/4.9.4/debug/map.h
+#usr/include/c++/4.9.4/debug/multimap.h
+#usr/include/c++/4.9.4/debug/multiset.h
+#usr/include/c++/4.9.4/debug/safe_base.h
+#usr/include/c++/4.9.4/debug/safe_iterator.h
+#usr/include/c++/4.9.4/debug/safe_iterator.tcc
+#usr/include/c++/4.9.4/debug/safe_local_iterator.h
+#usr/include/c++/4.9.4/debug/safe_local_iterator.tcc
+#usr/include/c++/4.9.4/debug/safe_sequence.h
+#usr/include/c++/4.9.4/debug/safe_sequence.tcc
+#usr/include/c++/4.9.4/debug/safe_unordered_base.h
+#usr/include/c++/4.9.4/debug/safe_unordered_container.h
+#usr/include/c++/4.9.4/debug/safe_unordered_container.tcc
+#usr/include/c++/4.9.4/debug/set
+#usr/include/c++/4.9.4/debug/set.h
+#usr/include/c++/4.9.4/debug/string
+#usr/include/c++/4.9.4/debug/unordered_map
+#usr/include/c++/4.9.4/debug/unordered_set
+#usr/include/c++/4.9.4/debug/vector
+#usr/include/c++/4.9.4/decimal
+#usr/include/c++/4.9.4/decimal/decimal
+#usr/include/c++/4.9.4/decimal/decimal.h
+#usr/include/c++/4.9.4/deque
+#usr/include/c++/4.9.4/exception
+#usr/include/c++/4.9.4/experimental
+#usr/include/c++/4.9.4/experimental/optional
+#usr/include/c++/4.9.4/experimental/string_view
+#usr/include/c++/4.9.4/experimental/string_view.tcc
+#usr/include/c++/4.9.4/ext
+#usr/include/c++/4.9.4/ext/algorithm
+#usr/include/c++/4.9.4/ext/aligned_buffer.h
+#usr/include/c++/4.9.4/ext/alloc_traits.h
+#usr/include/c++/4.9.4/ext/array_allocator.h
+#usr/include/c++/4.9.4/ext/atomicity.h
+#usr/include/c++/4.9.4/ext/bitmap_allocator.h
+#usr/include/c++/4.9.4/ext/cast.h
+#usr/include/c++/4.9.4/ext/cmath
+#usr/include/c++/4.9.4/ext/codecvt_specializations.h
+#usr/include/c++/4.9.4/ext/concurrence.h
+#usr/include/c++/4.9.4/ext/debug_allocator.h
+#usr/include/c++/4.9.4/ext/enc_filebuf.h
+#usr/include/c++/4.9.4/ext/extptr_allocator.h
+#usr/include/c++/4.9.4/ext/functional
+#usr/include/c++/4.9.4/ext/hash_map
+#usr/include/c++/4.9.4/ext/hash_set
+#usr/include/c++/4.9.4/ext/iterator
+#usr/include/c++/4.9.4/ext/malloc_allocator.h
+#usr/include/c++/4.9.4/ext/memory
+#usr/include/c++/4.9.4/ext/mt_allocator.h
+#usr/include/c++/4.9.4/ext/new_allocator.h
+#usr/include/c++/4.9.4/ext/numeric
+#usr/include/c++/4.9.4/ext/numeric_traits.h
+#usr/include/c++/4.9.4/ext/pb_ds
+#usr/include/c++/4.9.4/ext/pb_ds/assoc_container.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/branch_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/cond_dealtor.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/container_base_dispatch.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/debug_map_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/node.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/standard_policies.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_trace_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/type_utils.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/types_traits.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/exception.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/hash_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/list_update_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/priority_queue.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/tag_and_trait.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/tree_policy.hpp
+#usr/include/c++/4.9.4/ext/pb_ds/trie_policy.hpp
+#usr/include/c++/4.9.4/ext/pod_char_traits.h
+#usr/include/c++/4.9.4/ext/pointer.h
+#usr/include/c++/4.9.4/ext/pool_allocator.h
+#usr/include/c++/4.9.4/ext/random
+#usr/include/c++/4.9.4/ext/random.tcc
+#usr/include/c++/4.9.4/ext/rb_tree
+#usr/include/c++/4.9.4/ext/rc_string_base.h
+#usr/include/c++/4.9.4/ext/rope
+#usr/include/c++/4.9.4/ext/ropeimpl.h
+#usr/include/c++/4.9.4/ext/slist
+#usr/include/c++/4.9.4/ext/sso_string_base.h
+#usr/include/c++/4.9.4/ext/stdio_filebuf.h
+#usr/include/c++/4.9.4/ext/stdio_sync_filebuf.h
+#usr/include/c++/4.9.4/ext/string_conversions.h
+#usr/include/c++/4.9.4/ext/throw_allocator.h
+#usr/include/c++/4.9.4/ext/type_traits.h
+#usr/include/c++/4.9.4/ext/typelist.h
+#usr/include/c++/4.9.4/ext/vstring.h
+#usr/include/c++/4.9.4/ext/vstring.tcc
+#usr/include/c++/4.9.4/ext/vstring_fwd.h
+#usr/include/c++/4.9.4/ext/vstring_util.h
+#usr/include/c++/4.9.4/fenv.h
+#usr/include/c++/4.9.4/forward_list
+#usr/include/c++/4.9.4/fstream
+#usr/include/c++/4.9.4/functional
+#usr/include/c++/4.9.4/future
+#usr/include/c++/4.9.4/initializer_list
+#usr/include/c++/4.9.4/iomanip
+#usr/include/c++/4.9.4/ios
+#usr/include/c++/4.9.4/iosfwd
+#usr/include/c++/4.9.4/iostream
+#usr/include/c++/4.9.4/istream
+#usr/include/c++/4.9.4/iterator
+#usr/include/c++/4.9.4/limits
+#usr/include/c++/4.9.4/list
+#usr/include/c++/4.9.4/locale
+#usr/include/c++/4.9.4/map
+#usr/include/c++/4.9.4/memory
+#usr/include/c++/4.9.4/mutex
+#usr/include/c++/4.9.4/new
+#usr/include/c++/4.9.4/numeric
+#usr/include/c++/4.9.4/ostream
+#usr/include/c++/4.9.4/parallel
+#usr/include/c++/4.9.4/parallel/algo.h
+#usr/include/c++/4.9.4/parallel/algobase.h
+#usr/include/c++/4.9.4/parallel/algorithm
+#usr/include/c++/4.9.4/parallel/algorithmfwd.h
+#usr/include/c++/4.9.4/parallel/balanced_quicksort.h
+#usr/include/c++/4.9.4/parallel/base.h
+#usr/include/c++/4.9.4/parallel/basic_iterator.h
+#usr/include/c++/4.9.4/parallel/checkers.h
+#usr/include/c++/4.9.4/parallel/compatibility.h
+#usr/include/c++/4.9.4/parallel/compiletime_settings.h
+#usr/include/c++/4.9.4/parallel/equally_split.h
+#usr/include/c++/4.9.4/parallel/features.h
+#usr/include/c++/4.9.4/parallel/find.h
+#usr/include/c++/4.9.4/parallel/find_selectors.h
+#usr/include/c++/4.9.4/parallel/for_each.h
+#usr/include/c++/4.9.4/parallel/for_each_selectors.h
+#usr/include/c++/4.9.4/parallel/iterator.h
+#usr/include/c++/4.9.4/parallel/list_partition.h
+#usr/include/c++/4.9.4/parallel/losertree.h
+#usr/include/c++/4.9.4/parallel/merge.h
+#usr/include/c++/4.9.4/parallel/multiseq_selection.h
+#usr/include/c++/4.9.4/parallel/multiway_merge.h
+#usr/include/c++/4.9.4/parallel/multiway_mergesort.h
+#usr/include/c++/4.9.4/parallel/numeric
+#usr/include/c++/4.9.4/parallel/numericfwd.h
+#usr/include/c++/4.9.4/parallel/omp_loop.h
+#usr/include/c++/4.9.4/parallel/omp_loop_static.h
+#usr/include/c++/4.9.4/parallel/par_loop.h
+#usr/include/c++/4.9.4/parallel/parallel.h
+#usr/include/c++/4.9.4/parallel/partial_sum.h
+#usr/include/c++/4.9.4/parallel/partition.h
+#usr/include/c++/4.9.4/parallel/queue.h
+#usr/include/c++/4.9.4/parallel/quicksort.h
+#usr/include/c++/4.9.4/parallel/random_number.h
+#usr/include/c++/4.9.4/parallel/random_shuffle.h
+#usr/include/c++/4.9.4/parallel/search.h
+#usr/include/c++/4.9.4/parallel/set_operations.h
+#usr/include/c++/4.9.4/parallel/settings.h
+#usr/include/c++/4.9.4/parallel/sort.h
+#usr/include/c++/4.9.4/parallel/tags.h
+#usr/include/c++/4.9.4/parallel/types.h
+#usr/include/c++/4.9.4/parallel/unique_copy.h
+#usr/include/c++/4.9.4/parallel/workstealing.h
+#usr/include/c++/4.9.4/profile
+#usr/include/c++/4.9.4/profile/array
+#usr/include/c++/4.9.4/profile/base.h
+#usr/include/c++/4.9.4/profile/bitset
+#usr/include/c++/4.9.4/profile/deque
+#usr/include/c++/4.9.4/profile/forward_list
+#usr/include/c++/4.9.4/profile/impl
+#usr/include/c++/4.9.4/profile/impl/profiler.h
+#usr/include/c++/4.9.4/profile/impl/profiler_algos.h
+#usr/include/c++/4.9.4/profile/impl/profiler_container_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_hash_func.h
+#usr/include/c++/4.9.4/profile/impl/profiler_hashtable_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_list_to_slist.h
+#usr/include/c++/4.9.4/profile/impl/profiler_list_to_vector.h
+#usr/include/c++/4.9.4/profile/impl/profiler_map_to_unordered_map.h
+#usr/include/c++/4.9.4/profile/impl/profiler_node.h
+#usr/include/c++/4.9.4/profile/impl/profiler_state.h
+#usr/include/c++/4.9.4/profile/impl/profiler_trace.h
+#usr/include/c++/4.9.4/profile/impl/profiler_vector_size.h
+#usr/include/c++/4.9.4/profile/impl/profiler_vector_to_list.h
+#usr/include/c++/4.9.4/profile/iterator_tracker.h
+#usr/include/c++/4.9.4/profile/list
+#usr/include/c++/4.9.4/profile/map
+#usr/include/c++/4.9.4/profile/map.h
+#usr/include/c++/4.9.4/profile/multimap.h
+#usr/include/c++/4.9.4/profile/multiset.h
+#usr/include/c++/4.9.4/profile/set
+#usr/include/c++/4.9.4/profile/set.h
+#usr/include/c++/4.9.4/profile/unordered_base.h
+#usr/include/c++/4.9.4/profile/unordered_map
+#usr/include/c++/4.9.4/profile/unordered_set
+#usr/include/c++/4.9.4/profile/vector
+#usr/include/c++/4.9.4/queue
+#usr/include/c++/4.9.4/random
+#usr/include/c++/4.9.4/ratio
+#usr/include/c++/4.9.4/regex
+#usr/include/c++/4.9.4/scoped_allocator
+#usr/include/c++/4.9.4/set
+#usr/include/c++/4.9.4/shared_mutex
+#usr/include/c++/4.9.4/sstream
+#usr/include/c++/4.9.4/stack
+#usr/include/c++/4.9.4/stdexcept
+#usr/include/c++/4.9.4/streambuf
+#usr/include/c++/4.9.4/string
+#usr/include/c++/4.9.4/system_error
+#usr/include/c++/4.9.4/tgmath.h
+#usr/include/c++/4.9.4/thread
+#usr/include/c++/4.9.4/tr1
+#usr/include/c++/4.9.4/tr1/array
+#usr/include/c++/4.9.4/tr1/bessel_function.tcc
+#usr/include/c++/4.9.4/tr1/beta_function.tcc
+#usr/include/c++/4.9.4/tr1/ccomplex
+#usr/include/c++/4.9.4/tr1/cctype
+#usr/include/c++/4.9.4/tr1/cfenv
+#usr/include/c++/4.9.4/tr1/cfloat
+#usr/include/c++/4.9.4/tr1/cinttypes
+#usr/include/c++/4.9.4/tr1/climits
+#usr/include/c++/4.9.4/tr1/cmath
+#usr/include/c++/4.9.4/tr1/complex
+#usr/include/c++/4.9.4/tr1/complex.h
+#usr/include/c++/4.9.4/tr1/cstdarg
+#usr/include/c++/4.9.4/tr1/cstdbool
+#usr/include/c++/4.9.4/tr1/cstdint
+#usr/include/c++/4.9.4/tr1/cstdio
+#usr/include/c++/4.9.4/tr1/cstdlib
+#usr/include/c++/4.9.4/tr1/ctgmath
+#usr/include/c++/4.9.4/tr1/ctime
+#usr/include/c++/4.9.4/tr1/ctype.h
+#usr/include/c++/4.9.4/tr1/cwchar
+#usr/include/c++/4.9.4/tr1/cwctype
+#usr/include/c++/4.9.4/tr1/ell_integral.tcc
+#usr/include/c++/4.9.4/tr1/exp_integral.tcc
+#usr/include/c++/4.9.4/tr1/fenv.h
+#usr/include/c++/4.9.4/tr1/float.h
+#usr/include/c++/4.9.4/tr1/functional
+#usr/include/c++/4.9.4/tr1/functional_hash.h
+#usr/include/c++/4.9.4/tr1/gamma.tcc
+#usr/include/c++/4.9.4/tr1/hashtable.h
+#usr/include/c++/4.9.4/tr1/hashtable_policy.h
+#usr/include/c++/4.9.4/tr1/hypergeometric.tcc
+#usr/include/c++/4.9.4/tr1/inttypes.h
+#usr/include/c++/4.9.4/tr1/legendre_function.tcc
+#usr/include/c++/4.9.4/tr1/limits.h
+#usr/include/c++/4.9.4/tr1/math.h
+#usr/include/c++/4.9.4/tr1/memory
+#usr/include/c++/4.9.4/tr1/modified_bessel_func.tcc
+#usr/include/c++/4.9.4/tr1/poly_hermite.tcc
+#usr/include/c++/4.9.4/tr1/poly_laguerre.tcc
+#usr/include/c++/4.9.4/tr1/random
+#usr/include/c++/4.9.4/tr1/random.h
+#usr/include/c++/4.9.4/tr1/random.tcc
+#usr/include/c++/4.9.4/tr1/regex
+#usr/include/c++/4.9.4/tr1/riemann_zeta.tcc
+#usr/include/c++/4.9.4/tr1/shared_ptr.h
+#usr/include/c++/4.9.4/tr1/special_function_util.h
+#usr/include/c++/4.9.4/tr1/stdarg.h
+#usr/include/c++/4.9.4/tr1/stdbool.h
+#usr/include/c++/4.9.4/tr1/stdint.h
+#usr/include/c++/4.9.4/tr1/stdio.h
+#usr/include/c++/4.9.4/tr1/stdlib.h
+#usr/include/c++/4.9.4/tr1/tgmath.h
+#usr/include/c++/4.9.4/tr1/tuple
+#usr/include/c++/4.9.4/tr1/type_traits
+#usr/include/c++/4.9.4/tr1/unordered_map
+#usr/include/c++/4.9.4/tr1/unordered_map.h
+#usr/include/c++/4.9.4/tr1/unordered_set
+#usr/include/c++/4.9.4/tr1/unordered_set.h
+#usr/include/c++/4.9.4/tr1/utility
+#usr/include/c++/4.9.4/tr1/wchar.h
+#usr/include/c++/4.9.4/tr1/wctype.h
+#usr/include/c++/4.9.4/tr2
+#usr/include/c++/4.9.4/tr2/bool_set
+#usr/include/c++/4.9.4/tr2/bool_set.tcc
+#usr/include/c++/4.9.4/tr2/dynamic_bitset
+#usr/include/c++/4.9.4/tr2/dynamic_bitset.tcc
+#usr/include/c++/4.9.4/tr2/ratio
+#usr/include/c++/4.9.4/tr2/type_traits
+#usr/include/c++/4.9.4/tuple
+#usr/include/c++/4.9.4/type_traits
+#usr/include/c++/4.9.4/typeindex
+#usr/include/c++/4.9.4/typeinfo
+#usr/include/c++/4.9.4/unordered_map
+#usr/include/c++/4.9.4/unordered_set
+#usr/include/c++/4.9.4/utility
+#usr/include/c++/4.9.4/valarray
+#usr/include/c++/4.9.4/vector
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/atomic_word.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/basic_file.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++allocator.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++config.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++io.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++locale.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/cpu_defines.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/ctype_base.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/ctype_inline.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/cxxabi_tweaks.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/error_constants.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/extc++.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr-default.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr-posix.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr-single.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/messages_members.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/opt_random.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/os_defines.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/stdc++.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/stdtr1c++.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/time_members.h
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/ext
+#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/ext/opt_random.h
 #usr/lib/gcc
 #usr/lib/gcc/x86_64-unknown-linux-gnu
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/cc1
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/cc1plus
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/collect2
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtbegin.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtbeginS.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtbeginT.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtend.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtendS.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtfastmath.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtprec32.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtprec64.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/crtprec80.o
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/finclude
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include-fixed
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include-fixed/README
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include-fixed/limits.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include-fixed/syslimits.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/adxintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ammintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/avx2intrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/avx512cdintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/avx512erintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/avx512fintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/avx512pfintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/avxintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/bmi2intrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/bmiintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/bmmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/cilk.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/cilk_api.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/cilk_api_linux.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/cilk_stub.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/cilk_undocumented.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/common.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/holder.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/hyperobject_base.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/metaprogramming.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_file.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_list.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_max.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_min.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_min_max.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_opadd.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_opand.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_opmul.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_opor.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_opxor.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_ostream.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cilk/reducer_string.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cpuid.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/cross-stdarg.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/emmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/f16cintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/float.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/fma4intrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/fmaintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/fxsrintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ia32intrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/immintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/iso646.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/lwpintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/lzcntintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/mm3dnow.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/mm_malloc.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/mmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/nmmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/omp.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/pmmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/popcntintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/prfchwintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/quadmath.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/quadmath_weak.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/rdseedintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/rtmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/sanitizer
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/sanitizer/asan_interface.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/sanitizer/common_interface_defs.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/sanitizer/lsan_interface.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/shaintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/smmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ssp
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ssp/ssp.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ssp/stdio.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ssp/string.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/ssp/unistd.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdalign.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdarg.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdatomic.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdbool.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stddef.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdfix.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdint-gcc.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdint.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/stdnoreturn.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/tbmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/tmmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/unwind.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/varargs.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/wmmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/x86intrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/xmmintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/xopintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/xsaveintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/xsaveoptintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/include/xtestintrin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/fixinc.sh
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/fixinc_list
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/fixincl
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/gsyslimits.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/include
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/include/README
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/include/limits.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/macro_list
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/mkheaders
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/mkheaders.conf
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/install-tools/mkinstalldirs
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/libgcc.a
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/libgcc_eh.a
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/libgcov.a
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/liblto_plugin.la
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/liblto_plugin.so
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/liblto_plugin.so.0
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/liblto_plugin.so.0.0.0
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/lto-wrapper
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/lto1
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/gengtype
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/gtype.state
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ada
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ada/gcc-interface
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ada/gcc-interface/ada-tree.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/alias.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/all-tree.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/alloc-pool.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ansidecl.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/attribs.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/auto-host.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/b-header-vars
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/basic-block.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/bitmap.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/builtins.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/bversion.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-family
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-family/c-common.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-family/c-common.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-family/c-objc.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-family/c-pragma.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-family/c-pretty-print.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/c-tree.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/calls.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cfg-flags.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cfgexpand.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cfghooks.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cfgloop.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cgraph.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cif-code.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cilk-builtins.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cilkplus.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/dbxelf.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/elfos.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/glibc-stdint.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/gnu-user.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/att.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/biarch64.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/gnu-user-common.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/gnu-user64.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/i386-opts.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/i386-protos.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/i386.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/linux-common.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/linux64.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/stringop.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/unix.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/x86-64.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/i386/x86-tune.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/initfini-array.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/linux-android.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/linux-protos.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/linux.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/config/vxworks-dummy.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/configargs.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/context.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/coretypes.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cp
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cp/cp-tree.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cp/cp-tree.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cp/cxx-pretty-print.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cp/name-lookup.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cp/type-utils.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cppdefault.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/cpplib.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/debug.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/defaults.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/df.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/diagnostic-color.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/diagnostic-core.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/diagnostic.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/diagnostic.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/double-int.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/dumpfile.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/emit-rtl.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/except.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/filenames.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/fixed-value.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/flag-types.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/flags.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/fold-const.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/function.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gcc-plugin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gcc-symtab.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/genrtl.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ggc.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-builder.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-expr.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-fold.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-iterator.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-low.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-pretty-print.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-ssa.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple-walk.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimple.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimplify-me.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gimplify.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gsstruct.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gtm-builtins.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/gtype-desc.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/hard-reg-set.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/hash-table.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/hashtab.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/highlev-plugin-common.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/hwint.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/incpath.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/input.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/insn-codes.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/insn-constants.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/insn-flags.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/insn-modes.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/insn-notes.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/internal-fn.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/internal-fn.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/intl.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ipa-prop.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ipa-ref-inline.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ipa-ref.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ipa-reference.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ipa-utils.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/is-a.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/java
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/java/java-tree.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/langhooks.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/libiberty.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/line-map.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/machmode.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/md5.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/mode-classes.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/objc
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/objc/objc-tree.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/obstack.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/omp-builtins.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/options.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/opts.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/output.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/params.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/params.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/pass-instances.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/pass_manager.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/plugin-api.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/plugin-version.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/plugin.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/plugin.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/pointer-set.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/predict.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/predict.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/prefix.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/pretty-print.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/print-rtl.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/print-tree.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/real.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/realmpfr.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/reg-notes.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/regset.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/resource.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/rtl.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/rtl.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/safe-ctype.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/sanitizer.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/sbitmap.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/splay-tree.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/ssa-iterators.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/statistics.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/stmt.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/stor-layout.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/stringpool.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/symtab.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/sync-builtins.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/system.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/target-hooks-macros.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/target.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/target.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/timevar.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/timevar.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tm-preds.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tm.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tm_p.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/toplev.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-cfg.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-cfgcleanup.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-check.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-core.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-dfa.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-dump.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-eh.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-hasher.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-inline.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-into-ssa.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-iterator.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-nested.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-object-size.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-outof-ssa.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-parloops.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-pass.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-phinodes.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-pretty-print.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-address.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-alias.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-coalesce.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-dom.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-loop-ivopts.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-loop-manip.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-loop-niter.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-loop.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-operands.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-sccvn.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-ter.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-threadedge.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa-threadupdate.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssa.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree-ssanames.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/tree.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/treestruct.def
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/varasm.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/vec.h
-#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/plugin/include/version.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/cc1
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/cc1plus
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/collect2
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtbegin.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtbeginS.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtbeginT.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtend.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtendS.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtfastmath.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtprec32.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtprec64.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtprec80.o
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/finclude
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed/README
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed/limits.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed/syslimits.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/adxintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ammintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx2intrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512cdintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512erintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512fintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512pfintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avxintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/bmi2intrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/bmiintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/bmmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_api.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_api_linux.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_stub.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_undocumented.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/common.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/holder.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/hyperobject_base.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/metaprogramming.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_file.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_list.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_max.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_min.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_min_max.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opadd.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opand.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opmul.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opor.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opxor.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_ostream.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_string.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cpuid.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cross-stdarg.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/emmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/f16cintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/float.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/fma4intrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/fmaintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/fxsrintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ia32intrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/immintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/iso646.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/lwpintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/lzcntintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/mm3dnow.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/mm_malloc.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/mmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/nmmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/omp.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/pmmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/popcntintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/prfchwintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/quadmath.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/quadmath_weak.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/rdseedintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/rtmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer/asan_interface.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer/common_interface_defs.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer/lsan_interface.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/shaintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/smmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/ssp.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/stdio.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/string.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/unistd.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdalign.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdarg.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdatomic.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdbool.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stddef.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdfix.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdint-gcc.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdint.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdnoreturn.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/tbmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/tmmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/unwind.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/varargs.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/wmmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/x86intrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xmmintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xopintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xsaveintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xsaveoptintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xtestintrin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/fixinc.sh
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/fixinc_list
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/fixincl
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/gsyslimits.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/include
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/include/README
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/include/limits.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/macro_list
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/mkheaders
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/mkheaders.conf
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/mkinstalldirs
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/libgcc.a
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/libgcc_eh.a
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/libgcov.a
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.la
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.so
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.so.0
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.so.0.0.0
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/lto-wrapper
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/lto1
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/gengtype
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/gtype.state
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ada
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ada/gcc-interface
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ada/gcc-interface/ada-tree.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/alias.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/all-tree.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/alloc-pool.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ansidecl.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/attribs.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/auto-host.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/b-header-vars
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/basic-block.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/bitmap.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/builtins.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/bversion.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-common.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-common.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-objc.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-pragma.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-pretty-print.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-tree.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/calls.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfg-flags.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfgexpand.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfghooks.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfgloop.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cgraph.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cif-code.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cilk-builtins.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cilkplus.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/dbxelf.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/elfos.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/glibc-stdint.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/gnu-user.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/att.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/biarch64.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user-common.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user64.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/i386-opts.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/i386-protos.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/i386.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/linux-common.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/linux64.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/stringop.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/unix.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/x86-64.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/x86-tune.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/initfini-array.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/linux-android.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/linux-protos.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/linux.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/vxworks-dummy.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/configargs.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/context.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/coretypes.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/cp-tree.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/cp-tree.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/cxx-pretty-print.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/name-lookup.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/type-utils.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cppdefault.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cpplib.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/debug.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/defaults.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/df.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic-color.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic-core.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/double-int.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/dumpfile.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/emit-rtl.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/except.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/filenames.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/fixed-value.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/flag-types.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/flags.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/fold-const.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/function.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gcc-plugin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gcc-symtab.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/genrtl.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ggc.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-builder.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-expr.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-fold.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-iterator.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-low.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-pretty-print.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-ssa.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-walk.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimplify-me.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimplify.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gsstruct.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gtm-builtins.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gtype-desc.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hard-reg-set.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hash-table.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hashtab.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/highlev-plugin-common.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hwint.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/incpath.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/input.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-codes.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-constants.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-flags.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-modes.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-notes.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/internal-fn.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/internal-fn.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/intl.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-prop.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-ref-inline.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-ref.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-reference.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-utils.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/is-a.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/java
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/java/java-tree.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/langhooks.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/libiberty.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/line-map.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/machmode.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/md5.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/mode-classes.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/objc
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/objc/objc-tree.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/obstack.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/omp-builtins.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/options.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/opts.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/output.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/params.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/params.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pass-instances.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pass_manager.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin-api.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin-version.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pointer-set.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/predict.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/predict.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/prefix.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pretty-print.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/print-rtl.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/print-tree.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/real.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/realmpfr.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/reg-notes.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/regset.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/resource.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/rtl.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/rtl.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/safe-ctype.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/sanitizer.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/sbitmap.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/splay-tree.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ssa-iterators.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/statistics.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/stmt.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/stor-layout.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/stringpool.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/symtab.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/sync-builtins.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/system.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/target-hooks-macros.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/target.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/target.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/timevar.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/timevar.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tm-preds.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tm.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tm_p.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/toplev.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-cfg.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-cfgcleanup.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-check.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-core.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-dfa.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-dump.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-eh.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-hasher.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-inline.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-into-ssa.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-iterator.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-nested.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-object-size.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-outof-ssa.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-parloops.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-pass.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-phinodes.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-pretty-print.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-address.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-alias.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-coalesce.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-dom.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-ivopts.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-manip.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-niter.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-operands.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-sccvn.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-ter.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-threadedge.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-threadupdate.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssanames.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/treestruct.def
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/varasm.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/vec.h
+#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/version.h
 #usr/lib/libasan.a
 #usr/lib/libasan.la
 #usr/lib/libasan.so
@@ -1138,8 +1138,8 @@ usr/lib/libquadmath.so.0.0.0
 #usr/lib/libssp.a
 #usr/lib/libssp.la
 #usr/lib/libssp.so
-usr/lib/libssp.so.0
-usr/lib/libssp.so.0.0.0
+#usr/lib/libssp.so.0
+#usr/lib/libssp.so.0.0.0
 #usr/lib/libssp_nonshared.a
 #usr/lib/libssp_nonshared.la
 #usr/lib/libstdc++.a
@@ -1162,13 +1162,13 @@ usr/lib/libubsan.so.0.0.0
 #usr/lib/libvtv.so
 usr/lib/libvtv.so.0
 usr/lib/libvtv.so.0.0.0
-#usr/share/gcc-4.9.3
-#usr/share/gcc-4.9.3/python
-#usr/share/gcc-4.9.3/python/libstdcxx
-#usr/share/gcc-4.9.3/python/libstdcxx/__init__.py
-#usr/share/gcc-4.9.3/python/libstdcxx/v6
-#usr/share/gcc-4.9.3/python/libstdcxx/v6/__init__.py
-#usr/share/gcc-4.9.3/python/libstdcxx/v6/printers.py
+#usr/share/gcc-4.9.4
+#usr/share/gcc-4.9.4/python
+#usr/share/gcc-4.9.4/python/libstdcxx
+#usr/share/gcc-4.9.4/python/libstdcxx/__init__.py
+#usr/share/gcc-4.9.4/python/libstdcxx/v6
+#usr/share/gcc-4.9.4/python/libstdcxx/v6/__init__.py
+#usr/share/gcc-4.9.4/python/libstdcxx/v6/printers.py
 #usr/share/info/cpp.info
 #usr/share/info/cppinternals.info
 #usr/share/info/gcc.info
index de549fcf448148f9d0bcca30b92e494b9ef1d406..919b0845aadce0b7bba495c62884ef9c1c7b5442 100644 (file)
@@ -4,12 +4,12 @@
 #usr/lib/libgmp.la
 #usr/lib/libgmp.so
 usr/lib/libgmp.so.10
-usr/lib/libgmp.so.10.3.0
+usr/lib/libgmp.so.10.3.2
 #usr/lib/libgmpxx.a
 #usr/lib/libgmpxx.la
 #usr/lib/libgmpxx.so
 usr/lib/libgmpxx.so.4
-usr/lib/libgmpxx.so.4.5.0
+usr/lib/libgmpxx.so.4.5.2
 #usr/share/info/gmp.info
 #usr/share/info/gmp.info-1
 #usr/share/info/gmp.info-2
diff --git a/config/rootfiles/core/111/exclude b/config/rootfiles/core/111/exclude
new file mode 100644 (file)
index 0000000..d6fd053
--- /dev/null
@@ -0,0 +1,30 @@
+boot/config.txt
+boot/grub/grub.cfg
+boot/grub/grubenv
+etc/alternatives
+etc/collectd.custom
+etc/default/grub
+etc/ipsec.conf
+etc/ipsec.secrets
+etc/ipsec.user.conf
+etc/ipsec.user.secrets
+etc/localtime
+etc/shadow
+etc/snort/snort.conf
+etc/ssh/ssh_config
+etc/ssh/sshd_config
+etc/ssl/openssl.cnf
+etc/sudoers
+etc/sysconfig/firewall.local
+etc/sysconfig/rc.local
+etc/udev/rules.d/30-persistent-network.rules
+srv/web/ipfire/html/proxy.pac
+var/ipfire/dma
+var/ipfire/time
+var/ipfire/ovpn
+var/lib/alternatives
+var/log/cache
+var/log/dhcpcd.log
+var/log/messages
+var/state/dhcp/dhcpd.leases
+var/updatecache
diff --git a/config/rootfiles/core/111/filelists/armv5tel/gcc b/config/rootfiles/core/111/filelists/armv5tel/gcc
new file mode 120000 (symlink)
index 0000000..84f7b93
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/gcc
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/armv5tel/gmp b/config/rootfiles/core/111/filelists/armv5tel/gmp
new file mode 120000 (symlink)
index 0000000..2bdf30d
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/gmp
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/bind b/config/rootfiles/core/111/filelists/bind
new file mode 120000 (symlink)
index 0000000..48a0eba
--- /dev/null
@@ -0,0 +1 @@
+../../../common/bind
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/coreutils b/config/rootfiles/core/111/filelists/coreutils
new file mode 120000 (symlink)
index 0000000..7351ed2
--- /dev/null
@@ -0,0 +1 @@
+../../../common/coreutils
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/cpio b/config/rootfiles/core/111/filelists/cpio
new file mode 120000 (symlink)
index 0000000..fbab21a
--- /dev/null
@@ -0,0 +1 @@
+../../../common/cpio
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/dhcp b/config/rootfiles/core/111/filelists/dhcp
new file mode 120000 (symlink)
index 0000000..32d8da4
--- /dev/null
@@ -0,0 +1 @@
+../../../common/dhcp
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/file b/config/rootfiles/core/111/filelists/file
new file mode 120000 (symlink)
index 0000000..0c60e43
--- /dev/null
@@ -0,0 +1 @@
+../../../common/file
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/files b/config/rootfiles/core/111/filelists/files
new file mode 100644 (file)
index 0000000..f1e9746
--- /dev/null
@@ -0,0 +1,24 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/networking/dhcpcd.exe
+etc/rc.d/init.d/networking/red
+etc/rc.d/init.d/wlanclient
+srv/web/ipfire/cgi-bin/index.cgi
+srv/web/ipfire/cgi-bin/ipinfo.cgi
+srv/web/ipfire/cgi-bin/iptables.cgi
+srv/web/ipfire/cgi-bin/logs.cgi/firewalllogcountry.dat
+srv/web/ipfire/cgi-bin/logs.cgi/firewalllogip.dat
+srv/web/ipfire/cgi-bin/logs.cgi/firewalllogport.dat
+srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromcountry.dat
+srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromip.dat
+srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromport.dat
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
+srv/web/ipfire/cgi-bin/vpnmain.cgi
+srv/web/ipfire/cgi-bin/wirelessclient.cgi
+srv/web/ipfire/html/images/back.png
+usr/local/bin/getipstat
+usr/local/bin/ipsecctrl
+var/ipfire/langs
+var/ipfire/graphs.pl
+var/ipfire/network-functions.pl
+var/ipfire/qos/bin/makeqosscripts.pl
diff --git a/config/rootfiles/core/111/filelists/gzip b/config/rootfiles/core/111/filelists/gzip
new file mode 120000 (symlink)
index 0000000..aebcccd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/gzip
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/i586/gcc b/config/rootfiles/core/111/filelists/i586/gcc
new file mode 120000 (symlink)
index 0000000..ba328e3
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/gcc
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/i586/gmp b/config/rootfiles/core/111/filelists/i586/gmp
new file mode 120000 (symlink)
index 0000000..52a09cd
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/gmp
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/i586/openssl-sse2 b/config/rootfiles/core/111/filelists/i586/openssl-sse2
new file mode 120000 (symlink)
index 0000000..f424713
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/openssl-sse2
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/i586/strongswan-padlock b/config/rootfiles/core/111/filelists/i586/strongswan-padlock
new file mode 120000 (symlink)
index 0000000..2412824
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/strongswan-padlock
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/libevent2 b/config/rootfiles/core/111/filelists/libevent2
new file mode 120000 (symlink)
index 0000000..42edc99
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libevent2
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/libevent2-compat b/config/rootfiles/core/111/filelists/libevent2-compat
new file mode 120000 (symlink)
index 0000000..4ea809b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libevent2-compat
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/logrotate b/config/rootfiles/core/111/filelists/logrotate
new file mode 120000 (symlink)
index 0000000..bc192c0
--- /dev/null
@@ -0,0 +1 @@
+../../../common/logrotate
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/logwatch b/config/rootfiles/core/111/filelists/logwatch
new file mode 120000 (symlink)
index 0000000..f14eabd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/logwatch
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/mpfr b/config/rootfiles/core/111/filelists/mpfr
new file mode 120000 (symlink)
index 0000000..c8468bf
--- /dev/null
@@ -0,0 +1 @@
+../../../common/mpfr
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/openssl b/config/rootfiles/core/111/filelists/openssl
new file mode 120000 (symlink)
index 0000000..e011a92
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssl
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/openvpn b/config/rootfiles/core/111/filelists/openvpn
new file mode 120000 (symlink)
index 0000000..493f3f7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openvpn
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/pcre b/config/rootfiles/core/111/filelists/pcre
new file mode 120000 (symlink)
index 0000000..b390d9a
--- /dev/null
@@ -0,0 +1 @@
+../../../common/pcre
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/php b/config/rootfiles/core/111/filelists/php
new file mode 120000 (symlink)
index 0000000..1ae48d7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/php
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/rrdtool b/config/rootfiles/core/111/filelists/rrdtool
new file mode 120000 (symlink)
index 0000000..7a82e41
--- /dev/null
@@ -0,0 +1 @@
+../../../common/rrdtool
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/strongswan b/config/rootfiles/core/111/filelists/strongswan
new file mode 120000 (symlink)
index 0000000..90c727e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/strongswan
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/unbound b/config/rootfiles/core/111/filelists/unbound
new file mode 120000 (symlink)
index 0000000..66adf09
--- /dev/null
@@ -0,0 +1 @@
+../../../common/unbound
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/vnstat b/config/rootfiles/core/111/filelists/vnstat
new file mode 120000 (symlink)
index 0000000..2e2e610
--- /dev/null
@@ -0,0 +1 @@
+../../../common/vnstat
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/x86_64/gcc b/config/rootfiles/core/111/filelists/x86_64/gcc
new file mode 120000 (symlink)
index 0000000..d1616d3
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/x86_64/gcc
\ No newline at end of file
diff --git a/config/rootfiles/core/111/filelists/x86_64/gmp b/config/rootfiles/core/111/filelists/x86_64/gmp
new file mode 120000 (symlink)
index 0000000..7c59c60
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/x86_64/gmp
\ No newline at end of file
diff --git a/config/rootfiles/core/111/meta b/config/rootfiles/core/111/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/core/111/update.sh b/config/rootfiles/core/111/update.sh
new file mode 100644 (file)
index 0000000..1c3cc27
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 3 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire 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 IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2017 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+core=111
+
+# Remove old core updates from pakfire cache to save space...
+for (( i=1; i<=$core; i++ )); do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+# Stop services
+ipsec stop
+/etc/init.d/unbound stop
+
+# Extract files
+extract_files
+
+# update linker config
+ldconfig
+
+# Update Language cache
+/usr/local/bin/update-lang-cache
+
+# Start services
+/etc/init.d/unbound start
+
+if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then
+       ipsec start
+fi
+
+# This update need a reboot...
+touch /var/run/need_reboot
+
+# Finish
+/etc/init.d/fireinfo start
+sendprofile
+
+# Update grub config to display new core version
+if [ -e /boot/grub/grub.cfg ]; then
+       grub-mkconfig -o /boot/grub/grub.cfg
+fi
+
+sync
+
+# Don't report the exitcode last command
+exit 0
index b9cee323a1bc986fd76a0837c143beea2f244d18..38fbcb8eb0274a3a102f4fb04331a1f2fd5bb061 100644 (file)
@@ -2765,9 +2765,9 @@ usr/lib/python3.6/lib-dynload/xxlimited.cpython-36m-arm-linux-gnueabi.so
 usr/lib/python3.6/lib-dynload/zlib.cpython-36m-arm-linux-gnueabi.so
 #usr/lib/python3.6/lib2to3
 usr/lib/python3.6/lib2to3/Grammar.txt
-usr/lib/python3.6/lib2to3/Grammar3.6.0.final.0.pickle
+usr/lib/python3.6/lib2to3/Grammar3.6.1.final.0.pickle
 usr/lib/python3.6/lib2to3/PatternGrammar.txt
-usr/lib/python3.6/lib2to3/PatternGrammar3.6.0.final.0.pickle
+usr/lib/python3.6/lib2to3/PatternGrammar3.6.1.final.0.pickle
 usr/lib/python3.6/lib2to3/__init__.py
 usr/lib/python3.6/lib2to3/__main__.py
 #usr/lib/python3.6/lib2to3/__pycache__
@@ -3297,8 +3297,7 @@ usr/lib/python3.6/shelve.py
 usr/lib/python3.6/shlex.py
 usr/lib/python3.6/shutil.py
 usr/lib/python3.6/signal.py
-usr/lib/python3.6/site-packages
-usr/lib/python3.6/site-packages/README
+#usr/lib/python3.6/site-packages
 usr/lib/python3.6/site-packages/README.txt
 #usr/lib/python3.6/site-packages/__pycache__
 usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc
@@ -7447,7 +7446,6 @@ usr/lib/python3.6/venv/__pycache__/__main__.cpython-36.opt-2.pyc
 usr/lib/python3.6/venv/__pycache__/__main__.cpython-36.pyc
 usr/lib/python3.6/venv/scripts
 usr/lib/python3.6/venv/scripts/posix
-usr/lib/python3.6/venv/scripts/posix/activate
 usr/lib/python3.6/venv/scripts/posix/activate.csh
 usr/lib/python3.6/venv/scripts/posix/activate.fish
 usr/lib/python3.6/warnings.py
@@ -7597,3 +7595,13 @@ usr/lib/python3.6/zipapp.py
 usr/lib/python3.6/zipfile.py
 #usr/share/man/man1/python3.1
 #usr/share/man/man1/python3.6.1
+usr/lib/python3.6/test/mod_generics_cache.py
+usr/lib/python3.6/test/mp_preload.py
+usr/lib/python3.6/venv/scripts/common
+usr/lib/python3.6/venv/scripts/common/activate
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.opt-1.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.opt-2.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.opt-1.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.opt-2.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.pyc
index 70b4eb4680d67f869c834b03fef946fb50c8eb65..05a618dd317f9d9dfebc4706d65860d60016b344 100644 (file)
@@ -1,3 +1,4 @@
+#etc/dbus-1/system.d
 etc/dbus-1/system.d/cups.conf
 etc/pam.d/cups
 etc/rc.d/init.d/cups
index b25265321d8a55427fa0140a47b50c11f57ba795..21967684152d73186006cf17326da0fd55705e81 100644 (file)
@@ -1,17 +1,15 @@
-etc/rc.d/init.d/messagebus
-etc/rc.d/rc3.d/S15messagebus
-etc/rc.d/rc0.d/K85messagebus
-etc/rc.d/rc6.d/K85messagebus
 #etc/dbus-1
 etc/dbus-1/session.conf
-etc/dbus-1/session.d
 etc/dbus-1/system.conf
-etc/dbus-1/system.d
+etc/rc.d/init.d/messagebus
 usr/bin/dbus-cleanup-sockets
 usr/bin/dbus-daemon
 usr/bin/dbus-launch
 usr/bin/dbus-monitor
+usr/bin/dbus-run-session
 usr/bin/dbus-send
+usr/bin/dbus-test-tool
+usr/bin/dbus-update-activation-environment
 usr/bin/dbus-uuidgen
 #usr/include/dbus-1.0
 #usr/include/dbus-1.0/dbus
@@ -28,9 +26,13 @@ usr/bin/dbus-uuidgen
 #usr/include/dbus-1.0/dbus/dbus-server.h
 #usr/include/dbus-1.0/dbus/dbus-shared.h
 #usr/include/dbus-1.0/dbus/dbus-signature.h
+#usr/include/dbus-1.0/dbus/dbus-syntax.h
 #usr/include/dbus-1.0/dbus/dbus-threads.h
 #usr/include/dbus-1.0/dbus/dbus-types.h
 #usr/include/dbus-1.0/dbus/dbus.h
+#usr/lib/cmake/DBus1
+#usr/lib/cmake/DBus1/DBus1Config.cmake
+#usr/lib/cmake/DBus1/DBus1ConfigVersion.cmake
 #usr/lib/dbus-1.0
 #usr/lib/dbus-1.0/include
 #usr/lib/dbus-1.0/include/dbus
@@ -39,15 +41,25 @@ usr/bin/dbus-uuidgen
 #usr/lib/libdbus-1.la
 usr/lib/libdbus-1.so
 usr/lib/libdbus-1.so.3
-usr/lib/libdbus-1.so.3.2.0
+usr/lib/libdbus-1.so.3.16.4
 #usr/lib/pkgconfig/dbus-1.pc
+usr/libexec/dbus-daemon-launch-helper
 #usr/share/dbus-1
 usr/share/dbus-1/services
-#usr/share/man/man1/dbus-cleanup-sockets.1
-#usr/share/man/man1/dbus-daemon.1
-#usr/share/man/man1/dbus-launch.1
-#usr/share/man/man1/dbus-monitor.1
-#usr/share/man/man1/dbus-send.1
-#usr/share/man/man1/dbus-uuidgen.1
+usr/share/dbus-1/session.conf
+usr/share/dbus-1/session.d
+usr/share/dbus-1/system-services
+usr/share/dbus-1/system.conf
+usr/share/dbus-1/system.d
+#usr/share/doc/dbus
+#usr/share/doc/dbus/diagram.png
+#usr/share/doc/dbus/diagram.svg
+#usr/share/doc/dbus/examples
+#usr/share/doc/dbus/examples/GetAllMatchRules.py
+#usr/share/doc/dbus/examples/example-session-disable-stats.conf
+#usr/share/doc/dbus/examples/example-system-enable-stats.conf
+#usr/share/doc/dbus/system-activation.txt
+#usr/share/xml/dbus-1
+#usr/share/xml/dbus-1/busconfig.dtd
+#usr/share/xml/dbus-1/introspect.dtd
 var/lib/dbus
-#var/run/dbus
diff --git a/config/rootfiles/packages/elfutils b/config/rootfiles/packages/elfutils
new file mode 100644 (file)
index 0000000..ac6d1cc
--- /dev/null
@@ -0,0 +1,80 @@
+usr/bin/eu-addr2line
+usr/bin/eu-ar
+usr/bin/eu-elfcmp
+usr/bin/eu-elfcompress
+usr/bin/eu-elflint
+usr/bin/eu-findtextrel
+usr/bin/eu-make-debug-archive
+usr/bin/eu-nm
+usr/bin/eu-objdump
+usr/bin/eu-ranlib
+usr/bin/eu-readelf
+usr/bin/eu-size
+usr/bin/eu-stack
+usr/bin/eu-strings
+usr/bin/eu-strip
+usr/bin/eu-unstrip
+#usr/include/dwarf.h
+#usr/include/elfutils
+#usr/include/elfutils/elf-knowledge.h
+#usr/include/elfutils/known-dwarf.h
+#usr/include/elfutils/libasm.h
+#usr/include/elfutils/libdw.h
+#usr/include/elfutils/libdwelf.h
+#usr/include/elfutils/libdwfl.h
+#usr/include/elfutils/libebl.h
+#usr/include/elfutils/version.h
+#usr/include/gelf.h
+#usr/include/libelf.h
+#usr/include/nlist.h
+usr/lib/elfutils
+#usr/lib/elfutils/libebl_aarch64-0.168.so
+#usr/lib/elfutils/libebl_aarch64.so
+#usr/lib/elfutils/libebl_alpha-0.168.so
+#usr/lib/elfutils/libebl_alpha.so
+#usr/lib/elfutils/libebl_arm-0.168.so
+#usr/lib/elfutils/libebl_arm.so
+#usr/lib/elfutils/libebl_bpf-0.168.so
+#usr/lib/elfutils/libebl_bpf.so
+#usr/lib/elfutils/libebl_i386-0.168.so
+#usr/lib/elfutils/libebl_i386.so
+#usr/lib/elfutils/libebl_ia64-0.168.so
+#usr/lib/elfutils/libebl_ia64.so
+#usr/lib/elfutils/libebl_m68k-0.168.so
+#usr/lib/elfutils/libebl_m68k.so
+#usr/lib/elfutils/libebl_ppc-0.168.so
+#usr/lib/elfutils/libebl_ppc.so
+#usr/lib/elfutils/libebl_ppc64-0.168.so
+#usr/lib/elfutils/libebl_ppc64.so
+#usr/lib/elfutils/libebl_s390-0.168.so
+#usr/lib/elfutils/libebl_s390.so
+#usr/lib/elfutils/libebl_sh-0.168.so
+#usr/lib/elfutils/libebl_sh.so
+#usr/lib/elfutils/libebl_sparc-0.168.so
+#usr/lib/elfutils/libebl_sparc.so
+#usr/lib/elfutils/libebl_tilegx-0.168.so
+#usr/lib/elfutils/libebl_tilegx.so
+#usr/lib/elfutils/libebl_x86_64-0.168.so
+#usr/lib/elfutils/libebl_x86_64.so
+usr/lib/libasm-0.168.so
+#usr/lib/libasm.a
+usr/lib/libasm.so
+usr/lib/libasm.so.1
+usr/lib/libdw-0.168.so
+#usr/lib/libdw.a
+usr/lib/libdw.so
+usr/lib/libdw.so.1
+#usr/lib/libebl.a
+usr/lib/libelf-0.168.so
+#usr/lib/libelf.a
+usr/lib/libelf.so
+usr/lib/libelf.so.1
+#usr/lib/pkgconfig/libdw.pc
+#usr/lib/pkgconfig/libelf.pc
+#usr/share/locale/de/LC_MESSAGES/elfutils.mo
+#usr/share/locale/en@boldquot/LC_MESSAGES/elfutils.mo
+#usr/share/locale/en@quot/LC_MESSAGES/elfutils.mo
+#usr/share/locale/es/LC_MESSAGES/elfutils.mo
+#usr/share/locale/ja/LC_MESSAGES/elfutils.mo
+#usr/share/locale/pl/LC_MESSAGES/elfutils.mo
+#usr/share/locale/uk/LC_MESSAGES/elfutils.mo
index ea31b20a1ce3215b3f9c63a7fa01c12280d48121..bf9e3728f578a826ca6b590fe93bc6480dfc5195 100644 (file)
@@ -10,18 +10,18 @@ usr/lib/perl5/site_perl/5.12.3/Error.pm
 usr/lib/perl5/site_perl/5.12.3/Git.pm
 usr/lib/perl5/site_perl/5.12.3/Git/I18N.pm
 usr/lib/perl5/site_perl/5.12.3/Git/IndexInfo.pm
-#usr/lib/perl5/site_perl/5.12.3/Git/SVN
-usr/lib/perl5/site_perl/5.12.3/Git/SVN.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Editor.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Fetcher.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/GlobSpec.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Log.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize/YAML.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Migration.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Prompt.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Ra.pm
-usr/lib/perl5/site_perl/5.12.3/Git/SVN/Utils.pm
+usr/lib/perl5/site_perl/5.12.3/Git/SVN
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Editor.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Fetcher.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/GlobSpec.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Log.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize/YAML.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Migration.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Prompt.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Ra.pm
+#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Utils.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Git
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Git/.packlist
 #usr/libexec/git-core
@@ -138,7 +138,6 @@ usr/libexec/git-core/git-rebase--interactive
 usr/libexec/git-core/git-rebase--merge
 usr/libexec/git-core/git-receive-pack
 usr/libexec/git-core/git-reflog
-usr/libexec/git-core/git-relink
 usr/libexec/git-core/git-remote
 usr/libexec/git-core/git-remote-ext
 usr/libexec/git-core/git-remote-fd
@@ -201,6 +200,7 @@ usr/libexec/git-core/mergetools/diffmerge
 usr/libexec/git-core/mergetools/diffuse
 usr/libexec/git-core/mergetools/ecmerge
 usr/libexec/git-core/mergetools/emerge
+usr/libexec/git-core/mergetools/examdiff
 usr/libexec/git-core/mergetools/gvimdiff
 usr/libexec/git-core/mergetools/gvimdiff2
 usr/libexec/git-core/mergetools/gvimdiff3
@@ -228,6 +228,7 @@ usr/share/git-core/templates/hooks/pre-applypatch.sample
 usr/share/git-core/templates/hooks/pre-commit.sample
 usr/share/git-core/templates/hooks/pre-push.sample
 usr/share/git-core/templates/hooks/pre-rebase.sample
+usr/share/git-core/templates/hooks/pre-receive.sample
 usr/share/git-core/templates/hooks/prepare-commit-msg.sample
 usr/share/git-core/templates/hooks/update.sample
 #usr/share/git-core/templates/info
@@ -270,6 +271,7 @@ usr/share/git-core/templates/info/exclude
 #usr/share/git-gui/lib/msgs/ja.msg
 #usr/share/git-gui/lib/msgs/nb.msg
 #usr/share/git-gui/lib/msgs/pt_br.msg
+#usr/share/git-gui/lib/msgs/pt_pt.msg
 #usr/share/git-gui/lib/msgs/ru.msg
 #usr/share/git-gui/lib/msgs/sv.msg
 #usr/share/git-gui/lib/msgs/vi.msg
@@ -302,6 +304,7 @@ usr/share/git-core/templates/info/exclude
 #usr/share/gitk/lib/msgs/it.msg
 #usr/share/gitk/lib/msgs/ja.msg
 #usr/share/gitk/lib/msgs/pt_br.msg
+#usr/share/gitk/lib/msgs/pt_pt.msg
 #usr/share/gitk/lib/msgs/ru.msg
 #usr/share/gitk/lib/msgs/sv.msg
 #usr/share/gitk/lib/msgs/vi.msg
index 4cf30f596ded6e92f1bae4d398e8f4cce9343187..325391fdde6232b44c8ebd660fd61faa47214e6b 100644 (file)
@@ -2765,9 +2765,9 @@ usr/lib/python3.6/lib-dynload/xxlimited.cpython-36m-i386-linux-gnu.so
 usr/lib/python3.6/lib-dynload/zlib.cpython-36m-i386-linux-gnu.so
 #usr/lib/python3.6/lib2to3
 usr/lib/python3.6/lib2to3/Grammar.txt
-usr/lib/python3.6/lib2to3/Grammar3.6.0.final.0.pickle
+usr/lib/python3.6/lib2to3/Grammar3.6.1.final.0.pickle
 usr/lib/python3.6/lib2to3/PatternGrammar.txt
-usr/lib/python3.6/lib2to3/PatternGrammar3.6.0.final.0.pickle
+usr/lib/python3.6/lib2to3/PatternGrammar3.6.1.final.0.pickle
 usr/lib/python3.6/lib2to3/__init__.py
 usr/lib/python3.6/lib2to3/__main__.py
 #usr/lib/python3.6/lib2to3/__pycache__
@@ -3297,8 +3297,7 @@ usr/lib/python3.6/shelve.py
 usr/lib/python3.6/shlex.py
 usr/lib/python3.6/shutil.py
 usr/lib/python3.6/signal.py
-usr/lib/python3.6/site-packages
-usr/lib/python3.6/site-packages/README
+#usr/lib/python3.6/site-packages
 usr/lib/python3.6/site-packages/README.txt
 #usr/lib/python3.6/site-packages/__pycache__
 usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc
@@ -7447,7 +7446,6 @@ usr/lib/python3.6/venv/__pycache__/__main__.cpython-36.opt-2.pyc
 usr/lib/python3.6/venv/__pycache__/__main__.cpython-36.pyc
 usr/lib/python3.6/venv/scripts
 usr/lib/python3.6/venv/scripts/posix
-usr/lib/python3.6/venv/scripts/posix/activate
 usr/lib/python3.6/venv/scripts/posix/activate.csh
 usr/lib/python3.6/venv/scripts/posix/activate.fish
 usr/lib/python3.6/warnings.py
@@ -7597,3 +7595,13 @@ usr/lib/python3.6/zipapp.py
 usr/lib/python3.6/zipfile.py
 #usr/share/man/man1/python3.1
 #usr/share/man/man1/python3.6.1
+usr/lib/python3.6/test/mod_generics_cache.py
+usr/lib/python3.6/test/mp_preload.py
+usr/lib/python3.6/venv/scripts/common
+usr/lib/python3.6/venv/scripts/common/activate
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.opt-1.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.opt-2.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.opt-1.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.opt-2.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.pyc
diff --git a/config/rootfiles/packages/i586/python3-libvirt b/config/rootfiles/packages/i586/python3-libvirt
new file mode 100644 (file)
index 0000000..0463ca4
--- /dev/null
@@ -0,0 +1,10 @@
+usr/lib/python3.6/site-packages/__pycache__/libvirt.cpython-36.pyc
+usr/lib/python3.6/site-packages/__pycache__/libvirt_lxc.cpython-36.pyc
+usr/lib/python3.6/site-packages/__pycache__/libvirt_qemu.cpython-36.pyc
+usr/lib/python3.6/site-packages/libvirt.py
+usr/lib/python3.6/site-packages/libvirt_lxc.py
+#usr/lib/python3.6/site-packages/libvirt_python-3.1.0-py3.6.egg-info
+usr/lib/python3.6/site-packages/libvirt_qemu.py
+usr/lib/python3.6/site-packages/libvirtmod.cpython-36m-i386-linux-gnu.so
+usr/lib/python3.6/site-packages/libvirtmod_lxc.cpython-36m-i386-linux-gnu.so
+usr/lib/python3.6/site-packages/libvirtmod_qemu.cpython-36m-i386-linux-gnu.so
index 7285eb62c4be902d8a916aa35c827897ad1fadab..70cfa225771678d7198c7d5ff880e3169541bf5b 100644 (file)
@@ -56,24 +56,23 @@ usr/bin/virt-xml-validate
 #usr/include/libvirt/libvirt.h
 #usr/include/libvirt/virterror.h
 #usr/lib/libnss_libvirt.la
-usr/lib/libnss_libvirt.so.2
 #usr/lib/libvirt
 #usr/lib/libvirt-admin.la
 #usr/lib/libvirt-admin.so
 usr/lib/libvirt-admin.so.0
-usr/lib/libvirt-admin.so.0.2005.0
+usr/lib/libvirt-admin.so.0.3001.0
 #usr/lib/libvirt-lxc.la
 #usr/lib/libvirt-lxc.so
 usr/lib/libvirt-lxc.so.0
-usr/lib/libvirt-lxc.so.0.2005.0
+usr/lib/libvirt-lxc.so.0.3001.0
 #usr/lib/libvirt-qemu.la
 #usr/lib/libvirt-qemu.so
 usr/lib/libvirt-qemu.so.0
-usr/lib/libvirt-qemu.so.0.2005.0
+usr/lib/libvirt-qemu.so.0.3001.0
 #usr/lib/libvirt.la
 #usr/lib/libvirt.so
 usr/lib/libvirt.so.0
-usr/lib/libvirt.so.0.2005.0
+usr/lib/libvirt.so.0.3001.0
 #usr/lib/libvirt/connection-driver
 #usr/lib/libvirt/connection-driver/libvirt_driver_interface.la
 usr/lib/libvirt/connection-driver/libvirt_driver_interface.so
@@ -87,6 +86,9 @@ usr/lib/libvirt/connection-driver/libvirt_driver_qemu.so
 usr/lib/libvirt/connection-driver/libvirt_driver_secret.so
 #usr/lib/libvirt/connection-driver/libvirt_driver_storage.la
 usr/lib/libvirt/connection-driver/libvirt_driver_storage.so
+#usr/lib/libvirt/storage-backend
+usr/lib/libvirt/storage-backend/libvirt_storage_backend_fs.so
+#usr/lib/libvirt/storage-backend/libvirt_storage_backend_fs.la
 #usr/lib/libvirt/lock-driver
 #usr/lib/libvirt/lock-driver/lockd.la
 usr/lib/libvirt/lock-driver/lockd.so
@@ -113,152 +115,152 @@ usr/sbin/virtlogd
 #usr/share/augeas/lenses/tests/test_virtlogd.aug
 #usr/share/augeas/lenses/virtlockd.aug
 #usr/share/augeas/lenses/virtlogd.aug
-#usr/share/doc/libvirt-2.5.0
-#usr/share/doc/libvirt-2.5.0/html
-#usr/share/doc/libvirt-2.5.0/html/32favicon.png
-#usr/share/doc/libvirt-2.5.0/html/404.html
-#usr/share/doc/libvirt-2.5.0/html/acl.html
-#usr/share/doc/libvirt-2.5.0/html/aclpolkit.html
-#usr/share/doc/libvirt-2.5.0/html/api.html
-#usr/share/doc/libvirt-2.5.0/html/api_extension.html
-#usr/share/doc/libvirt-2.5.0/html/apps.html
-#usr/share/doc/libvirt-2.5.0/html/architecture.gif
-#usr/share/doc/libvirt-2.5.0/html/architecture.html
-#usr/share/doc/libvirt-2.5.0/html/auditlog.html
-#usr/share/doc/libvirt-2.5.0/html/auth.html
-#usr/share/doc/libvirt-2.5.0/html/bindings.html
-#usr/share/doc/libvirt-2.5.0/html/bugs.html
-#usr/share/doc/libvirt-2.5.0/html/cgroups.html
-#usr/share/doc/libvirt-2.5.0/html/compiling.html
-#usr/share/doc/libvirt-2.5.0/html/contact.html
-#usr/share/doc/libvirt-2.5.0/html/contribute.html
-#usr/share/doc/libvirt-2.5.0/html/csharp.html
-#usr/share/doc/libvirt-2.5.0/html/devguide.html
-#usr/share/doc/libvirt-2.5.0/html/docs.html
-#usr/share/doc/libvirt-2.5.0/html/downloads.html
-#usr/share/doc/libvirt-2.5.0/html/drivers.html
-#usr/share/doc/libvirt-2.5.0/html/drvbhyve.html
-#usr/share/doc/libvirt-2.5.0/html/drvesx.html
-#usr/share/doc/libvirt-2.5.0/html/drvhyperv.html
-#usr/share/doc/libvirt-2.5.0/html/drvlxc.html
-#usr/share/doc/libvirt-2.5.0/html/drvopenvz.html
-#usr/share/doc/libvirt-2.5.0/html/drvphyp.html
-#usr/share/doc/libvirt-2.5.0/html/drvqemu.html
-#usr/share/doc/libvirt-2.5.0/html/drvremote.html
-#usr/share/doc/libvirt-2.5.0/html/drvtest.html
-#usr/share/doc/libvirt-2.5.0/html/drvuml.html
-#usr/share/doc/libvirt-2.5.0/html/drvvbox.html
-#usr/share/doc/libvirt-2.5.0/html/drvvirtuozzo.html
-#usr/share/doc/libvirt-2.5.0/html/drvvmware.html
-#usr/share/doc/libvirt-2.5.0/html/drvxen.html
-#usr/share/doc/libvirt-2.5.0/html/errors.html
-#usr/share/doc/libvirt-2.5.0/html/firewall.html
-#usr/share/doc/libvirt-2.5.0/html/format.html
-#usr/share/doc/libvirt-2.5.0/html/formatcaps.html
-#usr/share/doc/libvirt-2.5.0/html/formatdomain.html
-#usr/share/doc/libvirt-2.5.0/html/formatdomaincaps.html
-#usr/share/doc/libvirt-2.5.0/html/formatnetwork.html
-#usr/share/doc/libvirt-2.5.0/html/formatnode.html
-#usr/share/doc/libvirt-2.5.0/html/formatnwfilter.html
-#usr/share/doc/libvirt-2.5.0/html/formatsecret.html
-#usr/share/doc/libvirt-2.5.0/html/formatsnapshot.html
-#usr/share/doc/libvirt-2.5.0/html/formatstorage.html
-#usr/share/doc/libvirt-2.5.0/html/formatstorageencryption.html
-#usr/share/doc/libvirt-2.5.0/html/generic.css
-#usr/share/doc/libvirt-2.5.0/html/goals.html
-#usr/share/doc/libvirt-2.5.0/html/governance.html
-#usr/share/doc/libvirt-2.5.0/html/hacking.html
-#usr/share/doc/libvirt-2.5.0/html/hooks.html
-#usr/share/doc/libvirt-2.5.0/html/html
-#usr/share/doc/libvirt-2.5.0/html/html/home.png
-#usr/share/doc/libvirt-2.5.0/html/html/index.html
-#usr/share/doc/libvirt-2.5.0/html/html/left.png
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-common.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-domain-snapshot.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-domain.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-event.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-host.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-interface.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-network.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-nodedev.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-nwfilter.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-secret.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-storage.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-stream.html
-#usr/share/doc/libvirt-2.5.0/html/html/libvirt-virterror.html
-#usr/share/doc/libvirt-2.5.0/html/html/right.png
-#usr/share/doc/libvirt-2.5.0/html/html/up.png
-#usr/share/doc/libvirt-2.5.0/html/hvsupport.html
-#usr/share/doc/libvirt-2.5.0/html/index.html
-#usr/share/doc/libvirt-2.5.0/html/internals
-#usr/share/doc/libvirt-2.5.0/html/internals.html
-#usr/share/doc/libvirt-2.5.0/html/internals/command.html
-#usr/share/doc/libvirt-2.5.0/html/internals/eventloop.html
-#usr/share/doc/libvirt-2.5.0/html/internals/locking.html
-#usr/share/doc/libvirt-2.5.0/html/internals/oomtesting.html
-#usr/share/doc/libvirt-2.5.0/html/internals/rpc.html
-#usr/share/doc/libvirt-2.5.0/html/java.html
-#usr/share/doc/libvirt-2.5.0/html/libvirt-daemon-arch.png
-#usr/share/doc/libvirt-2.5.0/html/libvirt-driver-arch.png
-#usr/share/doc/libvirt-2.5.0/html/libvirt-object-model.png
-#usr/share/doc/libvirt-2.5.0/html/libvirt.css
-#usr/share/doc/libvirt-2.5.0/html/locking-lockd.html
-#usr/share/doc/libvirt-2.5.0/html/locking-sanlock.html
-#usr/share/doc/libvirt-2.5.0/html/locking.html
-#usr/share/doc/libvirt-2.5.0/html/logging.html
-#usr/share/doc/libvirt-2.5.0/html/logos
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-dark-256.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-dark-800.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-dark.svg
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-light-256.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-light-800.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-light.svg
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-base.svg
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-128.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-192.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-256.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-96.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-128.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-192.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-256.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-96.png
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered.svg
-#usr/share/doc/libvirt-2.5.0/html/logos/logo-square.svg
-#usr/share/doc/libvirt-2.5.0/html/main.css
-#usr/share/doc/libvirt-2.5.0/html/migration-managed-direct.png
-#usr/share/doc/libvirt-2.5.0/html/migration-managed-p2p.png
-#usr/share/doc/libvirt-2.5.0/html/migration-native.png
-#usr/share/doc/libvirt-2.5.0/html/migration-tunnel.png
-#usr/share/doc/libvirt-2.5.0/html/migration-unmanaged-direct.png
-#usr/share/doc/libvirt-2.5.0/html/migration.html
-#usr/share/doc/libvirt-2.5.0/html/news-2005.html
-#usr/share/doc/libvirt-2.5.0/html/news-2006.html
-#usr/share/doc/libvirt-2.5.0/html/news-2007.html
-#usr/share/doc/libvirt-2.5.0/html/news-2008.html
-#usr/share/doc/libvirt-2.5.0/html/news-2009.html
-#usr/share/doc/libvirt-2.5.0/html/news-2010.html
-#usr/share/doc/libvirt-2.5.0/html/news-2011.html
-#usr/share/doc/libvirt-2.5.0/html/news-2012.html
-#usr/share/doc/libvirt-2.5.0/html/news-2013.html
-#usr/share/doc/libvirt-2.5.0/html/news-2014.html
-#usr/share/doc/libvirt-2.5.0/html/news-2015.html
-#usr/share/doc/libvirt-2.5.0/html/news-2016.html
-#usr/share/doc/libvirt-2.5.0/html/news.html
-#usr/share/doc/libvirt-2.5.0/html/node.gif
-#usr/share/doc/libvirt-2.5.0/html/nss.html
-#usr/share/doc/libvirt-2.5.0/html/php.html
-#usr/share/doc/libvirt-2.5.0/html/python.html
-#usr/share/doc/libvirt-2.5.0/html/remote.html
-#usr/share/doc/libvirt-2.5.0/html/secureusage.html
-#usr/share/doc/libvirt-2.5.0/html/securityprocess.html
-#usr/share/doc/libvirt-2.5.0/html/storage.html
-#usr/share/doc/libvirt-2.5.0/html/testapi.html
-#usr/share/doc/libvirt-2.5.0/html/testsuites.html
-#usr/share/doc/libvirt-2.5.0/html/testtck.html
-#usr/share/doc/libvirt-2.5.0/html/todo.html
-#usr/share/doc/libvirt-2.5.0/html/uri.html
-#usr/share/doc/libvirt-2.5.0/html/virshcmdref.html
-#usr/share/doc/libvirt-2.5.0/html/windows.html
+#usr/share/doc/libvirt-3.1.0
+#usr/share/doc/libvirt-3.1.0/html
+#usr/share/doc/libvirt-3.1.0/html/32favicon.png
+#usr/share/doc/libvirt-3.1.0/html/404.html
+#usr/share/doc/libvirt-3.1.0/html/acl.html
+#usr/share/doc/libvirt-3.1.0/html/aclpolkit.html
+#usr/share/doc/libvirt-3.1.0/html/api.html
+#usr/share/doc/libvirt-3.1.0/html/api_extension.html
+#usr/share/doc/libvirt-3.1.0/html/apps.html
+#usr/share/doc/libvirt-3.1.0/html/architecture.gif
+#usr/share/doc/libvirt-3.1.0/html/architecture.html
+#usr/share/doc/libvirt-3.1.0/html/auditlog.html
+#usr/share/doc/libvirt-3.1.0/html/auth.html
+#usr/share/doc/libvirt-3.1.0/html/bindings.html
+#usr/share/doc/libvirt-3.1.0/html/bugs.html
+#usr/share/doc/libvirt-3.1.0/html/cgroups.html
+#usr/share/doc/libvirt-3.1.0/html/compiling.html
+#usr/share/doc/libvirt-3.1.0/html/contact.html
+#usr/share/doc/libvirt-3.1.0/html/contribute.html
+#usr/share/doc/libvirt-3.1.0/html/csharp.html
+#usr/share/doc/libvirt-3.1.0/html/devguide.html
+#usr/share/doc/libvirt-3.1.0/html/docs.html
+#usr/share/doc/libvirt-3.1.0/html/downloads.html
+#usr/share/doc/libvirt-3.1.0/html/drivers.html
+#usr/share/doc/libvirt-3.1.0/html/drvbhyve.html
+#usr/share/doc/libvirt-3.1.0/html/drvesx.html
+#usr/share/doc/libvirt-3.1.0/html/drvhyperv.html
+#usr/share/doc/libvirt-3.1.0/html/drvlxc.html
+#usr/share/doc/libvirt-3.1.0/html/drvopenvz.html
+#usr/share/doc/libvirt-3.1.0/html/drvphyp.html
+#usr/share/doc/libvirt-3.1.0/html/drvqemu.html
+#usr/share/doc/libvirt-3.1.0/html/drvremote.html
+#usr/share/doc/libvirt-3.1.0/html/drvtest.html
+#usr/share/doc/libvirt-3.1.0/html/drvuml.html
+#usr/share/doc/libvirt-3.1.0/html/drvvbox.html
+#usr/share/doc/libvirt-3.1.0/html/drvvirtuozzo.html
+#usr/share/doc/libvirt-3.1.0/html/drvvmware.html
+#usr/share/doc/libvirt-3.1.0/html/drvxen.html
+#usr/share/doc/libvirt-3.1.0/html/errors.html
+#usr/share/doc/libvirt-3.1.0/html/firewall.html
+#usr/share/doc/libvirt-3.1.0/html/format.html
+#usr/share/doc/libvirt-3.1.0/html/formatcaps.html
+#usr/share/doc/libvirt-3.1.0/html/formatdomain.html
+#usr/share/doc/libvirt-3.1.0/html/formatdomaincaps.html
+#usr/share/doc/libvirt-3.1.0/html/formatnetwork.html
+#usr/share/doc/libvirt-3.1.0/html/formatnode.html
+#usr/share/doc/libvirt-3.1.0/html/formatnwfilter.html
+#usr/share/doc/libvirt-3.1.0/html/formatsecret.html
+#usr/share/doc/libvirt-3.1.0/html/formatsnapshot.html
+#usr/share/doc/libvirt-3.1.0/html/formatstorage.html
+#usr/share/doc/libvirt-3.1.0/html/formatstorageencryption.html
+#usr/share/doc/libvirt-3.1.0/html/generic.css
+#usr/share/doc/libvirt-3.1.0/html/goals.html
+#usr/share/doc/libvirt-3.1.0/html/governance.html
+#usr/share/doc/libvirt-3.1.0/html/hacking.html
+#usr/share/doc/libvirt-3.1.0/html/hooks.html
+#usr/share/doc/libvirt-3.1.0/html/html
+#usr/share/doc/libvirt-3.1.0/html/html/home.png
+#usr/share/doc/libvirt-3.1.0/html/html/index.html
+#usr/share/doc/libvirt-3.1.0/html/html/left.png
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-common.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-domain-snapshot.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-domain.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-event.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-host.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-interface.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-network.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-nodedev.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-nwfilter.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-secret.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-storage.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-libvirt-stream.html
+#usr/share/doc/libvirt-3.1.0/html/html/libvirt-virterror.html
+#usr/share/doc/libvirt-3.1.0/html/html/right.png
+#usr/share/doc/libvirt-3.1.0/html/html/up.png
+#usr/share/doc/libvirt-3.1.0/html/hvsupport.html
+#usr/share/doc/libvirt-3.1.0/html/index.html
+#usr/share/doc/libvirt-3.1.0/html/internals
+#usr/share/doc/libvirt-3.1.0/html/internals.html
+#usr/share/doc/libvirt-3.1.0/html/internals/command.html
+#usr/share/doc/libvirt-3.1.0/html/internals/eventloop.html
+#usr/share/doc/libvirt-3.1.0/html/internals/locking.html
+#usr/share/doc/libvirt-3.1.0/html/internals/oomtesting.html
+#usr/share/doc/libvirt-3.1.0/html/internals/rpc.html
+#usr/share/doc/libvirt-3.1.0/html/java.html
+#usr/share/doc/libvirt-3.1.0/html/libvirt-daemon-arch.png
+#usr/share/doc/libvirt-3.1.0/html/libvirt-driver-arch.png
+#usr/share/doc/libvirt-3.1.0/html/libvirt-object-model.png
+#usr/share/doc/libvirt-3.1.0/html/libvirt.css
+#usr/share/doc/libvirt-3.1.0/html/locking-lockd.html
+#usr/share/doc/libvirt-3.1.0/html/locking-sanlock.html
+#usr/share/doc/libvirt-3.1.0/html/locking.html
+#usr/share/doc/libvirt-3.1.0/html/logging.html
+#usr/share/doc/libvirt-3.1.0/html/logos
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-banner-dark-256.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-banner-dark-800.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-banner-dark.svg
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-banner-light-256.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-banner-light-800.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-banner-light.svg
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-base.svg
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-128.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-192.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-256.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-96.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-powered-128.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-powered-192.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-powered-256.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-powered-96.png
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square-powered.svg
+#usr/share/doc/libvirt-3.1.0/html/logos/logo-square.svg
+#usr/share/doc/libvirt-3.1.0/html/main.css
+#usr/share/doc/libvirt-3.1.0/html/migration-managed-direct.png
+#usr/share/doc/libvirt-3.1.0/html/migration-managed-p2p.png
+#usr/share/doc/libvirt-3.1.0/html/migration-native.png
+#usr/share/doc/libvirt-3.1.0/html/migration-tunnel.png
+#usr/share/doc/libvirt-3.1.0/html/migration-unmanaged-direct.png
+#usr/share/doc/libvirt-3.1.0/html/migration.html
+#usr/share/doc/libvirt-3.1.0/html/news-2005.html
+#usr/share/doc/libvirt-3.1.0/html/news-2006.html
+#usr/share/doc/libvirt-3.1.0/html/news-2007.html
+#usr/share/doc/libvirt-3.1.0/html/news-2008.html
+#usr/share/doc/libvirt-3.1.0/html/news-2009.html
+#usr/share/doc/libvirt-3.1.0/html/news-2010.html
+#usr/share/doc/libvirt-3.1.0/html/news-2011.html
+#usr/share/doc/libvirt-3.1.0/html/news-2012.html
+#usr/share/doc/libvirt-3.1.0/html/news-2013.html
+#usr/share/doc/libvirt-3.1.0/html/news-2014.html
+#usr/share/doc/libvirt-3.1.0/html/news-2015.html
+#usr/share/doc/libvirt-3.1.0/html/news-2016.html
+#usr/share/doc/libvirt-3.1.0/html/news.html
+#usr/share/doc/libvirt-3.1.0/html/node.gif
+#usr/share/doc/libvirt-3.1.0/html/nss.html
+#usr/share/doc/libvirt-3.1.0/html/php.html
+#usr/share/doc/libvirt-3.1.0/html/python.html
+#usr/share/doc/libvirt-3.1.0/html/remote.html
+#usr/share/doc/libvirt-3.1.0/html/secureusage.html
+#usr/share/doc/libvirt-3.1.0/html/securityprocess.html
+#usr/share/doc/libvirt-3.1.0/html/storage.html
+#usr/share/doc/libvirt-3.1.0/html/testapi.html
+#usr/share/doc/libvirt-3.1.0/html/testsuites.html
+#usr/share/doc/libvirt-3.1.0/html/testtck.html
+#usr/share/doc/libvirt-3.1.0/html/todo.html
+#usr/share/doc/libvirt-3.1.0/html/uri.html
+#usr/share/doc/libvirt-3.1.0/html/virshcmdref.html
+#usr/share/doc/libvirt-3.1.0/html/windows.html
 #usr/share/gtk-doc/html/libvirt
 #usr/share/gtk-doc/html/libvirt/general.html
 #usr/share/gtk-doc/html/libvirt/home.png
@@ -293,6 +295,7 @@ usr/share/libvirt/schemas/secret.rng
 usr/share/libvirt/schemas/storagecommon.rng
 usr/share/libvirt/schemas/storagepool.rng
 usr/share/libvirt/schemas/storagevol.rng
+#usr/share/libvirt/test-screenshot.png
 #usr/share/man/man1/virsh.1
 #usr/share/man/man1/virt-admin.1
 #usr/share/man/man1/virt-host-validate.1
diff --git a/config/rootfiles/packages/ltrace b/config/rootfiles/packages/ltrace
new file mode 100644 (file)
index 0000000..9964a70
--- /dev/null
@@ -0,0 +1,10 @@
+etc/ltrace.conf
+usr/bin/ltrace
+#usr/share/doc/ltrace
+#usr/share/doc/ltrace/COPYING
+#usr/share/doc/ltrace/CREDITS
+#usr/share/doc/ltrace/INSTALL
+#usr/share/doc/ltrace/README
+#usr/share/doc/ltrace/TODO
+#usr/share/man/man1/ltrace.1
+#usr/share/man/man5/ltrace.conf.5
index f8171b4dfef992f15065703633be522235ae34f7..0e9341d681ea165e6516f060a1b51b23f96545e4 100644 (file)
@@ -1,11 +1,12 @@
 #etc/nano
-etc/nano/nanorc.sample
+etc/nano/sample.nanorc
 usr/bin/nano
 usr/bin/pico
 usr/bin/rnano
 #usr/share/doc/nano
 #usr/share/doc/nano/faq.html
 #usr/share/doc/nano/nano.1.html
+#usr/share/doc/nano/nano.html
 #usr/share/doc/nano/nanorc.5.html
 #usr/share/doc/nano/rnano.1.html
 #usr/share/info/nano.info
index 63289492223b9c7ee176c023f81dbb766eb2ed60..9d80ec2ad8eddc0f9e2154d4141313e4641810ad 100644 (file)
@@ -542,6 +542,8 @@ usr/share/snmp/mibs/IPV6-MIB.txt
 usr/share/snmp/mibs/IPV6-TC.txt
 usr/share/snmp/mibs/IPV6-TCP-MIB.txt
 usr/share/snmp/mibs/IPV6-UDP-MIB.txt
+usr/share/snmp/mibs/LM-SENSORS-MIB.txt
+usr/share/snmp/mibs/MTA-MIB.txt
 usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt
 usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt
 usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
@@ -549,6 +551,7 @@ usr/share/snmp/mibs/NET-SNMP-MIB.txt
 usr/share/snmp/mibs/NET-SNMP-PASS-MIB.txt
 usr/share/snmp/mibs/NET-SNMP-TC.txt
 usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt
+usr/share/snmp/mibs/NETWORK-SERVICES-MIB.txt
 usr/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt
 usr/share/snmp/mibs/RFC-1215.txt
 usr/share/snmp/mibs/RFC1155-SMI.txt
index b91f954775941f8b150eef61f47e25c7d17a1b7c..111610a623cbf159b70fd67acb2564b4601202c0 100644 (file)
@@ -1,6 +1,7 @@
 usr/bin/ndiff
 usr/bin/nmap
 usr/bin/nping
+#usr/bin/uninstall_ndiff
 usr/lib/python2.7/site-packages/ndiff.py
 usr/lib/python2.7/site-packages/ndiff.pyc
 #usr/share/man/de/man1/nmap.1
@@ -13,6 +14,8 @@ usr/lib/python2.7/site-packages/ndiff.pyc
 #usr/share/man/hu/man1
 #usr/share/man/hu/man1/nmap.1
 #usr/share/man/it/man1/nmap.1
+#usr/share/man/ja
+#usr/share/man/ja/man1
 #usr/share/man/ja/man1/nmap.1
 #usr/share/man/man1/ndiff.1
 #usr/share/man/man1/nmap.1
@@ -53,23 +56,28 @@ usr/share/nmap/nse_main.lua
 usr/share/nmap/nselib/afp.lua
 usr/share/nmap/nselib/ajp.lua
 usr/share/nmap/nselib/amqp.lua
+usr/share/nmap/nselib/anyconnect.lua
 usr/share/nmap/nselib/asn1.lua
 usr/share/nmap/nselib/base32.lua
 usr/share/nmap/nselib/base64.lua
-usr/share/nmap/nselib/bin.luadoc
-usr/share/nmap/nselib/bit.luadoc
+usr/share/nmap/nselib/bin.lua
+usr/share/nmap/nselib/bit.lua
 usr/share/nmap/nselib/bitcoin.lua
+usr/share/nmap/nselib/bits.lua
 usr/share/nmap/nselib/bittorrent.lua
 usr/share/nmap/nselib/bjnp.lua
 usr/share/nmap/nselib/brute.lua
 usr/share/nmap/nselib/cassandra.lua
 usr/share/nmap/nselib/citrixxml.lua
+usr/share/nmap/nselib/coap.lua
 usr/share/nmap/nselib/comm.lua
 usr/share/nmap/nselib/creds.lua
 usr/share/nmap/nselib/cvs.lua
 #usr/share/nmap/nselib/data
 usr/share/nmap/nselib/data/dns-srv-names
 usr/share/nmap/nselib/data/drupal-modules.lst
+usr/share/nmap/nselib/data/drupal-themes.lst
+usr/share/nmap/nselib/data/enterprise_numbers.txt
 usr/share/nmap/nselib/data/favicon-db
 usr/share/nmap/nselib/data/http-default-accounts-fingerprints.lua
 usr/share/nmap/nselib/data/http-devframework-fingerprints.lua
@@ -104,14 +112,16 @@ usr/share/nmap/nselib/data/psexec/nmap_service.vcproj
 usr/share/nmap/nselib/data/psexec/pwdump.lua
 usr/share/nmap/nselib/data/rtsp-urls.txt
 usr/share/nmap/nselib/data/snmpcommunities.lst
-usr/share/nmap/nselib/data/ssl-ciphers
 usr/share/nmap/nselib/data/ssl-fingerprints
+usr/share/nmap/nselib/data/targets-ipv6-wordlist
 usr/share/nmap/nselib/data/tftplist.txt
 usr/share/nmap/nselib/data/usernames.lst
 usr/share/nmap/nselib/data/vhosts-default.lst
 usr/share/nmap/nselib/data/vhosts-full.lst
 usr/share/nmap/nselib/data/wp-plugins.lst
+usr/share/nmap/nselib/data/wp-themes.lst
 usr/share/nmap/nselib/datafiles.lua
+usr/share/nmap/nselib/datetime.lua
 usr/share/nmap/nselib/dhcp.lua
 usr/share/nmap/nselib/dhcp6.lua
 usr/share/nmap/nselib/dns.lua
@@ -122,6 +132,7 @@ usr/share/nmap/nselib/eap.lua
 usr/share/nmap/nselib/eigrp.lua
 usr/share/nmap/nselib/formulas.lua
 usr/share/nmap/nselib/ftp.lua
+usr/share/nmap/nselib/geoip.lua
 usr/share/nmap/nselib/giop.lua
 usr/share/nmap/nselib/gps.lua
 usr/share/nmap/nselib/http.lua
@@ -131,6 +142,7 @@ usr/share/nmap/nselib/ike.lua
 usr/share/nmap/nselib/imap.lua
 usr/share/nmap/nselib/informix.lua
 usr/share/nmap/nselib/ipOps.lua
+usr/share/nmap/nselib/ipmi.lua
 usr/share/nmap/nselib/ipp.lua
 usr/share/nmap/nselib/iscsi.lua
 usr/share/nmap/nselib/isns.lua
@@ -139,14 +151,19 @@ usr/share/nmap/nselib/json.lua
 usr/share/nmap/nselib/ldap.lua
 usr/share/nmap/nselib/lfs.luadoc
 usr/share/nmap/nselib/listop.lua
+usr/share/nmap/nselib/lpeg-utility.lua
+usr/share/nmap/nselib/lpeg.luadoc
+usr/share/nmap/nselib/ls.lua
 usr/share/nmap/nselib/match.lua
 usr/share/nmap/nselib/membase.lua
 usr/share/nmap/nselib/mobileme.lua
 usr/share/nmap/nselib/mongodb.lua
+usr/share/nmap/nselib/mqtt.lua
 usr/share/nmap/nselib/msrpc.lua
 usr/share/nmap/nselib/msrpcperformance.lua
 usr/share/nmap/nselib/msrpctypes.lua
 usr/share/nmap/nselib/mssql.lua
+usr/share/nmap/nselib/multicast.lua
 usr/share/nmap/nselib/mysql.lua
 usr/share/nmap/nselib/natpmp.lua
 usr/share/nmap/nselib/ncp.lua
@@ -165,6 +182,7 @@ usr/share/nmap/nselib/pop3.lua
 usr/share/nmap/nselib/pppoe.lua
 usr/share/nmap/nselib/proxy.lua
 usr/share/nmap/nselib/rdp.lua
+usr/share/nmap/nselib/re.lua
 usr/share/nmap/nselib/redis.lua
 usr/share/nmap/nselib/rmi.lua
 usr/share/nmap/nselib/rpc.lua
@@ -174,6 +192,7 @@ usr/share/nmap/nselib/rtsp.lua
 usr/share/nmap/nselib/sasl.lua
 usr/share/nmap/nselib/shortport.lua
 usr/share/nmap/nselib/sip.lua
+usr/share/nmap/nselib/slaxml.lua
 usr/share/nmap/nselib/smb.lua
 usr/share/nmap/nselib/smbauth.lua
 usr/share/nmap/nselib/smtp.lua
@@ -183,6 +202,7 @@ usr/share/nmap/nselib/srvloc.lua
 usr/share/nmap/nselib/ssh1.lua
 usr/share/nmap/nselib/ssh2.lua
 usr/share/nmap/nselib/sslcert.lua
+usr/share/nmap/nselib/sslv2.lua
 usr/share/nmap/nselib/stdnse.lua
 usr/share/nmap/nselib/strbuf.lua
 usr/share/nmap/nselib/strict.lua
@@ -191,6 +211,7 @@ usr/share/nmap/nselib/tab.lua
 usr/share/nmap/nselib/target.lua
 usr/share/nmap/nselib/tftp.lua
 usr/share/nmap/nselib/tls.lua
+usr/share/nmap/nselib/tn3270.lua
 usr/share/nmap/nselib/tns.lua
 usr/share/nmap/nselib/unicode.lua
 usr/share/nmap/nselib/unittest.lua
@@ -224,6 +245,7 @@ usr/share/nmap/scripts/auth-owners.nse
 usr/share/nmap/scripts/auth-spoof.nse
 usr/share/nmap/scripts/backorifice-brute.nse
 usr/share/nmap/scripts/backorifice-info.nse
+usr/share/nmap/scripts/bacnet-info.nse
 usr/share/nmap/scripts/banner.nse
 usr/share/nmap/scripts/bitcoin-getaddr.nse
 usr/share/nmap/scripts/bitcoin-info.nse
@@ -252,6 +274,7 @@ usr/share/nmap/scripts/broadcast-ping.nse
 usr/share/nmap/scripts/broadcast-pppoe-discover.nse
 usr/share/nmap/scripts/broadcast-rip-discover.nse
 usr/share/nmap/scripts/broadcast-ripng-discover.nse
+usr/share/nmap/scripts/broadcast-sonicwall-discover.nse
 usr/share/nmap/scripts/broadcast-sybase-asa-discover.nse
 usr/share/nmap/scripts/broadcast-tellstick-discover.nse
 usr/share/nmap/scripts/broadcast-upnp-info.nse
@@ -263,11 +286,16 @@ usr/share/nmap/scripts/broadcast-xdmcp-discover.nse
 usr/share/nmap/scripts/cassandra-brute.nse
 usr/share/nmap/scripts/cassandra-info.nse
 usr/share/nmap/scripts/cccam-version.nse
+usr/share/nmap/scripts/cics-enum.nse
+usr/share/nmap/scripts/cics-user-enum.nse
 usr/share/nmap/scripts/citrix-brute-xml.nse
 usr/share/nmap/scripts/citrix-enum-apps-xml.nse
 usr/share/nmap/scripts/citrix-enum-apps.nse
 usr/share/nmap/scripts/citrix-enum-servers-xml.nse
 usr/share/nmap/scripts/citrix-enum-servers.nse
+usr/share/nmap/scripts/clamav-exec.nse
+usr/share/nmap/scripts/clock-skew.nse
+usr/share/nmap/scripts/coap-resources.nse
 usr/share/nmap/scripts/couchdb-databases.nse
 usr/share/nmap/scripts/couchdb-stats.nse
 usr/share/nmap/scripts/creds-summary.nse
@@ -278,7 +306,6 @@ usr/share/nmap/scripts/cvs-brute.nse
 usr/share/nmap/scripts/daap-get-library.nse
 usr/share/nmap/scripts/daytime.nse
 usr/share/nmap/scripts/db2-das-info.nse
-usr/share/nmap/scripts/db2-discover.nse
 usr/share/nmap/scripts/dhcp-discover.nse
 usr/share/nmap/scripts/dict-info.nse
 usr/share/nmap/scripts/distcc-cve2004-2687.nse
@@ -300,6 +327,7 @@ usr/share/nmap/scripts/dns-srv-enum.nse
 usr/share/nmap/scripts/dns-update.nse
 usr/share/nmap/scripts/dns-zeustracker.nse
 usr/share/nmap/scripts/dns-zone-transfer.nse
+usr/share/nmap/scripts/docker-version.nse
 usr/share/nmap/scripts/domcon-brute.nse
 usr/share/nmap/scripts/domcon-cmd.nse
 usr/share/nmap/scripts/domino-enum-users.nse
@@ -308,12 +336,16 @@ usr/share/nmap/scripts/drda-brute.nse
 usr/share/nmap/scripts/drda-info.nse
 usr/share/nmap/scripts/duplicates.nse
 usr/share/nmap/scripts/eap-info.nse
+usr/share/nmap/scripts/enip-info.nse
 usr/share/nmap/scripts/epmd-info.nse
 usr/share/nmap/scripts/eppc-enum-processes.nse
+usr/share/nmap/scripts/fcrdns.nse
 usr/share/nmap/scripts/finger.nse
+usr/share/nmap/scripts/fingerprint-strings.nse
 usr/share/nmap/scripts/firewalk.nse
 usr/share/nmap/scripts/firewall-bypass.nse
 usr/share/nmap/scripts/flume-master-info.nse
+usr/share/nmap/scripts/fox-info.nse
 usr/share/nmap/scripts/freelancer-info.nse
 usr/share/nmap/scripts/ftp-anon.nse
 usr/share/nmap/scripts/ftp-bounce.nse
@@ -335,14 +367,18 @@ usr/share/nmap/scripts/hadoop-tasktracker-info.nse
 usr/share/nmap/scripts/hbase-master-info.nse
 usr/share/nmap/scripts/hbase-region-info.nse
 usr/share/nmap/scripts/hddtemp-info.nse
+usr/share/nmap/scripts/hnap-info.nse
 usr/share/nmap/scripts/hostmap-bfk.nse
 usr/share/nmap/scripts/hostmap-ip2hosts.nse
 usr/share/nmap/scripts/hostmap-robtex.nse
 usr/share/nmap/scripts/http-adobe-coldfusion-apsa1301.nse
 usr/share/nmap/scripts/http-affiliate-id.nse
 usr/share/nmap/scripts/http-apache-negotiation.nse
+usr/share/nmap/scripts/http-apache-server-status.nse
+usr/share/nmap/scripts/http-aspnet-debug.nse
 usr/share/nmap/scripts/http-auth-finder.nse
 usr/share/nmap/scripts/http-auth.nse
+usr/share/nmap/scripts/http-avaya-ipoffice-users.nse
 usr/share/nmap/scripts/http-awstatstotals-exec.nse
 usr/share/nmap/scripts/http-axis2-dir-traversal.nse
 usr/share/nmap/scripts/http-backup-finder.nse
@@ -350,10 +386,12 @@ usr/share/nmap/scripts/http-barracuda-dir-traversal.nse
 usr/share/nmap/scripts/http-brute.nse
 usr/share/nmap/scripts/http-cakephp-version.nse
 usr/share/nmap/scripts/http-chrono.nse
+usr/share/nmap/scripts/http-cisco-anyconnect.nse
 usr/share/nmap/scripts/http-coldfusion-subzero.nse
 usr/share/nmap/scripts/http-comments-displayer.nse
 usr/share/nmap/scripts/http-config-backup.nse
 usr/share/nmap/scripts/http-cors.nse
+usr/share/nmap/scripts/http-cross-domain-policy.nse
 usr/share/nmap/scripts/http-csrf.nse
 usr/share/nmap/scripts/http-date.nse
 usr/share/nmap/scripts/http-default-accounts.nse
@@ -362,13 +400,13 @@ usr/share/nmap/scripts/http-dlink-backdoor.nse
 usr/share/nmap/scripts/http-dombased-xss.nse
 usr/share/nmap/scripts/http-domino-enum-passwords.nse
 usr/share/nmap/scripts/http-drupal-enum-users.nse
-usr/share/nmap/scripts/http-drupal-modules.nse
-usr/share/nmap/scripts/http-email-harvest.nse
+usr/share/nmap/scripts/http-drupal-enum.nse
 usr/share/nmap/scripts/http-enum.nse
 usr/share/nmap/scripts/http-errors.nse
 usr/share/nmap/scripts/http-exif-spider.nse
 usr/share/nmap/scripts/http-favicon.nse
 usr/share/nmap/scripts/http-feed.nse
+usr/share/nmap/scripts/http-fetch.nse
 usr/share/nmap/scripts/http-fileupload-exploiter.nse
 usr/share/nmap/scripts/http-form-brute.nse
 usr/share/nmap/scripts/http-form-fuzzer.nse
@@ -384,10 +422,13 @@ usr/share/nmap/scripts/http-icloud-findmyiphone.nse
 usr/share/nmap/scripts/http-icloud-sendmsg.nse
 usr/share/nmap/scripts/http-iis-short-name-brute.nse
 usr/share/nmap/scripts/http-iis-webdav-vuln.nse
+usr/share/nmap/scripts/http-internal-ip-disclosure.nse
 usr/share/nmap/scripts/http-joomla-brute.nse
 usr/share/nmap/scripts/http-litespeed-sourcecode-download.nse
+usr/share/nmap/scripts/http-ls.nse
 usr/share/nmap/scripts/http-majordomo2-dir-traversal.nse
 usr/share/nmap/scripts/http-malware-host.nse
+usr/share/nmap/scripts/http-mcmp.nse
 usr/share/nmap/scripts/http-method-tamper.nse
 usr/share/nmap/scripts/http-methods.nse
 usr/share/nmap/scripts/http-mobileversion-checker.nse
@@ -407,11 +448,14 @@ usr/share/nmap/scripts/http-robots.txt.nse
 usr/share/nmap/scripts/http-robtex-reverse-ip.nse
 usr/share/nmap/scripts/http-robtex-shared-ns.nse
 usr/share/nmap/scripts/http-server-header.nse
+usr/share/nmap/scripts/http-shellshock.nse
 usr/share/nmap/scripts/http-sitemap-generator.nse
 usr/share/nmap/scripts/http-slowloris-check.nse
 usr/share/nmap/scripts/http-slowloris.nse
 usr/share/nmap/scripts/http-sql-injection.nse
 usr/share/nmap/scripts/http-stored-xss.nse
+usr/share/nmap/scripts/http-svn-enum.nse
+usr/share/nmap/scripts/http-svn-info.nse
 usr/share/nmap/scripts/http-title.nse
 usr/share/nmap/scripts/http-tplink-dir-traversal.nse
 usr/share/nmap/scripts/http-trace.nse
@@ -423,6 +467,7 @@ usr/share/nmap/scripts/http-vhosts.nse
 usr/share/nmap/scripts/http-virustotal.nse
 usr/share/nmap/scripts/http-vlcstreamer-ls.nse
 usr/share/nmap/scripts/http-vmware-path-vuln.nse
+usr/share/nmap/scripts/http-vuln-cve2006-3392.nse
 usr/share/nmap/scripts/http-vuln-cve2009-3960.nse
 usr/share/nmap/scripts/http-vuln-cve2010-0738.nse
 usr/share/nmap/scripts/http-vuln-cve2010-2861.nse
@@ -430,12 +475,24 @@ usr/share/nmap/scripts/http-vuln-cve2011-3192.nse
 usr/share/nmap/scripts/http-vuln-cve2011-3368.nse
 usr/share/nmap/scripts/http-vuln-cve2012-1823.nse
 usr/share/nmap/scripts/http-vuln-cve2013-0156.nse
-usr/share/nmap/scripts/http-vuln-zimbra-lfi.nse
+usr/share/nmap/scripts/http-vuln-cve2013-6786.nse
+usr/share/nmap/scripts/http-vuln-cve2013-7091.nse
+usr/share/nmap/scripts/http-vuln-cve2014-2126.nse
+usr/share/nmap/scripts/http-vuln-cve2014-2127.nse
+usr/share/nmap/scripts/http-vuln-cve2014-2128.nse
+usr/share/nmap/scripts/http-vuln-cve2014-2129.nse
+usr/share/nmap/scripts/http-vuln-cve2014-3704.nse
+usr/share/nmap/scripts/http-vuln-cve2014-8877.nse
+usr/share/nmap/scripts/http-vuln-cve2015-1427.nse
+usr/share/nmap/scripts/http-vuln-cve2015-1635.nse
+usr/share/nmap/scripts/http-vuln-misfortune-cookie.nse
+usr/share/nmap/scripts/http-vuln-wnr1000-creds.nse
 usr/share/nmap/scripts/http-waf-detect.nse
 usr/share/nmap/scripts/http-waf-fingerprint.nse
+usr/share/nmap/scripts/http-webdav-scan.nse
 usr/share/nmap/scripts/http-wordpress-brute.nse
 usr/share/nmap/scripts/http-wordpress-enum.nse
-usr/share/nmap/scripts/http-wordpress-plugins.nse
+usr/share/nmap/scripts/http-wordpress-users.nse
 usr/share/nmap/scripts/http-xssed.nse
 usr/share/nmap/scripts/iax2-brute.nse
 usr/share/nmap/scripts/iax2-version.nse
@@ -443,15 +500,23 @@ usr/share/nmap/scripts/icap-info.nse
 usr/share/nmap/scripts/ike-version.nse
 usr/share/nmap/scripts/imap-brute.nse
 usr/share/nmap/scripts/imap-capabilities.nse
+usr/share/nmap/scripts/imap-ntlm-info.nse
 usr/share/nmap/scripts/informix-brute.nse
 usr/share/nmap/scripts/informix-query.nse
 usr/share/nmap/scripts/informix-tables.nse
 usr/share/nmap/scripts/ip-forwarding.nse
-usr/share/nmap/scripts/ip-geolocation-geobytes.nse
 usr/share/nmap/scripts/ip-geolocation-geoplugin.nse
 usr/share/nmap/scripts/ip-geolocation-ipinfodb.nse
+usr/share/nmap/scripts/ip-geolocation-map-bing.nse
+usr/share/nmap/scripts/ip-geolocation-map-google.nse
+usr/share/nmap/scripts/ip-geolocation-map-kml.nse
 usr/share/nmap/scripts/ip-geolocation-maxmind.nse
+usr/share/nmap/scripts/ip-https-discover.nse
 usr/share/nmap/scripts/ipidseq.nse
+usr/share/nmap/scripts/ipmi-brute.nse
+usr/share/nmap/scripts/ipmi-cipher-zero.nse
+usr/share/nmap/scripts/ipmi-version.nse
+usr/share/nmap/scripts/ipv6-multicast-mld-list.nse
 usr/share/nmap/scripts/ipv6-node-info.nse
 usr/share/nmap/scripts/ipv6-ra-flood.nse
 usr/share/nmap/scripts/irc-botnet-channels.nse
@@ -466,6 +531,8 @@ usr/share/nmap/scripts/jdwp-exec.nse
 usr/share/nmap/scripts/jdwp-info.nse
 usr/share/nmap/scripts/jdwp-inject.nse
 usr/share/nmap/scripts/jdwp-version.nse
+usr/share/nmap/scripts/knx-gateway-discover.nse
+usr/share/nmap/scripts/knx-gateway-info.nse
 usr/share/nmap/scripts/krb5-enum-users.nse
 usr/share/nmap/scripts/ldap-brute.nse
 usr/share/nmap/scripts/ldap-novell-getpass.nse
@@ -482,12 +549,14 @@ usr/share/nmap/scripts/memcached-info.nse
 usr/share/nmap/scripts/metasploit-info.nse
 usr/share/nmap/scripts/metasploit-msgrpc-brute.nse
 usr/share/nmap/scripts/metasploit-xmlrpc-brute.nse
+usr/share/nmap/scripts/mikrotik-routeros-brute.nse
 usr/share/nmap/scripts/mmouse-brute.nse
 usr/share/nmap/scripts/mmouse-exec.nse
 usr/share/nmap/scripts/modbus-discover.nse
 usr/share/nmap/scripts/mongodb-brute.nse
 usr/share/nmap/scripts/mongodb-databases.nse
 usr/share/nmap/scripts/mongodb-info.nse
+usr/share/nmap/scripts/mqtt-subscribe.nse
 usr/share/nmap/scripts/mrinfo.nse
 usr/share/nmap/scripts/ms-sql-brute.nse
 usr/share/nmap/scripts/ms-sql-config.nse
@@ -496,6 +565,7 @@ usr/share/nmap/scripts/ms-sql-dump-hashes.nse
 usr/share/nmap/scripts/ms-sql-empty-password.nse
 usr/share/nmap/scripts/ms-sql-hasdbaccess.nse
 usr/share/nmap/scripts/ms-sql-info.nse
+usr/share/nmap/scripts/ms-sql-ntlm-info.nse
 usr/share/nmap/scripts/ms-sql-query.nse
 usr/share/nmap/scripts/ms-sql-tables.nse
 usr/share/nmap/scripts/ms-sql-xp-cmdshell.nse
@@ -530,26 +600,33 @@ usr/share/nmap/scripts/nexpose-brute.nse
 usr/share/nmap/scripts/nfs-ls.nse
 usr/share/nmap/scripts/nfs-showmount.nse
 usr/share/nmap/scripts/nfs-statfs.nse
+usr/share/nmap/scripts/nje-node-brute.nse
+usr/share/nmap/scripts/nje-pass-brute.nse
+usr/share/nmap/scripts/nntp-ntlm-info.nse
 usr/share/nmap/scripts/nping-brute.nse
 usr/share/nmap/scripts/nrpe-enum.nse
 usr/share/nmap/scripts/ntp-info.nse
 usr/share/nmap/scripts/ntp-monlist.nse
 usr/share/nmap/scripts/omp2-brute.nse
 usr/share/nmap/scripts/omp2-enum-targets.nse
+usr/share/nmap/scripts/omron-info.nse
 usr/share/nmap/scripts/openlookup-info.nse
 usr/share/nmap/scripts/openvas-otp-brute.nse
 usr/share/nmap/scripts/oracle-brute-stealth.nse
 usr/share/nmap/scripts/oracle-brute.nse
 usr/share/nmap/scripts/oracle-enum-users.nse
 usr/share/nmap/scripts/oracle-sid-brute.nse
+usr/share/nmap/scripts/oracle-tns-version.nse
 usr/share/nmap/scripts/ovs-agent-version.nse
 usr/share/nmap/scripts/p2p-conficker.nse
 usr/share/nmap/scripts/path-mtu.nse
 usr/share/nmap/scripts/pcanywhere-brute.nse
+usr/share/nmap/scripts/pcworx-info.nse
 usr/share/nmap/scripts/pgsql-brute.nse
 usr/share/nmap/scripts/pjl-ready-message.nse
 usr/share/nmap/scripts/pop3-brute.nse
 usr/share/nmap/scripts/pop3-capabilities.nse
+usr/share/nmap/scripts/pop3-ntlm-info.nse
 usr/share/nmap/scripts/pptp-version.nse
 usr/share/nmap/scripts/qconn-exec.nse
 usr/share/nmap/scripts/qscan.nse
@@ -577,16 +654,18 @@ usr/share/nmap/scripts/rsync-brute.nse
 usr/share/nmap/scripts/rsync-list-modules.nse
 usr/share/nmap/scripts/rtsp-methods.nse
 usr/share/nmap/scripts/rtsp-url-brute.nse
+usr/share/nmap/scripts/rusers.nse
+usr/share/nmap/scripts/s7-info.nse
 usr/share/nmap/scripts/samba-vuln-cve-2012-1182.nse
 usr/share/nmap/scripts/script.db
 usr/share/nmap/scripts/servicetags.nse
+usr/share/nmap/scripts/shodan-api.nse
 usr/share/nmap/scripts/sip-brute.nse
 usr/share/nmap/scripts/sip-call-spoof.nse
 usr/share/nmap/scripts/sip-enum-users.nse
 usr/share/nmap/scripts/sip-methods.nse
 usr/share/nmap/scripts/skypev2-version.nse
 usr/share/nmap/scripts/smb-brute.nse
-usr/share/nmap/scripts/smb-check-vulns.nse
 usr/share/nmap/scripts/smb-enum-domains.nse
 usr/share/nmap/scripts/smb-enum-groups.nse
 usr/share/nmap/scripts/smb-enum-processes.nse
@@ -602,12 +681,19 @@ usr/share/nmap/scripts/smb-psexec.nse
 usr/share/nmap/scripts/smb-security-mode.nse
 usr/share/nmap/scripts/smb-server-stats.nse
 usr/share/nmap/scripts/smb-system-info.nse
+usr/share/nmap/scripts/smb-vuln-conficker.nse
+usr/share/nmap/scripts/smb-vuln-cve2009-3103.nse
+usr/share/nmap/scripts/smb-vuln-ms06-025.nse
+usr/share/nmap/scripts/smb-vuln-ms07-029.nse
+usr/share/nmap/scripts/smb-vuln-ms08-067.nse
 usr/share/nmap/scripts/smb-vuln-ms10-054.nse
 usr/share/nmap/scripts/smb-vuln-ms10-061.nse
+usr/share/nmap/scripts/smb-vuln-regsvc-dos.nse
 usr/share/nmap/scripts/smbv2-enabled.nse
 usr/share/nmap/scripts/smtp-brute.nse
 usr/share/nmap/scripts/smtp-commands.nse
 usr/share/nmap/scripts/smtp-enum-users.nse
+usr/share/nmap/scripts/smtp-ntlm-info.nse
 usr/share/nmap/scripts/smtp-open-relay.nse
 usr/share/nmap/scripts/smtp-strangeport.nse
 usr/share/nmap/scripts/smtp-vuln-cve2010-4344.nse
@@ -616,6 +702,7 @@ usr/share/nmap/scripts/smtp-vuln-cve2011-1764.nse
 usr/share/nmap/scripts/sniffer-detect.nse
 usr/share/nmap/scripts/snmp-brute.nse
 usr/share/nmap/scripts/snmp-hh3c-logins.nse
+usr/share/nmap/scripts/snmp-info.nse
 usr/share/nmap/scripts/snmp-interfaces.nse
 usr/share/nmap/scripts/snmp-ios-config.nse
 usr/share/nmap/scripts/snmp-netstat.nse
@@ -631,31 +718,44 @@ usr/share/nmap/scripts/socks-open-proxy.nse
 usr/share/nmap/scripts/ssh-hostkey.nse
 usr/share/nmap/scripts/ssh2-enum-algos.nse
 usr/share/nmap/scripts/sshv1.nse
+usr/share/nmap/scripts/ssl-ccs-injection.nse
+usr/share/nmap/scripts/ssl-cert-intaddr.nse
 usr/share/nmap/scripts/ssl-cert.nse
 usr/share/nmap/scripts/ssl-date.nse
+usr/share/nmap/scripts/ssl-dh-params.nse
 usr/share/nmap/scripts/ssl-enum-ciphers.nse
-usr/share/nmap/scripts/ssl-google-cert-catalog.nse
 usr/share/nmap/scripts/ssl-heartbleed.nse
 usr/share/nmap/scripts/ssl-known-key.nse
+usr/share/nmap/scripts/ssl-poodle.nse
+usr/share/nmap/scripts/sslv2-drown.nse
 usr/share/nmap/scripts/sslv2.nse
 usr/share/nmap/scripts/sstp-discover.nse
 usr/share/nmap/scripts/stun-info.nse
 usr/share/nmap/scripts/stun-version.nse
 usr/share/nmap/scripts/stuxnet-detect.nse
+usr/share/nmap/scripts/supermicro-ipmi-conf.nse
 usr/share/nmap/scripts/svn-brute.nse
 usr/share/nmap/scripts/targets-asn.nse
+usr/share/nmap/scripts/targets-ipv6-map4to6.nse
 usr/share/nmap/scripts/targets-ipv6-multicast-echo.nse
 usr/share/nmap/scripts/targets-ipv6-multicast-invalid-dst.nse
 usr/share/nmap/scripts/targets-ipv6-multicast-mld.nse
 usr/share/nmap/scripts/targets-ipv6-multicast-slaac.nse
+usr/share/nmap/scripts/targets-ipv6-wordlist.nse
 usr/share/nmap/scripts/targets-sniffer.nse
 usr/share/nmap/scripts/targets-traceroute.nse
+usr/share/nmap/scripts/targets-xml.nse
 usr/share/nmap/scripts/teamspeak2-version.nse
 usr/share/nmap/scripts/telnet-brute.nse
 usr/share/nmap/scripts/telnet-encryption.nse
+usr/share/nmap/scripts/telnet-ntlm-info.nse
 usr/share/nmap/scripts/tftp-enum.nse
 usr/share/nmap/scripts/tls-nextprotoneg.nse
+usr/share/nmap/scripts/tn3270-screen.nse
+usr/share/nmap/scripts/tor-consensus-checker.nse
 usr/share/nmap/scripts/traceroute-geolocation.nse
+usr/share/nmap/scripts/tso-brute.nse
+usr/share/nmap/scripts/tso-enum.nse
 usr/share/nmap/scripts/unittest.nse
 usr/share/nmap/scripts/unusual-port.nse
 usr/share/nmap/scripts/upnp-info.nse
@@ -665,7 +765,9 @@ usr/share/nmap/scripts/versant-info.nse
 usr/share/nmap/scripts/vmauthd-brute.nse
 usr/share/nmap/scripts/vnc-brute.nse
 usr/share/nmap/scripts/vnc-info.nse
+usr/share/nmap/scripts/vnc-title.nse
 usr/share/nmap/scripts/voldemort-info.nse
+usr/share/nmap/scripts/vtam-enum.nse
 usr/share/nmap/scripts/vuze-dht-info.nse
 usr/share/nmap/scripts/wdb-version.nse
 usr/share/nmap/scripts/weblogic-t3-info.nse
@@ -674,5 +776,6 @@ usr/share/nmap/scripts/whois-ip.nse
 usr/share/nmap/scripts/wsdd-discover.nse
 usr/share/nmap/scripts/x11-access.nse
 usr/share/nmap/scripts/xdmcp-discover.nse
+usr/share/nmap/scripts/xmlrpc-methods.nse
 usr/share/nmap/scripts/xmpp-brute.nse
 usr/share/nmap/scripts/xmpp-info.nse
index dfc5ab2f3c50f54cdb1f264c624b1dc09bbd775d..7cb2ade18b67de535a0c02fbd06b1a85061b37c1 100644 (file)
@@ -2765,9 +2765,9 @@ usr/lib/python3.6/lib-dynload/xxlimited.cpython-36m-x86_64-linux-gnu.so
 usr/lib/python3.6/lib-dynload/zlib.cpython-36m-x86_64-linux-gnu.so
 #usr/lib/python3.6/lib2to3
 usr/lib/python3.6/lib2to3/Grammar.txt
-usr/lib/python3.6/lib2to3/Grammar3.6.0.final.0.pickle
+usr/lib/python3.6/lib2to3/Grammar3.6.1.final.0.pickle
 usr/lib/python3.6/lib2to3/PatternGrammar.txt
-usr/lib/python3.6/lib2to3/PatternGrammar3.6.0.final.0.pickle
+usr/lib/python3.6/lib2to3/PatternGrammar3.6.1.final.0.pickle
 usr/lib/python3.6/lib2to3/__init__.py
 usr/lib/python3.6/lib2to3/__main__.py
 #usr/lib/python3.6/lib2to3/__pycache__
@@ -3297,8 +3297,7 @@ usr/lib/python3.6/shelve.py
 usr/lib/python3.6/shlex.py
 usr/lib/python3.6/shutil.py
 usr/lib/python3.6/signal.py
-usr/lib/python3.6/site-packages
-usr/lib/python3.6/site-packages/README
+#usr/lib/python3.6/site-packages
 usr/lib/python3.6/site-packages/README.txt
 #usr/lib/python3.6/site-packages/__pycache__
 usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc
@@ -4112,6 +4111,12 @@ usr/lib/python3.6/test
 #usr/lib/python3.6/test/__pycache__/__main__.cpython-36.opt-1.pyc
 #usr/lib/python3.6/test/__pycache__/__main__.cpython-36.opt-2.pyc
 #usr/lib/python3.6/test/__pycache__/__main__.cpython-36.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.opt-1.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.opt-2.pyc
+#usr/lib/python3.6/test/__pycache__/mod_generics_cache.cpython-36.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.opt-1.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.opt-2.pyc
+#usr/lib/python3.6/test/__pycache__/mp_preload.cpython-36.pyc
 #usr/lib/python3.6/test/__pycache__/_test_multiprocessing.cpython-36.opt-1.pyc
 #usr/lib/python3.6/test/__pycache__/_test_multiprocessing.cpython-36.opt-2.pyc
 #usr/lib/python3.6/test/__pycache__/_test_multiprocessing.cpython-36.pyc
@@ -7447,7 +7452,6 @@ usr/lib/python3.6/venv/__pycache__/__main__.cpython-36.opt-2.pyc
 usr/lib/python3.6/venv/__pycache__/__main__.cpython-36.pyc
 usr/lib/python3.6/venv/scripts
 usr/lib/python3.6/venv/scripts/posix
-usr/lib/python3.6/venv/scripts/posix/activate
 usr/lib/python3.6/venv/scripts/posix/activate.csh
 usr/lib/python3.6/venv/scripts/posix/activate.fish
 usr/lib/python3.6/warnings.py
@@ -7597,3 +7601,7 @@ usr/lib/python3.6/zipapp.py
 usr/lib/python3.6/zipfile.py
 #usr/share/man/man1/python3.1
 #usr/share/man/man1/python3.6.1
+usr/lib/python3.6/test/mod_generics_cache.py
+usr/lib/python3.6/test/mp_preload.py
+usr/lib/python3.6/venv/scripts/common
+usr/lib/python3.6/venv/scripts/common/activate
diff --git a/config/rootfiles/packages/x86_64/python3-libvirt b/config/rootfiles/packages/x86_64/python3-libvirt
new file mode 100644 (file)
index 0000000..f20ef09
--- /dev/null
@@ -0,0 +1,10 @@
+usr/lib/python3.6/site-packages/__pycache__/libvirt.cpython-36.pyc
+usr/lib/python3.6/site-packages/__pycache__/libvirt_lxc.cpython-36.pyc
+usr/lib/python3.6/site-packages/__pycache__/libvirt_qemu.cpython-36.pyc
+usr/lib/python3.6/site-packages/libvirt.py
+usr/lib/python3.6/site-packages/libvirt_lxc.py
+#usr/lib/python3.6/site-packages/libvirt_python-3.1.0-py3.6.egg-info
+usr/lib/python3.6/site-packages/libvirt_qemu.py
+usr/lib/python3.6/site-packages/libvirtmod.cpython-36m-x86_64-linux-gnu.so
+usr/lib/python3.6/site-packages/libvirtmod_lxc.cpython-36m-x86_64-linux-gnu.so
+usr/lib/python3.6/site-packages/libvirtmod_qemu.cpython-36m-x86_64-linux-gnu.so
index 48d7f6a1c156aa60afbfdffe2e03d35fb50ead01..b9f7747581f0f00a7a9d15de50191349c9f70c91 100644 (file)
@@ -205,8 +205,6 @@ WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
-WARNING: translation string unused: firewall graphs
-WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
index f2b6eb7b4aa68fde7a0d14594b5bd96d842fba85..f2f6ab7d3d90154afd2e4e6fe56f02ed0b832eff 100644 (file)
@@ -228,8 +228,6 @@ WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
-WARNING: translation string unused: firewall graphs
-WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
index 3dec2dbb360e850b4e72b4124ff92c6be2af0c39..d34d63f59a2d71925a31239a6f550a75a4153cb9 100644 (file)
@@ -766,6 +766,12 @@ WARNING: untranslated string: fireinfo why descr2
 WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: firewall logs country
 WARNING: untranslated string: firewall rules
 WARNING: untranslated string: first
@@ -1138,11 +1144,14 @@ WARNING: untranslated string: unblock
 WARNING: untranslated string: unblock all
 WARNING: untranslated string: uncheck all
 WARNING: untranslated string: uplink
+WARNING: untranslated string: uplink bit rate
 WARNING: untranslated string: upload dh key
 WARNING: untranslated string: uptime load average
 WARNING: untranslated string: urlfilter redirect template
 WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn force mobike
 WARNING: untranslated string: vpn keyexchange
 WARNING: untranslated string: vpn on-demand
@@ -1152,31 +1161,47 @@ WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistic n2n
 WARNING: untranslated string: vpn statistic rw
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
 WARNING: untranslated string: wlan client
 WARNING: untranslated string: wlan client advanced settings
 WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
 WARNING: untranslated string: wlan client bssid
 WARNING: untranslated string: wlan client ccmp
 WARNING: untranslated string: wlan client configuration
 WARNING: untranslated string: wlan client disconnected
 WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
 WARNING: untranslated string: wlan client edit entry
 WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption eap
 WARNING: untranslated string: wlan client encryption none
 WARNING: untranslated string: wlan client encryption wep
 WARNING: untranslated string: wlan client encryption wpa
 WARNING: untranslated string: wlan client encryption wpa2
 WARNING: untranslated string: wlan client group cipher
 WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client identity
 WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client method
 WARNING: untranslated string: wlan client new entry
 WARNING: untranslated string: wlan client new network
 WARNING: untranslated string: wlan client pairwise cipher
 WARNING: untranslated string: wlan client pairwise key algorithm
 WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client password
 WARNING: untranslated string: wlan client psk
 WARNING: untranslated string: wlan client ssid
 WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
 WARNING: untranslated string: wlan client wpa mode
 WARNING: untranslated string: wlan client wpa mode all
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp
index fa5387c8b1f46a65675b1a16f9cf8893766eeba3..4a916761b510e809326b013923a3f4f57750683c 100644 (file)
@@ -776,6 +776,12 @@ WARNING: untranslated string: fireinfo why descr2
 WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: firewall logs country
 WARNING: untranslated string: firewall rules
 WARNING: untranslated string: first
@@ -1152,6 +1158,7 @@ WARNING: untranslated string: unblock
 WARNING: untranslated string: unblock all
 WARNING: untranslated string: uncheck all
 WARNING: untranslated string: uplink
+WARNING: untranslated string: uplink bit rate
 WARNING: untranslated string: upload dh key
 WARNING: untranslated string: upload new ruleset
 WARNING: untranslated string: uptime load average
@@ -1160,6 +1167,8 @@ WARNING: untranslated string: urlfilter mode block
 WARNING: untranslated string: urlfilter redirect template
 WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn force mobike
 WARNING: untranslated string: vpn keyexchange
 WARNING: untranslated string: vpn on-demand
@@ -1169,31 +1178,47 @@ WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistic n2n
 WARNING: untranslated string: vpn statistic rw
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
 WARNING: untranslated string: wlan client
 WARNING: untranslated string: wlan client advanced settings
 WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
 WARNING: untranslated string: wlan client bssid
 WARNING: untranslated string: wlan client ccmp
 WARNING: untranslated string: wlan client configuration
 WARNING: untranslated string: wlan client disconnected
 WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
 WARNING: untranslated string: wlan client edit entry
 WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption eap
 WARNING: untranslated string: wlan client encryption none
 WARNING: untranslated string: wlan client encryption wep
 WARNING: untranslated string: wlan client encryption wpa
 WARNING: untranslated string: wlan client encryption wpa2
 WARNING: untranslated string: wlan client group cipher
 WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client identity
 WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client method
 WARNING: untranslated string: wlan client new entry
 WARNING: untranslated string: wlan client new network
 WARNING: untranslated string: wlan client pairwise cipher
 WARNING: untranslated string: wlan client pairwise key algorithm
 WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client password
 WARNING: untranslated string: wlan client psk
 WARNING: untranslated string: wlan client ssid
 WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
 WARNING: untranslated string: wlan client wpa mode
 WARNING: untranslated string: wlan client wpa mode all
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp
index 09338a28abc7dbb17a3ec59273a3171a90f995cc..0baf400861de33058849102cc8ab8172139ea360 100644 (file)
@@ -731,6 +731,12 @@ WARNING: untranslated string: email settings
 WARNING: untranslated string: email testmail
 WARNING: untranslated string: email tls
 WARNING: untranslated string: email usemail
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: fwdfw err concon
 WARNING: untranslated string: fwdfw err ratecon
 WARNING: untranslated string: fwdfw limitconcon
@@ -819,6 +825,9 @@ WARNING: untranslated string: search
 WARNING: untranslated string: unblock
 WARNING: untranslated string: unblock all
 WARNING: untranslated string: uncheck all
+WARNING: untranslated string: uplink bit rate
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn force mobike
 WARNING: untranslated string: vpn on-demand
 WARNING: untranslated string: vpn start action
@@ -827,3 +836,19 @@ WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistic n2n
 WARNING: untranslated string: vpn statistic rw
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
+WARNING: untranslated string: wlan client encryption eap
+WARNING: untranslated string: wlan client identity
+WARNING: untranslated string: wlan client method
+WARNING: untranslated string: wlan client password
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
index 3390ef368df4e8ac4df511323fa5817042d3d89f..4f64b5d68c9811e5dfc47142527932495b81e401 100644 (file)
@@ -743,6 +743,12 @@ WARNING: untranslated string: email settings
 WARNING: untranslated string: email testmail
 WARNING: untranslated string: email tls
 WARNING: untranslated string: email usemail
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: firewall logs country
 WARNING: untranslated string: fwdfw err concon
 WARNING: untranslated string: fwdfw err ratecon
@@ -865,8 +871,11 @@ WARNING: untranslated string: ta key
 WARNING: untranslated string: unblock
 WARNING: untranslated string: unblock all
 WARNING: untranslated string: uncheck all
+WARNING: untranslated string: uplink bit rate
 WARNING: untranslated string: upload dh key
 WARNING: untranslated string: vendor
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn force mobike
 WARNING: untranslated string: vpn on-demand
 WARNING: untranslated string: vpn start action
@@ -875,3 +884,19 @@ WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistic n2n
 WARNING: untranslated string: vpn statistic rw
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
+WARNING: untranslated string: wlan client encryption eap
+WARNING: untranslated string: wlan client identity
+WARNING: untranslated string: wlan client method
+WARNING: untranslated string: wlan client password
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
index 3dec2dbb360e850b4e72b4124ff92c6be2af0c39..d34d63f59a2d71925a31239a6f550a75a4153cb9 100644 (file)
@@ -766,6 +766,12 @@ WARNING: untranslated string: fireinfo why descr2
 WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: firewall logs country
 WARNING: untranslated string: firewall rules
 WARNING: untranslated string: first
@@ -1138,11 +1144,14 @@ WARNING: untranslated string: unblock
 WARNING: untranslated string: unblock all
 WARNING: untranslated string: uncheck all
 WARNING: untranslated string: uplink
+WARNING: untranslated string: uplink bit rate
 WARNING: untranslated string: upload dh key
 WARNING: untranslated string: uptime load average
 WARNING: untranslated string: urlfilter redirect template
 WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn force mobike
 WARNING: untranslated string: vpn keyexchange
 WARNING: untranslated string: vpn on-demand
@@ -1152,31 +1161,47 @@ WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistic n2n
 WARNING: untranslated string: vpn statistic rw
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
 WARNING: untranslated string: wlan client
 WARNING: untranslated string: wlan client advanced settings
 WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
 WARNING: untranslated string: wlan client bssid
 WARNING: untranslated string: wlan client ccmp
 WARNING: untranslated string: wlan client configuration
 WARNING: untranslated string: wlan client disconnected
 WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
 WARNING: untranslated string: wlan client edit entry
 WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption eap
 WARNING: untranslated string: wlan client encryption none
 WARNING: untranslated string: wlan client encryption wep
 WARNING: untranslated string: wlan client encryption wpa
 WARNING: untranslated string: wlan client encryption wpa2
 WARNING: untranslated string: wlan client group cipher
 WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client identity
 WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client method
 WARNING: untranslated string: wlan client new entry
 WARNING: untranslated string: wlan client new network
 WARNING: untranslated string: wlan client pairwise cipher
 WARNING: untranslated string: wlan client pairwise key algorithm
 WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client password
 WARNING: untranslated string: wlan client psk
 WARNING: untranslated string: wlan client ssid
 WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
 WARNING: untranslated string: wlan client wpa mode
 WARNING: untranslated string: wlan client wpa mode all
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp
index 303e19b9593cfe1e170e24d2b4d92700566ac84c..d07c421eb2547fdbb6315f98dfe5755f68722f40 100644 (file)
@@ -760,6 +760,12 @@ WARNING: untranslated string: extrahd maybe the device is in use
 WARNING: untranslated string: extrahd to
 WARNING: untranslated string: extrahd to root
 WARNING: untranslated string: extrahd you cant mount
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: firewall logs country
 WARNING: untranslated string: firewall rules
 WARNING: untranslated string: first
@@ -1133,11 +1139,14 @@ WARNING: untranslated string: unblock
 WARNING: untranslated string: unblock all
 WARNING: untranslated string: uncheck all
 WARNING: untranslated string: uplink
+WARNING: untranslated string: uplink bit rate
 WARNING: untranslated string: upload dh key
 WARNING: untranslated string: uptime load average
 WARNING: untranslated string: urlfilter redirect template
 WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn force mobike
 WARNING: untranslated string: vpn keyexchange
 WARNING: untranslated string: vpn on-demand
@@ -1147,31 +1156,47 @@ WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistic n2n
 WARNING: untranslated string: vpn statistic rw
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
 WARNING: untranslated string: wlan client
 WARNING: untranslated string: wlan client advanced settings
 WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
 WARNING: untranslated string: wlan client bssid
 WARNING: untranslated string: wlan client ccmp
 WARNING: untranslated string: wlan client configuration
 WARNING: untranslated string: wlan client disconnected
 WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
 WARNING: untranslated string: wlan client edit entry
 WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption eap
 WARNING: untranslated string: wlan client encryption none
 WARNING: untranslated string: wlan client encryption wep
 WARNING: untranslated string: wlan client encryption wpa
 WARNING: untranslated string: wlan client encryption wpa2
 WARNING: untranslated string: wlan client group cipher
 WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client identity
 WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client method
 WARNING: untranslated string: wlan client new entry
 WARNING: untranslated string: wlan client new network
 WARNING: untranslated string: wlan client pairwise cipher
 WARNING: untranslated string: wlan client pairwise key algorithm
 WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client password
 WARNING: untranslated string: wlan client psk
 WARNING: untranslated string: wlan client ssid
 WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
 WARNING: untranslated string: wlan client wpa mode
 WARNING: untranslated string: wlan client wpa mode all
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp
index af17e3756c8035d6df572535fd9cc4770b7ee1bf..034dd2a7bd4e5096396467a5b5e8968be59a3745 100644 (file)
@@ -707,6 +707,12 @@ WARNING: untranslated string: Scan for Songs
 WARNING: untranslated string: application layer gateways
 WARNING: untranslated string: bytes
 WARNING: untranslated string: dnssec disabled warning
+WARNING: untranslated string: firewall graph country
+WARNING: untranslated string: firewall graph ip
+WARNING: untranslated string: firewall graph port
+WARNING: untranslated string: firewall log country
+WARNING: untranslated string: firewall log ip
+WARNING: untranslated string: firewall log port
 WARNING: untranslated string: fwhost cust geoipgrp
 WARNING: untranslated string: fwhost err hostip
 WARNING: untranslated string: guardian
@@ -753,8 +759,27 @@ WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
+WARNING: untranslated string: uplink bit rate
+WARNING: untranslated string: vpn broken
+WARNING: untranslated string: vpn connecting
 WARNING: untranslated string: vpn on-demand
 WARNING: untranslated string: vpn start action
 WARNING: untranslated string: vpn start action route
 WARNING: untranslated string: vpn start action start
 WARNING: untranslated string: vpn statistics n2n
+WARNING: untranslated string: vpn weak
+WARNING: untranslated string: wireless network
+WARNING: untranslated string: wlan client anonymous identity
+WARNING: untranslated string: wlan client auth auto
+WARNING: untranslated string: wlan client auth peap
+WARNING: untranslated string: wlan client auth ttls
+WARNING: untranslated string: wlan client authentication settings
+WARNING: untranslated string: wlan client eap authentication method
+WARNING: untranslated string: wlan client eap phase2 method
+WARNING: untranslated string: wlan client eap state
+WARNING: untranslated string: wlan client encryption eap
+WARNING: untranslated string: wlan client identity
+WARNING: untranslated string: wlan client method
+WARNING: untranslated string: wlan client password
+WARNING: untranslated string: wlan client tls cipher
+WARNING: untranslated string: wlan client tls version
index a6c7188a669201b83566c9ac185102cca1cb6a9e..fd372c15fb957c8b42dbc0225667d1b7145a0935 100644 (file)
 < fireinfo why enable
 < fireinfo why read more
 < fireinfo your profile id
+< firewall graph country
+< firewall graph ip
+< firewall graph port
+< firewall log country
+< firewall log ip
+< firewall log port
 < firewall logs country
 < firewall rules
 < first
 < updxlrtr sources
 < updxlrtr standard view
 < uplink
+< uplink bit rate
 < upload dh key
 < upload new ruleset
 < uptime
 < urlfilter redirect template
 < vendor
 < visit us at
+< vpn broken
+< vpn connecting
 < vpn keyexchange
 < vpn on-demand
 < vpn start action
 < vpn start action start
 < vpn statistic n2n
 < vpn statistic rw
+< vpn weak
+< wireless network
 < wlanap access point
 < wlanap channel
 < wlanap country
 < wlan client
 < wlan client advanced settings
 < wlan client and
+< wlan client anonymous identity
+< wlan client auth auto
+< wlan client authentication settings
+< wlan client auth peap
+< wlan client auth ttls
 < wlan client bssid
 < wlan client ccmp
 < wlan client configuration
 < wlan client disconnected
 < wlan client duplicate ssid
+< wlan client eap authentication method
+< wlan client eap phase2 method
+< wlan client eap state
 < wlan client edit entry
 < wlan client encryption
+< wlan client encryption eap
 < wlan client encryption none
 < wlan client encryption wep
 < wlan client encryption wpa
 < wlan client encryption wpa2
 < wlan client group cipher
 < wlan client group key algorithm
+< wlan client identity
 < wlan client invalid key length
+< wlan client method
 < wlan client new entry
 < wlan client new network
 < wlan client pairwise cipher
 < wlan client pairwise key algorithm
 < wlan client pairwise key group key
+< wlan client password
 < wlan client psk
 < wlan clients
 < wlan client ssid
 < wlan client tkip
+< wlan client tls cipher
+< wlan client tls version
 < wlan client wpa mode
 < wlan client wpa mode all
 < wlan client wpa mode ccmp ccmp
 < fireinfo why enable
 < fireinfo why read more
 < fireinfo your profile id
+< firewall graph country
+< firewall graph ip
+< firewall graph port
+< firewall log country
+< firewall log ip
+< firewall log port
 < firewall logs country
 < firewall rules
 < first
 < updxlrtr sources
 < updxlrtr standard view
 < uplink
+< uplink bit rate
 < upload dh key
 < uptime
 < uptime load average
 < urlfilter redirect template
 < vendor
 < visit us at
+< vpn broken
+< vpn connecting
 < vpn keyexchange
 < vpn on-demand
 < vpn start action
 < vpn start action start
 < vpn statistic n2n
 < vpn statistic rw
+< vpn weak
+< wireless network
 < wlanap country
 < wlan client
 < wlan client advanced settings
 < wlan client and
+< wlan client anonymous identity
+< wlan client auth auto
+< wlan client authentication settings
+< wlan client auth peap
+< wlan client auth ttls
 < wlan client bssid
 < wlan client ccmp
 < wlan client configuration
 < wlan client disconnected
 < wlan client duplicate ssid
+< wlan client eap authentication method
+< wlan client eap phase2 method
+< wlan client eap state
 < wlan client edit entry
 < wlan client encryption
+< wlan client encryption eap
 < wlan client encryption none
 < wlan client encryption wep
 < wlan client encryption wpa
 < wlan client encryption wpa2
 < wlan client group cipher
 < wlan client group key algorithm
+< wlan client identity
 < wlan client invalid key length
+< wlan client method
 < wlan client new entry
 < wlan client new network
 < wlan client pairwise cipher
 < wlan client pairwise key algorithm
 < wlan client pairwise key group key
+< wlan client password
 < wlan client psk
 < wlan clients
 < wlan client ssid
 < wlan client tkip
+< wlan client tls cipher
+< wlan client tls version
 < wlan client wpa mode
 < wlan client wpa mode all
 < wlan client wpa mode ccmp ccmp
 < extrahd unable to read
 < extrahd unable to write
 < extrahd you cant mount
+< firewall graph country
+< firewall graph ip
+< firewall graph port
+< firewall log country
+< firewall log ip
+< firewall log port
 < firewall logs country
 < firewall rules
 < first
 < updxlrtr sources
 < updxlrtr standard view
 < uplink
+< uplink bit rate
 < upload dh key
 < uptime
 < uptime load average
 < urlfilter redirect template
 < vendor
 < visit us at
+< vpn broken
+< vpn connecting
 < vpn keyexchange
 < vpn on-demand
 < vpn start action
 < vpn start action start
 < vpn statistic n2n
 < vpn statistic rw
+< vpn weak
+< wireless network
 < wlanap country
 < wlan client
 < wlan client advanced settings
 < wlan client and
+< wlan client anonymous identity
+< wlan client auth auto
+< wlan client authentication settings
+< wlan client auth peap
+< wlan client auth ttls
 < wlan client bssid
 < wlan client ccmp
 < wlan client configuration
 < wlan client disconnected
 < wlan client duplicate ssid
+< wlan client eap authentication method
+< wlan client eap phase2 method
+< wlan client eap state
 < wlan client edit entry
 < wlan client encryption
+< wlan client encryption eap
 < wlan client encryption none
 < wlan client encryption wep
 < wlan client encryption wpa
 < wlan client encryption wpa2
 < wlan client group cipher
 < wlan client group key algorithm
+< wlan client identity
 < wlan client invalid key length
+< wlan client method
 < wlan client new entry
 < wlan client new network
 < wlan client pairwise cipher
 < wlan client pairwise key algorithm
 < wlan client pairwise key group key
+< wlan client password
 < wlan client psk
 < wlan clients
 < wlan client ssid
 < wlan client tkip
+< wlan client tls cipher
+< wlan client tls version
 < wlan client wpa mode
 < wlan client wpa mode all
 < wlan client wpa mode ccmp ccmp
 < extrahd unable to read
 < extrahd unable to write
 < extrahd you cant mount
+< firewall graph country
+< firewall graph ip
+< firewall graph port
+< firewall log country
+< firewall log ip
+< firewall log port
 < firewall logs country
 < firewall rules
 < first
 < updxlrtr sources
 < updxlrtr standard view
 < uplink
+< uplink bit rate
 < upload dh key
 < uptime
 < uptime load average
 < urlfilter redirect template
 < vendor
 < visit us at
+< vpn broken
+< vpn connecting
 < vpn keyexchange
 < vpn on-demand
 < vpn start action
 < vpn start action start
 < vpn statistic n2n
 < vpn statistic rw
+< vpn weak
 < week-graph
+< wireless network
 < wlanap country
 < wlan client
 < wlan client advanced settings
 < wlan client and
+< wlan client anonymous identity
+< wlan client auth auto
+< wlan client authentication settings
+< wlan client auth peap
+< wlan client auth ttls
 < wlan client bssid
 < wlan client ccmp
 < wlan client configuration
 < wlan client disconnected
 < wlan client duplicate ssid
+< wlan client eap authentication method
+< wlan client eap phase2 method
+< wlan client eap state
 < wlan client edit entry
 < wlan client encryption
+< wlan client encryption eap
 < wlan client encryption none
 < wlan client encryption wep
 < wlan client encryption wpa
 < wlan client encryption wpa2
 < wlan client group cipher
 < wlan client group key algorithm
+< wlan client identity
 < wlan client invalid key length
+< wlan client method
 < wlan client new entry
 < wlan client new network
 < wlan client pairwise cipher
 < wlan client pairwise key algorithm
 < wlan client pairwise key group key
+< wlan client password
 < wlan client psk
 < wlan clients
 < wlan client ssid
 < wlan client tkip
+< wlan client tls cipher
+< wlan client tls version
 < wlan client wpa mode
 < wlan client wpa mode all
 < wlan client wpa mode ccmp ccmp
index 963a564307685ab7720a45563dce166a4ad9f954..e15501ef50f6dd61163c01fc885630cbe9fde24d 100644 (file)
@@ -120,7 +120,7 @@ if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
                        $errormessage = "$Lang::tr{'guardian invalid blocktime'}";
        }
 
-       # Check if the bloccount is valid.
+       # Check if the blockcount is valid.
        unless(($settings{'GUARDIAN_BLOCKCOUNT'} =~ /^\d+$/) && ($settings{'GUARDIAN_BLOCKCOUNT'} ne "0")) {
                        $errormessage = "$Lang::tr{'guardian invalid blockcount'}";
        }
@@ -183,7 +183,7 @@ if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
 
                        # Generate the ID for the new entry.
                        #
-                       # Sort the keys by it's ID and store them in an array.
+                       # Sort the keys by their ID and store them in an array.
                        my @keys = sort { $a <=> $b } keys %ignored;
 
                        # Reverse the key array.
@@ -664,11 +664,11 @@ sub showIgnoreBox() {
                                <td class='base' colspan='3' bgcolor='$color{'color20'}'></td>
                        </tr>
 END
-                       # Check if some hosts have been add to be ignored.
+                       # Check if some hosts have been added to be ignored.
                        if (keys (%ignored)) {
                                my $col = "";
 
-                               # Loop through all entries of the hash..
+                               # Loop through all entries of the hash.
                                while( (my $key) = each %ignored)  {
                                        # Assign data array positions to some nice variable names.
                                        my $address = $ignored{$key}[0];
@@ -784,7 +784,7 @@ END
        &Header::closebox();
 }
 
-# Function to list currently bocked addresses from guardian and unblock them or add custom entries to block.
+# Function to list currently blocked addresses from guardian and unblock them or add custom entries to block.
 sub showBlockedBox() {
        &Header::openbox('100%', 'center', $Lang::tr{'guardian blocked hosts'});
 
@@ -795,7 +795,7 @@ sub showBlockedBox() {
                </tr>
 END
 
-               # Lauch function to get the currently blocked hosts.
+               # Launch function to get the currently blocked hosts.
                my @blocked_hosts = &GetBlockedHosts();
 
                my $id = 0;
@@ -828,7 +828,7 @@ END
 END
                }
 
-       # If the loop only has been runs once the id still is "0", which means there are no
+       # If the loop only has been run once the id still is "0", which means there are no
        # additional entries (blocked hosts) in the iptables chain.
        if ($id == 0) {
 
@@ -890,11 +890,11 @@ sub GetBlockedHosts() {
        # Create new, empty array.
        my @hosts;
 
-       # Lauch helper to get chains from iptables.
+       # Launch helper to get chains from iptables.
        system('/usr/local/bin/getipstat');
 
        # Open temporary file which contains the chains and rules.
-       open (FILE, '/srv/web/ipfire/html/iptables.txt');
+       open (FILE, '/var/tmp/iptables.txt');
 
        # Loop through the entire file.
        while (<FILE>) {
@@ -909,7 +909,7 @@ sub GetBlockedHosts() {
                        next if ($line =~ /^Chain/);
                        next if ($line =~ /^ pkts/);
 
-                       # Generate array, based on the line content (seperator is a single or multiple space's)
+                       # Generate array, based on the line content (separator is a single or multiple space)
                        my @comps = split(/\s{1,}/, $line);
                        my ($lead, $pkts, $bytes, $target, $prot, $opt, $in, $out, $source, $destination) = @comps;
 
@@ -927,9 +927,9 @@ sub GetBlockedHosts() {
        close(FILE);
 
        # Remove recently created temporary files of the "getipstat" binary.
-       system(rm -f "/srv/web/ipfire/html/iptables.txt");
-       system(rm -f "/srv/web/ipfire/html/iptablesmangle.txt");
-       system(rm -f "/srv/web/ipfire/html/iptablesnat.txt");
+       system("rm -f /var/tmp/iptables.txt");
+       system("rm -f /var/tmp/iptablesmangle.txt");
+       system("rm -f /var/tmp/iptablesnat.txt");
 
        # Convert entries, sort them, write back and store the sorted entries into new array.
        my @sorted = map  { $_->[0] }
@@ -947,7 +947,7 @@ sub BuildConfiguration() {
 
        my $configfile = "${General::swroot}/guardian/guardian.conf";
 
-       # Create the configfile if not exist yet.
+       # Create the configfile if none exists yet.
        unless (-e "$configfile") { system("touch $configfile"); }
 
        # Open configfile for writing.
index 7c1746259d34bf653f86bd0033d801bfe3d09e09..6ba345dde8bf3426bdb3e80d26172b69e6f6c6b0 100644 (file)
@@ -217,7 +217,48 @@ END
                        </td>
                        <td></td>
                </tr>
-       </table>
+END
+
+       if (&General::RedIsWireless()) {
+               my $iface = $netsettings{"RED_DEV"} || "red0";
+
+               my $essid        = &Network::wifi_get_essid($iface);
+               my $frequency    = &Network::wifi_get_frequency($iface);
+               my $access_point = &Network::wifi_get_access_point($iface);
+               my $bit_rate     = &Network::wifi_get_bit_rate($iface);
+               my $link_quality = &Network::wifi_get_link_quality($iface);
+               my $signal_level = &Network::wifi_get_signal_level($iface);
+
+               print <<END;
+                       <tr>
+                               <td>
+                                       <strong>$Lang::tr{'wireless network'}:</strong>
+                               </td>
+                               <td style="text-align: center">
+                                       $essid
+                               </td>
+                               <td style="text-align: center">
+                                       $access_point @ $frequency
+                               </td>
+                       </tr>
+                       <tr>
+                               <td>
+                                       <strong>
+                                               $Lang::tr{'uplink bit rate'}:
+                                       </strong>
+                               </td>
+                               <td style="text-align: center">
+                                       $bit_rate
+                               </td>
+                               <td style="text-align: center">
+                                       $link_quality% @ $signal_level
+                               </td>
+                       </tr>
+END
+       }
+
+       print <<END;
+               </table>
 END
 
 #Dial profiles
@@ -425,6 +466,9 @@ END
                                                if (($line =~ /\"$vpnconfig{$key}[1]\".*IPsec SA established/) || ($line =~/$vpnconfig{$key}[1]\{.*INSTALLED/ )){
                                                        $activecolor = $Header::colourgreen;
                                                        $activestatus = $Lang::tr{'capsopen'};
+                                               } elsif ($line =~ /$vpnconfig{$key}[1]\[.*CONNECTING/) {
+                                                       $activecolor = $Header::colourorange;
+                                                       $activestatus = $Lang::tr{'vpn connecting'};
                                                } elsif ($line =~ /$vpnconfig{$key}[1]\{.*ROUTED/) {
                                                        $activecolor = $Header::colourorange;
                                                        $activestatus = $Lang::tr{'vpn on-demand'};
index 8cefe6e853ffc74f82dddfb7c2ecfbfbb9e2862c..16541f12621c9fd0ce25fc2015de453aac4d0f58 100644 (file)
@@ -102,7 +102,7 @@ print <<END
 <div align='center'>
 <table width='80%'>
 <tr>
-       <td align='center'><a href='$ENV{'HTTP_REFERER'}'>$Lang::tr{'back'}</a></td>
+       <td align='center'><a href='$ENV{'HTTP_REFERER'}'><img src='/images/back.png' alt='$Lang::tr{'back'}' title='$Lang::tr{'back'}' /></a></td>
 </tr>
 </table>
 </div>
index 30fce272152e0e041d515344d9ec6ac1605b3df0..b52d74fcfbac81006efa0e33fc4642e91abd39a6 100644 (file)
@@ -88,7 +88,7 @@ END
 # start with an Chain the the name, start- and endline of the
 # chain is extracted into a hash
 
-       open (FILE, '/srv/web/ipfire/html/iptables.txt');
+       open (FILE, '/var/tmp/iptables.txt');
        while (<FILE>){
 
                $iplines[$lines] = $_;
@@ -210,7 +210,7 @@ END
 # start with an Chain the the name, start- and endline of the
 # chain is extracted into a hash
 
-       open (FILE, '/srv/web/ipfire/html/iptablesmangle.txt');
+       open (FILE, '/var/tmp/iptablesmangle.txt');
        while (<FILE>){
 
                $ipmlines[$manlines] = $_;
@@ -337,7 +337,7 @@ END
 # start with an Chain the the name, start- and endline of the
 # chain is extracted into a hash
 
-       open (FILE, '/srv/web/ipfire/html/iptablesnat.txt');
+       open (FILE, '/var/tmp/iptablesnat.txt');
        while (<FILE>){
 
                $ipnatlines[$natlines] = $_;
@@ -434,6 +434,6 @@ print "</table></div><br />";
 &Header::closebigbox();
 &Header::closepage();
 
-system(rm -f "/srv/web/ipfire/html/iptables.txt");
-system(rm -f "/srv/web/ipfire/html/iptablesmangle.txt");
-system(rm -f "/srv/web/ipfire/html/iptablesnat.txt");
+system("rm -f /var/tmp/iptables.txt");
+system("rm -f /var/tmp/iptablesmangle.txt");
+system("rm -f /var/tmp/iptablesnat.txt");
index 26920b5da0dd97b2831da177cd70c418018f5e27..f2b6048f7930ff7d7aca7262ed270e300be83d70 100644 (file)
@@ -213,7 +213,7 @@ if ($multifile) {
 my $MODNAME="fwlogs";
 
 &Header::showhttpheaders();
-&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openpage($Lang::tr{'firewall log country'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 
@@ -281,7 +281,7 @@ END
 
 &Header::closebox();
 
-&Header::openbox('100%', 'left', 'Firewall Logs');
+&Header::openbox('100%', 'left', $Lang::tr{'firewall graph country'});
 print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
 
 my $red_interface = &General::get_red_interface();
@@ -471,7 +471,7 @@ for($s=0;$s<$lines;$s++)
                print"<input type='hidden' name='MONTH' value='$cgiparams{'MONTH'}'>";
                print"<input type='hidden' name='DAY' value='$cgiparams{'DAY'}'>";
                print"<input type='hidden' name='country' value='$key[$s]'>";
-               print"<input type='submit' value='details'></form>";
+               print"<input type='submit' value='$Lang::tr{'details'}'></form>";
        }
        elsif ($key[$s] eq 'unknown') {
                print "unknown";
index 08ef1c4be1425246971658939cb9c73171b63d45..9e366745de1a2e366fdcb7000224b4d3fe8bfe19 100644 (file)
@@ -212,7 +212,7 @@ if ($multifile) {
 my $MODNAME="fwlogs";
 
 &Header::showhttpheaders();
-&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openpage($Lang::tr{'firewall log ip'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 
@@ -283,7 +283,7 @@ END
 
 &Header::closebox();
 
-&Header::openbox('100%', 'left', 'Firewall Logs');
+&Header::openbox('100%', 'left', $Lang::tr{'firewall graph ip'});
 print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
 
 my $linesjc = 0;
index fbc92e43bbc09173ebb5ad59f9c26365698a24b0..67fe6aa6e3875e050d29adf6b082dc4f248bc94f 100644 (file)
@@ -213,7 +213,7 @@ if ($multifile) {
 my $MODNAME="fwlogs";
 
 &Header::showhttpheaders();
-&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openpage($Lang::tr{'firewall log port'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 if ($errormessage) {
@@ -281,7 +281,7 @@ END
 
 &Header::closebox();
 
-&Header::openbox('100%', 'left', 'Firewall Logs');
+&Header::openbox('100%', 'left', $Lang::tr{'firewall graph port'});
 print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
 
 my $linesjc = 0;
index cd97f878075b30de5b32376d3fccdcbb056303cf..b6383ed59bf6806bbff57f2bc8e8cd247505e918 100644 (file)
@@ -233,7 +233,7 @@ if ($multifile) {
 }
 
 &Header::showhttpheaders();
-&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openpage($Lang::tr{'firewall log country'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 if ($errormessage) {
@@ -292,7 +292,7 @@ END
 
 &Header::closebox();
 
-&Header::openbox('100%', 'left', $Lang::tr{'firewall log'});
+&Header::openbox('100%', 'left', $Lang::tr{'firewall log country'});
 print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
 
 if ($start == -1) {
@@ -415,6 +415,8 @@ END
 
 &oldernewer();
 
+       print"<table width='100%'><tr><td align='center'><a href='/cgi-bin/logs.cgi/firewalllogcountry.dat'><img src='/images/back.png' alt='$Lang::tr{'back'}' title='$Lang::tr{'back'}' /></a></td></tr></table>";
+
 &Header::closebox();
 
 &Header::closebigbox();
index 154fa40309dcc36d1ebb45bd0622757fdb64677c..31cd42c33f106eeb7e4be46e480b1bbfaf3874c8 100644 (file)
@@ -194,7 +194,7 @@ if ($multifile) {
 }
 
 &Header::showhttpheaders();
-&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openpage($Lang::tr{'firewall log ip'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 if ($errormessage) {
@@ -252,7 +252,7 @@ END
 
 &Header::closebox();
 
-&Header::openbox('100%', 'left', $Lang::tr{'firewall log'});
+&Header::openbox('100%', 'left', $Lang::tr{'firewall log ip'});
 print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
 
 if ($start == -1) {
@@ -357,6 +357,8 @@ END
 
 &oldernewer();
 
+       print"<table width='100%'><tr><td align='center'><a href='/cgi-bin/logs.cgi/firewalllogip.dat'><img src='/images/back.png' alt='$Lang::tr{'back'}' title='$Lang::tr{'back'}' /></a></td></tr></table>";
+
 &Header::closebox();
 
 &Header::closebigbox();
index e1f00aed8fb26fdd222db0c68b576c44ca727a2a..004a00e6a32005a09015405a6a897c589a8ac1ec 100644 (file)
@@ -202,7 +202,7 @@ if ($multifile) {
 }
 
 &Header::showhttpheaders();
-&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openpage($Lang::tr{'firewall log port'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 if ($errormessage) {
@@ -260,7 +260,7 @@ END
 
 &Header::closebox();
 
-&Header::openbox('100%', 'left', $Lang::tr{'firewall log'});
+&Header::openbox('100%', 'left', $Lang::tr{'firewall log port'});
 print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
 
 if ($start == -1) {
@@ -367,6 +367,8 @@ END
 
 &oldernewer();
 
+       print"<table width='100%'><tr><td align='center'><a href='/cgi-bin/logs.cgi/firewalllogport.dat'><img src='/images/back.png' alt='$Lang::tr{'back'}' title='$Lang::tr{'back'}' /></a></td></tr></table>";
+
 &Header::closebox();
 
 &Header::closebigbox();
index 037894d50bf941d870e55e311932a71c04dbf94b..d46a14e7916454192306afa91eb82d54b15b384a 100644 (file)
@@ -2631,7 +2631,7 @@ ADV_ERROR:
                $cgiparams{'PMTU_DISCOVERY'} = 'off';
     }
     if ($cgiparams{'DAUTH'} eq '') {
-               $cgiparams{'DAUTH'} = 'SHA1';
+               $cgiparams{'DAUTH'} = 'SHA512';
     }
     if ($cgiparams{'TLSAUTH'} eq '') {
                $cgiparams{'TLSAUTH'} = 'off';
@@ -2821,7 +2821,7 @@ print <<END;
                                <option value='SHA512'                  $selected{'DAUTH'}{'SHA512'}>SHA2 (512 $Lang::tr{'bit'})</option>
                                <option value='SHA384'                  $selected{'DAUTH'}{'SHA384'}>SHA2 (384 $Lang::tr{'bit'})</option>
                                <option value='SHA256'                  $selected{'DAUTH'}{'SHA256'}>SHA2 (256 $Lang::tr{'bit'})</option>
-                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'})</option>
+                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'}, $Lang::tr{'vpn weak'})</option>
                        </select>
                </td>
                <td>$Lang::tr{'openvpn default'}: <span class="base">SHA1 (160 $Lang::tr{'bit'})</span></td>
@@ -4454,7 +4454,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
         $cgiparams{'MSSFIX'} = 'on';
         $cgiparams{'FRAGMENT'} = '1300';
        $cgiparams{'PMTU_DISCOVERY'} = 'off';
-       $cgiparams{'DAUTH'} = 'SHA1';
+       $cgiparams{'DAUTH'} = 'SHA512';
 ###
 # m.a.d n2n end
 ###    
@@ -4705,7 +4705,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
                                <option value='SHA512'                  $selected{'DAUTH'}{'SHA512'}>SHA2 (512 $Lang::tr{'bit'})</option>
                                <option value='SHA384'                  $selected{'DAUTH'}{'SHA384'}>SHA2 (384 $Lang::tr{'bit'})</option>
                                <option value='SHA256'                  $selected{'DAUTH'}{'SHA256'}>SHA2 (256 $Lang::tr{'bit'})</option>
-                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'} Default)</option>
+                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'}, $Lang::tr{'vpn weak'})</option>
                        </select>
                </td>
        </tr>
@@ -5037,7 +5037,7 @@ END
                $cgiparams{'MSSFIX'} = 'off';
     }
        if ($cgiparams{'DAUTH'} eq '') {
-               $cgiparams{'DAUTH'} = 'SHA1';
+               $cgiparams{'DAUTH'} = 'SHA512';
     }
     if ($cgiparams{'DOVPN_SUBNET'} eq '') {
                $cgiparams{'DOVPN_SUBNET'} = '10.' . int(rand(256)) . '.' . int(rand(256)) . '.0/255.255.255.0';
index f4eccb1f0ef9c985f7fab7ae8f8616a48435dd0b..f9508b53de2fe4f9f5cf8821e30b7d877efb6dc3 100644 (file)
@@ -1897,15 +1897,15 @@ END
 
        #use default advanced value
        $cgiparams{'IKE_ENCRYPTION'}    = 'aes256gcm128|aes256gcm96|aes256gcm64|aes256|aes192gcm128|aes192gcm96|aes192gcm64|aes192|aes128gcm128|aes128gcm96|aes128gcm64|aes128'; #[18];
-       $cgiparams{'IKE_INTEGRITY'}             = 'sha2_512|sha2_256|sha'; #[19];
-       $cgiparams{'IKE_GROUPTYPE'}             = '4096|3072|2048|1536|1024'; #[20];
+       $cgiparams{'IKE_INTEGRITY'}             = 'sha2_512|sha2_256'; #[19];
+       $cgiparams{'IKE_GROUPTYPE'}             = 'curve25519|4096|3072|2048'; #[20];
        $cgiparams{'IKE_LIFETIME'}              = '3'; #[16];
        $cgiparams{'ESP_ENCRYPTION'}    = 'aes256gcm128|aes256gcm96|aes256gcm64|aes256|aes192gcm128|aes192gcm96|aes192gcm64|aes192|aes128gcm128|aes128gcm96|aes128gcm64|aes128'; #[21];
-       $cgiparams{'ESP_INTEGRITY'}             = 'sha2_512|sha2_256|sha1'; #[22];
-       $cgiparams{'ESP_GROUPTYPE'}             = '4096|3072|2048|1536|1024'; #[23];
+       $cgiparams{'ESP_INTEGRITY'}             = 'sha2_512|sha2_256'; #[22];
+       $cgiparams{'ESP_GROUPTYPE'}             = 'curve25519|4096|3072|2048'; #[23];
        $cgiparams{'ESP_KEYLIFE'}               = '1'; #[17];
        $cgiparams{'COMPRESSION'}               = 'on'; #[13];
-       $cgiparams{'ONLY_PROPOSED'}             = 'off'; #[24];
+       $cgiparams{'ONLY_PROPOSED'}             = 'on'; #[24];
        $cgiparams{'PFS'}                               = 'on'; #[28];
 }
 
@@ -2178,7 +2178,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        goto ADVANCED_ERROR;
                }
                foreach my $val (@temp) {
-                       if ($val !~ /^(e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) {
+                       if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) {
                                $errormessage = $Lang::tr{'invalid input'};
                                goto ADVANCED_ERROR;
                        }
@@ -2219,7 +2219,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        goto ADVANCED_ERROR;
                }
                foreach my $val (@temp) {
-                       if ($val !~ /^(e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192|none)$/) {
+                       if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192|none)$/) {
                                $errormessage = $Lang::tr{'invalid input'};
                                goto ADVANCED_ERROR;
                        }
@@ -2338,6 +2338,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        $checked{'IKE_INTEGRITY'}{'aesxcbc'} = '';
        @temp = split('\|', $cgiparams{'IKE_INTEGRITY'});
        foreach my $key (@temp) {$checked{'IKE_INTEGRITY'}{$key} = "selected='selected'"; }
+       $checked{'IKE_GROUPTYPE'}{'curve25519'} = '';
        $checked{'IKE_GROUPTYPE'}{'768'} = '';
        $checked{'IKE_GROUPTYPE'}{'1024'} = '';
        $checked{'IKE_GROUPTYPE'}{'1536'} = '';
@@ -2349,9 +2350,6 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        @temp = split('\|', $cgiparams{'IKE_GROUPTYPE'});
        foreach my $key (@temp) {$checked{'IKE_GROUPTYPE'}{$key} = "selected='selected'"; }
 
-       # 768 is not supported by strongswan
-       $checked{'IKE_GROUPTYPE'}{'768'} = '';
-
        $checked{'ESP_ENCRYPTION'}{'aes256'} = '';
        $checked{'ESP_ENCRYPTION'}{'aes192'} = '';
        $checked{'ESP_ENCRYPTION'}{'aes128'} = '';
@@ -2378,6 +2376,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        $checked{'ESP_INTEGRITY'}{'aesxcbc'} = '';
        @temp = split('\|', $cgiparams{'ESP_INTEGRITY'});
        foreach my $key (@temp) {$checked{'ESP_INTEGRITY'}{$key} = "selected='selected'"; }
+       $checked{'ESP_GROUPTYPE'}{'curve25519'} = '';
        $checked{'ESP_GROUPTYPE'}{'768'} = '';
        $checked{'ESP_GROUPTYPE'}{'1024'} = '';
        $checked{'ESP_GROUPTYPE'}{'1536'} = '';
@@ -2504,8 +2503,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                                        <option value='sha2_384' $checked{'IKE_INTEGRITY'}{'sha2_384'}>SHA2 384 bit</option>
                                        <option value='sha2_256' $checked{'IKE_INTEGRITY'}{'sha2_256'}>SHA2 256 bit</option>
                                        <option value='aesxcbc' $checked{'IKE_INTEGRITY'}{'aesxcbc'}>AES XCBC</option>
-                                       <option value='sha' $checked{'IKE_INTEGRITY'}{'sha'}>SHA1</option>
-                                       <option value='md5' $checked{'IKE_INTEGRITY'}{'md5'}>MD5</option>
+                                       <option value='sha' $checked{'IKE_INTEGRITY'}{'sha'}>SHA1 ($Lang::tr{'vpn weak'})</option>
+                                       <option value='md5' $checked{'IKE_INTEGRITY'}{'md5'}>MD5 ($Lang::tr{'vpn broken'})</option>
                                </select>
                        </td>
                        <td class='boldbase'>
@@ -2514,8 +2513,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                                        <option value='sha2_384' $checked{'ESP_INTEGRITY'}{'sha2_384'}>SHA2 384 bit</option>
                                        <option value='sha2_256' $checked{'ESP_INTEGRITY'}{'sha2_256'}>SHA2 256 bit</option>
                                        <option value='aesxcbc' $checked{'ESP_INTEGRITY'}{'aesxcbc'}>AES XCBC</option>
-                                       <option value='sha1' $checked{'ESP_INTEGRITY'}{'sha1'}>SHA1</option>
-                                       <option value='md5' $checked{'ESP_INTEGRITY'}{'md5'}>MD5</option>
+                                       <option value='sha1' $checked{'ESP_INTEGRITY'}{'sha1'}>SHA1 ($Lang::tr{'vpn weak'})</option>
+                                       <option value='md5' $checked{'ESP_INTEGRITY'}{'md5'}>MD5 ($Lang::tr{'vpn broken'})</option>
                                </select>
                        </td>
                </tr>
@@ -2532,6 +2531,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                        <td class='boldbase' width="15%">$Lang::tr{'grouptype'}</td>
                        <td class='boldbase'>
                                <select name='IKE_GROUPTYPE' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='curve25519' $checked{'IKE_GROUPTYPE'}{'curve25519'}>Curve 25519 (256 bit)</option>
                                        <option value='e521' $checked{'IKE_GROUPTYPE'}{'e521'}>ECP-521 (NIST)</option>
                                        <option value='e512bp' $checked{'IKE_GROUPTYPE'}{'e512bp'}>ECP-512 (Brainpool)</option>
                                        <option value='e384' $checked{'IKE_GROUPTYPE'}{'e384'}>ECP-384 (NIST)</option>
@@ -2550,11 +2550,13 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                                        <option value='2048s160' $checked{'IKE_GROUPTYPE'}{'2048s160'}>MODP-2048/160</option>
                                        <option value='2048' $checked{'IKE_GROUPTYPE'}{'2048'}>MODP-2048</option>
                                        <option value='1536' $checked{'IKE_GROUPTYPE'}{'1536'}>MODP-1536</option>
-                                       <option value='1024' $checked{'IKE_GROUPTYPE'}{'1024'}>MODP-1024</option>
+                                       <option value='1024' $checked{'IKE_GROUPTYPE'}{'1024'}>MODP-1024 ($Lang::tr{'vpn broken'})</option>
+                                       <option value='768' $checked{'IKE_GROUPTYPE'}{'768'}>MODP-768 ($Lang::tr{'vpn broken'})</option>
                                </select>
                        </td>
                        <td class='boldbase'>
                                <select name='ESP_GROUPTYPE' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='curve25519' $checked{'ESP_GROUPTYPE'}{'curve25519'}>Curve 25519 (256 bit)</option>
                                        <option value='e521' $checked{'ESP_GROUPTYPE'}{'e521'}>ECP-521 (NIST)</option>
                                        <option value='e512bp' $checked{'ESP_GROUPTYPE'}{'e512bp'}>ECP-512 (Brainpool)</option>
                                        <option value='e384' $checked{'ESP_GROUPTYPE'}{'e384'}>ECP-384 (NIST)</option>
@@ -2573,7 +2575,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                                        <option value='2048s160' $checked{'ESP_GROUPTYPE'}{'2048s160'}>MODP-2048/160</option>
                                        <option value='2048' $checked{'ESP_GROUPTYPE'}{'2048'}>MODP-2048</option>
                                        <option value='1536' $checked{'ESP_GROUPTYPE'}{'1536'}>MODP-1536</option>
-                                       <option value='1024' $checked{'ESP_GROUPTYPE'}{'1024'}>MODP-1024</option>
+                                       <option value='1024' $checked{'ESP_GROUPTYPE'}{'1024'}>MODP-1024 ($Lang::tr{'vpn broken'})</option>
+                                       <option value='768' $checked{'ESP_GROUPTYPE'}{'768'}>MODP-768 ($Lang::tr{'vpn broken'})</option>
                                        <option value='none' $checked{'ESP_GROUPTYPE'}{'none'}>- $Lang::tr{'none'} -</option>
                                </select>
                        </td>
@@ -2805,6 +2808,9 @@ END
                ($line =~ /$confighash{$key}[1]\{.*INSTALLED/)) {
                        $col1="bgcolor='${Header::colourgreen}'";
                        $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
+               } elsif ($line =~ /$confighash{$key}[1]\[.*CONNECTING/) {
+                       $col1="bgcolor='${Header::colourorange}'";
+                       $active = "<b><font color='#FFFFFF'>$Lang::tr{'vpn connecting'}</font></b>";
                } elsif ($line =~ /$confighash{$key}[1]\{.*ROUTED/) {
                        $col1="bgcolor='${Header::colourorange}'";
                        $active = "<b><font color='#FFFFFF'>$Lang::tr{'vpn on-demand'}</font></b>";
index a2d0273df502810e1636d5e9813b849998551f95..6978663cf39d4d7aaa9c7eea8634ccfc435162e7 100644 (file)
@@ -19,8 +19,8 @@
 #                                                                             #
 ###############################################################################
 
-# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO
-# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2
+# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO,AUTH,ANONYMOUS,IDENTITY,PASSWORD
+# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2,TTLS,anonymous,username,password
 
 use strict;
 
@@ -132,6 +132,10 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
                push(@config, $settings{'SSID'});
                push(@config, $settings{'PSK'});
                push(@config, $settings{'PRIO'});
+               push(@config, $settings{'AUTH'});
+               push(@config, $settings{'ANONYMOUS'});
+               push(@config, $settings{'IDENTITY'});
+               push(@config, $settings{'PASSWORD'});
 
                # Add the new configuration and write all the stuff to the configuration file.
                my $line = join(',', @config) . "\n";
@@ -164,6 +168,10 @@ if ($settings{'ACTION'} eq $Lang::tr{'edit'}) {
                        $settings{'SSID'}       = $config[5];
                        $settings{'PSK'}        = $config[6];
                        $settings{'PRIO'}       = $config[7];
+                       $settings{'AUTH'}       = $config[8];
+                       $settings{'ANONYMOUS'}  = $config[9];
+                       $settings{'IDENTITY'}   = $config[10];
+                       $settings{'PASSWORD'}   = $config[11];
                }
        }
 }
@@ -181,12 +189,16 @@ if ($settings{'ACTION'} eq $Lang::tr{'update'}) {
                        if ($config[0] eq $settings{'ID'}) {
                                # Update all configuration settings.
                                # ID and INTERFACE cannot be changed.
-                               $config[2] = $settings{'ENABLED'};
-                               $config[3] = $settings{'ENCRYPTION'};
-                               $config[4] = $settings{'WPA_MODE'};
-                               $config[5] = $settings{'SSID'};
-                               $config[6] = $settings{'PSK'};
-                               $config[7] = $settings{'PRIO'};
+                               $config[2]  = $settings{'ENABLED'};
+                               $config[3]  = $settings{'ENCRYPTION'};
+                               $config[4]  = $settings{'WPA_MODE'};
+                               $config[5]  = $settings{'SSID'};
+                               $config[6]  = $settings{'PSK'};
+                               $config[7]  = $settings{'PRIO'};
+                               $config[8]  = $settings{'AUTH'};
+                               $config[9]  = $settings{'ANONYMOUS'};
+                               $config[10] = $settings{'IDENTITY'};
+                               $config[11] = $settings{'PASSWORD'};
 
                                $line = join(',', @config);
                        }
@@ -312,9 +324,34 @@ END
                        $encryption_mode = $Lang::tr{'wlan client encryption wpa'};
                } elsif ($config[3] eq "WPA2") {
                        $encryption_mode = $Lang::tr{'wlan client encryption wpa2'};
+               } elsif ($config[3] eq "EAP") {
+                       $encryption_mode = $Lang::tr{'wlan client encryption eap'};
                }
 
-               if (($config[3] eq "WPA") || ($config[3] eq "WPA2")) {
+               if ($config[3] eq "EAP") {
+                       if ($config[8] eq "PEAP") {
+                               $encryption_mode .= " ($Lang::tr{'wlan client auth peap'})";
+                       } elsif ($config[8] eq "TTLS") {
+                               $encryption_mode .= " ($Lang::tr{'wlan client auth ttls'})";
+                       } else {
+                               $encryption_mode .= " ($Lang::tr{'wlan client auth auto'})";
+                       }
+
+                       $encryption_mode .= "<hr>";
+
+                       if ($config[10]) {
+                               $encryption_mode .= "<strong>$Lang::tr{'wlan client identity'}</strong>: ";
+                               $encryption_mode .= $config[10];
+                       }
+
+                       # Anonymous identity
+                       if ($config[9]) {
+                               $encryption_mode .= "<br>";
+                               $encryption_mode .= "<strong>$Lang::tr{'wlan client anonymous identity'}</strong>: ";
+                               $encryption_mode .= $config[9];
+                       }
+
+               } elsif (($config[3] eq "WPA") || ($config[3] eq "WPA2")) {
                        my $wpa_pairwise = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}";
                        my $wpa_group = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}";
 
@@ -437,6 +474,12 @@ sub showEditBox() {
        $selected{'WPA_MODE'}{'TKIP-TKIP'} = '';
        $selected{'WPA_MODE'}{$settings{'WPA_MODE'}} = "selected='selected'";
 
+       $selected{'AUTH'} = ();
+       $selected{'AUTH'}{''} = '';
+       $selected{'AUTH'}{'PEAP'} = '';
+       $selected{'AUTH'}{'TTLS'} = '';
+       $selected{'AUTH'}{$settings{'AUTH'}} = "selected='selected'";
+
        $selected{'PRIO'} = ();
        $selected{'PRIO'}{'0'} = '';
        $selected{'PRIO'}{'1'} = '';
@@ -461,6 +504,7 @@ sub showEditBox() {
                                        <td width='40%'>
                                                <select name='ENCRYPTION'>
                                                        <option value="NONE" $selected{'ENCRYPTION'}{'NONE'}>$Lang::tr{'wlan client encryption none'}</option>
+                                                       <option value="EAP"  $selected{'ENCRYPTION'}{'EAP'}>$Lang::tr{'wlan client encryption eap'}</option>
                                                        <option value="WPA2" $selected{'ENCRYPTION'}{'WPA2'}>$Lang::tr{'wlan client encryption wpa2'}</option>
                                                        <option value="WPA"  $selected{'ENCRYPTION'}{'WPA'}>$Lang::tr{'wlan client encryption wpa'}</option>
                                                        <option value="WEP"  $selected{'ENCRYPTION'}{'WEP'}>$Lang::tr{'wlan client encryption wep'}</option>                                                    
@@ -477,6 +521,57 @@ sub showEditBox() {
 
                        <br>
                        <hr>
+
+                       <strong>
+                               $Lang::tr{'wlan client authentication settings'}:
+                       </strong>
+
+                       <table width='100%'>
+                               <tr>
+                                       <td class='base' width='20%'>
+                                               $Lang::tr{'wlan client eap authentication method'}:
+                                       </td>
+                                       <td width='40%'>
+                                               <select name='AUTH'>
+                                                       <option value="" $selected{'AUTH'}{''}>$Lang::tr{'wlan client auth auto'}</option>
+                                                       <option value="PEAP" $selected{'AUTH'}{'PEAP'}>$Lang::tr{'wlan client auth peap'}</option>
+                                                       <option value="TTLS" $selected{'AUTH'}{'TTLS'}>$Lang::tr{'wlan client auth ttls'}</option>
+                                               </select>
+                                       </td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                               <tr>
+                                       <td class='base' width='20%'>
+                                               $Lang::tr{'wlan client anonymous identity'}:
+                                       </td>
+                                       <td width='40%'>
+                                               <input type="text" name="ANONYMOUS" value="$settings{"ANONYMOUS"}" size="25" />
+                                       </td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                               <tr>
+                                       <td class='base' width='20%'>
+                                               $Lang::tr{'wlan client identity'}:
+                                       </td>
+                                       <td width='40%'>
+                                               <input type="text" name="IDENTITY" value="$settings{"IDENTITY"}" size="25" />
+                                       </td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                               <tr>
+                                       <td class='base' width='20%'>
+                                               $Lang::tr{'wlan client password'}:
+                                       </td>
+                                       <td width='40%'>
+                                               <input type="password" name="PASSWORD" value="$settings{"PASSWORD"}" size="25" />
+                                       </td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                       </table>
+
+                       <br>
+                       <hr>
+
                        
                        <strong>
                                $Lang::tr{'wlan client advanced settings'}:
@@ -585,6 +680,59 @@ sub ShowStatus() {
                                </tr>
 END
 
+               if ($status{'EAP state'}) {
+                       my $selected_method = $status{'selectedMethod'};
+                       $selected_method =~ s/\d+ \((.*)\)/$1/e;
+
+                       print <<END;
+                               <tr>
+                                       <td colspan='2'>
+                                               <strong>$Lang::tr{'wlan client encryption eap'}</strong>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client eap state'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'EAP state'}
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client method'}
+                                       </td>
+                                       <td width='80%'>
+                                               $selected_method
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client tls version'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'eap_tls_version'}
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client tls cipher'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'EAP TLS cipher'}
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client eap phase2 method'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{"${selected_method}v0 Phase2 method"}
+                                       </td>
+                               </tr>
+END
+               }
+
                if (($status{'pairwise_cipher'} ne "NONE") || ($status{'group_cipher'} ne "NONE")) {
                        print <<END;
                                <tr>
diff --git a/html/html/images/back.png b/html/html/images/back.png
new file mode 100644 (file)
index 0000000..66921af
Binary files /dev/null and b/html/html/images/back.png differ
index bda0e26923a22422d930654bf0816406e4ca2209..b0cb96df2482c9ffc51c9c4ce2c5c8daa92fc3ca 100644 (file)
 'fireinfo why read more' => 'Mehr über die Gründe.',
 'fireinfo your profile id' => 'Profil-ID',
 'firewall' => 'Firewall',
-'firewall graphs' => 'Firewall-Diagramme',
+'firewall graph country' => 'Firewall-Diagramm (Land)',
+'firewall graph ip' => 'Firewall-Diagramm (IP)',
+'firewall graph port' => 'Firewall-Diagramm (Port)',
 'firewall hits' => 'Gesamtanzahl der Firewall-Treffer für',
 'firewall hits per' => 'Firewalltreffer pro',
 'firewall log' => 'Firewall-Protokoll',
-'firewall log viewer' => 'Betrachter der Firewall-Logdateien',
+'firewall log country' => 'Firewall-Protokoll (Land)',
+'firewall log ip' => 'Firewall-Protokoll (IP)',
+'firewall log port' => 'Firewall-Protokoll (Port)',
 'firewall logs' => 'Firewall-Logdateien',
 'firewall logs country' => 'Fw-Logdiagramme (Land)',
 'firewall logs ip' => 'Fw-Logdiagramme (IP)',
 'updxlrtr year' => 'einem Jahr',
 'upgrade' => 'upgrade',
 'uplink' => 'Uplink',
+'uplink bit rate' => 'Ausgehende Datenrate',
 'uplink speed' => 'Uplink-Geschwindigkeit (kbit/sek)',
 'uplink std class' => 'Uploadstandardklasse',
 'upload' => 'Hochladen',
 'vpn aggrmode' => 'IKE Aggressive Mode zugelassen. Wenn möglich, vermeiden (preshared Schlüssel wird im Klartext übertragen)!',
 'vpn altname syntax' => 'Der Subjekt Alternativ Name ist eine durch Komma getrennte Liste von Email, DNS, URI, RID und IP Objekten. <br />Email: eine Email Adresse. Syntax Email: \'copy\' benutzt die Email Adresse aus dem Zertifikatfeld. <br />DNS: ein gültiger Domain Name.<br />URI: eine gültige URI.<br />RID: Registriertes Objekt Identifikation.<br />IP: eine IP Adresse.<br />Bitte beachten: der Zeichensatz ist eingeschränkt und die Groß-/Kleinschreibung ist entscheidend.<br />Beispiel:<br /><b>email:</b>info@ipfire.org<b>,email:</b>copy<b>,DNS:</b>www.ipfire.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/nach/irgendwo',
 'vpn auth-dn' => 'Peer wird identifiziert durch entweder ein IPV4_ADDR, FQDN, USER_FQDN oder DER_ASN1_DN string in Remote ID Feld',
+'vpn broken' => 'Gebrochen',
+'vpn connecting' => 'VERBINDUNGSAUFBAU',
 'vpn delayed start' => 'Verzögerung bevor VPN gestartet wird (Sekunden)',
 'vpn delayed start help' => 'Falls notwendig, kann diese Verzögerung dazu verwendet werden, um Dynamic-DNS-Updates ordnungsgemäß anzuwenden. 60 ist ein gängiger Wert, wenn ROT (RED) eine dynamische IP Adresse ist.',
 'vpn incompatible use of defaultroute' => 'Hostname=%defaultroute nicht zulässig',
 'vpn statistic rw' => 'OpenVPN-Roadwarrior-Statistik',
 'vpn subjectaltname' => 'Subjekt Alternativer Name',
 'vpn watch' => 'Netz-zu-Netz VPN neu starten, wenn sich Remote-IP ändert (DynDNS).',
+'vpn weak' => 'Schwach',
 'waiting to synchronize clock' => 'Bitte warten, die Uhr wird synchronisiert',
 'warn when traffic reaches' => 'Warnen wenn Traffic x % erreicht',
 'warning messages' => 'Warnhinweise',
 'wireless config added' => 'Wireless-Konfiguration hinzugefügt',
 'wireless config changed' => 'Wireless-Konfiguration geändert',
 'wireless configuration' => 'Wireless-Konfiguration',
+'wireless network' => 'WLAN-Netzwerk',
 'wlan client' => 'WLAN-Client',
 'wlan client advanced settings' => 'Erweiterte Einstellungen',
 'wlan client and' => 'und',
+'wlan client anonymous identity' => 'Anonyme Identität',
+'wlan client auth auto' => 'Auto',
+'wlan client auth peap' => 'PEAP',
+'wlan client auth ttls' => 'TTLS',
+'wlan client authentication settings' => 'Authentifizierungseinstellungen',
 'wlan client bssid' => 'BSSID',
 'wlan client ccmp' => 'CCMP',
 'wlan client configuration' => 'WLAN-Client-Konfiguration',
 'wlan client disconnected' => 'Nicht verbunden',
 'wlan client duplicate ssid' => 'Doppelte SSID',
+'wlan client eap authentication method' => 'EAP-Authentifizierungsmethode',
+'wlan client eap phase2 method' => 'EAP-Phase-2-Methode',
+'wlan client eap state' => 'EAP-Status',
 'wlan client edit entry' => 'Verbindung bearbeiten',
 'wlan client encryption' => 'Verschlüsselung',
+'wlan client encryption eap' => 'EAP',
 'wlan client encryption none' => 'Keine',
 'wlan client encryption wep' => 'WEP',
 'wlan client encryption wpa' => 'WPA',
 'wlan client encryption wpa2' => 'WPA2',
 'wlan client group cipher' => 'Gruppenchiffre',
 'wlan client group key algorithm' => 'GKA',
+'wlan client identity' => 'Identität',
 'wlan client invalid key length' => 'Ungültige Schlüssellänge.',
+'wlan client method' => 'Methode',
 'wlan client new entry' => 'Neue WLAN-Client-Konfiguration erstellen',
 'wlan client new network' => 'Neues Netzwerk',
 'wlan client pairwise cipher' => 'Paarweise Chiffre',
 'wlan client pairwise key algorithm' => 'PKA',
 'wlan client pairwise key group key' => 'Paarweise-/Gruppenschlüssel',
+'wlan client password' => 'Passwort',
 'wlan client psk' => 'Schlüssel',
 'wlan client ssid' => 'SSID',
 'wlan client tkip' => 'TKIP',
+'wlan client tls cipher' => 'TLS-Chiffre',
+'wlan client tls version' => 'TLS-Version',
 'wlan client wpa mode' => 'WPA-Modus',
 'wlan client wpa mode all' => 'Automatisch',
 'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
index 6608ceb63991c54c70fdcb2d5e210f711afd3a0b..b3aee5a2b749c1ee73e8080b6c834fe983913d0d 100644 (file)
 'fireinfo why read more' => 'Read more about the reasons.',
 'fireinfo your profile id' => 'Your profile ID',
 'firewall' => 'Firewall',
-'firewall graphs' => 'Firewall Graphs',
+'firewall graph country' => 'Firewall-Diagram (Country)',
+'firewall graph ip' => 'Firewall-Diagram (IP)',
+'firewall graph port' => 'Firewall-Diagram (Port)',
 'firewall hits' => 'Total number of firewall hits for',
 'firewall hits per' => 'firewallhits per',
 'firewall log' => 'Firewall log',
-'firewall log viewer' => 'Firewall Log Viewer',
+'firewall log country' => 'Firewall log (Country)',
+'firewall log ip' => 'Firewall log (IP)',
+'firewall log port' => 'Firewall log (Port)',
 'firewall logs' => 'Firewall Logs',
 'firewall logs country' => 'Fw-Loggraphs (Country)',
 'firewall logs ip' => 'Fw-Loggraphs (IP)',
 'updxlrtr year' => 'one year',
 'upgrade' => 'upgrade',
 'uplink' => 'Uplink',
+'uplink bit rate' => 'Uplink Bit Rate',
 'uplink speed' => 'Uplink speed (kbit/sec)',
 'uplink std class' => 'uplink standard class',
 'upload' => 'Upload',
 'vpn aggrmode' => 'IKE aggressive mode allowed. Avoid if possible (preshared key is transmitted in clear text)!',
 'vpn altname syntax' => 'SubjectAltName is a comma separated list of e-mail, dns, uri, rid and ip objects.<br />email:an email address. Syntax email:copy takes the email field from the cert to be used.<br />DNS:a valid domain name.<br />URI:any valid uri.<br />RID:registered object identifier.<br />IP:an IP address.<br />Note:charset is limited and case is significant.<br />Example:<br /><b>e-mail:</b>ipfire@foo.org<b>,email:</b>copy<b>,DNS:</b>www.ipfire.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/to/something',
 'vpn auth-dn' => 'Peer is identified by either IPV4_ADDR, FQDN, USER_FQDN or DER_ASN1_DN string in remote ID field',
+'vpn broken' => 'Broken',
 'vpn configuration main' => 'VPN Configuration',
+'vpn connecting' => 'CONNECTING',
 'vpn delayed start' => 'Delay before launching VPN (seconds)',
 'vpn delayed start help' => 'If required, this delay can be used to allow dynamic DNS updates to propagate properly. 60 is a common value when RED is a dynamic IP.',
 'vpn force mobike' => 'Force using MOBIKE (only IKEv2)',
 'vpn statistic rw' => 'OpenVPN Roadwarrior Statistics',
 'vpn subjectaltname' => 'Subject Alt Name',
 'vpn watch' => 'Restart net-to-net vpn when remote peer IP changes (dyndns).',
+'vpn weak' => 'Weak',
 'waiting to synchronize clock' => 'Waiting to synchronize clock',
 'warn when traffic reaches' => 'Warn when traffic reaches x %',
 'warning messages' => 'Warning messages',
 'wireless config added' => 'Wireless config added',
 'wireless config changed' => 'Wireless config changed',
 'wireless configuration' => 'Wireless Configuration',
+'wireless network' => 'WiFi Network',
 'wlan client' => 'Wireless client',
 'wlan client advanced settings' => 'Advanced settings',
 'wlan client and' => 'and',
+'wlan client anonymous identity' => 'Anonymous Identity',
+'wlan client auth auto' => 'Auto',
+'wlan client auth peap' => 'PEAP',
+'wlan client auth ttls' => 'TTLS',
+'wlan client authentication settings' => 'Authentication Settings',
 'wlan client bssid' => 'BSSID',
 'wlan client ccmp' => 'CCMP',
 'wlan client configuration' => 'Wireless Client Configuration',
 'wlan client disconnected' => 'Disconnected',
 'wlan client duplicate ssid' => 'Duplicate SSID',
+'wlan client eap authentication method' => 'EAP Authentication Method',
+'wlan client eap phase2 method' => 'EAP Phase 2 Method',
+'wlan client eap state' => 'EAP Status',
 'wlan client edit entry' => 'Edit wireless client configuration',
 'wlan client encryption' => 'Encryption',
+'wlan client encryption eap' => 'EAP',
 'wlan client encryption none' => 'None',
 'wlan client encryption wep' => 'WEP',
 'wlan client encryption wpa' => 'WPA',
 'wlan client encryption wpa2' => 'WPA2',
 'wlan client group cipher' => 'Group cipher',
 'wlan client group key algorithm' => 'GKA',
+'wlan client identity' => 'Identity',
 'wlan client invalid key length' => 'Invalid key length.',
+'wlan client method' => 'Method',
 'wlan client new entry' => 'Create new wireless client configuration',
 'wlan client new network' => 'New network',
 'wlan client pairwise cipher' => 'Pairwise cipher',
 'wlan client pairwise key algorithm' => 'PKA',
 'wlan client pairwise key group key' => 'Pairwise key/group key',
+'wlan client password' => 'Password',
 'wlan client psk' => 'Pre-shared key',
 'wlan client ssid' => 'SSID',
 'wlan client tkip' => 'TKIP',
+'wlan client tls cipher' => 'TLS Cipher',
+'wlan client tls version' => 'TLS Version',
 'wlan client wpa mode' => 'WPA mode',
 'wlan client wpa mode all' => 'Auto',
 'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
index 36698fd2c464a11d0edd0009757309e2b4bb5b82..02e047bb3cb0a4e78271523bfd8bdacbd09fc0e9 100644 (file)
@@ -47,7 +47,7 @@
 'Pages' => 'Pagine',
 'Ping' => 'Ping :',
 'Port Rule' => 'Regola-Porta',
-'QoS not enabled' => 'QoS non è abilitata!',
+'QoS not enabled' => 'Il QoS non &egrave; abilitato!',
 'Queuelenght' => 'Queuelenght',
 'Remote IP' => 'IP Remoto / Hostname (DynDNS):',
 'Remote VPN IP' => 'VPN Subnet (e.g. 10.0.10.0/255.255.255.0):',
 'advproxy chgwebpwd old password' => 'Password attuale',
 'advproxy chgwebpwd username' => 'Username',
 'advproxy classroom extensions' => 'estensioni di classe',
-'advproxy clear cache' => 'Clear Cache',
+'advproxy clear cache' => 'Cancella la cache',
 'advproxy client IP forwarding' => 'Indirizzo del client per inoltro IP',
 'advproxy common settings' => 'Impostazioni Comuni',
 'advproxy content based throttling' => 'Abilita limitazioni per contenuto',
 'backupaddon' => 'Addon Backup',
 'backupprofile' => 'In case reconnection fails, switch to profile',
 'backups' => 'Backups',
-'backupwarning' => 'Per favore prima di ripristinare il backup del sistema e/o il backup addon, Si prega di mantenere il nome del file originale, di quando &eacute; stato scaricato.',
+'backupwarning' => 'Per favore prima di ripristinare il backup del sistema e/o il backup addon, Si prega di mantenere il nome del file originale di quando &eacute; stato scaricato.',
 'bad characters in' => 'Bad characters in ',
 'bad characters in script field' => 'Bad characters in script field',
 'bad characters in the telephone number field' => 'Bad characters in the telephone number field.',
 'bad return code' => 'Helper program returned error code',
 'bad source range' => 'The Source port range has a first value that is greater than or equal to the second value.',
 'bandwidth usage' => 'bandwidth usage (external)',
-'bandwitherror' => 'You cannot change the bandwithsettings, with Qos being enabled. First disable Qos.<p>',
+'bandwitherror' => 'Per modificare le impostazioni devi prima disattivare il Qos.<p>',
 'bandwithsettings' => 'Bandwithsettings',
 'basic options' => 'Opzioni di base',
 'beep when ppp connects or disconnects' => 'Segnale acustico quando IPFire si connette o disconnette',
 'calamaris enable performance report' => 'Abilita report di prestazioni',
 'calamaris enable requester report' => 'Abilita report richiedente',
 'calamaris enable verbose reporting' => 'Attiva la segnalazione dettagliata',
-'calamaris high' => 'high',
+'calamaris high' => 'alta',
 'calamaris histogram resolution' => 'Risoluzione istogramma',
-'calamaris low' => 'low',
-'calamaris medium' => 'medium',
+'calamaris low' => 'bassa',
+'calamaris medium' => 'media',
 'calamaris no reports available' => 'Non ci sono report disponibili',
 'calamaris none' => 'none',
 'calamaris number of content types' => 'Numero di tipi di contenuto',
 'calamaris number of requesting hosts' => 'Numero di host che lo richiedono',
 'calamaris performance options' => 'Opzione prestazione',
 'calamaris proxy reports' => 'Report del Proxy',
-'calamaris refresh list' => 'Refresh list',
-'calamaris report interval (in minutes)' => 'Intervallo del Report in minuti',
-'calamaris report options' => 'Opzioni del Report',
-'calamaris report period' => 'Periodo del Report',
+'calamaris refresh list' => 'Aggiorna le liste',
+'calamaris report interval (in minutes)' => 'Intervallo del report in minuti',
+'calamaris report options' => 'Opzioni del report',
+'calamaris report period' => 'Periodo del report',
 'calamaris run as background task' => 'Eseguito come processo in background',
 'calamaris show usernames' => 'Mostra usernames',
 'calamaris skip archived logfiles' => 'Ignora file di registro archiviati',
 'connect' => 'OVPN Start / Connect',
 'connect the modem' => 'Connect the modem',
 'connect timeout' => 'Connect timeout:',
-'connected' => 'Connected',
-'connecting' => 'Connecting...',
+'connected' => 'Connesso',
+'connecting' => 'In connessione...',
 'connection' => 'connessione',
-'connection closed' => 'Not connected...',
+'connection closed' => 'Non connesso...',
 'connection debugging' => 'Connection debugging',
 'connection status and controlc' => 'Stato della connessione e controllo',
-'connection tracking' => 'iptables Connection Tracking',
+'connection tracking' => 'Monitoraggio connessioni iptables',
 'connection type' => 'Connection Type',
 'connection type is invalid' => 'Connection type is invalid.',
 'connections' => 'Connessioni',
 'cpu nice usage' => 'Nice CPU Usage',
 'cpu steal usage' => 'Steal CPU Usage',
 'cpu system usage' => 'System CPU Usage',
-'cpu usage per' => 'CPU Usage per',
+'cpu usage per' => 'Utilizzo CPU per',
 'cpu user usage' => 'User CPU Usage',
 'create' => 'Create',
 'create mask' => 'UNIX rights for new created files',
 'dial user password' => 'Dial user password:',
 'dial user password has been changed' => 'Dial user password has been changed.',
 'dialing mode' => 'Dialing mode:',
-'dialup red not ppp' => 'Dialup profiles can only used if <b>RED</b> is set to <b>PPP Dialup</b><BR>Check the networking setup.',
+'dialup red not ppp' => 'I profili dialup possono essere utilizzati solo se l\'interfaccia<b>RED</b> è impostata su <b>PPP Dialup</b><BR>Controlla la configurazione di rete.',
 'dialup settings' => 'Dialup Settings',
 'directory mask' => 'UNIX directory rights',
 'directory writeable' => 'directory writeable',
 'disabled' => 'disabled',
 'disconnect' => 'OVPN Stop / Disconnect',
 'disconnects' => 'Disconnects',
-'disk access per' => 'Disk Access per',
+'disk access per' => 'Accessi al disco per',
 'disk usage' => 'utilizzo del disco',
 'display' => 'Display',
 'display charset' => 'Display Charset',
 'domain name' => 'Nome del Dominio',
 'domain name suffix' => 'Suffisso del Dominio:',
 'domain not set' => 'Domain not set.',
-'donation' => 'Donation',
+'donation' => 'Donazione',
 'donation-link' => 'https://www.paypal.com/en_US/GB/i/btn/btn_donateCC_LG.gif',
-'donation-text' => '<strong>IPFire</strong> is driven and maintained by volunteers in their free time. To keep this project running costs incurred, if you like to support us we would be pleased by a small donation.',
+'donation-text' => '<strong>IPFire</strong> è sviluppato da volontari nel loro tempo libero. Per sostenere questo progetto e i relativi costi di gestione puoi effettuare una piccola donazione.',
 'done' => 'Do it',
 'dos charset' => 'DOS Charset',
 'down and up speed' => 'Enter your Down- and Uplink-Speed <br /> and then press <i>Save</i>.',
 'download certificate' => 'Download certificate',
 'download dh parameter' => 'Download Diffie-Hellman parameters',
 'download host certificate' => 'Download host certificate',
-'download new ruleset' => 'Download new ruleset',
+'download new ruleset' => 'Scarica il nuovo set di regole',
 'download pkcs12 file' => 'Download PKCS12 file',
 'download root certificate' => 'Download root certificate',
 'download tls-auth key' => 'Download tls-auth key',
 'duplicate ip bold' => 'Duplicate addresses are in <b>bold</b>',
 'duplicate mac' => 'Duplicate MAC address entered',
 'duplicate name' => 'That name is already being used, please choose another.',
-'dyn dns source choice' => 'Dynamic DNS provider(s) will receive an IP address for this IPFire from:',
+'dyn dns source choice' => 'Il provider DDNS oterr&agrave; l\'indirizzo IP per questo IPFire da:',
 'dynamic dns' => 'Dynamic DNS',
 'dynamic dns client' => 'Dynamic DNS Client',
 'e-mail address too long' => 'E-mail address is too long; it should not be longer than 40 characters.',
 'expected' => 'Expected',
 'expertoptions' => 'Expert options',
 'expires' => 'Scade',
-'export' => 'Export',
-'exportkey' => 'Export PSK',
+'export' => 'Esporta',
+'exportkey' => 'Esporta PSK',
 'external access' => 'External Access',
 'external access configuration' => 'External access configuration',
 'external access rule added' => 'External access rule added; restarting access controller',
 'extrahd' => 'ExtraHD',
 'extrahd because there is already a device mounted' => ', because there is already a device mounted',
 'extrahd cant umount' => 'Can\'t umount',
-'extrahd detected drives' => 'detected drives',
-'extrahd install or load driver' => 'If your device isn\'t listed here, you need to install or load the driver.<br />If you can see your device but no partitions you have to create them first.',
-'extrahd maybe the device is in use' => '. Maybe the device is in use',
+'extrahd detected drives' => 'Unità rilevate',
+'extrahd install or load driver' => 'Se il dispositivo non è elencato, è necessario installare o caricare il driver.<br />Se è possibile vedere il dispositivo, ma non le partizioni è necessario crearle prima.',
+'extrahd maybe the device is in use' => '. Il dispositivo potrebbe essere in uso',
 'extrahd to' => 'to',
 'extrahd to root' => 'to root',
 'extrahd unable to read' => 'Unable to read',
 'false max bandwith' => 'Maximum bandwith is false.',
 'false min bandwith' => 'Minimum bandwith is false.',
 'february' => 'Febbraio',
-'fetch ip from' => 'Guess the real public IP with help of an external server',
+'fetch ip from' => 'Ottieni l\'indirizzo IP pubblico con l\'aiuto di un server esterno',
 'filename' => 'Filename',
 'filesystem full' => 'Filesystem full',
-'fireinfo ipfire version' => 'IPFire version',
+'fireinfo ipfire version' => 'Versione IPFire',
 'fireinfo is disabled' => 'Fireinfo is disabled',
 'fireinfo is enabled' => 'Fireinfo is enabled',
-'fireinfo is submitted' => 'Your profile is submitted to the fireinfo service.',
+'fireinfo is submitted' => 'Il tuo profilo è inviato al servizio fireinfo.',
 'fireinfo is submitted button' => 'No, non voglio pi&ugrave; inviare il mio profilo',
 'fireinfo kernel version' => 'Kernel version',
-'fireinfo not submitted' => 'Your profile is not submitted to the fireinfo service.',
-'fireinfo not submitted button' => 'Yes, I want to send my profile',
-'fireinfo pakfire version' => 'Pakfire version',
-'fireinfo please enable' => 'Please enable the fireinfo service.',
-'fireinfo settings' => 'Fireinfo settings',
+'fireinfo not submitted' => 'Il tuo profilo non viene inviato al servizio fireinfo.',
+'fireinfo not submitted button' => 'Sì, voglio inviae il mio profilo',
+'fireinfo pakfire version' => 'Versione Pakfire',
+'fireinfo please enable' => 'Ti preghiamo di attivare il servizio fireinfo.',
+'fireinfo settings' => 'Impostazioni Fireinfo',
 'fireinfo system version' => 'Versione del Sistema',
-'fireinfo why descr1' => 'It is very important for the development of IPFire that you enable this',
-'fireinfo why descr2' => 'service. ',
-'fireinfo why enable' => 'Why should I enable fireinfo?',
-'fireinfo why read more' => 'Read more about the reasons.',
-'fireinfo your profile id' => 'Your profile ID',
+'fireinfo why descr1' => 'È molto importante per lo sviluppo di IPFire che questa opzione venga attivata',
+'fireinfo why descr2' => 'servizio. ',
+'fireinfo why enable' => 'Perché dovrei attivare fireinfo?',
+'fireinfo why read more' => 'Per saperne di più sulle ragioni.',
+'fireinfo your profile id' => 'L\'ID del tuo profilo',
 'firewall' => 'Firewall',
 'firewall graphs' => 'Firewall Graphs',
 'firewall hits' => 'Numero totale di visite per firewall',
 'firewall logs country' => 'Fw-Loggraphs (Country)',
 'firewall logs ip' => 'Fw-Loggraphs (IP)',
 'firewall logs port' => 'Fw-Loggraphs (Port)',
-'firewall rules' => 'Firewall Rules',
+'firewall rules' => 'Regole del firewall',
 'firewallhits' => 'firewallhits',
 'firmware' => 'Firmware',
 'firmware upload' => 'Upload Firmware/Drivers',
 'fwdfw MODE2' => 'Accept all packets',
 'fwdfw REJECT' => 'REJECT',
 'fwdfw action' => 'Action',
-'fwdfw additional' => 'Additional settings',
+'fwdfw additional' => 'Impostazioni aggiuntive',
 'fwdfw addrule' => 'Add/Edit rule:',
 'fwdfw all icmp' => 'All ICMP types',
 'fwdfw change' => 'Update',
 'fwdfw man port' => 'Port(s):',
 'fwdfw many' => 'Many',
 'fwdfw menu' => 'Firewall',
-'fwdfw movedown' => 'Move down',
-'fwdfw moveup' => 'Move up',
+'fwdfw movedown' => 'Sposta giù',
+'fwdfw moveup' => 'Sposta su',
 'fwdfw natport used' => 'The given port for NAPT is already in use by an other DNAT rule.',
-'fwdfw newrule' => 'New rule',
+'fwdfw newrule' => 'Nuova regola',
 'fwdfw p2p txt' => 'Grant/deny access to P2P networks.',
 'fwdfw pol allow' => 'Allowed',
 'fwdfw pol block' => 'Blocked',
-'fwdfw pol text' => 'Sets the default firewall behaviour for connections from local networks. You may either allow all new connections or block them by default. Connections between the local networks are also blocked in the latter mode.',
-'fwdfw pol text1' => 'Sets the default firewall behaviour for connections initiated by the firewall itself. Attention! You may lock yourself out.',
-'fwdfw pol title' => 'Default firewall behaviour',
+'fwdfw pol text' => 'Imposta il comportamento predefinito del firewall per le connessioni da reti locali. Si può consentire tutte le nuove connessioni o bloccarle per impostazione predefinita. Anche le connessioni tra le reti locali sono bloccate in quest\'ultima modalità.',
+'fwdfw pol text1' => 'Imposta il comportamento predefinito del firewall per le connessioni avviate dal firewall stesso. Attenzione! Potreste bloccare il vostro stesso accesso.',
+'fwdfw pol title' => 'Comportamento di default del firewall',
 'fwdfw prot41' => 'IPv6 Encapsulation (Protocol 41)',
 'fwdfw prot41 short' => 'IPv6 Encap',
 'fwdfw red' => 'ROSSO',
-'fwdfw reread' => 'Apply changes',
+'fwdfw reread' => 'Applica le modifiche',
 'fwdfw rule action' => 'Rule action:',
-'fwdfw rule activate' => 'Activate rule',
-'fwdfw rulepos' => 'Rule position',
-'fwdfw rules' => 'Rules',
+'fwdfw rule activate' => 'Attiva la regola',
+'fwdfw rulepos' => 'Posizione della regola',
+'fwdfw rules' => 'Regole',
 'fwdfw snat' => 'Source NAT',
 'fwdfw source' => 'Source',
-'fwdfw sourceip' => 'Source address (MAC/IP address or network):',
+'fwdfw sourceip' => 'Source address (Indirizzo MAC/IP o network):',
 'fwdfw std network' => 'Standard networks:',
 'fwdfw target' => 'Destinazione',
-'fwdfw targetip' => 'Destination address (IP address or network):',
+'fwdfw targetip' => 'Destination address (Indirizzo IP o network):',
 'fwdfw till' => 'Until:',
 'fwdfw time' => 'Time Constraints',
 'fwdfw timeframe' => 'Use time constraints',
 'fwdfw toggle' => 'Activate or deactivate',
 'fwdfw togglelog' => 'Activate or deactivate logging',
-'fwdfw use nat' => 'Use Network Address Translation (NAT)',
+'fwdfw use nat' => 'Usa Network Address Translation (NAT)',
 'fwdfw use srcport' => 'Source port:',
 'fwdfw use srv' => 'Destination port:',
 'fwdfw useless rule' => 'This rule is useless.',
 'fwhost addservicegrp' => 'Add new service group',
 'fwhost any' => 'Any',
 'fwhost attention' => 'ATTENTION',
-'fwhost back' => 'Back',
+'fwhost back' => 'Indietro',
 'fwhost blue' => 'Blu',
 'fwhost ccdhost' => 'OpenVPN clients:',
 'fwhost ccdnet' => 'OpenVPN networks:',
 'fwhost orange' => 'Orange',
 'fwhost ovpn_n2n' => 'OpenVPN Net-to-Net',
 'fwhost port' => 'Port(s)',
-'fwhost prot' => 'Protocolo',
-'fwhost reread' => 'Firewall rules need to be updated.',
-'fwhost reset' => 'Cancel',
+'fwhost prot' => 'Protocollo',
+'fwhost reread' => 'Le regole del firewall devono essere aggiornate.',
+'fwhost reset' => 'Cancella',
 'fwhost services' => 'Servizio:',
 'fwhost srv_name' => 'Nome servizio',
 'fwhost stdnet' => 'Standard networks:',
 'graph' => 'Grafico',
 'graph per' => 'per',
 'green' => 'Verde',
-'green interface' => 'Interface Verde',
+'green interface' => 'Interfaccia Verde',
 'grouptype' => 'Grouptype:',
 'guest ok' => 'allow guests to access',
 'gui settings' => 'Settaggio GUI',
 'gz with key' => 'Only an encrypted archive can be restored on this machine.',
 'hangup' => 'Disconnect',
 'hangup string' => 'Hangup:',
-'harddisk temperature' => 'Temperatura Harddisk',
+'harddisk temperature' => 'Temperatura hard disk',
 'harddisk temperature graphs' => 'Grafico HDD',
 'hardware graphs' => 'Grafico Hardware',
 'hardware support' => 'Supporto Hardware',
-'hdd temperature in' => 'Temperatura Harddisk',
+'hdd temperature in' => 'Temperatura hard disk',
 'help' => 'Help',
-'high' => 'High',
+'high' => 'Alto',
 'high memory usage' => 'High memory usage',
 'hint' => 'Hint:',
 'holdoff' => 'Holdoff time (in seconds)',
 'ids log viewer' => 'IDS log viewer',
 'ids logs' => 'IDS Logs',
 'ids preprocessor' => 'IDS preprocessor',
-'ids rules license' => 'To utilize Sourcefire VRT Certified Rules, you need to register on',
+'ids rules license' => 'Per utilizzare le regole Sourcefire VRT è necessario registrarsi su',
 'ids rules license1' => '.',
-'ids rules license2' => 'Acknowledge the license, activate your account by visiting the url you got via mail. Then go to',
-'ids rules license3' => 'press the "Generate code"-button and copy the 40 character Oinkcode into the field below.',
+'ids rules license2' => 'Accettate la licenza, attivate il vostro account visitando l\'URL ricevuto via e-mail. Poi vai a',
+'ids rules license3' => 'premete il tasto "Generate code" e copiate i 40 caratteri dell\'Oinkcode  nel campo sottostante.',
 'ids rules update' => 'Snort rules update',
 'iface' => 'Iface',
 'ignore filter' => 'Ignora filtro',
 'installed updates' => 'Installed updates:',
 'instant update' => 'Instant Update',
 'integrity' => 'Integrity:',
-'interface' => 'Interface',
-'interfaces' => 'Interfaces',
+'interface' => 'Interfaccia',
+'interfaces' => 'Interfacce',
 'internet' => 'INTERNET',
 'intrusion detection' => 'Intrusion Detection',
 'intrusion detection system' => 'Intrusion Detection System',
 'june' => 'Giugno',
 'kernel' => 'Kernel',
 'kernel logging server' => 'Kernel Logging Server',
-'kernel version' => 'Kernel version:',
+'kernel version' => 'Versione del Kernel:',
 'key stuff' => '2. Keys and Certificates',
 'keyreset' => 'Reset Keys',
 'keys' => 'keys',
 'log' => 'Log',
 'log enabled' => 'Abilito Log',
 'log level' => 'Log Level',
-'log lines per page' => 'Line per pagina',
+'log lines per page' => 'Linee per pagina',
 'log server address' => 'Syslog server:',
 'log settings' => 'Impostazioni di Log',
 'log summaries' => 'Sommario Log',
 'logs' => 'Gestione Log',
 'lookup failed' => 'Reverse lookup failed',
 'loosedirectorychecking' => 'Loosedirectorychecking',
-'low' => 'Low',
+'low' => 'Basso',
 'ls_dhcpd' => 'DHCP Server:',
-'ls_disk space' => 'Disk space:',
+'ls_disk space' => 'Spazio sul disco:',
 'ls_free/swan' => 'VPN:',
 'ls_httpd' => 'HTTP Server:',
 'ls_init' => 'Init:',
 'meaning' => 'meaning',
 'media' => 'Media',
 'media information' => 'Informazioni Media',
-'medium' => 'Medium',
+'medium' => 'Medio',
 'memory' => 'Memoria',
 'memory information' => 'informazione Memoria',
-'memory usage per' => 'Memory Usage per',
+'memory usage per' => 'Utilizzo memoria per',
 'messages logging' => 'Log settings for /var/log/messages',
 'method' => 'Method:',
 'min costs' => 'Minimum costs',
 'noservicename' => 'No Service Name entered',
 'not a valid ca certificate' => 'Not a valid CA certificate.',
 'not a valid dh key' => 'Not a valid Diffie-Hellman parameters file. Please use a length of 1024, 2048, 3072 or 4096 bits and the PKCS#3 format.',
-'not enough disk space' => 'Not enough disk space',
-'not present' => '<b>Not</b> present',
+'not enough disk space' => 'Spazio su disco insufficiente',
+'not present' => '<b>Non</b> presente',
 'not running' => 'not running',
 'not set' => 'not set',
-'notes' => 'Notes',
+'notes' => 'Note',
 'notice' => 'Notice',
 'november' => 'Novembre',
 'ntp common settings' => 'Impostazioni Comuni',
 'optional at cmd' => 'optional AT command',
 'optional data' => '3. Optional Settings:',
 'options' => 'Options',
-'options fw' => 'Firewall Options',
+'options fw' => 'Opzioni firewall',
 'optionsfw portlist hint' => 'The list of ports has to be comma separated (e.g. 137,138). You can specify up to a maximum of 15 ports per protocol.',
 'optionsfw warning' => 'Modifying these options implies restart of firewall',
 'or' => 'or',
 'organization too long' => 'Organization is too long; it should not be longer than 60 characters.',
 'original' => 'Original',
 'os level' => 'OS Level',
-'other' => 'Other',
+'other' => 'Altro',
 'other countries' => 'Other countries',
 'other login script' => 'Other login script',
 'otherip' => 'other IP',
 'outgoing firewall mode1' => 'Using this mode, only connections based on the defined rules are allowed.',
 'outgoing firewall mode2' => 'Using this mode, all connections are allowed despited off the defined ones.',
 'outgoing firewall outgoing firewall reserved groupname' => 'Please use another group name, this name is reserved.',
-'outgoing firewall p2p allow' => 'Using the P2P protocol is allowed',
-'outgoing firewall p2p deny' => 'Using the P2P protocol is forbidden',
+'outgoing firewall p2p allow' => 'L\'utilizzo del protocollo P2P &egrave; consentito',
+'outgoing firewall p2p deny' => 'L\'utilizzo del protocollo P2P &egrave; impedito',
 'outgoing firewall p2p description 1' => 'The button',
 'outgoing firewall p2p description 2' => 'means that the p2p protocol is allowed or',
 'outgoing firewall p2p description 3' => 'that the p2p protocol is denied.',
 'ovpnstatus log' => 'OVPN-Status-Log',
 'ovpnsys log' => 'OVPN-System-Log',
 'p2p block' => 'P2P networks',
-'p2p block save notice' => 'Please reload the firewall ruleset in order to apply your changes.',
+'p2p block save notice' => 'Ricarica le regole del firewall per applicare le modifiche.',
 'package failed to install' => 'Package failed to install.',
 'pagerefresh' => 'Page is beeing refreshed, please wait.',
-'pakfire accept all' => 'Do you want to install all packages?',
+'pakfire accept all' => 'Vuoi installare tutti i pacchetti?',
 'pakfire ago' => 'ago.',
 'pakfire available addons' => 'Addons disponibili:',
 'pakfire configuration' => 'Configurazione Pakfire',
 'pakfire install description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e <br /> fai clic sul segno più per installare.',
 'pakfire install package' => 'You want to install the following packages: ',
 'pakfire installed addons' => 'Addons installati:',
-'pakfire last core list update' => 'Last core list update made',
-'pakfire last package update' => 'Last packages list update made',
-'pakfire last serverlist update' => 'Last server list update made',
-'pakfire last update' => 'Last update made',
+'pakfire last core list update' => 'Ultimo aggiornamento della lista di sistema',
+'pakfire last package update' => 'Ultimo aggiornamento della lista pacchetti',
+'pakfire last serverlist update' => 'Ultimo aggiornamento della lista server',
+'pakfire last update' => 'Ultimo aggiornamento di sistema effettuato',
 'pakfire possible dependency' => ' There may be depending packages, here is a list of packages that need to be installed.',
 'pakfire register' => 'Registrati sul pakfire-server:',
 'pakfire system state' => 'Stato del Sistema',
 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
 'pakfire update daily' => 'Ricerca gli aggiornamenti una volta al giorno:',
 'pakfire updates' => 'Available Update:',
-'pakfire working' => 'Pakfire is working ... Please wait until all operations have completed successfully.',
+'pakfire working' => 'Pakfire sta lavorando... Per favore attendi il termine delle operazioni',
 'pap or chap' => 'PAP or CHAP',
 'parentclass' => 'Parentclass',
 'parentclass add' => 'Add parentclass',
 'printername' => 'Printername',
 'printing' => 'Printing',
 'printing options' => 'printing options',
-'priority' => 'Priority',
-'processes' => 'Processo',
-'profile' => 'Profile',
+'priority' => 'Priorità',
+'processes' => 'Processi',
+'profile' => 'Profilo',
 'profile deleted' => 'Profile deleted: ',
 'profile has errors' => 'Profile has errors',
 'profile made current' => 'Profile made current: ',
 'proxy no proxy extend' => 'or specify a list of not proxied destination',
 'proxy no proxy local' => 'Disallow local proxying on Blu/Verde networks',
 'proxy port' => 'Porta Proxy',
-'proxy reconfigure' => 'Save and Reload',
+'proxy reconfigure' => 'Salva e ricarica',
 'proxy reports' => 'Report del Proxy',
 'proxy reports daily' => 'Daily reports',
 'proxy reports monthly' => 'Monthly reports',
 'red' => 'Internet',
 'red1' => 'ROSSO',
 'references' => 'References',
-'refresh' => 'Refresh',
+'refresh' => 'Aggiorna',
 'refresh index page while connected' => 'Aggiorna la pagina index.cgi mentre si &eacute; collegati',
 'refresh update list' => 'Refresh update list',
 'registered user rules' => 'Sourcefire VRT rules for registered users',
 'services' => 'Servizi',
 'services settings' => 'Firewall-Impostazioni Servizi',
 'set' => 'set',
-'set time now' => 'Set time now',
+'set time now' => 'Aggiorna adesso la data',
 'set time now help' => 'Per accodare un evento di sincronizzazione in qualsiasi momento (anche durante l\'utilizzo di un programma di ripetizione), premere il pulsante Imposta ora ora. Si prega di notare che potrebbe essere necessario attendere per cinque minuti, o più, prima che si verifichi un evento di sincronizzazione.',
 'settings' => 'Impostazioni',
 'shaping add options' => 'Add service',
 'ssh is enabled' => 'SSH is enabled.  Restarting.',
 'ssh key' => 'Key',
 'ssh key size' => 'Size (bits)',
-'ssh keys' => 'Chiave basata Autenticazione pubblica',
+'ssh keys' => 'Autenticazione con la chiave pubblica SSH',
 'ssh no auth' => 'You have not allowed any authentication methods; this will stop you logging in',
 'ssh passwords' => 'Consenti autenticazione basata su password',
-'ssh port' => 'SSH porta TCP/IP 22 (default &eacute; 222)',
+'ssh port' => 'SSH sulla porta TCP/IP 22 (default &eacute; 222)',
 'ssh portfw' => 'Consenti inoltro TCP',
 'ssh tempstart15' => 'Stop SSH dopo 15 minuti',
 'ssh tempstart30' => 'Stop SSH dopo 30 minuti',
 'successfully refreshed updates list' => 'Successfully refreshed updates list.',
 'summaries kept' => 'Tenere il sommaro per',
 'sunday' => 'Domenica',
-'support donation' => 'Support the IPFire project with your donation',
+'support donation' => 'Sostieni il progetto IPFire con la tua donazione',
 'swap' => 'Swap',
-'swap usage per' => 'Swap usage per',
+'swap usage per' => 'Utilizzo swap per',
 'system' => 'Sistema',
 'system graphs' => 'Grafico sistema',
 'system has hwrng' => 'This system has got a hardware random number generator.',
 'ta key' => 'TLS-Authentification-Key',
 'telephone not set' => 'Telephone not set.',
 'template' => 'Preset',
-'template warning' => 'You have two options to set up Qos. The First, you press the save button and generate the classes and rules on your own. The second, you press the preset button and classes and rules will be set up by a template.',
+'template warning' => 'Ci sono due opzioni per impostare il Qos. La prima: si preme il pulsante Salva e poi si generano le classi e le regole da soli. La seconda: si preme il tasto di preset e le classi e le regole saranno automaticamente generate da un modello.',
 'teovpn_fragment' => 'Fragmentsize',
 'test' => 'test',
 'test email could not be sent' => 'Could not sent Testemail',
 'time server' => 'Ora Server',
 'timeout must be a number' => 'Timeout must be a number.',
 'title' => 'Title',
-'to' => 'To',
+'to' => 'Al',
 'to email adr' => 'To e-mail address',
 'to install an update' => 'To install an update please upload the .tgz.gpg file below:',
 'to warn email bad' => 'To e-mail address is not valid',
 'traffic calc time' => 'Time of calculation',
 'traffic calc time bad' => 'Calculation time is not correct',
 'traffic info messages' => 'Info messages',
-'traffic monitor' => 'Traffic Monitor',
-'traffic on' => 'Traffic on',
+'traffic monitor' => 'Monitor del traffico',
+'traffic on' => 'Traffico su',
 'traffic shaping' => 'Traffic Shaping',
 'traffic shaping settings' => 'Traffic Shaping Settings',
 'traffic warn level bad' => 'Warnlevel is not correct',
 'trafficorange' => 'DMZ',
 'trafficout' => 'Output',
 'trafficred' => 'Internet',
-'traffics' => 'Panoramica-Utilizzo',
+'traffics' => 'Panoramica utilizzo',
 'trafficsum' => 'Totals',
 'trafficto' => 'To',
 'transfer limits' => 'Transfer limits',
 'unix shell' => 'UNIX Shell',
 'unknown' => 'UNKNOWN',
 'unnamed' => 'Unnamed',
-'update' => 'Update',
+'update' => 'Aggiorna',
 'update accelerator' => 'Update Accelerator',
 'update time' => 'Aggiornamento ora:',
 'update transcript' => 'Update transcript',
 'updatedatabase' => 'Update Database with last report',
-'updates' => 'Updates',
-'updates installed' => 'Ruleset update from',
+'updates' => 'aggiornamenti',
+'updates installed' => 'Aggiornamento delle regole effettuato il',
 'updates is old1' => 'Your update file is ',
 'updates is old2' => 'days old. We recommend you update it on the <b>System>Updates</b> page.',
 'updxlrtr 3 months' => 'three months',
 'updxlrtr progress' => 'Progress',
 'updxlrtr purge' => 'Purge',
 'updxlrtr remove file' => 'Remove from cache',
-'updxlrtr save and restart' => 'Save and Restart',
+'updxlrtr save and restart' => 'Salva e riavvia',
 'updxlrtr source' => 'Source',
 'updxlrtr source checkup' => 'Source checkup',
 'updxlrtr source checkup schedule' => 'Source checkup schedule',
 'urlfilter enabled' => 'Enabled:',
 'urlfilter example' => 'Esempio: www.domain.com',
 'urlfilter example ads' => 'Esempio: www.domain.com/ads/',
-'urlfilter export blacklist' => 'Export blacklist',
-'urlfilter export error' => 'Unable to create export file',
+'urlfilter export blacklist' => 'Esporta blacklist',
+'urlfilter export error' => 'Impossibile creare il file di esportazione',
 'urlfilter expressions' => 'Expressions (one per line)',
 'urlfilter file ext block' => 'Blocco estenzione file',
 'urlfilter filename' => 'Name',
 'urlfilter load blacklist' => 'Load blacklist',
 'urlfilter local file redirection' => 'Redirezione di file locale',
 'urlfilter log' => 'urlfilter log',
-'urlfilter log summary' => 'Numero totale di URL filtrati per',
+'urlfilter log summary' => 'Numero totale di URL bloccati il',
 'urlfilter log viewer' => 'URL filter log viewer',
 'urlfilter logs' => 'LOG del filtro URL',
 'urlfilter maintenance' => 'Manutenzione del filtro URL',
 'use a pre-shared key' => 'Use a pre-shared key:',
 'use dov' => 'Use data over voice (DOV):',
 'use ibod' => 'Use Bandwidth on Demand (iBOD):',
-'use ipfire red ip' => 'The classical RED IP used by IPFire during connection',
+'use ipfire red ip' => 'L\'indirizzo IP utilizzato dall\'interfaccia RED durante la connessione',
 'use only proposed settings' => 'Use only proposed settings.',
 'used' => 'Usato',
 'used memory' => 'Memoria Usata        ',
 'virtual address' => 'Virtual Address',
 'virtual private networking' => 'Virtual Private Networking',
 'visible in browselist' => 'visible in browselist',
-'visit us at' => 'Visit us at',
+'visit us at' => 'Visita il nostro sito',
 'voldown10' => 'Decrease volume by 10',
 'voldown5' => 'Decrease volume by 5',
 'volup10' => 'Increase volume by 10',
index 9169857a564e9435a2d303ceb6c24e2afda8380e..9329f6c9e2587eeea18b0ae248e16af6080b9a80 100644 (file)
--- a/lfs/acpid
+++ b/lfs/acpid
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.0.26
+VER        = 2.0.28
 
 THISAPP    = acpid-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = f6d772e35ed907f1cc14ad1a546fd473
+$(DL_FILE)_MD5 = 0432407b5ff75ae8e08afb43052fde2b
 
 install : $(TARGET)
 
index e178219c2e3d7be6b0a2f06639af1dd4c0808988..1269e415597209142b1041e2269803541367f049 100644 (file)
--- a/lfs/bind
+++ b/lfs/bind
@@ -25,7 +25,7 @@
 
 include Config
 
-VER        = 9.11.0-P3
+VER        = 9.11.1
 
 THISAPP    = bind-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 311787a0a69345a1f1cf7869b0266bf0
+$(DL_FILE)_MD5 = c384ab071d902bac13487c1268e5a32f
 
 install : $(TARGET)
 
index 682f4998a67ebccfc9efb5701e442b1146bf01b3..c35c6705dcead15477ab0bd1eb45be4f8c18f108 100644 (file)
@@ -83,7 +83,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
 
-ifeq "$(PASS)" "1"
+ifeq "$(TOOLCHAIN)" "1"
+ ifeq "$(PASS)" "1"
        mkdir -pv /tools/ccache/bin
        ln -svf ../../bin/ccache /tools/ccache/bin/gcc
        ln -svf ../../bin/ccache /tools/ccache/bin/g++
@@ -93,13 +94,14 @@ ifeq "$(PASS)" "1"
        ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-g++
        ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-cc
        ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-c++
-endif
+ endif
 
-ifeq "$(PASS)" "2"
+ ifeq "$(PASS)" "2"
        ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-gcc
        ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-g++
        ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-cc
        ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-c++
+ endif
 endif
 
        @rm -rf $(DIR_APP)
index 644871f6a28926521e3d52fd81b0f8fb4e4345fc..324dc780892b49330afa7a9856f89cebfe9c4dcf 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2015  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 8.25
+VER        = 8.27
 
 THISAPP    = coreutils-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -57,9 +57,9 @@ CFLAGS += -fno-strict-aliasing
 
 objects =$(DL_FILE)
 
-$(DL_FILE)                      = $(DL_FROM)/$(DL_FILE)
+$(DL_FILE)= $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5                  = 070e43ba7f618d747414ef56ab248a48
+$(DL_FILE)_MD5 = 502795792c212932365e077946d353ae
 
 install : $(TARGET)
 
@@ -89,7 +89,8 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-8.25-i18n-2.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-8.27-uname-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-8.27-i18n-1.patch
        cd $(DIR_APP) && FORCE_UNSAFE_CONFIGURE=1 && ./configure $(CONFIGURE_OPTIONS)
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
index 48a4393e6110e5a1329a0dcbdf12fef162465243..4d9a752d125f74df9055c63b26575f2ba839ac38 100644 (file)
--- a/lfs/cpio
+++ b/lfs/cpio
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.11
+VER        = 2.12
 
 THISAPP    = cpio-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 1112bb6c45863468b5496ba128792f6c
+$(DL_FILE)_MD5 = fc207561a86b63862eea4b8300313e86
 
 install : $(TARGET)
 
index fdbad474be59848a0b9f24b43cba612faad5f91b..a1e68f2d195e515e71fce6a1532aeec4ebc1b834 100644 (file)
--- a/lfs/dbus
+++ b/lfs/dbus
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.0.3
+VER        = 1.11.12
 
 THISAPP    = dbus-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = dbus
-PAK_VER    = 1
+PAK_VER    = 2
 
 DEPS       = ""
 
@@ -44,7 +44,8 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ce328423db5743fe9006d39113b5324d
+$(DL_FILE)_MD5 = 76cdf92ca208652ee487b1e9dfda1093
+
 install : $(TARGET)
 
 check : $(patsubst %,$(DIR_CHK)/%,$(objects))
@@ -77,7 +78,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_SRC)/dbus*
        cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dbus-1.0.3-compile-fix-1.patch
        cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \
                                     --localstatedir=/var
        cd $(DIR_APP) && make $(MAKETUNING)
index 9a89d40bf0aa34d60e67be124e2b016292c53516..4c613a7d8b624be215e237fab9197d3240b60406 100644 (file)
--- a/lfs/dhcp
+++ b/lfs/dhcp
@@ -99,10 +99,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dhcp/dhcp-gpxe-cid.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dhcp/dhcp-stateless-DUID-LLT.patch
 
-       # Remove bundled BIND stuff.
-       # (requires newer autoconf)
-       #rm -rfv $(DIR_APP)/bind/bind.tar.gz
-       #cd $(DIR_APP) && autoreconf --verbose --force --install
+       # Help unpacking bundled BIND
+       cd $(DIR_APP) && sed -e "s/gunzip -c/&d/" -i bind/Makefile
 
        cd $(DIR_APP) && \
                ./configure \
diff --git a/lfs/elfutils b/lfs/elfutils
new file mode 100644 (file)
index 0000000..69c0083
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013  IPFire Team  <info@ipfire.org>                          #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.168
+
+THISAPP    = elfutils-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = elfutils
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 52adfa40758d0d39e5d5c57689bf38d6
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 41eabd27865a9de0569f60c7910a49e956398422..886e50d1da5d0095688a580b1e15b95cfe7d3de0 100644 (file)
--- a/lfs/file
+++ b/lfs/file
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.28
+VER        = 5.30
 
 THISAPP    = file-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3f7771424aa855f32094b49571e19b33
+$(DL_FILE)_MD5 = f35eaf05489ae566eafc4d26bb1dcd90
 
 install : $(TARGET)
 
index 4a1a4d6aab696277a65e5ddabee817cd25ef3373..07547966c0fbe6544b0d6131d39914d660623dc3 100644 (file)
@@ -75,9 +75,9 @@ else
 endif
 
 # /boot:  64MB - OFFSET
-# /    : 750MB
+# /    : 850MB
 S_BOOT := $(shell echo $$(( 131072 - $(S_OFFSET) )))
-S_ROOT := 1536000
+S_ROOT := 1740800
 
 PADDING = 100 # MB
 
diff --git a/lfs/gcc b/lfs/gcc
index e0cd10274d3ab5fb93870a71c670c59d60faa054..86524165b066f5c86d7f285d71c37662b812bdd3 100644 (file)
--- a/lfs/gcc
+++ b/lfs/gcc
 
 include Config
 
-VER        = 4.9.3
+VER        = 4.9.4
 
 GMP_VER    = 5.0.5
 MPFR_VER   = 2.4.2
 MPC_VER    = 1.0.3
 
 THISAPP    = gcc-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 
@@ -177,7 +177,7 @@ gmp-$(GMP_VER).tar.bz2 = $(DL_FROM)/gmp-$(GMP_VER).tar.bz2
 mpfr-$(MPFR_VER).tar.bz2 = $(DL_FROM)/mpfr-$(MPFR_VER).tar.bz2
 mpc-$(MPC_VER).tar.gz = $(DL_FROM)/mpc-$(MPC_VER).tar.gz
 
-$(DL_FILE)_MD5                 = 648bfba342bb41a4b5350fb685f85bc5
+$(DL_FILE)_MD5                 = 87c24a4090c1577ba817ec6882602491
 gmp-$(GMP_VER).tar.bz2_MD5     = 041487d25e9c230b0c42b106361055fe
 mpfr-$(MPFR_VER).tar.bz2_MD5   = 89e59fe665e2b3ad44a6789f40b059a0
 mpc-$(MPC_VER).tar.gz_MD5      = d6a1d5f8ddea3abd2cc3e98f58352d26
diff --git a/lfs/git b/lfs/git
index 564bc098d3c4b1e7ec654c9f5a6b7be33b0316b5..9ffd089502ee758929fa19b181beef7f23e2fb6d 100644 (file)
--- a/lfs/git
+++ b/lfs/git
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2013  IPFire Team  <info@ipfire.org>                          #
+# Copyright (C) 2017  IPFire Team  <info@ipfire.org>                          #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.7.4
+VER        = 2.12.2
 
 THISAPP    = git-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = git
-PAK_VER    = 13
+PAK_VER    = 14
 
 DEPS       = "perl-Authen-SASL perl-MIME-Base64 perl-Net-SMTP-SSL"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b0219fcb6d73104361f4fbdba3741d00
+$(DL_FILE)_MD5 = ad5ae08664c40caf074392abc301cccd
 
 install : $(TARGET)
 
diff --git a/lfs/gmp b/lfs/gmp
index 5ac0eb8c9df7480c925b657a28d050c6bfa4fa5a..f8dd6bb196c55862d9c28e868409801b80a23366 100644 (file)
--- a/lfs/gmp
+++ b/lfs/gmp
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.1.0
+VER        = 6.1.2
 
 THISAPP    = gmp-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -51,7 +51,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a9868ef2556ad6a2909babcd1428f3c7
+$(DL_FILE)_MD5 = f58fa8001d60c4c77595fbbb62b63c1d
 
 install : $(TARGET)
 
@@ -102,7 +102,7 @@ ifeq "$(MACHINE)" "i586"
        cd $(DIR_APP) && make $(MAKETUNING)
 
        -mkdir -pv /usr/lib/sse2
-       cd $(DIR_APP) && install -v -m 755 .libs/libgmp.so.10.3.0 /usr/lib/sse2
+       cd $(DIR_APP) && install -v -m 755 .libs/libgmp.so.10.3.2 /usr/lib/sse2
 endif
 
        @rm -rf $(DIR_APP)
index 0afd1ff403e629ccc78b4f2ba7612b50af18ad71..537662c33a5f6616f0ef0ca8dcd6fe1b5c8072bf 100644 (file)
--- a/lfs/gzip
+++ b/lfs/gzip
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2016  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
 
 include Config
 
-VER        = 1.3.5
+VER        = 1.8
 
 THISAPP    = gzip-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 
@@ -35,14 +35,10 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 #
 ifeq "$(ROOT)" ""
   TARGET = $(DIR_INFO)/$(THISAPP)
-  EXTRA_CONFIG = --prefix=/usr --disable-nls
-  EXTRA_MAKE =
-  EXTRA_INSTALL =
+  EXTRA_CONFIG = --prefix=/usr --disable-nls --bindir=/bin
 else
   TARGET = $(DIR_INFO)/$(THISAPP)-tools
   EXTRA_CONFIG = --prefix=/tools --disable-nls
-  EXTRA_MAKE = 
-  EXTRA_INSTALL = 
 endif
 
 ###############################################################################
@@ -53,7 +49,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3d6c191dfd2bf307014b421c12dc8469
+$(DL_FILE)_MD5 = f7caabb65cddc1a4165b398009bd05b9
 
 install : $(TARGET)
 
@@ -82,23 +78,15 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-ifeq "$(ROOT)" ""
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-security_fixes-1.patch
-endif
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure $(EXTRA_CONFIG)
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
 ifeq "$(ROOT)" ""
-       cd $(DIR_APP) && sed -i 's@"BINDIR"@/bin@g' gzexe.in
-endif
-       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
-       cd $(DIR_APP) && make $(EXTRA_INSTALL) install
-ifeq "$(ROOT)" ""
-       mv -v /usr/bin/gzip /bin
-       rm -v /usr/bin/{gunzip,zcat}
-       ln -sv gzip /bin/gunzip
-       ln -sv gzip /bin/zcat
-       ln -sv gzip /bin/compress
-       ln -sv gunzip /bin/uncompress
+       ln -sfv gzip /bin/gunzip
+       ln -sfv gzip /bin/zcat
+       mv -v /bin/{gzexe,zcmp,zdiff,zegrep} /usr/bin
+       mv -v /bin/{zfgrep,zforce,zgrep,zless,zmore,znew} /usr/bin
 endif
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 37da1ba45f3feacd446762c627699a26e295e5f0..e92d43fcb2438f4b777c6d76f88dae0b4cb6162b 100644 (file)
--- a/lfs/ipset
+++ b/lfs/ipset
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2016  IPFire Team  <info@ipfire.org>                          #
+# Copyright (C) 2017  IPFire Team  <info@ipfire.org>                          #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.29
+VER        = 6.32
 
 THISAPP    = ipset-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = fd8ea35997115c5c630eee22f0beecec
+$(DL_FILE)_MD5 = 857a5c6a6d645196865a82bf6fd7f567
 
 install : $(TARGET)
 
index 2482dda179bae065c75999564076423fbe1d7335..014086403f2353917446958c43dc0543ca4322dc 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2015  IPFire Team  <info@ipfire.de>                      #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.de>                      #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.0.22-stable
+VER        = 2.1.8-stable
 
 THISAPP    = libevent-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c4c56f986aa985677ca1db89630a2e11
+$(DL_FILE)_MD5 = f3eeaed018542963b7d2416ef1135ecc
 
 install : $(TARGET)
 
diff --git a/lfs/libevent2-compat b/lfs/libevent2-compat
new file mode 100644 (file)
index 0000000..954b7dd
--- /dev/null
@@ -0,0 +1,95 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.de>                      #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 2.0.22-stable
+
+THISAPP    = libevent-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = c4c56f986aa985677ca1db89630a2e11
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --disable-static
+
+       cd $(DIR_APP) && make $(MAKETUNING)
+
+       cd $(DIR_APP) && install -m 755 .libs/libevent-2.0.so.5.1.9 /usr/lib
+       ln -svf libevent-2.0.so.5.1.9 /usr/lib/libevent-2.0.so.5
+
+       cd $(DIR_APP) && install -m 755 .libs/libevent_core-2.0.so.5.1.9 /usr/lib
+       ln -svf libevent_core-2.0.so.5.1.9 /usr/lib/libevent_core-2.0.so.5
+
+       cd $(DIR_APP) && install -m 755 .libs/libevent_extra-2.0.so.5.1.9 /usr/lib
+       ln -svf libevent_extra-2.0.so.5.1.9 /usr/lib/libevent_extra-2.0.so.5
+
+       cd $(DIR_APP) && install -m 755 .libs/libevent_openssl-2.0.so.5.1.9 /usr/lib
+       ln -svf libevent_openssl-2.0.so.5.1.9 /usr/lib/libevent_openssl-2.0.so.5
+
+       cd $(DIR_APP) && install -m 755 .libs/libevent_pthreads-2.0.so.5.1.9 /usr/lib
+       ln -svf libevent_pthreads-2.0.so.5.1.9 /usr/lib/libevent_pthreads-2.0.so.5
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 7eed5c816c0bd2941cf1556bbc73963071dbb679..963fdf9d2e47f4d107c9706e0264df25537dc3c2 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.5.0
+VER        = 3.1.0
 
 THISAPP    = libvirt-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -45,7 +45,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 001af1ca2545971c6b46628678fd4afa
+$(DL_FILE)_MD5 = e31aa7e0a1635e72fdc140c10a677895
 
 install : $(TARGET)
 check : $(patsubst %,$(DIR_CHK)/%,$(objects))
index d7b21e6d17021663a73e7693d24f42978b9a0ec4..3c85a23bad155d0700b04ed85952f3e99a709bc9 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
@@ -40,10 +40,10 @@ CXXFLAGS   =
 PAK_VER    = 73
 DEPS      = ""
 
-KERNEL_ARCH = $(MACHINE)
-
 ifeq "$(MACHINE)" "i586"
        KERNEL_ARCH = i386
+else
+       KERNEL_ARCH = $(MACHINE)
 endif
 
 VERSUFIX=ipfire$(KCFG)
@@ -56,9 +56,19 @@ else
        HEADERS_PREFIX = /usr
 endif
 
-ifeq "$(MACHINE_TYPE)" "arm"
+ifeq "$(MACHINE)" "armv5tel"
        HEADERS_ARCH=arm
-else
+endif
+
+ifeq "$(MACHINE)" "aarch64"
+       HEADERS_ARCH=arm64
+endif
+
+ifeq "$(MACHINE)" "x86_64"
+       HEADERS_ARCH=x86
+endif
+
+ifeq "$(MACHINE)" "i586"
        HEADERS_ARCH=x86
 endif
 
index 0d50103e580e4635ef66f018c3d4cec17f82a3f0..476f146eb9cb3b8df97f2a26bbbaeb1b00594165 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2016  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
 
 include Config
 
-VER        = 3.9.1
+VER        = 3.12.1
 
 THISAPP    = logrotate-$(VER)
-DL_FILE    = logrotate_$(VER).orig.tar.gz
+DL_FILE    = logrotate-$(VER).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4492b145b6d542e4a2f41e77fa199ab0
+$(DL_FILE)_MD5 = 066b49891bad2849d5044c1952613ea6
 
 install : $(TARGET)
 
@@ -70,6 +70,10 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+
+       cd $(DIR_APP) && ./autogen.sh
+       cd $(DIR_APP) && ./configure --prefix=/usr
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        mkdir -pv /etc/logrotate.d
index 7144d07f3ba0f4ef3b60567d6a06959fcaa32264..9f9a0db5508620137c748114d4e515c543026b28 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2015  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.4.1
+VER        = 7.4.3
 
 THISAPP    = logwatch-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a0c3d8721f877bdcd4a9089eb1b4691b
+$(DL_FILE)_MD5 = 22bd22841caa45f12c605abc3e0c2b09
 
 install : $(TARGET)
 
diff --git a/lfs/ltrace b/lfs/ltrace
new file mode 100644 (file)
index 0000000..21b43d3
--- /dev/null
@@ -0,0 +1,85 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013  IPFire Team  <info@ipfire.org>                          #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.7.3
+
+THISAPP    = ltrace-$(VER)
+DL_FILE    = ltrace_$(VER).orig.tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = ltrace
+PAK_VER    = 1
+
+DEPS       = "elfutils"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = b3dd199af8f18637f7d4ef97fdfb9d14
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \
+               --disable-werror
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/m4 b/lfs/m4
index 932cb6d519e7f46e0ac7d7013fa7fd0bc3cd066d..55cc4c3ce5c2149ac431ea5176a90d1bddcdbed9 100644 (file)
--- a/lfs/m4
+++ b/lfs/m4
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.4.17
+VER        = 1.4.18
 
 THISAPP    = m4-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -51,7 +51,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 12a3c829301a4fd6586a57d3fcf196dc
+$(DL_FILE)_MD5 = 730bb15d96fffe47e148d1e09235af82
 
 install : $(TARGET)
 
index bdf083ba5b46bfb4ecd46b3e41b33868992c450d..f729b8fe2f672c4c71c0c3681be2473bf7191071 100644 (file)
--- a/lfs/mpfr
+++ b/lfs/mpfr
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2016  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.1.3
+VER        = 3.1.5
 
 THISAPP    = mpfr-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6969398cd2fbc56a6af570b5273c56a9
+$(DL_FILE)_MD5 = c4ac246cf9795a4491e7766002cd528f
 
 install : $(TARGET)
 
@@ -70,7 +70,6 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/mpfr-3.1.3-upstream_fixes-1.patch
        cd $(DIR_APP) && $(CONFIGURE_ARGS) ./configure --prefix=/usr \
                        --enable-thread-safe --disable-nls
        cd $(DIR_APP) && make $(MAKETUNING)
index 2ecb1a5f8786a2e1dcbc289d0865c12c6438517c..34e8444f95019c0d717c7cf586cf31a23f0f43a7 100644 (file)
--- a/lfs/nano
+++ b/lfs/nano
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2016  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.7.3
+VER        = 2.8.1
 
 THISAPP    = nano-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = nano
-PAK_VER    = 14
+PAK_VER    = 15
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 007ba6321212d3ec38f46236465b6ea8
+$(DL_FILE)_MD5 = 0dec96d839657e7f1a8396d7dbb19c07
 
 install : $(TARGET)
 
@@ -87,7 +87,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
-       cd $(DIR_APP) && install -v -m644 -D doc/nanorc.sample /etc/nano/nanorc.sample
+       cd $(DIR_APP) && install -v -m644 -D doc/sample.nanorc /etc/nano/sample.nanorc
        ln -sf /usr/bin/nano /usr/bin/pico
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 1e59457bdaf9f82ad9e1459ce1783c2d74ef7fe6..12fb342090d28c70d8171748a75f7fed8e84b4b5 100644 (file)
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = netsnmpd
-PAK_VER    = 4
+PAK_VER    = 5
 DEPS       = ""
 
 ###############################################################################
@@ -83,15 +83,22 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                --with-sys-location="localhost" \
                --with-logfile="/var/log/snmpd.log" \
                --with-persistent-directory="/var/net-snmp" \
+               --with-mib-modules="host agentx smux \
+               ucd-snmp/diskio tcp-mib udp-mib mibII/mta_sendmail \
+               ip-mib/ipv4InterfaceTable ip-mib/ipv6InterfaceTable \
+               ip-mib/ipAddressPrefixTable/ipAddressPrefixTable \
+               ip-mib/ipDefaultRouterTable/ipDefaultRouterTable \
+               ip-mib/ipv6ScopeZoneIndexTable ip-mib/ipIfStatsTable \
+               sctp-mib rmon-mib etherlike-mib ucd-snmp/lmsensorsMib"
                --libdir=/usr/lib \
                --sysconfdir="/etc"
        cd $(DIR_APP) && make 
        cd $(DIR_APP) && make install
-       install -v -m644 $(DIR_SRC)/config/netsnmpd/snmpd.conf /etc/snmpd.conf
+       install -v -m 644 $(DIR_SRC)/config/netsnmpd/snmpd.conf /etc/snmpd.conf
        install -v -m 644 $(DIR_SRC)/config/backup/includes/netsnmpd \
                /var/ipfire/backup/addons/includes/netsnmpd
 
-       #install initscripts
+       # install initscripts
        $(call INSTALL_INITSCRIPT,netsnmpd)
 
        ln -sf ../init.d/netsnmpd /etc/rc.d/rc3.d/S65netsnmpd
index 5907f5cfef73bbd34c3b4896b8e1168f21b75509..92ac903161974f079c1e021f32c16af5ebac506f 100644 (file)
--- a/lfs/nmap
+++ b/lfs/nmap
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2016 IPFire Team  <info@ipfire.org>                           #
+# Copyright (C) 2017 IPFire Team  <info@ipfire.org>                           #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.47
+VER        = 7.40
 
 THISAPP    = nmap-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = nmap
-PAK_VER    = 7
+PAK_VER    = 8
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = edfe81f6763223c0a29bfa15a8526e2a
+$(DL_FILE)_MD5 = 9c5a28bfb46228bade82b238408c065e
 
 install : $(TARGET)
 
index cece0074ef228331146e8d62b536c6b5d0593d9c..01b4e758b34a40fe7ad295c5915ea09f045f4fc2 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.0.2k
+VER        = 1.0.2l
 
 THISAPP    = openssl-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -87,7 +87,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = f965fc0bf01bf882b31314b61391ae65
+$(DL_FILE)_MD5 = f85123cd390e864dfbe517e7616e6566
 
 install : $(TARGET)
 
index 96e37f7d479b21cf94800594e15604bd85d54ca9..b916b8c70d55e2108a4c1bbca1bb60fbe901953e 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.3.7
+VER        = 2.3.16
 
 THISAPP    = openvpn-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5b819f7cd0b875f55f20a947224967aa
+$(DL_FILE)_MD5 = 69f5b0bf048a6e723a29745d158707be
 
 install : $(TARGET)
 
index 7b724df97e7ecdeeda0e54cfe92f59f820f5969c..49656f1bab68b2a1c82c07afca419a8a21be8b63 100644 (file)
--- a/lfs/pcre
+++ b/lfs/pcre
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2016  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 8.39
+VER        = 8.40
 
 THISAPP    = pcre-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e3fca7650a0556a2647821679d81f585
+$(DL_FILE)_MD5 = 41a842bf7dcecd6634219336e2167d1d
 
 install : $(TARGET)
 
diff --git a/lfs/php b/lfs/php
index 8139e2128400e4c6ad77061aad91fbb9e8ac3b27..1f33f0d7ea4fe92dfb17ddd7eb0a316b8903f06e 100644 (file)
--- a/lfs/php
+++ b/lfs/php
@@ -79,47 +79,49 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) $(DIR_SRC)/idn-* $(DIR_SRC)/Log-* $(DIR_SRC)/package.xml && \
                cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+
        cd $(DIR_APP) && ./configure --prefix=/usr \
-                                                                                           --sysconfdir=/etc \
-                                                                                           --with-apxs2 \
-                                                                                           --enable-force-cgi-redirect \
-                                                                                           --enable-discard-path \
-                                                                                           --enable-fastcgi \
-                                                                                           --with-config-file-path=/etc \
-                                                                                           --with-openssl \
-                                                                                           --with-kerberos \
-                                                                                           --with-zlib \
-                                                                                           --enable-bcmath \
-                                                                                           --with-bz2 \
-                                                                                           --enable-calendar \
-                                                                                           --with-curl \
-                                                                                           --with-curlwrappers \
-                                                                                           --enable-dba=shared \
-                                                                                           --with-gdbm \
-                                                                                           --with-db4 \
-                                                                                           --with-inifile \
-                                                                                           --with-flatfile \
-                                                                                           --enable-exif \
-                                                                                           --enable-ftp \
-                                                                                           --with-openssl-dir=/usr \
-                                                                                           --with-gd=/usr \
-                                                                                           --with-jpeg-dir=/usr \
-                                                                                           --with-png-dir=/usr \
-                                                                                           --with-zlib-dir=/usr \
-                                                                                           --with-freetype-dir=/usr \
-                                                                                           --with-gettext \
-                                                                                           --with-gmp \
-                                                                                           --enable-mbstring \
-                                                                                           --with-mysql \
-                                                                                           --with-mysql-sock=/var/run/mysql \
-                                                                                           --with-ncurses \
-                                                                                           --with-pdo-mysql \
-                                                                                           --with-pdo-sqlite \
-                                                                                           --with-readline \
-                                                                                           --enable-sockets \
-                                                                                           --with-xsl \
-                                                                                           --with-iconv \
-                                                                                           --enable-zip
+            --sysconfdir=/etc \
+            --with-apxs2 \
+            --enable-force-cgi-redirect \
+            --enable-discard-path \
+            --enable-fastcgi \
+            --with-config-file-path=/etc \
+            --with-openssl \
+            --with-kerberos \
+            --with-zlib \
+            --enable-bcmath \
+            --with-bz2 \
+            --enable-calendar \
+            --with-curl \
+            --with-curlwrappers \
+            --enable-dba=shared \
+            --with-gdbm \
+            --with-db4 \
+            --with-inifile \
+            --with-flatfile \
+            --enable-exif \
+            --enable-ftp \
+            --with-openssl-dir=/usr \
+            --with-gd=/usr \
+            --with-jpeg-dir=/usr \
+            --with-png-dir=/usr \
+            --with-zlib-dir=/usr \
+            --with-freetype-dir=/usr \
+            --with-gettext \
+            --with-gmp \
+            --enable-mbstring \
+            --with-mysql \
+            --with-mysql-sock=/var/run/mysql \
+            --with-ncurses \
+            --with-pdo-mysql \
+            --with-pdo-sqlite \
+            --with-readline \
+            --enable-sockets \
+            --with-xsl \
+            --with-iconv \
+            --enable-zip
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        cd $(DIR_APP) && install -v -m644 $(DIR_SRC)/config/php/php.ini /etc/php.ini
index ed95102fd77d708595316ee911f09f29f722cd5c..3c3b8b27ed2ed60c8575808915310a0597e7745b 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.29
+VER        = 0.29.1
 
 THISAPP    = pkg-config-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 77f27dce7ef88d0634d0d6f90e03a77f
+$(DL_FILE)_MD5 = f739a28cae4e0ca291f82d1d41ef107d
 
 install : $(TARGET)
 
index 68210623c8274aaf86476fcf947ace34d6964a78..0fe493ba97d86f2fda76ca87d11a0c5e813a7d25 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.6.0
+VER        = 3.6.1
 
 THISAPP    = Python-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = python3
-PAK_VER    = 1
+PAK_VER    = 2
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 82b143ebbf4514d7e05876bed7a6b1f5
+$(DL_FILE)_MD5 = 692b4fc3a2ba0d54d1495d4ead5b0b5c
 
 install : $(TARGET)
 
diff --git a/lfs/python3-libvirt b/lfs/python3-libvirt
new file mode 100644 (file)
index 0000000..6539b15
--- /dev/null
@@ -0,0 +1,83 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 3.1.0
+
+THISAPP    = libvirt-python-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+SUP_ARCH   = i586 x86_64
+PROG       = python3-libvirt
+PAK_VER    = 1
+
+DEPS       = "libvirt python3"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 322185007e2e70f2e862fc55e9970d10
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && python3 setup.py install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index b85c797364cd5c84944ca81e9f52f3f3dfe61c91..5d7c8943dd4ea07795c6eeab2aeac9226e185c13 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2015  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2016  IPFire Team  <info@ipfire.org>                          #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.5.5
+VER        = 1.6.0
 
 THISAPP    = rrdtool-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d8b3dcb3d193c2d6ad0a282bde69ee11
+$(DL_FILE)_MD5 = 4ff52cc44b935b02d2742e6875094da5
 
 install : $(TARGET)
 
index 2714321f40d4bb670414cbd25162491f00b80d27..b29db020914dfcf37537e2db059cb9fdaca2320e 100644 (file)
--- a/lfs/samba
+++ b/lfs/samba
@@ -54,7 +54,7 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
-dist: 
+dist:
        @$(PAK)
 
 ###############################################################################
@@ -78,8 +78,61 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
 
-       # Apply Redhat CVE patches
+       # Apply patches from RHEL6
+       # Upstream patches
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch
+       # Additional Red Hat patches
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.2.0pre1-pipedir.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.2.0pre1-grouppwd.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.2.5-inotify.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-idmapdebug.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-docs.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-nss_info_doc.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.12-dns.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.12-pam_radio_type.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.19-valid_users_doc.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-gecos.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-glusterfs.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-libsmbclient.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-bug-1117059.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-bug-1192211.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_force_group.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-7560-v3-6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-preparation-v3-6.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2110-v3-6.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2111-v3-6.patch
@@ -87,6 +140,21 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2115-v3-6.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2118-v3-6.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5370-v3-6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2126-v3.6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2125-v3.6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2017-7494-v3-6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/doc-update.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch
+
 
        cd $(DIR_APP)/source3 && ./autogen.sh
        cd $(DIR_APP)/source3 && ./configure \
@@ -102,10 +170,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                --with-libsmbclient \
                --with-libsmbsharemodes \
                --with-sendfile-support \
-               --without-smbwrapper \
-               --with-mmap \
                --with-fhs \
-               --with-vfs \
                --with-winbind \
                --disable-swat \
                --enable-cups \
@@ -119,8 +184,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        #cd $(DIR_APP)/source3 && install -v -m755 nsswitch/libnss_winbind.so /lib
        #cd $(DIR_APP)/source3 && ln -v -sf libnss_winbind.so /lib/libnss_winbind.so.2
        #cd $(DIR_APP)/source3 && ln -v -sf libnss_wins.so /lib/libnss_wins.so.2
+       -mkdir -p /var/ipfire/samba
        cd $(DIR_APP)/source3 && install -v -m644 ../examples/smb.conf.default /var/ipfire/samba
-       -mkdir -p /var/ipfire/samba     
        cp -vrf $(DIR_SRC)/config/samba/* /var/ipfire/samba/
        chown nobody:nobody -R /var/ipfire/samba/
        cp -vfp /var/ipfire/samba/default.global /var/ipfire/samba/global
index 2d2a6459de9424e683b7d643f7af5c9710aa6db5..1256fd365ebadac5bcfaff416048e57765e3fc76 100644 (file)
@@ -127,6 +127,7 @@ endif
        -mkdir -pv /var/log/{counter,calamaris}
        chown nobody.nobody /var/log/calamaris
        touch /var/log/{btmp,lastlog,wtmp}
+       chmod -v 600 /var/log/btmp
        chgrp -v utmp /var/log/lastlog
        chmod -v 664 /var/log/lastlog
 
index fffa9af0f2cc96ae663a39b125affe5f7de82b13..7f6a95b6e38c0589cd982d53bfb64f4b5c6d7ab2 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.5.1
+VER        = 5.5.2
 
 THISAPP    = strongswan-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4eba9474f7dc6c8c8d7037261358e68d
+$(DL_FILE)_MD5 = 546f7e5346b754f5946ff1282702ceb9
 
 install : $(TARGET)
 
diff --git a/lfs/tor b/lfs/tor
index 4da2c7c733f0ee62b9f4147ab1d01358dbd583f4..8613e03aa4ff661941d5e6fa08c0c831b069721f 100644 (file)
--- a/lfs/tor
+++ b/lfs/tor
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.2.9.9
+VER        = 0.3.0.7
 
 THISAPP    = tor-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tor
-PAK_VER    = 19
+PAK_VER    = 20
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d9d8a2d1f65c151eb2b448f6a93fc326
+$(DL_FILE)_MD5 = fee12ede9172905ba3258db871b6c499
 
 install : $(TARGET)
 
index f361f24f0202bcb9547f38c484e2582afe49653f..c40f0ad9a8885d0c69f02b3e70efc5a8de8b2a9f 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.6.1
+VER        = 1.6.2
 
 THISAPP    = unbound-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = aa808f33d94a36c9312d1b8ad8805e14
+$(DL_FILE)_MD5 = 5a5d0cdf7164957ff2e7498db1758f01
 
 install : $(TARGET)
 
@@ -78,7 +78,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                        --with-pidfile=/var/run/unbound.pid \
                        --with-rootkey-file=/var/lib/unbound/root.key \
                        --disable-static \
-                       --with-libevent
+                       --with-libevent \
+                       --enable-event-api
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
 
index f479d7e9f9fab3d42eebcf641e0080c075b1aa92..7853dd0b4fa27dd9e6ceb26cf74bfc58b27b6e69 100644 (file)
--- a/lfs/unzip
+++ b/lfs/unzip
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2016  IPFire Team  <info@ipfire.org>                          #
 #                                                                             #
 # 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        #
 
 include Config
 
-VER        = 552
+VER        = 60
 
 THISAPP    = unzip$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/unzip-5.52
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ###############################################################################
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 9d23919999d6eac9217d1f41472034a9
+$(DL_FILE)_MD5 = 62b490407489521db863b523a7f86375
 
 install : $(TARGET)
 
@@ -70,12 +70,14 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && make -f unix/Makefile clean
+       cd $(DIR_APP)/unix && ./configure
 ifeq "$(MACHINE)" "i586"
-       cd $(DIR_APP) && make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 linux
+       cd $(DIR_APP) && make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 generic
 else
        # ARM/x86_64 cannot use the x86 32 bit assembly code.
        cd $(DIR_APP) && make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 linux_noasm
 endif
-       cd $(DIR_APP) && make prefix=/usr install
+       cd $(DIR_APP) && make prefix=/usr MANDIR=/usr/share/man/man1 -f unix/Makefile install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 1c1333b536edc1ba35b3af0761028d987b37a92d..376a1e99971f2b2ad45ae39c9d1905bacd2935a7 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.11
+VER        = 1.17
 
 THISAPP    = vnstat-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a5a113f9176cd61fb954f2ba297f5fdb
+$(DL_FILE)_MD5 = 8de1c7e40806509943804bb4b26f5409
 
 install : $(TARGET)
 
@@ -73,9 +73,16 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && make all $(MAKETUNING)                                                                         LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
+
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/etc
+
+       cd $(DIR_APP) && make all $(MAKETUNING)         LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
        cd $(DIR_APP) && make install
        sed -i 's|eth0|green0|g' /etc/vnstat.conf
        sed -i 's|/var/lib/vnstat|/var/log/vnstat|g' /etc/vnstat.conf
+       sed -i 's|/var/log/vnstat/vnstat.log|/var/log/vnstat.log|g' /etc/vnstat.conf
+       sed -i 's|/var/run/vnstat/vnstat.pid|/var/run/vnstat.pid|g' /etc/vnstat.conf
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index 7d3665c73ce0cf060e0865c8cffbf07700c6758a..7e25ce9963e8a0a595a10b8424a0af8b7f47f6c7 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -25,7 +25,7 @@
 NAME="IPFire"                                                  # Software name
 SNAME="ipfire"                                                 # Short name
 VERSION="2.19"                                                 # Version number
-CORE="110"                                                     # Core Level (Filename)
+CORE="111"                                                     # Core Level (Filename)
 PAKFIRE_CORE="110"                                             # Core Level (PAKFIRE)
 GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`                   # Git Branch
 SLOGAN="www.ipfire.org"                                                # Software slogan
@@ -279,8 +279,6 @@ buildtoolchain() {
     LOGFILE="$BASEDIR/log/_build.toolchain.log"
     export LOGFILE
 
-    local ORG_PATH=$PATH
-    export PATH="/tools/ccache/bin:/tools/bin:$PATH"
     lfsmake1 ccache                    PASS=1
     lfsmake1 binutils                  PASS=1
     lfsmake1 gcc                       PASS=1
@@ -316,7 +314,6 @@ buildtoolchain() {
     lfsmake1 xz
     lfsmake1 fake-environ
     lfsmake1 cleanup-toolchain         PASS=2
-    export PATH=$ORG_PATH
 }
 
 buildbase() {
@@ -491,6 +488,7 @@ buildipfire() {
   ipfiremake nettle
   ipfiremake libevent
   ipfiremake libevent2
+  ipfiremake libevent2-compat
   ipfiremake expat
   ipfiremake unbound
   ipfiremake gnutls
@@ -841,6 +839,8 @@ buildipfire() {
   ipfiremake sendEmail
   ipfiremake sysbench
   ipfiremake strace
+  ipfiremake elfutils
+  ipfiremake ltrace
   ipfiremake ipfire-netboot
   ipfiremake lcdproc
   ipfiremake bitstream
@@ -881,6 +881,7 @@ buildipfire() {
   ipfiremake libpciaccess
   ipfiremake libyajl
   ipfiremake libvirt
+  ipfiremake python3-libvirt
   ipfiremake freeradius
   ipfiremake perl-common-sense
   ipfiremake perl-inotify2
index 3c3a3b42aeb579065d949f2f719f17f9969a699c..5af7718ffb4c60ec33b05cb57f7d5dfd98472609 100644 (file)
@@ -1,10 +1,10 @@
 
 ifeq "$(CFLAGS)" ""
-  $(error CLFAGS not defined.)
+  $(error CFLAGS not defined)
 endif
 
 ifeq "$(TOOLS_DIR)" ""
-  $(error TOOLS_DIR not defined.)
+  $(error TOOLS_DIR not defined)
 endif
 
 LIB = libpakfire_preload.so
index a2cdc66d257404c57cdad5013cda247bbfcbe751..6c1391d71f2d6c6f3a73136684ac5a2160a200c7 100644 (file)
@@ -79,7 +79,6 @@ dhcpcd_down()
        # Only if RED_TYPE=DHCP update /var/ipfire/red
        if [ "$RED_TYPE" == "DHCP" ]; then
                logger -p local0.info -t dhcpcd.exe[$$] "${interface} has been brought down"
-               rm -f /var/ipfire/red/active
                run_subdir ${rc_base}/init.d/networking/red.down/
        fi
 }
index 00e739cab14aedff772b88fc6fe9bc003897e29a..20567ce512d7a40ec0c27f3f8f9e05ff26faf481 100644 (file)
@@ -457,6 +457,8 @@ case "${1}" in
                ;;
 
        stop)
+               rm -f /var/ipfire/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf}
+
                if [ "$TYPE" == "STATIC" ]; then
                        boot_mesg "Stopping default gateway ${GATEWAY}..."
                        ip route del default via ${GATEWAY} >/dev/null 2>&1
@@ -521,7 +523,6 @@ case "${1}" in
                ## Disable vnstat collection
                /usr/bin/vnstat -u -i ${DEVICE} -r --disable > /dev/null 2>&1
 
-               rm -f /var/ipfire/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf}
                exit 0;
                ;;
 esac
index a1763a1fed7564532991e176ee542fc6125674c2..7437d93b835c6e4c9f76835b95ea7f6cdeecc3ea 100644 (file)
@@ -436,12 +436,12 @@ can_resolve_root() {
 enable_dnssec() {
        local status=$(unbound-control get_option val-permissive-mode)
 
-       # Don't do anything if DNSSEC is already activated
-       [ "${status}" = "no" ] && return 0
-
        # Log DNSSEC status
        echo "on" > /var/ipfire/red/dnssec-status
 
+       # Don't do anything if DNSSEC is already activated
+       [ "${status}" = "no" ] && return 0
+
        # Activate DNSSEC and flush cache with any stale and unvalidated data
        unbound-control -q set_option val-permissive-mode: no
        unbound-control -q flush_zone .
index ee24c43a19a68e52cedf4ad652f46d1ffe8e9255..b32a4cb4acada5a7fc1c96d589c7b353ae2fc6b0 100644 (file)
@@ -62,7 +62,11 @@ function wpa_supplicant_make_config() {
                        --wpa-mode="${line[4]}" \
                        --ssid="${line[5]}" \
                        --psk="${line[6]}" \
-                       --priority="${line[7]}"
+                       --priority="${line[7]}" \
+                       --auth-mode="${line[8]}" \
+                       --anonymous-identity="${line[9]}" \
+                       --identity="${line[10]}" \
+                       --password="${line[11]}"
 
                items=$(( ${items} + 1 ))
 
@@ -82,12 +86,16 @@ function wpa_supplicant_config_line() {
        local config=${2}
        shift 2
 
+       local anonymous_identity
        local auth_alg
+       local auth_mode
+       local identity
        local proto
        local key_mgmt
        local pairwise
        local group
        local mode
+       local password
        local priority
        local psk
        local ssid
@@ -98,9 +106,21 @@ function wpa_supplicant_config_line() {
 
        while [ $# -gt 0 ]; do
                case "${1}" in
+                       --anonymous-identity=*)
+                               anonymous_identity=${1#--anonymous-identity=}
+                               ;;
+                       --auth-mode=*)
+                               auth_mode=${1#--auth-mode=}
+                               ;;
+                       --identity=*)
+                               identity=${1#--identity=}
+                               ;;
                        --mode=*)
                                mode=${1#--mode=}
                                ;;
+                       --password=*)
+                               password=${1#--password=}
+                               ;;
                        --priority=*)
                                priority=${1#--priority=}
                                ;;
@@ -121,6 +141,9 @@ function wpa_supplicant_config_line() {
        done
 
        case "${mode}" in
+               EAP)
+                       key_mgmt="WPA-EAP"
+                       ;;
                WPA2)
                        auth_alg="OPEN"
                        proto="RSN"
@@ -149,7 +172,7 @@ function wpa_supplicant_config_line() {
                        ;;
        esac
 
-       if [ "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
+       if [ "${mode}" = "EAP" -o "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
                case "${wpa_mode}" in
                        CCMP-CCMP)
                                pairwise="CCMP"
@@ -205,6 +228,24 @@ function wpa_supplicant_config_line() {
                        echo "  priority=${priority}"
                fi
 
+               # EAP
+               if [ "${mode}" = "EAP" ]; then
+                       if [ -n "${auth_mode}" ]; then
+                               echo "  eap=${auth_mode}"
+                       else
+                               echo "  eap=PEAP TTLS"
+                       fi
+
+                       if [ "${auth_mode}" = "TTLS" -a -n "${anonymous_identity}" ]; then
+                               echo "  anonymous_identity=\"${anonymous_identity}\""
+                       fi
+
+                       if [ -n "${identity}" -a -n "${password}" ]; then
+                               echo "  identity=\"${identity}\""
+                               echo "  password=\"${password}\""
+                       fi
+               fi
+
                echo "}"
                echo
        ) >> ${config}
index 38701686e8743ec841e54f58ec8cc25b293eb0b4..c806d54a9b0145aa2f0a11c848bc158f6e70a481 100644 (file)
@@ -3,7 +3,7 @@
  * Get the list from IPTABLES -L
  * 
  */
-         
+
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -17,11 +17,11 @@ int main(void)
 {
        if (!(initsetuid()))
                exit(1);
-       
-       safe_system("/sbin/iptables -L -v -n > /srv/web/ipfire/html/iptables.txt");
-       safe_system("/sbin/iptables -L -v -n -t nat > /srv/web/ipfire/html/iptablesnat.txt");
-       safe_system("/sbin/iptables -t mangle -L -v -n > /srv/web/ipfire/html/iptablesmangle.txt");
-       safe_system("chown nobody.nobody /srv/web/ipfire/html/iptables.txt /srv/web/ipfire/html/iptablesnat.txt /srv/web/ipfire/html/iptablesmangle.txt");
+
+       safe_system("/sbin/iptables -L -v -n > /var/tmp/iptables.txt");
+       safe_system("/sbin/iptables -L -v -n -t nat > /var/tmp/iptablesnat.txt");
+       safe_system("/sbin/iptables -t mangle -L -v -n > /var/tmp/iptablesmangle.txt");
+       safe_system("chown nobody.nobody /var/tmp/iptables.txt /var/tmp/iptablesnat.txt /var/tmp/iptablesmangle.txt");
        
        return 0;
 }
index 7499e94c9a7f384e6d0fd809203d32163cb84e96..204753640a5bea3f42f783d3bcae3f05cad9b82c 100644 (file)
@@ -173,6 +173,9 @@ void turn_connection_off (char *name) {
 
        // Reload, so the connection is dropped.
        ipsec_reload();
+
+       // Reload the IPsec block chain
+       safe_system("/usr/lib/firewall/ipsec-block >/dev/null");
 }
 
 int main(int argc, char *argv[]) {
index 8b5c749bef335afb8cce1ba976ed753d9405c706..bf4e5a6d5869a9208dc80f39e1ab75ab325e31a1 100644 (file)
 . /opt/pakfire/lib/functions.sh
 extract_files
 useradd messagebus
-start_service ${NAME}
+
+# Create start links
+ln -svf  ../init.d/messagebus /etc/rc.d/rc3.d/S15messagebus
+ln -svf  ../init.d/messagebus /etc/rc.d/rc0.d/K85messagebus
+ln -svf  ../init.d/messagebus /etc/rc.d/rc6.d/K85messagebus
+
+start_service messagebus
index f5b8042aed4512c366cad4e79a80d219368c36f7..49fc30e300fa9cdd87e476f148de80a6c06e4024 100644 (file)
@@ -23,4 +23,8 @@
 #
 . /opt/pakfire/lib/functions.sh
 stop_service ${NAME}
+
+# Remove start files
+rm -rf /etc/rc.d/rc*.d/*messagebus
+
 remove_files
similarity index 72%
rename from src/patches/coreutils-8.25-i18n-2.patch
rename to src/patches/coreutils-8.27-i18n-1.patch
index ad984ec87321d03743b3c8d0e9e9ddd96b41f756..4318905c6fa6aac0449c8141527adb92d6eba3c6 100644 (file)
@@ -1,13 +1,37 @@
 Submitted by:            DJ Lucas (dj_AT_linuxfromscratch_DOT_org)
-Date:                    2016-02-09
-Initial Package Version: 8.25
+Date:                    2017-03-12
+Initial Package Version: 8.27
 Upstream Status:         Rejected
-Origin:                  Based on Suse's i18n patches at https://build.opensuse.org/package/view_file/Base:System/coreutils/coreutils-i18n.patch
-Description:             Fixes several i18n issues with various Coreutils programs
+Origin:                  Based on Fedora's i18n patches at
+                         http://pkgs.fedoraproject.org/cgit/rpms/coreutils.git/tree/
+Description:             Fixes i18n issues with various Coreutils programs
 
-diff -Naurp coreutils-8.25-orig/lib/linebuffer.h coreutils-8.25/lib/linebuffer.h
---- coreutils-8.25-orig/lib/linebuffer.h       2016-01-01 07:45:55.000000000 -0600
-+++ coreutils-8.25/lib/linebuffer.h    2016-02-08 19:07:10.298944609 -0600
+diff -Naurp coreutils-8.27-orig/bootstrap.conf coreutils-8.27/bootstrap.conf
+--- coreutils-8.27-orig/bootstrap.conf 2017-03-07 23:34:06.000000000 -0600
++++ coreutils-8.27/bootstrap.conf      2017-03-11 23:47:38.068058445 -0600
+@@ -152,6 +152,7 @@ gnulib_modules="
+   maintainer-makefile
+   malloc-gnu
+   manywarnings
++  mbfile
+   mbrlen
+   mbrtowc
+   mbsalign
+diff -Naurp coreutils-8.27-orig/configure.ac coreutils-8.27/configure.ac
+--- coreutils-8.27-orig/configure.ac   2017-02-26 08:52:29.000000000 -0600
++++ coreutils-8.27/configure.ac        2017-03-11 23:47:38.068058445 -0600
+@@ -429,6 +429,8 @@ fi
+ # I'm leaving it here for now.  This whole thing needs to be modernized...
+ gl_WINSIZE_IN_PTEM
++gl_MBFILE
++
+ gl_HEADER_TIOCGWINSZ_IN_TERMIOS_H
+ if test $gl_cv_sys_tiocgwinsz_needs_termios_h = no && \
+diff -Naurp coreutils-8.27-orig/lib/linebuffer.h coreutils-8.27/lib/linebuffer.h
+--- coreutils-8.27-orig/lib/linebuffer.h       2017-01-01 16:35:38.000000000 -0600
++++ coreutils-8.27/lib/linebuffer.h    2017-03-11 23:47:13.089286391 -0600
 @@ -21,6 +21,11 @@
  
  # include <stdio.h>
@@ -30,9 +54,293 @@ diff -Naurp coreutils-8.25-orig/lib/linebuffer.h coreutils-8.25/lib/linebuffer.h
  };
  
  /* Initialize linebuffer LINEBUFFER for use. */
-diff -Naurp coreutils-8.25-orig/src/cut.c coreutils-8.25/src/cut.c
---- coreutils-8.25-orig/src/cut.c      2016-01-13 05:08:59.000000000 -0600
-+++ coreutils-8.25/src/cut.c   2016-02-08 19:07:10.300944616 -0600
+diff -Naurp coreutils-8.27-orig/lib/mbfile.c coreutils-8.27/lib/mbfile.c
+--- coreutils-8.27-orig/lib/mbfile.c   1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/lib/mbfile.c        2017-03-11 23:47:38.069058397 -0600
+@@ -0,0 +1,3 @@
++#include <config.h>
++#define MBFILE_INLINE _GL_EXTERN_INLINE
++#include "mbfile.h"
+diff -Naurp coreutils-8.27-orig/lib/mbfile.h coreutils-8.27/lib/mbfile.h
+--- coreutils-8.27-orig/lib/mbfile.h   1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/lib/mbfile.h        2017-03-11 23:47:38.069058397 -0600
+@@ -0,0 +1,255 @@
++/* Multibyte character I/O: macros for multi-byte encodings.
++   Copyright (C) 2001, 2005, 2009-2017 Free Software Foundation, Inc.
++
++   This program is free software: you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but 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, see <http://www.gnu.org/licenses/>.  */
++
++/* Written by Mitsuru Chinen <mchinen@yamato.ibm.com>
++   and Bruno Haible <bruno@clisp.org>.  */
++
++/* The macros in this file implement multi-byte character input from a
++   stream.
++
++   mb_file_t
++     is the type for multibyte character input stream, usable for variable
++     declarations.
++
++   mbf_char_t
++     is the type for multibyte character or EOF, usable for variable
++     declarations.
++
++   mbf_init (mbf, stream)
++     initializes the MB_FILE for reading from stream.
++
++   mbf_getc (mbc, mbf)
++     reads the next multibyte character from mbf and stores it in mbc.
++
++   mb_iseof (mbc)
++     returns true if mbc represents the EOF value.
++
++   Here are the function prototypes of the macros.
++
++   extern void          mbf_init (mb_file_t mbf, FILE *stream);
++   extern void          mbf_getc (mbf_char_t mbc, mb_file_t mbf);
++   extern bool          mb_iseof (const mbf_char_t mbc);
++ */
++
++#ifndef _MBFILE_H
++#define _MBFILE_H 1
++
++#include <assert.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <string.h>
++
++/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
++   <wchar.h>.
++   BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
++   <wchar.h>.  */
++#include <stdio.h>
++#include <time.h>
++#include <wchar.h>
++
++#include "mbchar.h"
++
++#ifndef _GL_INLINE_HEADER_BEGIN
++ #error "Please include config.h first."
++#endif
++_GL_INLINE_HEADER_BEGIN
++#ifndef MBFILE_INLINE
++# define MBFILE_INLINE _GL_INLINE
++#endif
++
++struct mbfile_multi {
++  FILE *fp;
++  bool eof_seen;
++  bool have_pushback;
++  mbstate_t state;
++  unsigned int bufcount;
++  char buf[MBCHAR_BUF_SIZE];
++  struct mbchar pushback;
++};
++
++MBFILE_INLINE void
++mbfile_multi_getc (struct mbchar *mbc, struct mbfile_multi *mbf)
++{
++  size_t bytes;
++
++  /* If EOF has already been seen, don't use getc.  This matters if
++     mbf->fp is connected to an interactive tty.  */
++  if (mbf->eof_seen)
++    goto eof;
++
++  /* Return character pushed back, if there is one.  */
++  if (mbf->have_pushback)
++    {
++      mb_copy (mbc, &mbf->pushback);
++      mbf->have_pushback = false;
++      return;
++    }
++
++  /* Before using mbrtowc, we need at least one byte.  */
++  if (mbf->bufcount == 0)
++    {
++      int c = getc (mbf->fp);
++      if (c == EOF)
++        {
++          mbf->eof_seen = true;
++          goto eof;
++        }
++      mbf->buf[0] = (unsigned char) c;
++      mbf->bufcount++;
++    }
++
++  /* Handle most ASCII characters quickly, without calling mbrtowc().  */
++  if (mbf->bufcount == 1 && mbsinit (&mbf->state) && is_basic (mbf->buf[0]))
++    {
++      /* These characters are part of the basic character set.  ISO C 99
++         guarantees that their wide character code is identical to their
++         char code.  */
++      mbc->wc = mbc->buf[0] = mbf->buf[0];
++      mbc->wc_valid = true;
++      mbc->ptr = &mbc->buf[0];
++      mbc->bytes = 1;
++      mbf->bufcount = 0;
++      return;
++    }
++
++  /* Use mbrtowc on an increasing number of bytes.  Read only as many bytes
++     from mbf->fp as needed.  This is needed to give reasonable interactive
++     behaviour when mbf->fp is connected to an interactive tty.  */
++  for (;;)
++    {
++      /* We don't know whether the 'mbrtowc' function updates the state when
++         it returns -2, - this is the ISO C 99 and glibc-2.2 behaviour - or
++         not - amended ANSI C, glibc-2.1 and Solaris 2.7 behaviour.  We
++         don't have an autoconf test for this, yet.
++         The new behaviour would allow us to feed the bytes one by one into
++         mbrtowc.  But the old behaviour forces us to feed all bytes since
++         the end of the last character into mbrtowc.  Since we want to retry
++         with more bytes when mbrtowc returns -2, we must backup the state
++         before calling mbrtowc, because implementations with the new
++         behaviour will clobber it.  */
++      mbstate_t backup_state = mbf->state;
++
++      bytes = mbrtowc (&mbc->wc, &mbf->buf[0], mbf->bufcount, &mbf->state);
++
++      if (bytes == (size_t) -1)
++        {
++          /* An invalid multibyte sequence was encountered.  */
++          /* Return a single byte.  */
++          bytes = 1;
++          mbc->wc_valid = false;
++          break;
++        }
++      else if (bytes == (size_t) -2)
++        {
++          /* An incomplete multibyte character.  */
++          mbf->state = backup_state;
++          if (mbf->bufcount == MBCHAR_BUF_SIZE)
++            {
++              /* An overlong incomplete multibyte sequence was encountered.  */
++              /* Return a single byte.  */
++              bytes = 1;
++              mbc->wc_valid = false;
++              break;
++            }
++          else
++            {
++              /* Read one more byte and retry mbrtowc.  */
++              int c = getc (mbf->fp);
++              if (c == EOF)
++                {
++                  /* An incomplete multibyte character at the end.  */
++                  mbf->eof_seen = true;
++                  bytes = mbf->bufcount;
++                  mbc->wc_valid = false;
++                  break;
++                }
++              mbf->buf[mbf->bufcount] = (unsigned char) c;
++              mbf->bufcount++;
++            }
++        }
++      else
++        {
++          if (bytes == 0)
++            {
++              /* A null wide character was encountered.  */
++              bytes = 1;
++              assert (mbf->buf[0] == '\0');
++              assert (mbc->wc == 0);
++            }
++          mbc->wc_valid = true;
++          break;
++        }
++    }
++
++  /* Return the multibyte sequence mbf->buf[0..bytes-1].  */
++  mbc->ptr = &mbc->buf[0];
++  memcpy (&mbc->buf[0], &mbf->buf[0], bytes);
++  mbc->bytes = bytes;
++
++  mbf->bufcount -= bytes;
++  if (mbf->bufcount > 0)
++    {
++      /* It's not worth calling memmove() for so few bytes.  */
++      unsigned int count = mbf->bufcount;
++      char *p = &mbf->buf[0];
++
++      do
++        {
++          *p = *(p + bytes);
++          p++;
++        }
++      while (--count > 0);
++    }
++  return;
++
++eof:
++  /* An mbchar_t with bytes == 0 is used to indicate EOF.  */
++  mbc->ptr = NULL;
++  mbc->bytes = 0;
++  mbc->wc_valid = false;
++  return;
++}
++
++MBFILE_INLINE void
++mbfile_multi_ungetc (const struct mbchar *mbc, struct mbfile_multi *mbf)
++{
++  mb_copy (&mbf->pushback, mbc);
++  mbf->have_pushback = true;
++}
++
++typedef struct mbfile_multi mb_file_t;
++
++typedef mbchar_t mbf_char_t;
++
++#define mbf_init(mbf, stream)                                           \
++  ((mbf).fp = (stream),                                                 \
++   (mbf).eof_seen = false,                                              \
++   (mbf).have_pushback = false,                                         \
++   memset (&(mbf).state, '\0', sizeof (mbstate_t)),                     \
++   (mbf).bufcount = 0)
++
++#define mbf_getc(mbc, mbf) mbfile_multi_getc (&(mbc), &(mbf))
++
++#define mbf_ungetc(mbc, mbf) mbfile_multi_ungetc (&(mbc), &(mbf))
++
++#define mb_iseof(mbc) ((mbc).bytes == 0)
++
++#ifndef _GL_INLINE_HEADER_BEGIN
++ #error "Please include config.h first."
++#endif
++_GL_INLINE_HEADER_BEGIN
++
++#endif /* _MBFILE_H */
+diff -Naurp coreutils-8.27-orig/m4/mbfile.m4 coreutils-8.27/m4/mbfile.m4
+--- coreutils-8.27-orig/m4/mbfile.m4   1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/m4/mbfile.m4        2017-03-11 23:47:38.070058349 -0600
+@@ -0,0 +1,14 @@
++# mbfile.m4 serial 7
++dnl Copyright (C) 2005, 2008-2017 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl autoconf tests required for use of mbfile.h
++dnl From Bruno Haible.
++
++AC_DEFUN([gl_MBFILE],
++[
++  AC_REQUIRE([AC_TYPE_MBSTATE_T])
++  :
++])
+diff -Naurp coreutils-8.27-orig/src/cut.c coreutils-8.27/src/cut.c
+--- coreutils-8.27-orig/src/cut.c      2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/cut.c   2017-03-11 23:47:59.526048471 -0600
 @@ -28,6 +28,11 @@
  #include <assert.h>
  #include <getopt.h>
@@ -594,205 +902,318 @@ diff -Naurp coreutils-8.25-orig/src/cut.c coreutils-8.25/src/cut.c
      }
  
    if (optind == argc)
-diff -Naurp coreutils-8.25-orig/src/expand.c coreutils-8.25/src/expand.c
---- coreutils-8.25-orig/src/expand.c   2016-01-01 07:48:50.000000000 -0600
-+++ coreutils-8.25/src/expand.c        2016-02-08 19:07:10.301944619 -0600
-@@ -37,12 +37,34 @@
+diff -Naurp coreutils-8.27-orig/src/expand.c coreutils-8.27/src/expand.c
+--- coreutils-8.27-orig/src/expand.c   2017-02-26 15:42:25.000000000 -0600
++++ coreutils-8.27/src/expand.c        2017-03-11 23:49:06.758133530 -0600
+@@ -37,6 +37,9 @@
  #include <stdio.h>
  #include <getopt.h>
  #include <sys/types.h>
 +
-+/* Get mbstate_t, mbrtowc(), wcwidth(). */
-+#if HAVE_WCHAR_H
-+# include <wchar.h>
-+#endif
-+
-+/* Get iswblank(). */
-+#if HAVE_WCTYPE_H
-+# include <wctype.h>
-+#endif
++#include <mbfile.h>
 +
  #include "system.h"
- #include "error.h"
- #include "fadvise.h"
- #include "quote.h"
+ #include "die.h"
  #include "xstrndup.h"
+@@ -100,19 +103,41 @@ expand (void)
+ {
+   /* Input stream.  */
+   FILE *fp = next_file (NULL);
++  mb_file_t mbf;
++  mbf_char_t c;
++  /* True if the starting locale is utf8.  */
++  bool using_utf_locale;
++
++  /* True if the first file contains BOM header.  */
++  bool found_bom;
++  using_utf_locale=check_utf_locale();
+   if (!fp)
+     return;
++  mbf_init (mbf, fp);
++  found_bom=check_bom(fp,&mbf);
  
-+/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
-+   installation; work around this configuration error.  */
-+#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
-+# define MB_LEN_MAX 16
-+#endif
+-  while (true)
++  if (using_utf_locale == false && found_bom == true)
++  {
++    /*try using some predefined locale */
 +
-+/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t.  */
-+#if HAVE_MBRTOWC && defined mbstate_t
-+# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
-+#endif
++    if (set_utf_locale () != 0)
+     {
+-      /* Input character, or EOF.  */
+-      int c;
++      error (EXIT_FAILURE, errno, _("cannot set UTF-8 locale"));
++    }
++  }
 +
- /* The official name of this program (e.g., no 'g' prefix).  */
- #define PROGRAM_NAME "expand"
  
-@@ -357,6 +379,142 @@ expand (void)
++  if (found_bom == true)
++  {
++    print_bom();
++  }
++
++  while (true)
++    {
+       /* If true, perform translations.  */
+       bool convert = true;
+-
+       /* The following variables have valid values only when CONVERT
+          is true:  */
+@@ -122,17 +147,48 @@ expand (void)
+       /* Index in TAB_LIST of next tab stop to examine.  */
+       size_t tab_index = 0;
+-
+       /* Convert a line of text.  */
+       do
+         {
+-          while ((c = getc (fp)) < 0 && (fp = next_file (fp)))
+-            continue;
++          while (true) {
++            mbf_getc (c, mbf);
++            if ((mb_iseof (c)) && (fp = next_file (fp)))
++              {
++                mbf_init (mbf, fp);
++                if (fp!=NULL)
++                {
++                  if (check_bom(fp,&mbf)==true)
++                  {
++                    /*Not the first file - check BOM header*/
++                    if (using_utf_locale==false && found_bom==false)
++                    {
++                      /*BOM header in subsequent file but not in the first one. */
++                      error (EXIT_FAILURE, errno, _("combination of files with and without BOM header"));
++                    }
++                  }
++                  else
++                  {
++                    if(using_utf_locale==false && found_bom==true)
++                    {
++                      /*First file conatined BOM header - locale was switched to UTF
++                      /*all subsequent files should contain BOM. */
++                      error (EXIT_FAILURE, errno, _("combination of files with and without BOM header"));
++                    }
++                  }
++                }
++                continue;
++              }
++            else
++              {
++                break;
++              }
++            }
++
+           if (convert)
+             {
+-              if (c == '\t')
++              if (mb_iseq (c, '\t'))
+                 {
+                   /* Column the next input tab stop is on.  */
+                   uintmax_t next_tab_column;
+@@ -151,32 +207,34 @@ expand (void)
+                     if (putchar (' ') < 0)
+                       die (EXIT_FAILURE, errno, _("write error"));
+-                  c = ' ';
++                  mb_setascii (&c, ' ');
+                 }
+-              else if (c == '\b')
++              else if (mb_iseq (c, '\b'))
+                 {
+                   /* Go back one column, and force recalculation of the
+                      next tab stop.  */
+                   column -= !!column;
+                   tab_index -= !!tab_index;
+                 }
+-              else
++              /* A leading control character could make us trip over.  */
++              else if (!mb_iscntrl (c))
+                 {
+-                  column++;
++                  column += mb_width (c);
+                   if (!column)
+                     die (EXIT_FAILURE, 0, _("input line is too long"));
+                 }
+-              convert &= convert_entire_line || !! isblank (c);
++              convert &= convert_entire_line || mb_isblank (c);
+             }
+-          if (c < 0)
++          if (mb_iseof (c))
+             return;
+-          if (putchar (c) < 0)
++          mb_putc (c, stdout);
++          if (ferror (stdout))
+             die (EXIT_FAILURE, errno, _("write error"));
+         }
+-      while (c != '\n');
++      while (!mb_iseq (c, '\n'));
      }
  }
  
-+#if HAVE_MBRTOWC
-+static void
-+expand_multibyte (void)
+diff -Naurp coreutils-8.27-orig/src/expand-common.c coreutils-8.27/src/expand-common.c
+--- coreutils-8.27-orig/src/expand-common.c    2017-03-01 11:22:55.000000000 -0600
++++ coreutils-8.27/src/expand-common.c 2017-03-11 23:49:06.757133570 -0600
+@@ -18,6 +18,7 @@
+ #include <stdio.h>
+ #include <sys/types.h>
++#include <mbfile.h>
+ #include "system.h"
+ #include "die.h"
+ #include "error.h"
+@@ -105,6 +106,119 @@ set_extend_size (uintmax_t tabval)
+   return ok;
+ }
++extern int
++set_utf_locale (void)
 +{
-+  FILE *fp;                   /* Input strem. */
-+  mbstate_t i_state;          /* Current shift state of the input stream. */
-+  mbstate_t i_state_bak;      /* Back up the I_STATE. */
-+  mbstate_t o_state;          /* Current shift state of the output stream. */
-+  char buf[MB_LEN_MAX + BUFSIZ];  /* For spooling a read byte sequence. */
-+  char *bufpos = buf;                 /* Next read position of BUF. */
-+  size_t buflen = 0;          /* The length of the byte sequence in buf. */
-+  wchar_t wc;                 /* A gotten wide character. */
-+  size_t mblength;            /* The byte size of a multibyte character
-+                                 which shows as same character as WC. */
-+  int tab_index = 0;          /* Index in `tab_list' of next tabstop. */
-+  int column = 0;             /* Column on screen of the next char. */
-+  int next_tab_column;                /* Column the next tab stop is on. */
-+  int convert = 1;            /* If nonzero, perform translations. */
-+
-+  fp = next_file ((FILE *) NULL);
-+  if (fp == NULL)
-+    return;
++      /*try using some predefined locale */
++      const char* predef_locales[] = {"C.UTF8","en_US.UTF8","en_GB.UTF8"};
 +
-+  memset (&o_state, '\0', sizeof(mbstate_t));
-+  memset (&i_state, '\0', sizeof(mbstate_t));
++      const int predef_locales_count=3;
++      for (int i=0;i<predef_locales_count;i++)
++        {
++          if (setlocale(LC_ALL,predef_locales[i])!=NULL)
++          {
++            break;
++          }
++          else if (i==predef_locales_count-1)
++          {
++            return 1;
++            error (EXIT_FAILURE, errno, _("cannot set UTF-8 locale"));
++          }
++        }
++        return 0;
++}
 +
-+  for (;;)
-+    {
-+      /* Refill the buffer BUF. */
-+      if (buflen < MB_LEN_MAX && !feof(fp) && !ferror(fp))
-+      {
-+        memmove (buf, bufpos, buflen);
-+        buflen += fread (buf + buflen, sizeof(char), BUFSIZ, fp);
-+        bufpos = buf;
-+      }
++extern bool
++check_utf_locale(void)
++{
++  char* locale = setlocale (LC_CTYPE , NULL);
++  if (locale == NULL)
++  {
++    return false;
++  }
++  else if (strcasestr(locale, "utf8") == NULL && strcasestr(locale, "utf-8") == NULL)
++  {
++    return false;
++  }
++  return true;
++}
 +
-+      /* No character is left in BUF. */
-+      if (buflen < 1)
-+      {
-+        fp = next_file (fp);
++extern bool
++check_bom(FILE* fp, mb_file_t *mbf)
++{
++  int c;
 +
-+        if (fp == NULL)
-+          break;              /* No more files. */
-+        else
-+          {
-+            memset (&i_state, '\0', sizeof(mbstate_t));
-+            continue;
-+          }
-+      }
 +
-+      /* Get a wide character. */
-+      i_state_bak = i_state;
-+      mblength = mbrtowc (&wc, bufpos, buflen, &i_state);
++  c=fgetc(fp);
 +
-+      switch (mblength)
-+      {
-+      case (size_t)-1:        /* illegal byte sequence. */
-+      case (size_t)-2:
-+        mblength = 1;
-+        i_state = i_state_bak;
-+        if (convert)
-+          {
-+            ++column;
-+            if (convert_entire_line == 0 && !isblank(*bufpos))
-+              convert = 0;
-+          }
-+        putchar (*bufpos);
-+        break;
-+
-+      case 0:         /* null. */
-+        mblength = 1;
-+        if (convert && convert_entire_line == 0)
-+          convert = 0;
-+        putchar ('\0');
-+        break;
-+
-+      default:
-+        if (wc == L'\n')   /* LF. */
-+          {
-+            tab_index = 0;
-+            column = 0;
-+            convert = 1;
-+            putchar ('\n');
-+          }
-+        else if (wc == L'\t' && convert)      /* Tab. */
-+          {
-+            if (tab_size == 0)
-+              {
-+                /* Do not let tab_index == first_free_tab;
-+                   stop when it is 1 less. */
-+                while (tab_index < first_free_tab - 1
-+                    && column >= tab_list[tab_index])
-+                  tab_index++;
-+                next_tab_column = tab_list[tab_index];
-+                if (tab_index < first_free_tab - 1)
-+                  tab_index++;
-+                if (column >= next_tab_column)
-+                  next_tab_column = column + 1;
-+              }
-+            else
-+              next_tab_column = column + tab_size - column % tab_size;
++  /*test BOM header of the first file */
++  mbf->bufcount=0;
++  if (c == 0xEF)
++  {
++    c=fgetc(fp);
++  }
++  else
++  {
++    if (c != EOF)
++    {
++      ungetc(c,fp);
++    }
++    return false;
++  }
 +
-+            while (column < next_tab_column)
-+              {
-+                putchar (' ');
-+                ++column;
-+              }
-+          }
-+        else  /* Others. */
-+          {
-+            if (convert)
-+              {
-+                if (wc == L'\b')
-+                  {
-+                    if (column > 0)
-+                      --column;
-+                  }
-+                else
-+                  {
-+                    int width;                /* The width of WC. */
-+
-+                    width = wcwidth (wc);
-+                    column += (width > 0) ? width : 0;
-+                    if (convert_entire_line == 0 && !iswblank(wc))
-+                      convert = 0;
-+                  }
-+              }
-+            fwrite (bufpos, sizeof(char), mblength, stdout);
-+          }
-+      }
-+      buflen -= mblength;
-+      bufpos += mblength;
++  if (c == 0xBB)
++  {
++    c=fgetc(fp);
++  }
++  else
++  {
++    if ( c!= EOF )
++    {
++      mbf->buf[0]=(unsigned char) 0xEF;
++      mbf->bufcount=1;
++      ungetc(c,fp);
++      return false;
++    }
++    else
++    {
++      ungetc(0xEF,fp);
++      return false;
 +    }
++  }
++  if (c == 0xBF)
++  {
++    mbf->bufcount=0;
++    return true;
++  }
++  else
++  {
++    if (c != EOF)
++    {
++      mbf->buf[0]=(unsigned char) 0xEF;
++      mbf->buf[1]=(unsigned char) 0xBB;
++      mbf->bufcount=2;
++      ungetc(c,fp);
++      return false;
++    }
++    else
++    {
++      mbf->buf[0]=(unsigned char) 0xEF;
++      mbf->bufcount=1;
++      ungetc(0xBB,fp);
++      return false;
++    }
++  }
++  return false;
 +}
-+#endif
 +
- int
- main (int argc, char **argv)
- {
-@@ -421,7 +579,12 @@ main (int argc, char **argv)
-   file_list = (optind < argc ? &argv[optind] : stdin_argv);
--  expand ();
-+#if HAVE_MBRTOWC
-+  if (MB_CUR_MAX > 1)
-+    expand_multibyte ();
-+  else
-+#endif
-+    expand ();
-   if (have_read_stdin && fclose (stdin) != 0)
-     error (EXIT_FAILURE, errno, "-");
-diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
---- coreutils-8.25-orig/src/fold.c     2016-01-01 07:48:50.000000000 -0600
-+++ coreutils-8.25/src/fold.c  2016-02-08 19:07:10.302944622 -0600
-@@ -22,11 +22,33 @@
++extern void
++print_bom(void)
++{
++  putc (0xEF, stdout);
++  putc (0xBB, stdout);
++  putc (0xBF, stdout);
++}
++
+ /* Add the comma or blank separated list of tab stops STOPS
+    to the list of tab stops.  */
+ extern void
+diff -Naurp coreutils-8.27-orig/src/expand-common.h coreutils-8.27/src/expand-common.h
+--- coreutils-8.27-orig/src/expand-common.h    2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/expand-common.h 2017-03-11 23:49:06.758133530 -0600
+@@ -34,6 +34,18 @@ extern size_t max_column_width;
+ /* The desired exit status.  */
+ extern int exit_status;
++extern int
++set_utf_locale (void);
++
++extern bool
++check_utf_locale(void);
++
++extern bool
++check_bom(FILE* fp, mb_file_t *mbf);
++
++extern void
++print_bom(void);
++
+ /* Add tab stop TABVAL to the end of 'tab_list'.  */
+ extern void
+ add_tab_stop (uintmax_t tabval);
+diff -Naurp coreutils-8.27-orig/src/fold.c coreutils-8.27/src/fold.c
+--- coreutils-8.27-orig/src/fold.c     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/fold.c  2017-03-11 23:49:30.982169404 -0600
+@@ -22,12 +22,34 @@
  #include <getopt.h>
  #include <sys/types.h>
  
@@ -807,6 +1228,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
 +#endif
 +
  #include "system.h"
+ #include "die.h"
  #include "error.h"
  #include "fadvise.h"
  #include "xdectoint.h"
@@ -826,7 +1248,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
  #define TAB_WIDTH 8
  
  /* The official name of this program (e.g., no 'g' prefix).  */
-@@ -34,20 +56,41 @@
+@@ -35,20 +57,41 @@
  
  #define AUTHORS proper_name ("David MacKenzie")
  
@@ -872,7 +1294,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
    {"spaces", no_argument, NULL, 's'},
    {"width", required_argument, NULL, 'w'},
    {GETOPT_HELP_OPTION_DECL},
-@@ -75,6 +118,7 @@ Wrap input lines in each FILE, writing t
+@@ -76,6 +119,7 @@ Wrap input lines in each FILE, writing t
  
        fputs (_("\
    -b, --bytes         count bytes rather than columns\n\
@@ -880,7 +1302,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
    -s, --spaces        break at spaces\n\
    -w, --width=WIDTH   use WIDTH columns instead of 80\n\
  "), stdout);
-@@ -92,7 +136,7 @@ Wrap input lines in each FILE, writing t
+@@ -93,7 +137,7 @@ Wrap input lines in each FILE, writing t
  static size_t
  adjust_column (size_t column, char c)
  {
@@ -889,7 +1311,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
      {
        if (c == '\b')
          {
-@@ -115,30 +159,14 @@ adjust_column (size_t column, char c)
+@@ -116,30 +160,14 @@ adjust_column (size_t column, char c)
     to stdout, with maximum line length WIDTH.
     Return true if successful.  */
  
@@ -922,7 +1344,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
  
    fadvise (istream, FADVISE_SEQUENTIAL);
  
-@@ -168,6 +196,15 @@ fold_file (char const *filename, size_t
+@@ -169,6 +197,15 @@ fold_file (char const *filename, size_t
                bool found_blank = false;
                size_t logical_end = offset_out;
  
@@ -938,7 +1360,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
                /* Look for the last blank. */
                while (logical_end)
                  {
-@@ -214,11 +251,221 @@ fold_file (char const *filename, size_t
+@@ -215,11 +252,220 @@ fold_file (char const *filename, size_t
        line_out[offset_out++] = c;
      }
  
@@ -1033,39 +1455,38 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
 +        }
 +
 +rescan:
-+      if (operating_mode == byte_mode)                        /* byte mode */
++      if (convfail)
++        increment = 1;
++      else if (wc == L'\n')
++        {
++          /* preserve newline */
++          fwrite (line_out, sizeof(char), offset_out, stdout);
++          START_NEW_LINE;
++          continue;
++        }
++      else if (operating_mode == byte_mode)                  /* byte mode */
 +        increment = mblength;
 +      else if (operating_mode == character_mode)        /* character mode */
 +        increment = 1;
-+      else                                                /* column mode */
++      else                                                 /* column mode */
 +        {
-+          if (convfail)
-+            increment = 1;
-+          else
++          switch (wc)
 +            {
-+              switch (wc)
-+                {
-+                case L'\n':
-+                  fwrite (line_out, sizeof(char), offset_out, stdout);
-+                  START_NEW_LINE;
-+                  continue;
-+
-+                case L'\b':
-+                  increment = (column > 0) ? -1 : 0;
-+                  break;
++            case L'\b':
++              increment = (column > 0) ? -1 : 0;
++              break;
 +
-+                case L'\r':
-+                  increment = -1 * column;
-+                  break;
++            case L'\r':
++              increment = -1 * column;
++              break;
 +
-+                case L'\t':
-+                  increment = 8 - column % 8;
-+                  break;
++            case L'\t':
++              increment = 8 - column % 8;
++              break;
 +
-+                default:
-+                  increment = wcwidth (wc);
-+                  increment = (increment < 0) ? 0 : increment;
-+                }
++            default:
++              increment = wcwidth (wc);
++              increment = (increment < 0) ? 0 : increment;
 +            }
 +        }
 +
@@ -1146,7 +1567,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
 +
 +  if (istream == NULL)
 +    {
-+      error (0, errno, "%s", quotef (filename));
++      error (0, errno, "%s", filename);
 +      return 1;
 +    }
 +
@@ -1161,7 +1582,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
    if (ferror (istream))
      {
        error (0, saved_errno, "%s", quotef (filename));
-@@ -251,7 +498,8 @@ main (int argc, char **argv)
+@@ -252,7 +498,8 @@ main (int argc, char **argv)
  
    atexit (close_stdout);
  
@@ -1171,7 +1592,7 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
  
    while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
      {
-@@ -260,7 +508,15 @@ main (int argc, char **argv)
+@@ -261,7 +508,15 @@ main (int argc, char **argv)
        switch (optc)
          {
          case 'b':             /* Count bytes rather than columns. */
@@ -1188,10 +1609,10 @@ diff -Naurp coreutils-8.25-orig/src/fold.c coreutils-8.25/src/fold.c
            break;
  
          case 's':             /* Break at word boundaries. */
-diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
---- coreutils-8.25-orig/src/join.c     2016-01-13 05:08:59.000000000 -0600
-+++ coreutils-8.25/src/join.c  2016-02-08 19:07:10.303944625 -0600
-@@ -22,18 +22,32 @@
+diff -Naurp coreutils-8.27-orig/src/join.c coreutils-8.27/src/join.c
+--- coreutils-8.27-orig/src/join.c     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/join.c  2017-03-11 23:47:13.091286290 -0600
+@@ -22,19 +22,33 @@
  #include <sys/types.h>
  #include <getopt.h>
  
@@ -1206,6 +1627,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
 +#endif
 +
  #include "system.h"
+ #include "die.h"
  #include "error.h"
  #include "fadvise.h"
  #include "hard-locale.h"
@@ -1225,7 +1647,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "join"
  
-@@ -135,10 +149,12 @@ static struct outlist outlist_head;
+@@ -136,10 +150,12 @@ static struct outlist outlist_head;
  /* Last element in 'outlist', where a new element can be added.  */
  static struct outlist *outlist_end = &outlist_head;
  
@@ -1242,7 +1664,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
  
  /* If nonzero, check that the input is correctly ordered. */
  static enum
-@@ -275,13 +291,14 @@ xfields (struct line *line)
+@@ -276,13 +292,14 @@ xfields (struct line *line)
    if (ptr == lim)
      return;
  
@@ -1260,7 +1682,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
      {
        /* Skip leading blanks before the first field.  */
        while (field_sep (*ptr))
-@@ -305,6 +322,147 @@ xfields (struct line *line)
+@@ -306,6 +323,147 @@ xfields (struct line *line)
    extract_field (line, ptr, lim - ptr);
  }
  
@@ -1408,7 +1830,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
  static void
  freeline (struct line *line)
  {
-@@ -326,56 +484,133 @@ keycmp (struct line const *line1, struct
+@@ -327,56 +485,133 @@ keycmp (struct line const *line1, struct
          size_t jf_1, size_t jf_2)
  {
    /* Start of field to compare in each file.  */
@@ -1539,8 +1961,8 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
 -      diff = memcmp (beg1, beg2, MIN (len1, len2));
 +      copy[0] = beg[0];
 +      copy[1] = beg[1];
-+    }
-+
+     }
 +  if (hard_LC_COLLATE)
 +    {
 +      diff = xmemcoll ((char *) copy[0], len[0], (char *) copy[1], len[1]);
@@ -1550,14 +1972,14 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
 +          free (copy[i]);
 +
 +      return diff;
-     }
++    }
 +  diff = memcmp (copy[0], copy[1], MIN (len[0], len[1]));
 +
 +  if (mallocd)
 +    for (i = 0; i < 2; i++)
 +      free (copy[i]);
 +
++
    if (diff)
      return diff;
 -  return len1 < len2 ? -1 : len1 != len2;
@@ -1565,7 +1987,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
  }
  
  /* Check that successive input lines PREV and CURRENT from input file
-@@ -467,6 +702,11 @@ get_line (FILE *fp, struct line **linep,
+@@ -468,6 +703,11 @@ get_line (FILE *fp, struct line **linep,
      }
    ++line_no[which - 1];
  
@@ -1577,7 +1999,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
    xfields (line);
  
    if (prevline[which - 1])
-@@ -566,21 +806,28 @@ prfield (size_t n, struct line const *li
+@@ -567,21 +807,28 @@ prfield (size_t n, struct line const *li
  
  /* Output all the fields in line, other than the join field.  */
  
@@ -1609,7 +2031,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
        prfield (i, line);
      }
  }
-@@ -591,7 +838,6 @@ static void
+@@ -592,7 +839,6 @@ static void
  prjoin (struct line const *line1, struct line const *line2)
  {
    const struct outlist *outlist;
@@ -1617,7 +2039,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
    size_t field;
    struct line const *line;
  
-@@ -625,7 +871,7 @@ prjoin (struct line const *line1, struct
+@@ -626,7 +872,7 @@ prjoin (struct line const *line1, struct
            o = o->next;
            if (o == NULL)
              break;
@@ -1626,7 +2048,7 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
          }
        putchar (eolchar);
      }
-@@ -1103,21 +1349,46 @@ main (int argc, char **argv)
+@@ -1104,20 +1350,43 @@ main (int argc, char **argv)
  
          case 't':
            {
@@ -1653,16 +2075,14 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
 +              newtablen = 1;
              if (! newtab)
 -              newtab = '\n'; /* '' => process the whole line.  */
-+            {
 +              newtab = (char*)"\n"; /* '' => process the whole line.  */
-+            }
              else if (optarg[1])
                {
 -                if (STREQ (optarg, "\\0"))
 -                  newtab = '\0';
 -                else
--                  error (EXIT_FAILURE, 0, _("multi-character tab %s"),
--                         quote (optarg));
+-                  die (EXIT_FAILURE, 0, _("multi-character tab %s"),
+-                       quote (optarg));
 +                if (newtablen == 1 && newtab[1])
 +                {
 +                  if (STREQ (newtab, "\\0"))
@@ -1672,20 +2092,18 @@ diff -Naurp coreutils-8.25-orig/src/join.c coreutils-8.25/src/join.c
 +            if (tab != NULL && strcmp (tab, newtab))
 +              {
 +                free (newtab);
-+                error (EXIT_FAILURE, 0, _("incompatible tabs"));
++                die (EXIT_FAILURE, 0, _("incompatible tabs"));
                }
 -            if (0 <= tab && tab != newtab)
--              error (EXIT_FAILURE, 0, _("incompatible tabs"));
+-              die (EXIT_FAILURE, 0, _("incompatible tabs"));
              tab = newtab;
--          }
 +            tablen = newtablen;
-+           }
+           }
            break;
  
-         case 'z':
-diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
---- coreutils-8.25-orig/src/pr.c       2016-01-01 07:48:50.000000000 -0600
-+++ coreutils-8.25/src/pr.c    2016-02-08 19:07:10.306944635 -0600
+diff -Naurp coreutils-8.27-orig/src/pr.c coreutils-8.27/src/pr.c
+--- coreutils-8.27-orig/src/pr.c       2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/pr.c    2017-03-11 23:47:13.094286139 -0600
 @@ -311,6 +311,24 @@
  
  #include <getopt.h>
@@ -1709,9 +2127,9 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
 +#endif
 +
  #include "system.h"
+ #include "die.h"
  #include "error.h"
- #include "fadvise.h"
-@@ -323,6 +341,18 @@
+@@ -324,6 +342,18 @@
  #include "xstrtol.h"
  #include "xdectoint.h"
  
@@ -1730,7 +2148,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "pr"
  
-@@ -415,7 +445,20 @@ struct COLUMN
+@@ -416,7 +446,20 @@ struct COLUMN
  
  typedef struct COLUMN COLUMN;
  
@@ -1752,7 +2170,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  static bool read_line (COLUMN *p);
  static bool print_page (void);
  static bool print_stored (COLUMN *p);
-@@ -427,6 +470,7 @@ static void add_line_number (COLUMN *p);
+@@ -428,6 +471,7 @@ static void add_line_number (COLUMN *p);
  static void getoptnum (const char *n_str, int min, int *num,
                         const char *errfmt);
  static void getoptarg (char *arg, char switch_char, char *character,
@@ -1760,7 +2178,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
                         int *number);
  static void print_files (int number_of_files, char **av);
  static void init_parameters (int number_of_files);
-@@ -440,7 +484,6 @@ static void store_char (char c);
+@@ -441,7 +485,6 @@ static void store_char (char c);
  static void pad_down (unsigned int lines);
  static void read_rest_of_line (COLUMN *p);
  static void skip_read (COLUMN *p, int column_number);
@@ -1768,7 +2186,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  static void cleanup (void);
  static void print_sep_string (void);
  static void separator_string (const char *optarg_S);
-@@ -452,7 +495,7 @@ static COLUMN *column_vector;
+@@ -453,7 +496,7 @@ static COLUMN *column_vector;
     we store the leftmost columns contiguously in buff.
     To print a line from buff, get the index of the first character
     from line_vector[i], and print up to line_vector[i + 1]. */
@@ -1777,7 +2195,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
  /* Index of the position in buff where the next character
     will be stored. */
-@@ -556,7 +599,7 @@ static int chars_per_column;
+@@ -557,7 +600,7 @@ static int chars_per_column;
  static bool untabify_input = false;
  
  /* (-e) The input tab character. */
@@ -1786,7 +2204,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
  /* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ...
     where the leftmost column is 1. */
-@@ -566,7 +609,10 @@ static int chars_per_input_tab = 8;
+@@ -567,7 +610,10 @@ static int chars_per_input_tab = 8;
  static bool tabify_output = false;
  
  /* (-i) The output tab character. */
@@ -1798,7 +2216,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
  /* (-i) The width of the output tab. */
  static int chars_per_output_tab = 8;
-@@ -636,7 +682,13 @@ static int line_number;
+@@ -637,7 +683,13 @@ static int line_number;
  static bool numbered_lines = false;
  
  /* (-n) Character which follows each line number. */
@@ -1813,18 +2231,18 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
  /* (-n) line counting starts with 1st line of input file (not with 1st
     line of 1st page printed). */
-@@ -689,6 +741,7 @@ static bool use_col_separator = false;
+@@ -690,6 +742,7 @@ static bool use_col_separator = false;
     -a|COLUMN|-m is a 'space' and with the -J option a 'tab'. */
- static char *col_sep_string = (char *) "";
+ static char const *col_sep_string = "";
  static int col_sep_length = 0;
 +static int col_sep_width = 0;
  static char *column_separator = (char *) " ";
  static char *line_separator = (char *) "\t";
  
-@@ -839,6 +892,13 @@ separator_string (const char *optarg_S)
-   col_sep_length = (int) strlen (optarg_S);
-   col_sep_string = xmalloc (col_sep_length + 1);
-   strcpy (col_sep_string, optarg_S);
+@@ -851,6 +904,13 @@ separator_string (const char *optarg_S)
+     integer_overflow ();
+   col_sep_length = len;
+   col_sep_string = optarg_S;
 +
 +#if HAVE_MBRTOWC
 +  if (MB_CUR_MAX > 1)
@@ -1835,7 +2253,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  }
  
  int
-@@ -863,6 +923,21 @@ main (int argc, char **argv)
+@@ -875,6 +935,21 @@ main (int argc, char **argv)
  
    atexit (close_stdout);
  
@@ -1856,8 +2274,8 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
 +
    n_files = 0;
    file_names = (argc > 1
-                 ? xmalloc ((argc - 1) * sizeof (char *))
-@@ -939,8 +1014,12 @@ main (int argc, char **argv)
+                 ? xnmalloc (argc - 1, sizeof (char *))
+@@ -951,8 +1026,12 @@ main (int argc, char **argv)
            break;
          case 'e':
            if (optarg)
@@ -1872,7 +2290,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            /* Could check tab width > 0. */
            untabify_input = true;
            break;
-@@ -953,8 +1032,12 @@ main (int argc, char **argv)
+@@ -965,8 +1044,12 @@ main (int argc, char **argv)
            break;
          case 'i':
            if (optarg)
@@ -1887,7 +2305,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            /* Could check tab width > 0. */
            tabify_output = true;
            break;
-@@ -972,8 +1055,8 @@ main (int argc, char **argv)
+@@ -984,8 +1067,8 @@ main (int argc, char **argv)
          case 'n':
            numbered_lines = true;
            if (optarg)
@@ -1898,16 +2316,15 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            break;
          case 'N':
            skip_count = false;
-@@ -997,7 +1080,7 @@ main (int argc, char **argv)
-           old_s = false;
+@@ -1010,6 +1093,7 @@ main (int argc, char **argv)
            /* Reset an additional input of -s, -S dominates -s */
-           col_sep_string = bad_cast ("");
--          col_sep_length = 0;
-+          col_sep_length = col_sep_width = 0;
+           col_sep_string = "";
+           col_sep_length = 0;
++          col_sep_width = 0;
            use_col_separator = true;
            if (optarg)
              separator_string (optarg);
-@@ -1152,10 +1235,45 @@ getoptnum (const char *n_str, int min, i
+@@ -1166,10 +1250,45 @@ getoptnum (const char *n_str, int min, i
     a number. */
  
  static void
@@ -1955,7 +2372,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
    if (*arg)
      {
        long int tmp_long;
-@@ -1177,6 +1295,11 @@ static void
+@@ -1191,6 +1310,11 @@ static void
  init_parameters (int number_of_files)
  {
    int chars_used_by_number = 0;
@@ -1967,7 +2384,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
    lines_per_body = lines_per_page - lines_per_header - lines_per_footer;
    if (lines_per_body <= 0)
-@@ -1214,7 +1337,7 @@ init_parameters (int number_of_files)
+@@ -1228,7 +1352,7 @@ init_parameters (int number_of_files)
            else
              col_sep_string = column_separator;
  
@@ -1976,7 +2393,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            use_col_separator = true;
          }
        /* It's rather pointless to define a TAB separator with column
-@@ -1244,11 +1367,11 @@ init_parameters (int number_of_files)
+@@ -1258,11 +1382,11 @@ init_parameters (int number_of_files)
               + TAB_WIDTH (chars_per_input_tab, chars_per_number);   */
  
        /* Estimate chars_per_text without any margin and keep it constant. */
@@ -1990,16 +2407,16 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
        /* The number is part of the column width unless we are
           printing files in parallel. */
-@@ -1257,7 +1380,7 @@ init_parameters (int number_of_files)
+@@ -1271,7 +1395,7 @@ init_parameters (int number_of_files)
      }
  
-   chars_per_column = (chars_per_line - chars_used_by_number
--                      - (columns - 1) * col_sep_length) / columns;
-+                      - (columns - 1) * col_sep_width) / columns;
-   if (chars_per_column < 1)
-     error (EXIT_FAILURE, 0, _("page width too narrow"));
-@@ -1275,7 +1398,7 @@ init_parameters (int number_of_files)
+   int sep_chars, useful_chars;
+-  if (INT_MULTIPLY_WRAPV (columns - 1, col_sep_length, &sep_chars))
++  if (INT_MULTIPLY_WRAPV (columns - 1, col_sep_width, &sep_chars))
+     sep_chars = INT_MAX;
+   if (INT_SUBTRACT_WRAPV (chars_per_line - chars_used_by_number, sep_chars,
+                           &useful_chars))
+@@ -1294,7 +1418,7 @@ init_parameters (int number_of_files)
       We've to use 8 as the lower limit, if we use chars_per_default_tab = 8
       to expand a tab which is not an input_tab-char. */
    free (clump_buff);
@@ -2008,7 +2425,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  }
  
  /* Open the necessary files,
-@@ -1383,7 +1506,7 @@ init_funcs (void)
+@@ -1402,7 +1526,7 @@ init_funcs (void)
  
    /* Enlarge p->start_position of first column to use the same form of
       padding_not_printed with all columns. */
@@ -2017,7 +2434,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
    /* This loop takes care of all but the rightmost column. */
  
-@@ -1417,7 +1540,7 @@ init_funcs (void)
+@@ -1436,7 +1560,7 @@ init_funcs (void)
          }
        else
          {
@@ -2026,19 +2443,19 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            h_next = h + chars_per_column;
          }
      }
-@@ -1708,9 +1831,9 @@ static void
+@@ -1727,9 +1851,9 @@ static void
  align_column (COLUMN *p)
  {
    padding_not_printed = p->start_position;
--  if (padding_not_printed - col_sep_length > 0)
-+  if (padding_not_printed - col_sep_width > 0)
+-  if (col_sep_length < padding_not_printed)
++  if (col_sep_width < padding_not_printed)
      {
 -      pad_across_to (padding_not_printed - col_sep_length);
 +      pad_across_to (padding_not_printed - col_sep_width);
        padding_not_printed = ANYWHERE;
      }
  
-@@ -1981,13 +2104,13 @@ store_char (char c)
+@@ -2004,13 +2128,13 @@ store_char (char c)
        /* May be too generous. */
        buff = X2REALLOC (buff, &buff_allocated);
      }
@@ -2054,7 +2471,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
    char *s;
    int num_width;
  
-@@ -2004,22 +2127,24 @@ add_line_number (COLUMN *p)
+@@ -2027,22 +2151,24 @@ add_line_number (COLUMN *p)
        /* Tabification is assumed for multiple columns, also for n-separators,
           but 'default n-separator = TAB' hasn't been given priority over
           equal column_width also specified by POSIX. */
@@ -2083,7 +2500,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
          output_position = POS_AFTER_TAB (chars_per_output_tab,
                            output_position);
      }
-@@ -2180,7 +2305,7 @@ print_white_space (void)
+@@ -2203,7 +2329,7 @@ print_white_space (void)
    while (goal - h_old > 1
           && (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
      {
@@ -2092,15 +2509,15 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
        h_old = h_new;
      }
    while (++h_old <= goal)
-@@ -2200,6 +2325,7 @@ print_sep_string (void)
+@@ -2223,6 +2349,7 @@ print_sep_string (void)
  {
-   char *s;
+   char const *s = col_sep_string;
    int l = col_sep_length;
 +  int not_space_flag;
  
-   s = col_sep_string;
-@@ -2213,6 +2339,7 @@ print_sep_string (void)
+   if (separators_not_printed <= 0)
+     {
+@@ -2234,6 +2361,7 @@ print_sep_string (void)
      {
        for (; separators_not_printed > 0; --separators_not_printed)
          {
@@ -2108,7 +2525,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            while (l-- > 0)
              {
                /* 3 types of sep_strings: spaces only, spaces and chars,
-@@ -2226,12 +2353,15 @@ print_sep_string (void)
+@@ -2247,12 +2375,15 @@ print_sep_string (void)
                  }
                else
                  {
@@ -2125,7 +2542,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
            /* sep_string ends with some spaces */
            if (spaces_not_printed > 0)
              print_white_space ();
-@@ -2259,7 +2389,7 @@ print_clump (COLUMN *p, int n, char *clu
+@@ -2280,7 +2411,7 @@ print_clump (COLUMN *p, int n, char *clu
     required number of tabs and spaces. */
  
  static void
@@ -2134,7 +2551,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  {
    if (tabify_output)
      {
-@@ -2283,6 +2413,74 @@ print_char (char c)
+@@ -2304,6 +2435,74 @@ print_char (char c)
    putchar (c);
  }
  
@@ -2209,19 +2626,19 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  /* Skip to page PAGE before printing.
     PAGE may be larger than total number of pages. */
  
-@@ -2462,9 +2660,9 @@ read_line (COLUMN *p)
+@@ -2483,9 +2682,9 @@ read_line (COLUMN *p)
            align_empty_cols = false;
          }
  
--      if (padding_not_printed - col_sep_length > 0)
-+      if (padding_not_printed - col_sep_width > 0)
+-      if (col_sep_length < padding_not_printed)
++      if (col_sep_width < padding_not_printed)
          {
 -          pad_across_to (padding_not_printed - col_sep_length);
 +          pad_across_to (padding_not_printed - col_sep_width);
            padding_not_printed = ANYWHERE;
          }
  
-@@ -2534,7 +2732,7 @@ print_stored (COLUMN *p)
+@@ -2555,7 +2754,7 @@ print_stored (COLUMN *p)
    int i;
  
    int line = p->current_line++;
@@ -2230,7 +2647,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
    /* FIXME
       UMR: Uninitialized memory read:
       * This is occurring while in:
-@@ -2546,7 +2744,7 @@ print_stored (COLUMN *p)
+@@ -2567,7 +2766,7 @@ print_stored (COLUMN *p)
       xmalloc        [xmalloc.c:94]
       init_store_cols [pr.c:1648]
       */
@@ -2239,19 +2656,19 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  
    pad_vertically = true;
  
-@@ -2565,9 +2763,9 @@ print_stored (COLUMN *p)
+@@ -2586,9 +2785,9 @@ print_stored (COLUMN *p)
          }
      }
  
--  if (padding_not_printed - col_sep_length > 0)
-+  if (padding_not_printed - col_sep_width > 0)
+-  if (col_sep_length < padding_not_printed)
++  if (col_sep_width < padding_not_printed)
      {
 -      pad_across_to (padding_not_printed - col_sep_length);
 +      pad_across_to (padding_not_printed - col_sep_width);
        padding_not_printed = ANYWHERE;
      }
  
-@@ -2580,8 +2778,8 @@ print_stored (COLUMN *p)
+@@ -2601,8 +2800,8 @@ print_stored (COLUMN *p)
    if (spaces_not_printed == 0)
      {
        output_position = p->start_position + end_vector[line];
@@ -2262,7 +2679,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
      }
  
    return true;
-@@ -2600,7 +2798,7 @@ print_stored (COLUMN *p)
+@@ -2621,7 +2820,7 @@ print_stored (COLUMN *p)
     number of characters is 1.) */
  
  static int
@@ -2271,7 +2688,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  {
    unsigned char uc = c;
    char *s = clump_buff;
-@@ -2610,10 +2808,10 @@ char_to_clump (char c)
+@@ -2631,10 +2830,10 @@ char_to_clump (char c)
    int chars;
    int chars_per_c = 8;
  
@@ -2284,7 +2701,7 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
      {
        width = TAB_WIDTH (chars_per_c, input_position);
  
-@@ -2694,6 +2892,164 @@ char_to_clump (char c)
+@@ -2715,6 +2914,164 @@ char_to_clump (char c)
    return chars;
  }
  
@@ -2449,9 +2866,9 @@ diff -Naurp coreutils-8.25-orig/src/pr.c coreutils-8.25/src/pr.c
  /* We've just printed some files and need to clean up things before
     looking for more options and printing the next batch of files.
  
-diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
---- coreutils-8.25-orig/src/sort.c     2016-01-16 13:09:33.000000000 -0600
-+++ coreutils-8.25/src/sort.c  2016-02-08 19:07:10.310944648 -0600
+diff -Naurp coreutils-8.27-orig/src/sort.c coreutils-8.27/src/sort.c
+--- coreutils-8.27-orig/src/sort.c     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/sort.c  2017-03-11 23:49:22.416505389 -0600
 @@ -29,6 +29,14 @@
  #include <sys/wait.h>
  #include <signal.h>
@@ -2466,8 +2883,8 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
 +
  #include "system.h"
  #include "argmatch.h"
- #include "error.h"
-@@ -163,14 +171,39 @@ static int decimal_point;
+ #include "die.h"
+@@ -165,14 +173,39 @@ static int decimal_point;
  /* Thousands separator; if -1, then there isn't one.  */
  static int thousands_sep;
  
@@ -2508,7 +2925,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  /* The kind of blanks for '-b' to skip in various options. */
  enum blanktype { bl_start, bl_end, bl_both };
  
-@@ -344,13 +377,11 @@ static bool reverse;
+@@ -346,13 +379,11 @@ static bool reverse;
     they were read if all keys compare equal.  */
  static bool stable;
  
@@ -2525,7 +2942,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  
  /* Flag to remove consecutive duplicate lines from the output.
     Only the last of a sequence of equal lines will be output. */
-@@ -810,6 +841,46 @@ reap_all (void)
+@@ -811,6 +842,46 @@ reap_all (void)
      reap (-1);
  }
  
@@ -2572,7 +2989,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  /* Clean up any remaining temporary files.  */
  
  static void
-@@ -1254,7 +1325,7 @@ zaptemp (char const *name)
+@@ -1255,7 +1326,7 @@ zaptemp (char const *name)
    free (node);
  }
  
@@ -2581,7 +2998,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  
  static int
  struct_month_cmp (void const *m1, void const *m2)
-@@ -1269,7 +1340,7 @@ struct_month_cmp (void const *m1, void c
+@@ -1270,7 +1341,7 @@ struct_month_cmp (void const *m1, void c
  /* Initialize the character class tables. */
  
  static void
@@ -2590,7 +3007,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  {
    size_t i;
  
-@@ -1281,7 +1352,7 @@ inittables (void)
+@@ -1282,7 +1353,7 @@ inittables (void)
        fold_toupper[i] = toupper (i);
      }
  
@@ -2599,7 +3016,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
    /* If we're not in the "C" locale, read different names for months.  */
    if (hard_LC_TIME)
      {
-@@ -1363,6 +1434,84 @@ specify_nmerge (int oi, char c, char con
+@@ -1364,6 +1435,84 @@ specify_nmerge (int oi, char c, char con
      xstrtol_fatal (e, oi, c, long_options, s);
  }
  
@@ -2684,7 +3101,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  /* Specify the amount of main memory to use when sorting.  */
  static void
  specify_sort_size (int oi, char c, char const *s)
-@@ -1596,7 +1745,7 @@ buffer_linelim (struct buffer const *buf
+@@ -1597,7 +1746,7 @@ buffer_linelim (struct buffer const *buf
     by KEY in LINE. */
  
  static char *
@@ -2693,7 +3110,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  {
    char *ptr = line->text, *lim = ptr + line->length - 1;
    size_t sword = key->sword;
-@@ -1605,10 +1754,10 @@ begfield (struct line const *line, struc
+@@ -1606,10 +1755,10 @@ begfield (struct line const *line, struc
    /* The leading field separator itself is included in a field when -t
       is absent.  */
  
@@ -2706,7 +3123,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
            ++ptr;
          if (ptr < lim)
            ++ptr;
-@@ -1634,11 +1783,70 @@ begfield (struct line const *line, struc
+@@ -1635,11 +1784,70 @@ begfield (struct line const *line, struc
    return ptr;
  }
  
@@ -2778,7 +3195,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  {
    char *ptr = line->text, *lim = ptr + line->length - 1;
    size_t eword = key->eword, echar = key->echar;
-@@ -1653,10 +1861,10 @@ limfield (struct line const *line, struc
+@@ -1654,10 +1862,10 @@ limfield (struct line const *line, struc
       'beginning' is the first character following the delimiting TAB.
       Otherwise, leave PTR pointing at the first 'blank' character after
       the preceding field.  */
@@ -2791,7 +3208,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
            ++ptr;
          if (ptr < lim && (eword || echar))
            ++ptr;
-@@ -1702,10 +1910,10 @@ limfield (struct line const *line, struc
+@@ -1703,10 +1911,10 @@ limfield (struct line const *line, struc
       */
  
    /* Make LIM point to the end of (one byte past) the current field.  */
@@ -2804,7 +3221,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
        if (newlim)
          lim = newlim;
      }
-@@ -1736,6 +1944,130 @@ limfield (struct line const *line, struc
+@@ -1737,6 +1945,130 @@ limfield (struct line const *line, struc
    return ptr;
  }
  
@@ -2935,7 +3352,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  /* Fill BUF reading from FP, moving buf->left bytes from the end
     of buf->buf to the beginning first.  If EOF is reached and the
     file wasn't terminated by a newline, supply one.  Set up BUF's line
-@@ -1822,8 +2154,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
+@@ -1823,8 +2155,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
                    else
                      {
                        if (key->skipsblanks)
@@ -2960,7 +3377,23 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
                        line->keybeg = line_start;
                      }
                  }
-@@ -1944,7 +2290,7 @@ human_numcompare (char const *a, char co
+@@ -1958,12 +2304,10 @@ find_unit_order (char const *number)
+        <none/unknown> < K/k < M < G < T < P < E < Z < Y  */
+ static int
+-human_numcompare (char const *a, char const *b)
++human_numcompare (char *a, char *b)
+ {
+-  while (blanks[to_uchar (*a)])
+-    a++;
+-  while (blanks[to_uchar (*b)])
+-    b++;
++  skipblanks(&a, a + strlen(a));
++  skipblanks(&b, b + strlen(b));
+   int diff = find_unit_order (a) - find_unit_order (b);
+   return (diff ? diff : strnumcmp (a, b, decimal_point, thousands_sep));
+@@ -1974,7 +2318,7 @@ human_numcompare (char const *a, char co
     hideously fast. */
  
  static int
@@ -2969,7 +3402,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  {
    while (blanks[to_uchar (*a)])
      a++;
-@@ -1954,6 +2300,25 @@ numcompare (char const *a, char const *b
+@@ -1984,6 +2328,25 @@ numcompare (char const *a, char const *b
    return strnumcmp (a, b, decimal_point, thousands_sep);
  }
  
@@ -2995,7 +3428,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  /* Work around a problem whereby the long double value returned by glibc's
     strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
     A and B before calling strtold.  FIXME: remove this function once
-@@ -2004,7 +2369,7 @@ general_numcompare (char const *sa, char
+@@ -2034,7 +2397,7 @@ general_numcompare (char const *sa, char
     Return 0 if the name in S is not recognized.  */
  
  static int
@@ -3004,7 +3437,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  {
    size_t lo = 0;
    size_t hi = MONTHS_PER_YEAR;
-@@ -2280,15 +2645,14 @@ debug_key (struct line const *line, stru
+@@ -2310,15 +2673,14 @@ debug_key (struct line const *line, stru
            char saved = *lim;
            *lim = '\0';
  
@@ -3022,16 +3455,16 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
            else if (key->general_numeric)
              ignore_value (strtold (beg, &tighter_lim));
            else if (key->numeric || key->human_numeric)
-@@ -2432,7 +2796,7 @@ key_warnings (struct keyfield const *gke
-       bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key)
-                                  && !(key->schar || key->echar);
+@@ -2452,7 +2814,7 @@ key_warnings (struct keyfield const *gke
+       /* Warn about significant leading blanks.  */
+       bool implicit_skip = key_numeric (key) || key->month;
        bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y  */
--      if (!gkey_only && tab == TAB_DEFAULT && !line_offset
-+      if (!gkey_only && !tab_length && !line_offset
-           && ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned))
+-      if (!zero_width && !gkey_only && tab == TAB_DEFAULT && !line_offset
++      if (!zero_width && !gkey_only && !tab_length && !line_offset
+           && ((!key->skipsblanks && !implicit_skip)
                || (!key->skipsblanks && key->schar)
                || (!key->skipeblanks && key->echar)))
-@@ -2490,11 +2854,87 @@ key_warnings (struct keyfield const *gke
+@@ -2510,11 +2872,87 @@ key_warnings (struct keyfield const *gke
      error (0, 0, _("option '-r' only applies to last-resort comparison"));
  }
  
@@ -3120,7 +3553,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  {
    struct keyfield *key = keylist;
  
-@@ -2579,7 +3019,7 @@ keycompare (struct line const *a, struct
+@@ -2599,7 +3037,7 @@ keycompare (struct line const *a, struct
            else if (key->human_numeric)
              diff = human_numcompare (ta, tb);
            else if (key->month)
@@ -3129,7 +3562,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
            else if (key->random)
              diff = compare_random (ta, tlena, tb, tlenb);
            else if (key->version)
-@@ -2695,6 +3135,211 @@ keycompare (struct line const *a, struct
+@@ -2715,6 +3153,211 @@ keycompare (struct line const *a, struct
    return key->reverse ? -diff : diff;
  }
  
@@ -3341,7 +3774,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
  /* Compare two lines A and B, returning negative, zero, or positive
     depending on whether A compares less than, equal to, or greater than B. */
  
-@@ -2722,7 +3367,7 @@ compare (struct line const *a, struct li
+@@ -2742,7 +3385,7 @@ compare (struct line const *a, struct li
      diff = - NONZERO (blen);
    else if (blen == 0)
      diff = 1;
@@ -3350,7 +3783,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
      {
        /* Note xmemcoll0 is a performance enhancement as
           it will not unconditionally write '\0' after the
-@@ -4121,6 +4766,7 @@ set_ordering (char const *s, struct keyf
+@@ -4139,6 +4782,7 @@ set_ordering (char const *s, struct keyf
            break;
          case 'f':
            key->translate = fold_toupper;
@@ -3358,7 +3791,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
            break;
          case 'g':
            key->general_numeric = true;
-@@ -4199,7 +4845,7 @@ main (int argc, char **argv)
+@@ -4218,7 +4862,7 @@ main (int argc, char **argv)
    initialize_exit_failure (SORT_FAILURE);
  
    hard_LC_COLLATE = hard_locale (LC_COLLATE);
@@ -3367,7 +3800,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
    hard_LC_TIME = hard_locale (LC_TIME);
  #endif
  
-@@ -4220,6 +4866,29 @@ main (int argc, char **argv)
+@@ -4239,6 +4883,29 @@ main (int argc, char **argv)
        thousands_sep = -1;
    }
  
@@ -3397,7 +3830,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
    have_read_stdin = false;
    inittables ();
  
-@@ -4494,13 +5163,34 @@ main (int argc, char **argv)
+@@ -4513,13 +5180,34 @@ main (int argc, char **argv)
  
          case 't':
            {
@@ -3407,7 +3840,7 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
 +            size_t newtab_length = 1;
 +            strncpy (newtab, optarg, MB_LEN_MAX);
 +            if (! newtab[0])
-               error (SORT_FAILURE, 0, _("empty tab"));
+               die (SORT_FAILURE, 0, _("empty tab"));
 -            if (optarg[1])
 +#if HAVE_MBRTOWC
 +            if (MB_CUR_MAX > 1)
@@ -3436,22 +3869,21 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
                  else
                    {
                      /* Provoke with 'sort -txx'.  Complain about
-@@ -4511,9 +5201,12 @@ main (int argc, char **argv)
-                            quote (optarg));
+@@ -4530,9 +5218,11 @@ main (int argc, char **argv)
+                          quote (optarg));
                    }
                }
 -            if (tab != TAB_DEFAULT && tab != newtab)
-+            if (tab_length
-+                && (tab_length != newtab_length
-+                    || memcmp (tab, newtab, tab_length) != 0))
-               error (SORT_FAILURE, 0, _("incompatible tabs"));
++            if (tab_length && (tab_length != newtab_length
++                        || memcmp (tab, newtab, tab_length) != 0))
+               die (SORT_FAILURE, 0, _("incompatible tabs"));
 -            tab = newtab;
 +            memcpy (tab, newtab, newtab_length);
 +            tab_length = newtab_length;
            }
            break;
  
-@@ -4751,12 +5444,10 @@ main (int argc, char **argv)
+@@ -4770,12 +5460,10 @@ main (int argc, char **argv)
        sort (files, nfiles, outfile, nthreads);
      }
  
@@ -3463,268 +3895,215 @@ diff -Naurp coreutils-8.25-orig/src/sort.c coreutils-8.25/src/sort.c
 -#endif
  
    if (have_read_stdin && fclose (stdin) == EOF)
-     die (_("close failed"), "-");
-diff -Naurp coreutils-8.25-orig/src/unexpand.c coreutils-8.25/src/unexpand.c
---- coreutils-8.25-orig/src/unexpand.c 2016-01-01 07:48:50.000000000 -0600
-+++ coreutils-8.25/src/unexpand.c      2016-02-08 19:07:10.311944651 -0600
-@@ -38,12 +38,29 @@
+     sort_die (_("close failed"), "-");
+diff -Naurp coreutils-8.27-orig/src/unexpand.c coreutils-8.27/src/unexpand.c
+--- coreutils-8.27-orig/src/unexpand.c 2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/unexpand.c      2017-03-11 23:49:06.758133530 -0600
+@@ -38,6 +38,9 @@
  #include <stdio.h>
  #include <getopt.h>
  #include <sys/types.h>
 +
-+/* Get mbstate_t, mbrtowc(), wcwidth(). */
-+#if HAVE_WCHAR_H
-+# include <wchar.h>
-+#endif
++#include <mbfile.h>
 +
  #include "system.h"
- #include "error.h"
- #include "fadvise.h"
- #include "quote.h"
+ #include "die.h"
  #include "xstrndup.h"
+@@ -107,24 +110,47 @@ unexpand (void)
+ {
+   /* Input stream.  */
+   FILE *fp = next_file (NULL);
++  mb_file_t mbf;
+   /* The array of pending blanks.  In non-POSIX locales, blanks can
+      include characters other than spaces, so the blanks must be
+      stored, not merely counted.  */
+-  char *pending_blank;
++  mbf_char_t *pending_blank;
++  /* True if the starting locale is utf8.  */
++  bool using_utf_locale;
++
++  /* True if the first file contains BOM header.  */
++  bool found_bom;
++  using_utf_locale=check_utf_locale();
+   if (!fp)
+     return;
++  mbf_init (mbf, fp);
++  found_bom=check_bom(fp,&mbf);
  
-+/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
-+      installation; work around this configuration error.  */
-+#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
-+# define MB_LEN_MAX 16
-+#endif
-+
-+/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t.  */
-+#if HAVE_MBRTOWC && defined mbstate_t
-+# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
-+#endif
-+
- /* The official name of this program (e.g., no 'g' prefix).  */
- #define PROGRAM_NAME "unexpand"
-@@ -103,6 +120,210 @@ static struct option const longopts[] =
-   {NULL, 0, NULL, 0}
- };
-+static FILE *next_file (FILE *fp);
-+
-+#if HAVE_MBRTOWC
-+static void
-+unexpand_multibyte (void)
-+{
-+  FILE *fp;                   /* Input stream. */
-+  mbstate_t i_state;          /* Current shift state of the input stream. */
-+  mbstate_t i_state_bak;      /* Back up the I_STATE. */
-+  mbstate_t o_state;          /* Current shift state of the output stream. */
-+  char buf[MB_LEN_MAX + BUFSIZ];  /* For spooling a read byte sequence. */
-+  char *bufpos = buf;                 /* Next read position of BUF. */
-+  size_t buflen = 0;          /* The length of the byte sequence in buf. */
-+  wint_t wc;                  /* A gotten wide character. */
-+  size_t mblength;            /* The byte size of a multibyte character
-+                                 which shows as same character as WC. */
-+  bool prev_tab = false;
-+
-+  /* Index in `tab_list' of next tabstop: */
-+  int tab_index = 0;          /* For calculating width of pending tabs. */
-+  int print_tab_index = 0;    /* For printing as many tabs as possible. */
-+  unsigned int column = 0;    /* Column on screen of next char. */
-+  int next_tab_column;                /* Column the next tab stop is on. */
-+  int convert = 1;            /* If nonzero, perform translations. */
-+  unsigned int pending = 0;   /* Pending columns of blanks. */
-+
-+  fp = next_file ((FILE *) NULL);
-+  if (fp == NULL)
-+    return;
-+
-+  memset (&o_state, '\0', sizeof(mbstate_t));
-+  memset (&i_state, '\0', sizeof(mbstate_t));
++  if (using_utf_locale == false && found_bom == true)
++  {
++    /*try using some predefined locale */
 +
-+  for (;;)
++    if (set_utf_locale () != 0)
 +    {
-+      if (buflen < MB_LEN_MAX && !feof(fp) && !ferror(fp))
-+      {
-+        memmove (buf, bufpos, buflen);
-+        buflen += fread (buf + buflen, sizeof(char), BUFSIZ, fp);
-+        bufpos = buf;
-+      }
-+
-+      /* Get a wide character. */
-+      if (buflen < 1)
-+      {
-+        mblength = 1;
-+        wc = WEOF;
-+      }
-+      else
-+      {
-+        i_state_bak = i_state;
-+        mblength = mbrtowc ((wchar_t *)&wc, bufpos, buflen, &i_state);
-+      }
-+
-+      if (mblength == (size_t)-1 || mblength == (size_t)-2)
-+      {
-+        i_state = i_state_bak;
-+        wc = L'\0';
-+      }
-+
-+      if (wc == L' ' && convert && column < INT_MAX)
-+      {
-+        ++pending;
-+        ++column;
-+      }
-+      else if (wc == L'\t' && convert)
-+      {
-+        if (tab_size == 0)
-+          {
-+            /* Do not let tab_index == first_free_tab;
-+               stop when it is 1 less. */
-+            while (tab_index < first_free_tab - 1
-+                && column >= tab_list[tab_index])
-+              tab_index++;
-+            next_tab_column = tab_list[tab_index];
-+            if (tab_index < first_free_tab - 1)
-+              tab_index++;
-+            if (column >= next_tab_column)
-+              {
-+                convert = 0;  /* Ran out of tab stops. */
-+                goto flush_pend_mb;
-+              }
-+          }
-+        else
-+          {
-+            next_tab_column = column + tab_size - column % tab_size;
-+          }
-+        pending += next_tab_column - column;
-+        column = next_tab_column;
-+      }
-+      else
-+      {
-+flush_pend_mb:
-+        /* Flush pending spaces.  Print as many tabs as possible,
-+           then print the rest as spaces. */
-+        if (pending == 1 && column != 1 && !prev_tab)
-+          {
-+            putchar (' ');
-+            pending = 0;
-+          }
-+        column -= pending;
-+        while (pending > 0)
-+          {
-+            if (tab_size == 0)
-+              {
-+                /* Do not let print_tab_index == first_free_tab;
-+                   stop when it is 1 less. */
-+                while (print_tab_index < first_free_tab - 1
-+                    && column >= tab_list[print_tab_index])
-+                  print_tab_index++;
-+                next_tab_column = tab_list[print_tab_index];
-+                if (print_tab_index < first_free_tab - 1)
-+                  print_tab_index++;
-+              }
-+            else
-+              {
-+                next_tab_column =
-+                  column + tab_size - column % tab_size;
-+              }
-+            if (next_tab_column - column <= pending)
-+              {
-+                putchar ('\t');
-+                pending -= next_tab_column - column;
-+                column = next_tab_column;
-+              }
-+            else
-+              {
-+                --print_tab_index;
-+                column += pending;
-+                while (pending != 0)
-+                  {
-+                    putchar (' ');
-+                    pending--;
-+                  }
-+              }
-+          }
-+
-+        if (wc == WEOF)
-+          {
-+            fp = next_file (fp);
-+            if (fp == NULL)
-+              break;          /* No more files. */
-+            else
-+              {
-+                memset (&i_state, '\0', sizeof(mbstate_t));
-+                continue;
-+              }
-+          }
-+
-+        if (mblength == (size_t)-1 || mblength == (size_t)-2)
-+          {
-+            if (convert)
-+              {
-+                ++column;
-+                if (convert_entire_line == 0)
-+                  convert = 0;
-+              }
-+            mblength = 1;
-+            putchar (buf[0]);
-+          }
-+        else if (mblength == 0)
-+          {
-+            if (convert && convert_entire_line == 0)
-+              convert = 0;
-+            mblength = 1;
-+            putchar ('\0');
-+          }
-+        else
-+          {
-+            if (convert)
-+              {
-+                if (wc == L'\b')
-+                  {
-+                    if (column > 0)
-+                      --column;
-+                  }
-+                else
-+                  {
-+                    int width;            /* The width of WC. */
-+
-+                    width = wcwidth (wc);
-+                    column += (width > 0) ? width : 0;
-+                    if (convert_entire_line == 0)
-+                      convert = 0;
-+                  }
-+              }
-+
-+            if (wc == L'\n')
-+              {
-+                tab_index = print_tab_index = 0;
-+                column = pending = 0;
-+                convert = 1;
-+              }
-+            fwrite (bufpos, sizeof(char), mblength, stdout);
-+          }
-+      }
-+      prev_tab = wc == L'\t';
-+      buflen -= mblength;
-+      bufpos += mblength;
++      error (EXIT_FAILURE, errno, _("cannot set UTF-8 locale"));
 +    }
-+}
-+#endif
++  }
+   /* The worst case is a non-blank character, then one blank, then a
+      tab stop, then MAX_COLUMN_WIDTH - 1 blanks, then a non-blank; so
+      allocate MAX_COLUMN_WIDTH bytes to store the blanks.  */
+-  pending_blank = xmalloc (max_column_width);
++  pending_blank = xmalloc (max_column_width * sizeof (mbf_char_t));
 +
++  if (found_bom == true)
++  {
++    print_bom();
++  }
+   while (true)
+     {
+       /* Input character, or EOF.  */
+-      int c;
++      mbf_char_t c;
+       /* If true, perform translations.  */
+       bool convert = true;
+@@ -158,12 +184,44 @@ unexpand (void)
+       do
+         {
+-          while ((c = getc (fp)) < 0 && (fp = next_file (fp)))
+-            continue;
++          while (true) {
++            mbf_getc (c, mbf);
++            if ((mb_iseof (c)) && (fp = next_file (fp)))
++              {
++                mbf_init (mbf, fp);
++                if (fp!=NULL)
++                {
++                  if (check_bom(fp,&mbf)==true)
++                  {
++                    /*Not the first file - check BOM header*/
++                    if (using_utf_locale==false && found_bom==false)
++                    {
++                      /*BOM header in subsequent file but not in the first one. */
++                      error (EXIT_FAILURE, errno, _("combination of files with and without BOM header"));
++                    }
++                  }
++                  else
++                  {
++                    if(using_utf_locale==false && found_bom==true)
++                    {
++                      /*First file conatined BOM header - locale was switched to UTF
++                      /*all subsequent files should contain BOM. */
++                      error (EXIT_FAILURE, errno, _("combination of files with and without BOM header"));
++                    }
++                  }
++                }
++                continue;
++              }
++            else
++              {
++                break;
++              }
++            }
 +
- void
- usage (int status)
- {
-@@ -523,7 +744,12 @@ main (int argc, char **argv)
  
-   file_list = (optind < argc ? &argv[optind] : stdin_argv);
+           if (convert)
+             {
+-              bool blank = !! isblank (c);
++              bool blank = mb_isblank (c);
  
--  unexpand ();
-+#if HAVE_MBRTOWC
-+  if (MB_CUR_MAX > 1)
-+    unexpand_multibyte ();
-+  else
-+#endif
-+    unexpand ();
+               if (blank)
+                 {
+@@ -180,16 +238,16 @@ unexpand (void)
+                       if (next_tab_column < column)
+                         die (EXIT_FAILURE, 0, _("input line is too long"));
+-                      if (c == '\t')
++                      if (mb_iseq (c, '\t'))
+                         {
+                           column = next_tab_column;
+                           if (pending)
+-                            pending_blank[0] = '\t';
++                            mb_setascii (&pending_blank[0], '\t');
+                         }
+                       else
+                         {
+-                          column++;
++                          column += mb_width (c);
+                           if (! (prev_blank && column == next_tab_column))
+                             {
+@@ -197,13 +255,14 @@ unexpand (void)
+                                  will be replaced by tabs.  */
+                               if (column == next_tab_column)
+                                 one_blank_before_tab_stop = true;
+-                              pending_blank[pending++] = c;
++                              mb_copy (&pending_blank[pending++], &c);
+                               prev_blank = true;
+                               continue;
+                             }
+                           /* Replace the pending blanks by a tab or two.  */
+-                          pending_blank[0] = c = '\t';
++                          mb_setascii (&c, '\t');
++                          mb_setascii (&pending_blank[0], '\t');
+                         }
+                       /* Discard pending blanks, unless it was a single
+@@ -211,7 +270,7 @@ unexpand (void)
+                       pending = one_blank_before_tab_stop;
+                     }
+                 }
+-              else if (c == '\b')
++              else if (mb_iseq (c, '\b'))
+                 {
+                   /* Go back one column, and force recalculation of the
+                      next tab stop.  */
+@@ -219,9 +278,9 @@ unexpand (void)
+                   next_tab_column = column;
+                   tab_index -= !!tab_index;
+                 }
+-              else
++              else if (!mb_iseq (c, '\n'))
+                 {
+-                  column++;
++                  column += mb_width (c);
+                   if (!column)
+                     die (EXIT_FAILURE, 0, _("input line is too long"));
+                 }
+@@ -229,8 +288,11 @@ unexpand (void)
+               if (pending)
+                 {
+                   if (pending > 1 && one_blank_before_tab_stop)
+-                    pending_blank[0] = '\t';
+-                  if (fwrite (pending_blank, 1, pending, stdout) != pending)
++                    mb_setascii (&pending_blank[0], '\t');
++
++                  for (int n = 0; n < pending; ++n)
++                    mb_putc (pending_blank[n], stdout);
++                  if (ferror (stdout))
+                     die (EXIT_FAILURE, errno, _("write error"));
+                   pending = 0;
+                   one_blank_before_tab_stop = false;
+@@ -240,16 +302,17 @@ unexpand (void)
+               convert &= convert_entire_line || blank;
+             }
+-          if (c < 0)
++          if (mb_iseof (c))
+             {
+               free (pending_blank);
+               return;
+             }
+-          if (putchar (c) < 0)
++          mb_putc (c, stdout);
++          if (ferror (stdout))
+             die (EXIT_FAILURE, errno, _("write error"));
+         }
+-      while (c != '\n');
++      while (!mb_iseq (c, '\n'));
+     }
+ }
  
-   if (have_read_stdin && fclose (stdin) != 0)
-     error (EXIT_FAILURE, errno, "-");
-diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
---- coreutils-8.25-orig/src/uniq.c     2016-01-13 05:08:59.000000000 -0600
-+++ coreutils-8.25/src/uniq.c  2016-02-08 19:07:10.312944654 -0600
+diff -Naurp coreutils-8.27-orig/src/uniq.c coreutils-8.27/src/uniq.c
+--- coreutils-8.27-orig/src/uniq.c     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/src/uniq.c  2017-03-11 23:47:13.098285938 -0600
 @@ -21,6 +21,17 @@
  #include <getopt.h>
  #include <sys/types.h>
@@ -3743,12 +4122,14 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
  #include "system.h"
  #include "argmatch.h"
  #include "linebuffer.h"
-@@ -33,6 +44,18 @@
+@@ -32,9 +43,21 @@
+ #include "stdio--.h"
+ #include "xmemcoll.h"
  #include "xstrtol.h"
- #include "memcasecmp.h"
- #include "quote.h"
+-#include "memcasecmp.h"
 +#include "xmemcoll.h"
-+
+ #include "quote.h"
 +/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
 +   installation; work around this configuration error.  */
 +#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
@@ -3759,10 +4140,12 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
 +#if HAVE_MBRTOWC && defined mbstate_t
 +# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
 +#endif
++
++
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "uniq"
-@@ -143,6 +166,10 @@ enum
+@@ -144,6 +167,10 @@ enum
    GROUP_OPTION = CHAR_MAX + 1
  };
  
@@ -3773,7 +4156,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
  static struct option const longopts[] =
  {
    {"count", no_argument, NULL, 'c'},
-@@ -252,7 +279,7 @@ size_opt (char const *opt, char const *m
+@@ -260,7 +287,7 @@ size_opt (char const *opt, char const *m
     return a pointer to the beginning of the line's field to be compared. */
  
  static char * _GL_ATTRIBUTE_PURE
@@ -3782,7 +4165,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
  {
    size_t count;
    char const *lp = line->buffer;
-@@ -272,6 +299,83 @@ find_field (struct linebuffer const *lin
+@@ -280,6 +307,83 @@ find_field (struct linebuffer const *lin
    return line->buffer + i;
  }
  
@@ -3866,7 +4249,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
  /* Return false if two strings OLD and NEW match, true if not.
     OLD and NEW point not to the beginnings of the lines
     but rather to the beginnings of the fields to compare.
-@@ -280,6 +384,8 @@ find_field (struct linebuffer const *lin
+@@ -288,6 +392,8 @@ find_field (struct linebuffer const *lin
  static bool
  different (char *old, char *new, size_t oldlen, size_t newlen)
  {
@@ -3875,7 +4258,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
    if (check_chars < oldlen)
      oldlen = check_chars;
    if (check_chars < newlen)
-@@ -287,15 +393,104 @@ different (char *old, char *new, size_t
+@@ -295,14 +401,103 @@ different (char *old, char *new, size_t
  
    if (ignore_case)
      {
@@ -3907,8 +4290,8 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
 +
 +  return xmemcoll (copy_old, oldlen, copy_new, newlen);
 +
- }
++}
++
 +#if HAVE_MBRTOWC
 +static int
 +different_multi (const char *old, const char *new, size_t oldlen, size_t newlen, mbstate_t oldstate, mbstate_t newstate)
@@ -3979,13 +4362,12 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
 +  free (copy[1]);
 +  return rc;
 +
-+}
+ }
 +#endif
-+
  /* Output the line in linebuffer LINE to standard output
     provided that the switches say it should be output.
-    MATCH is true if the line matches the previous line.
-@@ -359,19 +554,38 @@ check_file (const char *infile, const ch
+@@ -367,19 +562,38 @@ check_file (const char *infile, const ch
        char *prevfield IF_LINT ( = NULL);
        size_t prevlen IF_LINT ( = 0);
        bool first_group_printed = false;
@@ -4024,7 +4406,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
            new_group = (prevline->length == 0
                         || different (thisfield, prevfield, thislen, prevlen));
  
-@@ -389,6 +603,10 @@ check_file (const char *infile, const ch
+@@ -397,6 +611,10 @@ check_file (const char *infile, const ch
                SWAP_LINES (prevline, thisline);
                prevfield = thisfield;
                prevlen = thislen;
@@ -4035,7 +4417,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
                first_group_printed = true;
              }
          }
-@@ -401,17 +619,26 @@ check_file (const char *infile, const ch
+@@ -409,17 +627,26 @@ check_file (const char *infile, const ch
        size_t prevlen;
        uintmax_t match_count = 0;
        bool first_delimiter = true;
@@ -4062,7 +4444,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
            if (readlinebuffer_delim (thisline, stdin, delimiter) == 0)
              {
                if (ferror (stdin))
-@@ -420,6 +647,14 @@ check_file (const char *infile, const ch
+@@ -428,6 +655,14 @@ check_file (const char *infile, const ch
              }
            thisfield = find_field (thisline);
            thislen = thisline->length - 1 - (thisfield - thisline->buffer);
@@ -4077,7 +4459,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
            match = !different (thisfield, prevfield, thislen, prevlen);
            match_count += match;
  
-@@ -452,6 +687,9 @@ check_file (const char *infile, const ch
+@@ -460,6 +695,9 @@ check_file (const char *infile, const ch
                SWAP_LINES (prevline, thisline);
                prevfield = thisfield;
                prevlen = thislen;
@@ -4087,7 +4469,7 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
                if (!match)
                  match_count = 0;
              }
-@@ -498,6 +736,19 @@ main (int argc, char **argv)
+@@ -506,6 +744,19 @@ main (int argc, char **argv)
  
    atexit (close_stdout);
  
@@ -4107,47 +4489,196 @@ diff -Naurp coreutils-8.25-orig/src/uniq.c coreutils-8.25/src/uniq.c
    skip_chars = 0;
    skip_fields = 0;
    check_chars = SIZE_MAX;
-diff -Naurp coreutils-8.25-orig/tests/i18n/sort-month.sh coreutils-8.25/tests/i18n/sort-month.sh
---- coreutils-8.25-orig/tests/i18n/sort-month.sh       1969-12-31 18:00:00.000000000 -0600
-+++ coreutils-8.25/tests/i18n/sort-month.sh    2016-02-08 19:07:10.312944654 -0600
-@@ -0,0 +1,34 @@
+diff -Naurp coreutils-8.27-orig/tests/expand/mb.sh coreutils-8.27/tests/expand/mb.sh
+--- coreutils-8.27-orig/tests/expand/mb.sh     1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/tests/expand/mb.sh  2017-03-11 23:49:06.759133489 -0600
+@@ -0,0 +1,183 @@
 +#!/bin/sh
-+# Verify sort -M multi-byte support.
 +
-+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
-+print_ver_ sort
-+require_valgrind_
++# Copyright (C) 2012-2017 Free Software Foundation, Inc.
 +
-+# Skip this test if some deallocations are
-+# avoided at process end.
-+grep '^#define lint 1' $CONFIG_HEADER > /dev/null ||
-+  skip_ 'Allocation checks only work reliably in "lint" mode'
++# 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 3 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, see <http://www.gnu.org/licenses/>.
++
++. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
++print_ver_ expand
 +
 +export LC_ALL=en_US.UTF-8
-+locale -k LC_CTYPE | grep -q "charmap.*UTF-8" \
-+  || skip_ "No UTF-8 locale available"
 +
-+# Note the use of ɑ here which expands to
-+# a wider representation upon case conversion
-+# which triggered an assertion in sort -M
-+cat <<EOF > exp
-+.
-+ɑ
++#input containing multibyte characters
++cat <<\EOF > in || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a     b       c       d
++.       .       .       .
++ä    ö      ü      ß
++.       .       .       .
++EOF
++env printf '   äöü\t.    öüä.   \tä xx\n' >> in || framework_failure_
++
++cat <<\EOF > exp || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
 +EOF
 +
++expand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#multiple files as an input
++cat <<\EOF >> exp || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
++EOF
 +
-+# check large mem leak with --month-sort
-+# https://bugzilla.redhat.com/show_bug.cgi?id=1259942
-+valgrind --leak-check=full \
-+         --error-exitcode=1 --errors-for-leak-kinds=definite \
-+         sort -M < exp > out || fail=1
-+compare exp out || { fail=1; cat out; }
++expand ./in ./in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#test characters with display widths != 1
++env printf '12345678
++e\t|ascii(1)
++\u00E9\t|composed(1)
++e\u0301\t|decomposed(1)
++\u3000\t|ideo-space(2)
++\uFF0D\t|full-hypen(2)
++' > in || framework_failure_
++
++env printf '12345678
++e       |ascii(1)
++\u00E9       |composed(1)
++e\u0301       |decomposed(1)
++\u3000      |ideo-space(2)
++\uFF0D      |full-hypen(2)
++' > exp || framework_failure_
++
++expand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#shouldn't fail with "input line too long"
++#when a line starts with a control character
++env printf '\n' > in || framework_failure_
++
++expand < in > out || fail=1
++compare in out > /dev/null 2>&1 || fail=1
++
++#non-Unicode characters interspersed between Unicode ones
++env printf '12345678
++\t\xFF|
++\xFF\t|
++\t\xFFä|
++ä\xFF\t|
++\tä\xFF|
++\xFF\tä|
++äbcdef\xFF\t|
++' > in || framework_failure_
++
++env printf '12345678
++        \xFF|
++\xFF       |
++        \xFFä|
++ä\xFF      |
++        ä\xFF|
++\xFF       ä|
++äbcdef\xFF |
++' > exp || framework_failure_
++
++expand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++
++
++#BOM header test 1
++printf "\xEF\xBB\xBF" > in; cat <<\EOF >> in || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a     b       c       d
++.       .       .       .
++ä    ö      ü      ß
++.       .       .       .
++EOF
++env printf '   äöü\t.    öüä.   \tä xx\n' >> in || framework_failure_
++
++printf "\xEF\xBB\xBF" > exp; cat <<\EOF >> exp || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
++EOF
 +
 +
-+Exit $fail
-diff -Naurp coreutils-8.25-orig/tests/i18n/sort.sh coreutils-8.25/tests/i18n/sort.sh
---- coreutils-8.25-orig/tests/i18n/sort.sh     1969-12-31 18:00:00.000000000 -0600
-+++ coreutils-8.25/tests/i18n/sort.sh  2016-02-08 19:07:10.312944654 -0600
++expand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LANG=C expand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LC_ALL=C expand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++
++printf '\xEF\xBB\xBF' > in1; cat <<\EOF >> in1 || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a     b       c       d
++.       .       .       .
++ä    ö      ü      ß
++.       .       .       .
++EOF
++env printf '   äöü\t.    öüä.   \tä xx\n' >> in1 || framework_failure_
++
++
++printf '\xEF\xBB\xBF' > exp; cat <<\EOF >> exp || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
++EOF
++
++expand in1 in1 > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LANG=C expand in1 in1  > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LC_ALL=C expand in1 in1 > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++exit $fail
+diff -Naurp coreutils-8.27-orig/tests/i18n/sort.sh coreutils-8.27/tests/i18n/sort.sh
+--- coreutils-8.27-orig/tests/i18n/sort.sh     1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/tests/i18n/sort.sh  2017-03-11 23:47:13.100285838 -0600
 @@ -0,0 +1,29 @@
 +#!/bin/sh
 +# Verify sort's multi-byte support.
@@ -4178,22 +4709,37 @@ diff -Naurp coreutils-8.25-orig/tests/i18n/sort.sh coreutils-8.25/tests/i18n/sor
 +
 +
 +Exit $fail
-diff -Naurp coreutils-8.25-orig/tests/local.mk coreutils-8.25/tests/local.mk
---- coreutils-8.25-orig/tests/local.mk 2016-01-16 12:18:13.000000000 -0600
-+++ coreutils-8.25/tests/local.mk      2016-02-08 19:07:10.313944658 -0600
-@@ -344,6 +344,9 @@ all_tests =                                        \
+diff -Naurp coreutils-8.27-orig/tests/local.mk coreutils-8.27/tests/local.mk
+--- coreutils-8.27-orig/tests/local.mk 2017-02-28 22:25:37.000000000 -0600
++++ coreutils-8.27/tests/local.mk      2017-03-11 23:47:38.072058253 -0600
+@@ -352,6 +352,8 @@ all_tests =                                        \
    tests/misc/sort-discrim.sh                  \
    tests/misc/sort-files0-from.pl              \
    tests/misc/sort-float.sh                    \
 +  tests/misc/sort-mb-tests.sh                 \
 +  tests/i18n/sort.sh                          \
-+  tests/i18n/sort-month.sh                    \
+   tests/misc/sort-h-thousands-sep.sh          \
    tests/misc/sort-merge.pl                    \
    tests/misc/sort-merge-fdlimit.sh            \
-   tests/misc/sort-month.sh                    \
-diff -Naurp coreutils-8.25-orig/tests/misc/cut.pl coreutils-8.25/tests/misc/cut.pl
---- coreutils-8.25-orig/tests/misc/cut.pl      2016-01-16 12:18:13.000000000 -0600
-+++ coreutils-8.25/tests/misc/cut.pl   2016-02-08 19:07:10.314944661 -0600
+@@ -544,6 +546,7 @@ all_tests =                                        \
+   tests/du/threshold.sh                               \
+   tests/du/trailing-slash.sh                  \
+   tests/du/two-args.sh                                \
++  tests/expand/mb.sh                          \
+   tests/id/gnu-zero-uids.sh                   \
+   tests/id/no-context.sh                      \
+   tests/id/context.sh                         \
+@@ -684,6 +687,7 @@ all_tests =                                        \
+   tests/touch/read-only.sh                    \
+   tests/touch/relative.sh                     \
+   tests/touch/trailing-slash.sh                       \
++  tests/unexpand/mb.sh                                \
+   $(all_root_tests)
+ # See tests/factor/create-test.sh.
+diff -Naurp coreutils-8.27-orig/tests/misc/cut.pl coreutils-8.27/tests/misc/cut.pl
+--- coreutils-8.27-orig/tests/misc/cut.pl      2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/misc/cut.pl   2017-03-11 23:47:13.100285838 -0600
 @@ -23,9 +23,11 @@ use strict;
  # Turn off localization of executable's output.
  @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
@@ -4216,10 +4762,10 @@ diff -Naurp coreutils-8.25-orig/tests/misc/cut.pl coreutils-8.25/tests/misc/cut.
          push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
        }
      push @Tests, @new;
-diff -Naurp coreutils-8.25-orig/tests/misc/expand.pl coreutils-8.25/tests/misc/expand.pl
---- coreutils-8.25-orig/tests/misc/expand.pl   2016-01-16 12:18:13.000000000 -0600
-+++ coreutils-8.25/tests/misc/expand.pl        2016-02-08 19:07:10.314944661 -0600
-@@ -23,6 +23,15 @@ use strict;
+diff -Naurp coreutils-8.27-orig/tests/misc/expand.pl coreutils-8.27/tests/misc/expand.pl
+--- coreutils-8.27-orig/tests/misc/expand.pl   2017-03-01 11:16:46.000000000 -0600
++++ coreutils-8.27/tests/misc/expand.pl        2017-03-11 23:47:13.101285788 -0600
+@@ -27,6 +27,15 @@ my $prog = 'expand';
  # Turn off localization of executable's output.
  @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
  
@@ -4235,8 +4781,17 @@ diff -Naurp coreutils-8.25-orig/tests/misc/expand.pl coreutils-8.25/tests/misc/e
  my @Tests =
    (
     ['t1', '--tabs=3',     {IN=>"a\tb"}, {OUT=>"a  b"}],
-@@ -31,6 +40,37 @@ my @Tests =
-    ['i2', '--tabs=3 -i', {IN=>" \ta\tb"}, {OUT=>"   a\tb"}],
+@@ -152,6 +161,8 @@ my @Tests =
+    ['trail9', '--tab=1,2 -t/5',{IN=>"\ta\tb\tc"}, {OUT=>" a   b    c"}],
+    # Test errors
++   # FIXME: The following tests contain ‘quoting’ specific to LC_MESSAGES
++   # So we force LC_MESSAGES=C to make them pass.
+    ['e1', '--tabs="a"', {IN=>''}, {OUT=>''}, {EXIT=>1},
+     {ERR => "$prog: tab size contains invalid character(s): 'a'\n"}],
+    ['e2', "-t $UINTMAX_OFLOW", {IN=>''}, {OUT=>''}, {EXIT=>1},
+@@ -168,6 +179,37 @@ my @Tests =
+     {ERR => "$prog: '/' specifier not at start of number: '/'\n"}],
    );
  
 +if ($mb_locale ne 'C')
@@ -4262,7 +4817,7 @@ diff -Naurp coreutils-8.25-orig/tests/misc/expand.pl coreutils-8.25/tests/misc/e
 +            push @new_t, $sub;
 +            push @$t, $sub;
 +          }
-+        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++        push @new, ["$test_name-mb", @new_t, {ENV => "LANG=$mb_locale LC_MESSAGES=C"}];
 +      }
 +    push @Tests, @new;
 +  }
@@ -4273,9 +4828,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/expand.pl coreutils-8.25/tests/misc/e
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
  
-diff -Naurp coreutils-8.25-orig/tests/misc/fold.pl coreutils-8.25/tests/misc/fold.pl
---- coreutils-8.25-orig/tests/misc/fold.pl     2016-01-16 12:18:13.000000000 -0600
-+++ coreutils-8.25/tests/misc/fold.pl  2016-02-08 19:07:10.314944661 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/fold.pl coreutils-8.27/tests/misc/fold.pl
+--- coreutils-8.27-orig/tests/misc/fold.pl     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/misc/fold.pl  2017-03-11 23:47:13.101285788 -0600
 @@ -20,9 +20,18 @@ use strict;
  
  (my $program_name = $0) =~ s|.*/||;
@@ -4345,9 +4900,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/fold.pl coreutils-8.25/tests/misc/fol
 -my $prog = 'fold';
  my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
  exit $fail;
-diff -Naurp coreutils-8.25-orig/tests/misc/join.pl coreutils-8.25/tests/misc/join.pl
---- coreutils-8.25-orig/tests/misc/join.pl     2016-01-16 12:18:13.000000000 -0600
-+++ coreutils-8.25/tests/misc/join.pl  2016-02-08 19:07:10.315944664 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/join.pl coreutils-8.27/tests/misc/join.pl
+--- coreutils-8.27-orig/tests/misc/join.pl     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/misc/join.pl  2017-03-11 23:47:13.102285737 -0600
 @@ -25,6 +25,15 @@ my $limits = getlimits ();
  
  my $prog = 'join';
@@ -4414,9 +4969,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/join.pl coreutils-8.25/tests/misc/joi
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
  
-diff -Naurp coreutils-8.25-orig/tests/misc/sort-mb-tests.sh coreutils-8.25/tests/misc/sort-mb-tests.sh
---- coreutils-8.25-orig/tests/misc/sort-mb-tests.sh    1969-12-31 18:00:00.000000000 -0600
-+++ coreutils-8.25/tests/misc/sort-mb-tests.sh 2016-02-08 19:07:10.315944664 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/sort-mb-tests.sh coreutils-8.27/tests/misc/sort-mb-tests.sh
+--- coreutils-8.27-orig/tests/misc/sort-mb-tests.sh    1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/tests/misc/sort-mb-tests.sh 2017-03-11 23:47:13.102285737 -0600
 @@ -0,0 +1,45 @@
 +#!/bin/sh
 +# Verify sort's multi-byte support.
@@ -4463,9 +5018,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/sort-mb-tests.sh coreutils-8.25/tests
 +compare exp out || { fail=1; cat out; }
 +
 +Exit $fail
-diff -Naurp coreutils-8.25-orig/tests/misc/sort-merge.pl coreutils-8.25/tests/misc/sort-merge.pl
---- coreutils-8.25-orig/tests/misc/sort-merge.pl       2016-01-16 12:18:14.000000000 -0600
-+++ coreutils-8.25/tests/misc/sort-merge.pl    2016-02-08 19:07:10.316944667 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/sort-merge.pl coreutils-8.27/tests/misc/sort-merge.pl
+--- coreutils-8.27-orig/tests/misc/sort-merge.pl       2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/misc/sort-merge.pl    2017-03-11 23:47:13.102285737 -0600
 @@ -26,6 +26,15 @@ my $prog = 'sort';
  # Turn off localization of executable's output.
  @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
@@ -4522,9 +5077,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/sort-merge.pl coreutils-8.25/tests/mi
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
  
-diff -Naurp coreutils-8.25-orig/tests/misc/sort.pl coreutils-8.25/tests/misc/sort.pl
---- coreutils-8.25-orig/tests/misc/sort.pl     2016-01-16 12:18:14.000000000 -0600
-+++ coreutils-8.25/tests/misc/sort.pl  2016-02-08 19:07:10.316944667 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/sort.pl coreutils-8.27/tests/misc/sort.pl
+--- coreutils-8.27-orig/tests/misc/sort.pl     2017-01-21 08:53:43.000000000 -0600
++++ coreutils-8.27/tests/misc/sort.pl  2017-03-11 23:47:13.103285687 -0600
 @@ -24,10 +24,15 @@ my $prog = 'sort';
  # Turn off localization of executable's output.
  @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
@@ -4542,7 +5097,7 @@ diff -Naurp coreutils-8.25-orig/tests/misc/sort.pl coreutils-8.25/tests/misc/sor
  # Since each test is run with a file name and with redirected stdin,
  # the name in the diagnostic is either the file name or "-".
  # Normalize each diagnostic to use '-'.
-@@ -424,6 +429,38 @@ foreach my $t (@Tests)
+@@ -423,6 +428,38 @@ foreach my $t (@Tests)
        }
    }
  
@@ -4581,7 +5136,7 @@ diff -Naurp coreutils-8.25-orig/tests/misc/sort.pl coreutils-8.25/tests/misc/sor
  @Tests = triple_test \@Tests;
  
  # Remember that triple_test creates from each test with exactly one "IN"
-@@ -433,6 +470,7 @@ foreach my $t (@Tests)
+@@ -432,6 +469,7 @@ foreach my $t (@Tests)
  # Remove the IN_PIPE version of the "output-is-input" test above.
  # The others aren't susceptible because they have three inputs each.
  @Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
@@ -4589,9 +5144,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/sort.pl coreutils-8.25/tests/misc/sor
  
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
-diff -Naurp coreutils-8.25-orig/tests/misc/unexpand.pl coreutils-8.25/tests/misc/unexpand.pl
---- coreutils-8.25-orig/tests/misc/unexpand.pl 2016-01-16 12:18:14.000000000 -0600
-+++ coreutils-8.25/tests/misc/unexpand.pl      2016-02-08 19:07:10.317944671 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/unexpand.pl coreutils-8.27/tests/misc/unexpand.pl
+--- coreutils-8.27-orig/tests/misc/unexpand.pl 2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/misc/unexpand.pl      2017-03-11 23:47:13.103285687 -0600
 @@ -27,6 +27,14 @@ my $limits = getlimits ();
  
  my $prog = 'unexpand';
@@ -4607,8 +5162,8 @@ diff -Naurp coreutils-8.25-orig/tests/misc/unexpand.pl coreutils-8.25/tests/misc
  my @Tests =
      (
       ['a1', {IN=> ' 'x 1 ."y\n"}, {OUT=> ' 'x 1 ."y\n"}],
-@@ -92,6 +100,37 @@ my @Tests =
-       {EXIT => 1}, {ERR => "$prog: tab stop value is too large\n"}],
+@@ -128,6 +136,37 @@ my @Tests =
+      ['ts2', '-t5,8', {IN=>"x\t \t y\n"},    {OUT=>"x\t\t y\n"}],
      );
  
 +if ($mb_locale ne 'C')
@@ -4645,9 +5200,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/unexpand.pl coreutils-8.25/tests/misc
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
  
-diff -Naurp coreutils-8.25-orig/tests/misc/uniq.pl coreutils-8.25/tests/misc/uniq.pl
---- coreutils-8.25-orig/tests/misc/uniq.pl     2016-01-16 12:18:14.000000000 -0600
-+++ coreutils-8.25/tests/misc/uniq.pl  2016-02-08 19:07:10.317944671 -0600
+diff -Naurp coreutils-8.27-orig/tests/misc/uniq.pl coreutils-8.27/tests/misc/uniq.pl
+--- coreutils-8.27-orig/tests/misc/uniq.pl     2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/misc/uniq.pl  2017-03-11 23:47:13.103285687 -0600
 @@ -23,9 +23,17 @@ my $limits = getlimits ();
  my $prog = 'uniq';
  my $try = "Try '$prog --help' for more information.\n";
@@ -4720,9 +5275,9 @@ diff -Naurp coreutils-8.25-orig/tests/misc/uniq.pl coreutils-8.25/tests/misc/uni
  @Tests = add_z_variants \@Tests;
  @Tests = triple_test \@Tests;
  
-diff -Naurp coreutils-8.25-orig/tests/pr/pr-tests.pl coreutils-8.25/tests/pr/pr-tests.pl
---- coreutils-8.25-orig/tests/pr/pr-tests.pl   2016-01-16 12:18:14.000000000 -0600
-+++ coreutils-8.25/tests/pr/pr-tests.pl        2016-02-08 19:07:10.318944674 -0600
+diff -Naurp coreutils-8.27-orig/tests/pr/pr-tests.pl coreutils-8.27/tests/pr/pr-tests.pl
+--- coreutils-8.27-orig/tests/pr/pr-tests.pl   2017-01-01 16:34:24.000000000 -0600
++++ coreutils-8.27/tests/pr/pr-tests.pl        2017-03-11 23:47:13.103285687 -0600
 @@ -24,6 +24,15 @@ use strict;
  my $prog = 'pr';
  my $normalize_strerror = "s/': .*/'/";
@@ -4739,9 +5294,9 @@ diff -Naurp coreutils-8.25-orig/tests/pr/pr-tests.pl coreutils-8.25/tests/pr/pr-
  my @tv = (
  
  # -b option is no longer an official option. But it's still working to
-@@ -467,8 +476,48 @@ push @Tests,
-     {IN=>{3=>"x\ty\tz\n"}},
-      {OUT=>join("\t", qw(a b c m n o x y z)) . "\n"} ];
+@@ -474,8 +483,48 @@ push @Tests,
+     {IN=>{2=>"a\n"}},
+      {OUT=>"a\t\t\t\t  \t\t\ta\n"} ];
  
 +# Add _POSIX2_VERSION=199209 to the environment of each test
 +# that uses an old-style option like +1.
@@ -4769,7 +5324,7 @@ diff -Naurp coreutils-8.25-orig/tests/pr/pr-tests.pl coreutils-8.25/tests/pr/pr-
 +            push @$t, $sub;
 +          }
 +        #temporarily skip some failing tests
-+        next if ($test_name =~ "col-0" or $test_name =~ "col-inval");
++        next if ($test_name =~ "col-0" or $test_name =~ "col-inval" or $test_name =~ "asan1");
 +        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
 +      }
 +    push @Tests, @new;
@@ -4788,3 +5343,179 @@ diff -Naurp coreutils-8.25-orig/tests/pr/pr-tests.pl coreutils-8.25/tests/pr/pr-
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
  
+diff -Naurp coreutils-8.27-orig/tests/unexpand/mb.sh coreutils-8.27/tests/unexpand/mb.sh
+--- coreutils-8.27-orig/tests/unexpand/mb.sh   1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.27/tests/unexpand/mb.sh        2017-03-11 23:49:06.759133489 -0600
+@@ -0,0 +1,172 @@
++#!/bin/sh
++
++# Copyright (C) 2012-2017 Free Software Foundation, Inc.
++
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but 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, see <http://www.gnu.org/licenses/>.
++
++. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
++print_ver_ unexpand
++
++export LC_ALL=en_US.UTF-8
++
++#input containing multibyte characters
++cat > in <<\EOF
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
++EOF
++
++cat > exp <<\EOF
++1234567812345678123456781
++.     .       .       .
++a     b       c       d
++.     .       .       .
++ä    ö      ü      ß
++.     .       .       .
++   äöü     .    öüä.    ä xx
++EOF
++
++unexpand -a < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++
++#multiple files as an input
++cat >> exp <<\EOF
++1234567812345678123456781
++.     .       .       .
++a     b       c       d
++.     .       .       .
++ä    ö      ü      ß
++.     .       .       .
++   äöü     .    öüä.    ä xx
++EOF
++
++
++unexpand -a ./in ./in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#test characters with a display width larger than 1
++
++env printf '12345678
++e       |ascii(1)
++\u00E9       |composed(1)
++e\u0301       |decomposed(1)
++\u3000      |ideo-space(2)
++\uFF0D      |full-hypen(2)
++' > in || framework_failure_
++
++env printf '12345678
++e\t|ascii(1)
++\u00E9\t|composed(1)
++e\u0301\t|decomposed(1)
++\u3000\t|ideo-space(2)
++\uFF0D\t|full-hypen(2)
++' > exp || framework_failure_
++
++unexpand -a < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#test input where a blank of width > 1 is not being substituted
++in="$(LC_ALL=en_US.UTF-8 printf ' \u3000  ö       ü       ß')"
++exp='    ö      ü      ß'
++
++unexpand -a < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#non-Unicode characters interspersed between Unicode ones
++env printf '12345678
++        \xFF|
++\xFF       |
++        \xFFä|
++ä\xFF      |
++        ä\xFF|
++\xFF       ä|
++äbcdef\xFF |
++' > in || framework_failure_
++
++env printf '12345678
++\t\xFF|
++\xFF\t|
++\t\xFFä|
++ä\xFF\t|
++\tä\xFF|
++\xFF\tä|
++äbcdef\xFF\t|
++' > exp || framework_failure_
++
++unexpand -a < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++#BOM header test 1
++printf "\xEF\xBB\xBF" > in; cat <<\EOF >> in || framework_failure_
++1234567812345678123456781
++.       .       .       .
++a       b       c       d
++.       .       .       .
++ä       ö       ü       ß
++.       .       .       .
++   äöü  .    öüä.       ä xx
++EOF
++env printf '   äöü\t.    öüä.   \tä xx\n' >> in || framework_failure_
++
++printf "\xEF\xBB\xBF" > exp; cat <<\EOF >> exp || framework_failure_
++1234567812345678123456781
++.     .       .       .
++a     b       c       d
++.     .       .       .
++ä    ö      ü      ß
++.     .       .       .
++   äöü     .    öüä.    ä xx
++EOF
++
++unexpand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LANG=C unexpand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LC_ALL=C unexpand < in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++
++printf "\xEF\xBB\xBF" > exp; cat <<\EOF >> exp || framework_failure_
++1234567812345678123456781
++.     .       .       .
++a     b       c       d
++.     .       .       .
++ä    ö      ü      ß
++.     .       .       .
++   äöü     .    öüä.    ä xx
++1234567812345678123456781
++.     .       .       .
++a     b       c       d
++.     .       .       .
++ä    ö      ü      ß
++.     .       .       .
++   äöü     .    öüä.    ä xx
++EOF
++
++
++unexpand in in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LANG=C unexpand in in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
++
++LC_ALL=C unexpand in in > out || fail=1
++compare exp out > /dev/null 2>&1 || fail=1
diff --git a/src/patches/coreutils-8.27-uname-1.patch b/src/patches/coreutils-8.27-uname-1.patch
new file mode 100644 (file)
index 0000000..716f586
--- /dev/null
@@ -0,0 +1,170 @@
+Submitted by:            DJ Lucas (dj_at_linuxfromscratch_dot_org)
+Date:                    2012-04-21
+Initial Package Version: 8.16
+Upstream Status:         Rejected
+Origin:                  Based on Gentoo patch
+Description:             Makes uname -m output more descriptive
+
+diff -Naurp coreutils-8.16-orig/src/uname.c coreutils-8.16/src/uname.c
+--- coreutils-8.16-orig/src/uname.c    2012-04-22 20:02:39.000000000 +0000
++++ coreutils-8.16/src/uname.c 2012-04-22 20:02:50.000000000 +0000
+@@ -49,6 +49,11 @@
+ # include <mach-o/arch.h>
+ #endif
++#if defined(__linux__)
++# define USE_PROCINFO
++# define UNAME_HARDWARE_PLATFORM
++#endif
++
+ #include "system.h"
+ #include "die.h"
+ #include "error.h"
+@@ -153,6 +158,117 @@ Print machine architecture.\n\
+   exit (status);
+ }
++#if defined(USE_PROCINFO)
++
++# if defined(__s390__) || defined(__s390x__)
++#  define CPUINFO_FILE    "/proc/sysinfo"
++#  define CPUINFO_FORMAT  "%64[^\t :]%*[ :]%256[^\n]%c"
++# else
++#  define CPUINFO_FILE    "/proc/cpuinfo"
++#  define CPUINFO_FORMAT  "%64[^\t:]\t:%256[^\n]%c"
++# endif
++
++# define PROCINFO_PROCESSOR      0
++# define PROCINFO_HARDWARE_PLATFORM 1
++
++static void __eat_cpuinfo_space(char *buf)
++{
++      /* first eat trailing space */
++      char *tmp = buf + strlen(buf) - 1;
++      while (tmp > buf && isspace(*tmp))
++              *tmp-- = '\0';
++      /* then eat leading space */
++      tmp = buf;
++      while (*tmp && isspace(*tmp))
++              tmp++;
++      if (tmp != buf)
++              memmove(buf, tmp, strlen(tmp)+1);
++      /* finally collapse whitespace */
++      tmp = buf;
++      while (tmp[0] && tmp[1]) {
++              if (isspace(tmp[0]) && isspace(tmp[1])) {
++                      memmove(tmp, tmp+1, strlen(tmp));
++                      continue;
++              }
++              ++tmp;
++      }
++}
++
++static int __linux_procinfo(int x, char *fstr, size_t s)
++{
++      FILE *fp;
++
++      char *procinfo_keys[] = {
++              /* --processor --hardware-platform */
++              #if defined(__alpha__)
++                      "cpu model", "system type"
++              #elif defined(__arm__)
++                      "Processor", "Hardware"
++              #elif defined(__avr32__)
++                      "processor", "cpu family"
++              #elif defined(__bfin__)
++                      "CPU", "BOARD Name"
++              #elif defined(__cris__)
++                      "cpu", "cpu model"
++              #elif defined(__frv__)
++                      "CPU-Core", "System"
++              #elif defined(__i386__) || defined(__x86_64__)
++                      "model name", "vendor_id"
++              #elif defined(__ia64__)
++                      "family", "vendor"
++              #elif defined(__hppa__)
++                      "cpu", "model"
++              #elif defined(__m68k__)
++                      "CPU", "MMU"
++              #elif defined(__mips__)
++                      "cpu model", "system type"
++              #elif defined(__powerpc__) || defined(__powerpc64__)
++                      "cpu", "machine"
++              #elif defined(__s390__) || defined(__s390x__)
++                      "Type", "Manufacturer"
++              #elif defined(__sh__)
++                      "cpu type", "machine"
++              #elif defined(sparc) || defined(__sparc__)
++                      "type", "cpu"
++              #elif defined(__vax__)
++                      "cpu type", "cpu"
++              #else
++                      "unknown", "unknown"
++              #endif
++      };
++
++      if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
++              char key[65], value[257], eol, *ret = NULL;
++
++              while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
++                      __eat_cpuinfo_space(key);
++                      if (!strcmp(key, procinfo_keys[x])) {
++                              __eat_cpuinfo_space(value);
++                              ret = value;
++                              break;
++                      }
++                      if (eol != '\n') {
++                              /* we need two fscanf's here in case the previous
++                               * length limit caused us to read right up to the
++                               * newline ... doing "%*[^\n]\n" wont eat the newline
++                               */
++                              fscanf(fp, "%*[^\n]");
++                              fscanf(fp, "\n");
++                      }
++              }
++              fclose(fp);
++
++              if (ret) {
++                      strncpy(fstr, ret, s);
++                      return 0;
++              }
++      }
++
++      return -1;
++}
++
++#endif
++
+ /* Print ELEMENT, preceded by a space if something has already been
+    printed.  */
+@@ -300,10 +416,14 @@ main (int argc, char **argv)
+   if (toprint & PRINT_PROCESSOR)
+     {
+       char const *element = unknown;
+-#if HAVE_SYSINFO && defined SI_ARCHITECTURE
++#if ( HAVE_SYSINFO && defined SI_ARCHITECTURE ) || defined(USE_PROCINFO)
+       {
+         static char processor[257];
++#if defined(USE_PROCINFO)
++        if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
++#else
+         if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
++#endif
+           element = processor;
+       }
+ #endif
+@@ -356,9 +476,13 @@ main (int argc, char **argv)
+       if (element == unknown)
+         {
+           static char hardware_platform[257];
++#if defined(USE_PROCINFO)
++          if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
++#else
+           size_t s = sizeof hardware_platform;
+           static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
+           if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
++#endif
+             element = hardware_platform;
+         }
+ #endif
diff --git a/src/patches/dbus-1.0.3-compile-fix-1.patch b/src/patches/dbus-1.0.3-compile-fix-1.patch
deleted file mode 100644 (file)
index 86fd2b3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c   2009-01-01 03:50:33.000000000 +0200
-+++ dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c   2009-01-01 04:09:24.000000000 +0200
-@@ -992,7 +992,7 @@ 
-   _dbus_verbose ("read credentials byte\n");
-   {
--#ifdef SO_PEERCRED
-+#if defined(SO_PEERCRED) && defined(HAVE_GETPEERUCRED)
-     struct ucred cr;   
-     int cr_len = sizeof (cr);
-    
diff --git a/src/patches/gzip-1.3.5-security_fixes-1.patch b/src/patches/gzip-1.3.5-security_fixes-1.patch
deleted file mode 100644 (file)
index 7350899..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-Submitted By: Matthew Burgess (matthew at linuxfromscratch dot org)
-Origin: http://security.ubuntu.com/ubuntu/pool/main/g/gzip/gzip_1.3.5-9ubuntu3.1.diff.gz
-Date: 2005-05-12
-Initial package version: 1.3.5
-Description: Fix two security vulnerabilities in gzip: A path traversal
-bug when using the -N option (CAN-2005-1228) and a race condition in the
-file permission restore code (CAN-2005-0998).
-
-diff -Naur gzip-1.3.5.orig/gzip.c gzip-1.3.5/gzip.c
---- gzip-1.3.5.orig/gzip.c     2002-09-28 07:38:43.000000000 +0000
-+++ gzip-1.3.5/gzip.c  2005-05-12 19:15:14.796031360 +0000
-@@ -875,8 +875,11 @@
-     }
-     close(ifd);
--    if (!to_stdout && close(ofd)) {
--      write_error();
-+    if (!to_stdout) {
-+         /* Copy modes, times, ownership, and remove the input file */
-+         copy_stat(&istat);
-+         if (close(ofd))
-+            write_error();
-     }
-     if (method == -1) {
-       if (!to_stdout) xunlink (ofname);
-@@ -896,10 +899,6 @@
-       }
-       fprintf(stderr, "\n");
-     }
--    /* Copy modes, times, ownership, and remove the input file */
--    if (!to_stdout) {
--      copy_stat(&istat);
--    }
- }
- /* ========================================================================
-@@ -1324,6 +1323,8 @@
-                       error("corrupted input -- file name too large");
-                   }
-               }
-+              char *base2 = base_name (base);
-+              strcpy(base, base2);
-                 /* If necessary, adapt the name to local OS conventions: */
-                 if (!list) {
-                    MAKE_LEGAL_NAME(base);
-@@ -1725,7 +1726,7 @@
-     reset_times(ofname, ifstat);
- #endif
-     /* Copy the protection modes */
--    if (chmod(ofname, ifstat->st_mode & 07777)) {
-+    if (fchmod(ofd, ifstat->st_mode & 07777)) {
-       int e = errno;
-       WARN((stderr, "%s: ", progname));
-       if (!quiet) {
-@@ -1734,7 +1735,7 @@
-       }
-     }
- #ifndef NO_CHOWN
--    chown(ofname, ifstat->st_uid, ifstat->st_gid);  /* Copy ownership */
-+    fchown(ofd, ifstat->st_uid, ifstat->st_gid);  /* Copy ownership */
- #endif
-     remove_ofname = 0;
-     /* It's now safe to remove the input file: */
diff --git a/src/patches/mpfr-3.1.3-upstream_fixes-1.patch b/src/patches/mpfr-3.1.3-upstream_fixes-1.patch
deleted file mode 100644 (file)
index 949ff73..0000000
+++ /dev/null
@@ -1,1707 +0,0 @@
-Submitted By:            Bruce Dubbs <bdubbs_at_linuxfromscratch_dot_org>
-Date:                    2015-08-25
-Initial Package Version: 3.3.3
-Upstream Status:         Already in upstream patch repo
-Origin:                  Upstream http://www.mpfr.org/mpfr-current/allpatches
-                         as of 2015-08-25.
-Description:             This patch contains bug fixes identified upstream.
-
-diff -Naurd mpfr-3.1.3-a/PATCHES mpfr-3.1.3-b/PATCHES
---- mpfr-3.1.3-a/PATCHES       2015-07-02 10:49:23.950112879 +0000
-+++ mpfr-3.1.3-b/PATCHES       2015-07-02 10:49:24.042113845 +0000
-@@ -0,0 +1 @@
-+lngamma-and-doc
-diff -Naurd mpfr-3.1.3-a/VERSION mpfr-3.1.3-b/VERSION
---- mpfr-3.1.3-a/VERSION       2015-06-19 19:55:09.000000000 +0000
-+++ mpfr-3.1.3-b/VERSION       2015-07-02 10:49:24.042113845 +0000
-@@ -1 +1 @@
--3.1.3
-+3.1.3-p1
-diff -Naurd mpfr-3.1.3-a/doc/mpfr.texi mpfr-3.1.3-b/doc/mpfr.texi
---- mpfr-3.1.3-a/doc/mpfr.texi 2015-06-19 19:55:11.000000000 +0000
-+++ mpfr-3.1.3-b/doc/mpfr.texi 2015-07-02 10:49:24.018113593 +0000
-@@ -810,13 +810,17 @@
- When the input point is in the closure of the domain of the mathematical
- function and an input argument is +0 (resp.@: @minus{}0), one considers
- the limit when the corresponding argument approaches 0 from above
--(resp.@: below). If the limit is not defined (e.g., @code{mpfr_log} on
--@minus{}0), the behavior is specified in the description of the MPFR function.
-+(resp.@: below), if possible. If the limit is not defined (e.g.,
-+@code{mpfr_sqrt} and @code{mpfr_log} on @minus{}0), the behavior is
-+specified in the description of the MPFR function, but must be consistent
-+with the rule from the above paragraph (e.g., @code{mpfr_log} on @pom{}0
-+gives @minus{}Inf).
- When the result is equal to 0, its sign is determined by considering the
- limit as if the input point were not in the domain: If one approaches 0
- from above (resp.@: below), the result is +0 (resp.@: @minus{}0);
--for example, @code{mpfr_sin} on +0 gives +0.
-+for example, @code{mpfr_sin} on @minus{}0 gives @minus{}0 and
-+@code{mpfr_acos} on 1 gives +0 (in all rounding modes).
- In the other cases, the sign is specified in the description of the MPFR
- function; for example @code{mpfr_max} on @minus{}0 and +0 gives +0.
-@@ -832,8 +836,8 @@
- @c that advantages in practice), like for any bug fix.
- Example: @code{mpfr_hypot} on (NaN,0) gives NaN, but @code{mpfr_hypot}
- on (NaN,+Inf) gives +Inf (as specified in @ref{Special Functions}),
--since for any finite input @var{x}, @code{mpfr_hypot} on (@var{x},+Inf)
--gives +Inf.
-+since for any finite or infinite input @var{x}, @code{mpfr_hypot} on
-+(@var{x},+Inf) gives +Inf.
- @node Exceptions, Memory Handling, Floating-Point Values on Special Numbers, MPFR Basics
- @comment  node-name,  next,  previous,  up
-@@ -1581,7 +1585,8 @@
- @deftypefunx int mpfr_add_z (mpfr_t @var{rop}, mpfr_t @var{op1}, mpz_t @var{op2}, mpfr_rnd_t @var{rnd})
- @deftypefunx int mpfr_add_q (mpfr_t @var{rop}, mpfr_t @var{op1}, mpq_t @var{op2}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to @math{@var{op1} + @var{op2}} rounded in the direction
--@var{rnd}. For types having no signed zero, it is considered unsigned
-+@var{rnd}.  The IEEE-754 rules are used, in particular for signed zeros.
-+But for types having no signed zeros, 0 is considered unsigned
- (i.e., (+0) + 0 = (+0) and (@minus{}0) + 0 = (@minus{}0)).
- The @code{mpfr_add_d} function assumes that the radix of the @code{double} type
- is a power of 2, with a precision at most that declared by the C implementation
-@@ -1599,7 +1604,8 @@
- @deftypefunx int mpfr_sub_z (mpfr_t @var{rop}, mpfr_t @var{op1}, mpz_t @var{op2}, mpfr_rnd_t @var{rnd})
- @deftypefunx int mpfr_sub_q (mpfr_t @var{rop}, mpfr_t @var{op1}, mpq_t @var{op2}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to @math{@var{op1} - @var{op2}} rounded in the direction
--@var{rnd}. For types having no signed zero, it is considered unsigned
-+@var{rnd}.  The IEEE-754 rules are used, in particular for signed zeros.
-+But for types having no signed zeros, 0 is considered unsigned
- (i.e., (+0) @minus{} 0 = (+0), (@minus{}0) @minus{} 0 = (@minus{}0),
- 0 @minus{} (+0) = (@minus{}0) and 0 @minus{} (@minus{}0) = (+0)).
- The same restrictions than for @code{mpfr_add_d} apply to @code{mpfr_d_sub}
-@@ -1615,7 +1621,7 @@
- Set @var{rop} to @math{@var{op1} @GMPtimes{} @var{op2}} rounded in the
- direction @var{rnd}.
- When a result is zero, its sign is the product of the signs of the operands
--(for types having no signed zero, it is considered positive).
-+(for types having no signed zeros, 0 is considered positive).
- The same restrictions than for @code{mpfr_add_d} apply to @code{mpfr_mul_d}.
- @end deftypefun
-@@ -1635,7 +1641,7 @@
- @deftypefunx int mpfr_div_q (mpfr_t @var{rop}, mpfr_t @var{op1}, mpq_t @var{op2}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to @math{@var{op1}/@var{op2}} rounded in the direction @var{rnd}.
- When a result is zero, its sign is the product of the signs of the operands
--(for types having no signed zero, it is considered positive).
-+(for types having no signed zeros, 0 is considered positive).
- The same restrictions than for @code{mpfr_add_d} apply to @code{mpfr_d_div}
- and @code{mpfr_div_d}.
- @end deftypefun
-@@ -1643,15 +1649,18 @@
- @deftypefun int mpfr_sqrt (mpfr_t @var{rop}, mpfr_t @var{op}, mpfr_rnd_t @var{rnd})
- @deftypefunx int mpfr_sqrt_ui (mpfr_t @var{rop}, unsigned long int @var{op}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to @m{\sqrt{@var{op}}, the square root of @var{op}}
--rounded in the direction @var{rnd} (set @var{rop} to @minus{}0 if @var{op} is
--@minus{}0, to be consistent with the IEEE 754 standard).
-+rounded in the direction @var{rnd}.  Set @var{rop} to @minus{}0 if
-+@var{op} is @minus{}0, to be consistent with the IEEE 754 standard.
- Set @var{rop} to NaN if @var{op} is negative.
- @end deftypefun
- @deftypefun int mpfr_rec_sqrt (mpfr_t @var{rop}, mpfr_t @var{op}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to @m{1/\sqrt{@var{op}}, the reciprocal square root of @var{op}}
--rounded in the direction @var{rnd}. Set @var{rop} to +Inf if @var{op} is
--@pom{}0, +0 if @var{op} is +Inf, and NaN if @var{op} is negative.
-+rounded in the direction @var{rnd}.  Set @var{rop} to +Inf if @var{op} is
-+@pom{}0, +0 if @var{op} is +Inf, and NaN if @var{op} is negative.  Warning!
-+Therefore the result on @minus{}0 is different from the one of the rSqrt
-+function recommended by the IEEE 754-2008 standard (Section 9.2.1), which
-+is @minus{}Inf instead of +Inf.
- @end deftypefun
- @deftypefun int mpfr_cbrt (mpfr_t @var{rop}, mpfr_t @var{op}, mpfr_rnd_t @var{rnd})
-@@ -1832,7 +1841,9 @@
- @m{\log_2 @var{op}, log2(@var{op})} or
- @m{\log_{10} @var{op}, log10(@var{op})}, respectively,
- rounded in the direction @var{rnd}.
--Set @var{rop} to @minus{}Inf if @var{op} is @minus{}0
-+Set @var{rop} to +0 if @var{op} is 1 (in all rounding modes),
-+for consistency with the ISO C99 and IEEE 754-2008 standards.
-+Set @var{rop} to @minus{}Inf if @var{op} is @pom{}0
- (i.e., the sign of the zero has no influence on the result).
- @end deftypefun
-@@ -2003,8 +2014,11 @@
- @deftypefun int mpfr_lngamma (mpfr_t @var{rop}, mpfr_t @var{op}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to the value of the logarithm of the Gamma function on @var{op},
- rounded in the direction @var{rnd}.
--When @math{@minus{}2@var{k}@minus{}1 @le{} @var{op} @le{} @minus{}2@var{k}},
--@var{k} being a non-negative integer, @var{rop} is set to NaN.
-+When @var{op} is 1 or 2, set @var{rop} to +0 (in all rounding modes).
-+When @var{op} is an infinity or a nonpositive integer, set @var{rop} to +Inf,
-+following the general rules on special values.
-+When @math{@minus{}2@var{k}@minus{}1 < @var{op} < @minus{}2@var{k}},
-+@var{k} being a nonnegative integer, set @var{rop} to NaN@.
- See also @code{mpfr_lgamma}.
- @end deftypefun
-@@ -2012,10 +2026,11 @@
- Set @var{rop} to the value of the logarithm of the absolute value of the
- Gamma function on @var{op}, rounded in the direction @var{rnd}. The sign
- (1 or @minus{}1) of Gamma(@var{op}) is returned in the object pointed to
--by @var{signp}. When @var{op} is an infinity or a non-positive integer, set
--@var{rop} to +Inf. When @var{op} is NaN, @minus{}Inf or a negative integer,
--*@var{signp} is undefined, and when @var{op} is @pom{}0, *@var{signp} is
--the sign of the zero.
-+by @var{signp}.
-+When @var{op} is 1 or 2, set @var{rop} to +0 (in all rounding modes).
-+When @var{op} is an infinity or a nonpositive integer, set @var{rop} to +Inf.
-+When @var{op} is NaN, @minus{}Inf or a negative integer, *@var{signp} is
-+undefined, and when @var{op} is @pom{}0, *@var{signp} is the sign of the zero.
- @end deftypefun
- @deftypefun int mpfr_digamma (mpfr_t @var{rop}, mpfr_t @var{op}, mpfr_rnd_t @var{rnd})
-@@ -2064,7 +2079,10 @@
- @deftypefunx int mpfr_fms (mpfr_t @var{rop}, mpfr_t @var{op1}, mpfr_t @var{op2}, mpfr_t @var{op3}, mpfr_rnd_t @var{rnd})
- Set @var{rop} to @math{(@var{op1} @GMPtimes{} @var{op2}) + @var{op3}}
- (resp.@: @math{(@var{op1} @GMPtimes{} @var{op2}) - @var{op3}})
--rounded in the direction @var{rnd}.
-+rounded in the direction @var{rnd}.  Concerning special values (signed zeros,
-+infinities, NaN), these functions behave like a multiplication followed by a
-+separate addition or subtraction.  That is, the fused operation matters only
-+for rounding.
- @end deftypefun
- @deftypefun int mpfr_agm (mpfr_t @var{rop}, mpfr_t @var{op1}, mpfr_t @var{op2}, mpfr_rnd_t @var{rnd})
-@@ -2089,8 +2107,8 @@
- i.e., $\sqrt{x^2+y^2}$,
- @end tex
- rounded in the direction @var{rnd}.
--Special values are handled as described in Section F.9.4.3 of
--the ISO C99 and IEEE 754-2008 standards:
-+Special values are handled as described in the ISO C99 (Section F.9.4.3)
-+and IEEE 754-2008 (Section 9.2.1) standards:
- If @var{x} or @var{y} is an infinity, then +Inf is returned in @var{rop},
- even if the other number is NaN.
- @end deftypefun
-diff -Naurd mpfr-3.1.3-a/doc/mpfr.info mpfr-3.1.3-b/doc/mpfr.info
---- mpfr-3.1.3-a/doc/mpfr.info 2015-06-19 19:55:53.000000000 +0000
-+++ mpfr-3.1.3-b/doc/mpfr.info 2015-07-02 10:49:38.718267817 +0000
-@@ -1,4 +1,4 @@
--This is mpfr.info, produced by makeinfo version 5.2 from mpfr.texi.
-+This is mpfr.info, produced by makeinfo version 6.0 from mpfr.texi.
- This manual documents how to install and use the Multiple Precision
- Floating-Point Reliable Library, version 3.1.3.
-@@ -55,7 +55,7 @@
- MPFR Copying Conditions
- ***********************
--The GNU MPFR library (or MPFR for short) is "free"; this means that
-+The GNU MPFR library (or MPFR for short) is “free”; this means that
- everyone is free to use it and free to redistribute it on a free basis.
- The library is not in the public domain; it is copyrighted and there are
- restrictions on its distribution, but these restrictions are designed to
-@@ -418,7 +418,7 @@
- 4.2 Nomenclature and Types
- ==========================
--A "floating-point number", or "float" for short, is an arbitrary
-+A “floating-point number”, or “float” for short, is an arbitrary
- precision significand (also called mantissa) with a limited precision
- exponent.  The C data type for such objects is ‘mpfr_t’ (internally
- defined as a one-element array of a structure, and ‘mpfr_ptr’ is the C
-@@ -432,7 +432,7 @@
- to the other functions supported by MPFR. Unless documented otherwise,
- the sign bit of a NaN is unspecified.
--The "precision" is the number of bits used to represent the significand
-+The “precision” is the number of bits used to represent the significand
- of a floating-point number; the corresponding C data type is
- ‘mpfr_prec_t’.  The precision can be any integer between ‘MPFR_PREC_MIN’
- and ‘MPFR_PREC_MAX’.  In the current implementation, ‘MPFR_PREC_MIN’ is
-@@ -446,7 +446,7 @@
- may abort, crash or have undefined behavior (depending on your C
- implementation).
--The "rounding mode" specifies the way to round the result of a
-+The “rounding mode” specifies the way to round the result of a
- floating-point operation, in case the exact result can not be
- represented exactly in the destination significand; the corresponding C
- data type is ‘mpfr_rnd_t’.
-@@ -499,14 +499,14 @@
- representable numbers, it is rounded to the one with the least
- significant bit set to zero.  For example, the number 2.5, which is
- represented by (10.1) in binary, is rounded to (10.0)=2 with a precision
--of two bits, and not to (11.0)=3.  This rule avoids the "drift"
-+of two bits, and not to (11.0)=3.  This rule avoids the “drift”
- phenomenon mentioned by Knuth in volume 2 of The Art of Computer
- Programming (Section 4.2.2).
-    Most MPFR functions take as first argument the destination variable,
- as second and following arguments the input variables, as last argument
- a rounding mode, and have a return value of type ‘int’, called the
--"ternary value".  The value stored in the destination variable is
-+“ternary value”.  The value stored in the destination variable is
- correctly rounded, i.e., MPFR behaves as if it computed the result with
- an infinite precision, then rounded it to the precision of this
- variable.  The input variables are regarded as exact (in particular,
-@@ -572,15 +572,18 @@
-    When the input point is in the closure of the domain of the
- mathematical function and an input argument is +0 (resp. −0), one
- considers the limit when the corresponding argument approaches 0 from
--above (resp. below).  If the limit is not defined (e.g., ‘mpfr_log’ on
--−0), the behavior is specified in the description of the MPFR function.
-+above (resp. below), if possible.  If the limit is not defined (e.g.,
-+‘mpfr_sqrt’ and ‘mpfr_log’ on −0), the behavior is specified in the
-+description of the MPFR function, but must be consistent with the rule
-+from the above paragraph (e.g., ‘mpfr_log’ on ±0 gives −Inf).
-    When the result is equal to 0, its sign is determined by considering
- the limit as if the input point were not in the domain: If one
- approaches 0 from above (resp. below), the result is +0 (resp. −0); for
--example, ‘mpfr_sin’ on +0 gives +0.  In the other cases, the sign is
--specified in the description of the MPFR function; for example
--‘mpfr_max’ on −0 and +0 gives +0.
-+example, ‘mpfr_sin’ on −0 gives −0 and ‘mpfr_acos’ on 1 gives +0 (in all
-+rounding modes).  In the other cases, the sign is specified in the
-+description of the MPFR function; for example ‘mpfr_max’ on −0 and +0
-+gives +0.
-    When the input point is not in the closure of the domain of the
- function, the result is NaN. Example: ‘mpfr_sqrt’ on −17 gives NaN.
-@@ -590,8 +593,8 @@
- numbers; such a case is always explicitly specified in *note MPFR
- Interface::.  Example: ‘mpfr_hypot’ on (NaN,0) gives NaN, but
- ‘mpfr_hypot’ on (NaN,+Inf) gives +Inf (as specified in *note Special
--Functions::), since for any finite input X, ‘mpfr_hypot’ on (X,+Inf)
--gives +Inf.
-+Functions::), since for any finite or infinite input X, ‘mpfr_hypot’ on
-+(X,+Inf) gives +Inf.
\1f
- File: mpfr.info,  Node: Exceptions,  Next: Memory Handling,  Prev: Floating-Point Values on Special Numbers,  Up: MPFR Basics
-@@ -1253,8 +1256,9 @@
-           mpfr_rnd_t RND)
-  -- Function: int mpfr_add_q (mpfr_t ROP, mpfr_t OP1, mpq_t OP2,
-           mpfr_rnd_t RND)
--     Set ROP to OP1 + OP2 rounded in the direction RND.  For types
--     having no signed zero, it is considered unsigned (i.e., (+0) + 0 =
-+     Set ROP to OP1 + OP2 rounded in the direction RND.  The IEEE-754
-+     rules are used, in particular for signed zeros.  But for types
-+     having no signed zeros, 0 is considered unsigned (i.e., (+0) + 0 =
-      (+0) and (−0) + 0 = (−0)).  The ‘mpfr_add_d’ function assumes that
-      the radix of the ‘double’ type is a power of 2, with a precision at
-      most that declared by the C implementation (macro
-@@ -1280,8 +1284,9 @@
-           mpfr_rnd_t RND)
-  -- Function: int mpfr_sub_q (mpfr_t ROP, mpfr_t OP1, mpq_t OP2,
-           mpfr_rnd_t RND)
--     Set ROP to OP1 - OP2 rounded in the direction RND.  For types
--     having no signed zero, it is considered unsigned (i.e., (+0) − 0 =
-+     Set ROP to OP1 - OP2 rounded in the direction RND.  The IEEE-754
-+     rules are used, in particular for signed zeros.  But for types
-+     having no signed zeros, 0 is considered unsigned (i.e., (+0) − 0 =
-      (+0), (−0) − 0 = (−0), 0 − (+0) = (−0) and 0 − (−0) = (+0)).  The
-      same restrictions than for ‘mpfr_add_d’ apply to ‘mpfr_d_sub’ and
-      ‘mpfr_sub_d’.
-@@ -1300,7 +1305,7 @@
-           mpfr_rnd_t RND)
-      Set ROP to OP1 times OP2 rounded in the direction RND.  When a
-      result is zero, its sign is the product of the signs of the
--     operands (for types having no signed zero, it is considered
-+     operands (for types having no signed zeros, 0 is considered
-      positive).  The same restrictions than for ‘mpfr_add_d’ apply to
-      ‘mpfr_mul_d’.
-@@ -1327,21 +1332,24 @@
-           mpfr_rnd_t RND)
-      Set ROP to OP1/OP2 rounded in the direction RND.  When a result is
-      zero, its sign is the product of the signs of the operands (for
--     types having no signed zero, it is considered positive).  The same
-+     types having no signed zeros, 0 is considered positive).  The same
-      restrictions than for ‘mpfr_add_d’ apply to ‘mpfr_d_div’ and
-      ‘mpfr_div_d’.
-  -- Function: int mpfr_sqrt (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-  -- Function: int mpfr_sqrt_ui (mpfr_t ROP, unsigned long int OP,
-           mpfr_rnd_t RND)
--     Set ROP to the square root of OP rounded in the direction RND (set
--     ROP to −0 if OP is −0, to be consistent with the IEEE 754
--     standard).  Set ROP to NaN if OP is negative.
-+     Set ROP to the square root of OP rounded in the direction RND.  Set
-+     ROP to −0 if OP is −0, to be consistent with the IEEE 754 standard.
-+     Set ROP to NaN if OP is negative.
-  -- Function: int mpfr_rec_sqrt (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-      Set ROP to the reciprocal square root of OP rounded in the
-      direction RND.  Set ROP to +Inf if OP is ±0, +0 if OP is +Inf, and
--     NaN if OP is negative.
-+     NaN if OP is negative.  Warning!  Therefore the result on −0 is
-+     different from the one of the rSqrt function recommended by the
-+     IEEE 754-2008 standard (Section 9.2.1), which is −Inf instead of
-+     +Inf.
-  -- Function: int mpfr_cbrt (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-  -- Function: int mpfr_root (mpfr_t ROP, mpfr_t OP, unsigned long int K,
-@@ -1515,8 +1523,10 @@
-  -- Function: int mpfr_log2 (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-  -- Function: int mpfr_log10 (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-      Set ROP to the natural logarithm of OP, log2(OP) or log10(OP),
--     respectively, rounded in the direction RND.  Set ROP to −Inf if OP
--     is −0 (i.e., the sign of the zero has no influence on the result).
-+     respectively, rounded in the direction RND.  Set ROP to +0 if OP is
-+     1 (in all rounding modes), for consistency with the ISO C99 and
-+     IEEE 754-2008 standards.  Set ROP to −Inf if OP is ±0 (i.e., the
-+     sign of the zero has no influence on the result).
-  -- Function: int mpfr_exp (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-  -- Function: int mpfr_exp2 (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-@@ -1649,17 +1659,21 @@
-  -- Function: int mpfr_lngamma (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-      Set ROP to the value of the logarithm of the Gamma function on OP,
--     rounded in the direction RND.  When −2K−1 <= OP <= −2K, K being a
--     non-negative integer, ROP is set to NaN. See also ‘mpfr_lgamma’.
-+     rounded in the direction RND.  When OP is 1 or 2, set ROP to +0 (in
-+     all rounding modes).  When OP is an infinity or a nonpositive
-+     integer, set ROP to +Inf, following the general rules on special
-+     values.  When −2K−1 < OP < −2K, K being a nonnegative integer, set
-+     ROP to NaN.  See also ‘mpfr_lgamma’.
-  -- Function: int mpfr_lgamma (mpfr_t ROP, int *SIGNP, mpfr_t OP,
-           mpfr_rnd_t RND)
-      Set ROP to the value of the logarithm of the absolute value of the
-      Gamma function on OP, rounded in the direction RND.  The sign (1 or
-      −1) of Gamma(OP) is returned in the object pointed to by SIGNP.
--     When OP is an infinity or a non-positive integer, set ROP to +Inf.
--     When OP is NaN, −Inf or a negative integer, *SIGNP is undefined,
--     and when OP is ±0, *SIGNP is the sign of the zero.
-+     When OP is 1 or 2, set ROP to +0 (in all rounding modes).  When OP
-+     is an infinity or a nonpositive integer, set ROP to +Inf.  When OP
-+     is NaN, −Inf or a negative integer, *SIGNP is undefined, and when
-+     OP is ±0, *SIGNP is the sign of the zero.
-  -- Function: int mpfr_digamma (mpfr_t ROP, mpfr_t OP, mpfr_rnd_t RND)
-      Set ROP to the value of the Digamma (sometimes also called Psi)
-@@ -1703,7 +1717,10 @@
-  -- Function: int mpfr_fms (mpfr_t ROP, mpfr_t OP1, mpfr_t OP2, mpfr_t
-           OP3, mpfr_rnd_t RND)
-      Set ROP to (OP1 times OP2) + OP3 (resp. (OP1 times OP2) - OP3)
--     rounded in the direction RND.
-+     rounded in the direction RND.  Concerning special values (signed
-+     zeros, infinities, NaN), these functions behave like a
-+     multiplication followed by a separate addition or subtraction.
-+     That is, the fused operation matters only for rounding.
-  -- Function: int mpfr_agm (mpfr_t ROP, mpfr_t OP1, mpfr_t OP2,
-           mpfr_rnd_t RND)
-@@ -1717,9 +1734,10 @@
-           RND)
-      Set ROP to the Euclidean norm of X and Y, i.e., the square root of
-      the sum of the squares of X and Y, rounded in the direction RND.
--     Special values are handled as described in Section F.9.4.3 of the
--     ISO C99 and IEEE 754-2008 standards: If X or Y is an infinity, then
--     +Inf is returned in ROP, even if the other number is NaN.
-+     Special values are handled as described in the ISO C99 (Section
-+     F.9.4.3) and IEEE 754-2008 (Section 9.2.1) standards: If X or Y is
-+     an infinity, then +Inf is returned in ROP, even if the other number
-+     is NaN.
-  -- Function: int mpfr_ai (mpfr_t ROP, mpfr_t X, mpfr_rnd_t RND)
-      Set ROP to the value of the Airy function Ai on X, rounded in the
-@@ -2670,7 +2688,7 @@
- 5.16 Internals
- ==============
--A "limb" means the part of a multi-precision number that fits in a
-+A “limb” means the part of a multi-precision number that fits in a
- single word.  Usually a limb contains 32 or 64 bits.  The C data type
- for a limb is ‘mp_limb_t’.
-@@ -3140,7 +3158,7 @@
-   0. PREAMBLE
-      The purpose of this License is to make a manual, textbook, or other
--     functional and useful document "free" in the sense of freedom: to
-+     functional and useful document “free” in the sense of freedom: to
-      assure everyone the effective freedom to copy and redistribute it,
-      with or without modifying it, either commercially or
-      noncommercially.  Secondarily, this License preserves for the
-@@ -3655,9 +3673,9 @@
- * Menu:
- * mpfr_abs:                              Basic Arithmetic Functions.
--                                                              (line 160)
--* mpfr_acos:                             Special Functions.   (line  51)
--* mpfr_acosh:                            Special Functions.   (line 115)
-+                                                              (line 165)
-+* mpfr_acos:                             Special Functions.   (line  53)
-+* mpfr_acosh:                            Special Functions.   (line 117)
- * mpfr_add:                              Basic Arithmetic Functions.
-                                                               (line   6)
- * mpfr_add_d:                            Basic Arithmetic Functions.
-@@ -3670,15 +3688,15 @@
-                                                               (line   8)
- * mpfr_add_z:                            Basic Arithmetic Functions.
-                                                               (line  14)
--* mpfr_agm:                              Special Functions.   (line 210)
--* mpfr_ai:                               Special Functions.   (line 226)
--* mpfr_asin:                             Special Functions.   (line  52)
--* mpfr_asinh:                            Special Functions.   (line 116)
-+* mpfr_agm:                              Special Functions.   (line 219)
-+* mpfr_ai:                               Special Functions.   (line 236)
-+* mpfr_asin:                             Special Functions.   (line  54)
-+* mpfr_asinh:                            Special Functions.   (line 118)
- * mpfr_asprintf:                         Formatted Output Functions.
-                                                               (line 193)
--* mpfr_atan:                             Special Functions.   (line  53)
--* mpfr_atan2:                            Special Functions.   (line  63)
--* mpfr_atanh:                            Special Functions.   (line 117)
-+* mpfr_atan:                             Special Functions.   (line  55)
-+* mpfr_atan2:                            Special Functions.   (line  65)
-+* mpfr_atanh:                            Special Functions.   (line 119)
- * mpfr_buildopt_decimal_p:               Miscellaneous Functions.
-                                                               (line 162)
- * mpfr_buildopt_gmpinternals_p:          Miscellaneous Functions.
-@@ -3690,7 +3708,7 @@
- * mpfr_can_round:                        Rounding Related Functions.
-                                                               (line  39)
- * mpfr_cbrt:                             Basic Arithmetic Functions.
--                                                              (line 108)
-+                                                              (line 113)
- * mpfr_ceil:                             Integer Related Functions.
-                                                               (line   7)
- * mpfr_check_range:                      Exception Related Functions.
-@@ -3735,18 +3753,18 @@
-                                                               (line  27)
- * mpfr_cmp_z:                            Comparison Functions.
-                                                               (line  11)
--* mpfr_const_catalan:                    Special Functions.   (line 237)
--* mpfr_const_euler:                      Special Functions.   (line 236)
--* mpfr_const_log2:                       Special Functions.   (line 234)
--* mpfr_const_pi:                         Special Functions.   (line 235)
-+* mpfr_const_catalan:                    Special Functions.   (line 247)
-+* mpfr_const_euler:                      Special Functions.   (line 246)
-+* mpfr_const_log2:                       Special Functions.   (line 244)
-+* mpfr_const_pi:                         Special Functions.   (line 245)
- * mpfr_copysign:                         Miscellaneous Functions.
-                                                               (line 109)
--* mpfr_cos:                              Special Functions.   (line  29)
--* mpfr_cosh:                             Special Functions.   (line  95)
--* mpfr_cot:                              Special Functions.   (line  47)
--* mpfr_coth:                             Special Functions.   (line 111)
--* mpfr_csc:                              Special Functions.   (line  46)
--* mpfr_csch:                             Special Functions.   (line 110)
-+* mpfr_cos:                              Special Functions.   (line  31)
-+* mpfr_cosh:                             Special Functions.   (line  97)
-+* mpfr_cot:                              Special Functions.   (line  49)
-+* mpfr_coth:                             Special Functions.   (line 113)
-+* mpfr_csc:                              Special Functions.   (line  48)
-+* mpfr_csch:                             Special Functions.   (line 112)
- * mpfr_custom_get_exp:                   Custom Interface.    (line  75)
- * mpfr_custom_get_kind:                  Custom Interface.    (line  65)
- * mpfr_custom_get_significand:           Custom Interface.    (line  70)
-@@ -3756,47 +3774,47 @@
- * mpfr_custom_move:                      Custom Interface.    (line  82)
- * MPFR_DECL_INIT:                        Initialization Functions.
-                                                               (line  74)
--* mpfr_digamma:                          Special Functions.   (line 166)
-+* mpfr_digamma:                          Special Functions.   (line 172)
- * mpfr_dim:                              Basic Arithmetic Functions.
--                                                              (line 166)
-+                                                              (line 171)
- * mpfr_div:                              Basic Arithmetic Functions.
--                                                              (line  72)
-+                                                              (line  74)
- * mpfr_divby0_p:                         Exception Related Functions.
-                                                               (line 134)
- * mpfr_div_2exp:                         Compatibility with MPF.
-                                                               (line  49)
- * mpfr_div_2si:                          Basic Arithmetic Functions.
--                                                              (line 181)
-+                                                              (line 186)
- * mpfr_div_2ui:                          Basic Arithmetic Functions.
--                                                              (line 179)
-+                                                              (line 184)
- * mpfr_div_d:                            Basic Arithmetic Functions.
--                                                              (line  84)
-+                                                              (line  86)
- * mpfr_div_q:                            Basic Arithmetic Functions.
--                                                              (line  88)
-+                                                              (line  90)
- * mpfr_div_si:                           Basic Arithmetic Functions.
--                                                              (line  80)
-+                                                              (line  82)
- * mpfr_div_ui:                           Basic Arithmetic Functions.
--                                                              (line  76)
-+                                                              (line  78)
- * mpfr_div_z:                            Basic Arithmetic Functions.
--                                                              (line  86)
-+                                                              (line  88)
- * mpfr_d_div:                            Basic Arithmetic Functions.
--                                                              (line  82)
-+                                                              (line  84)
- * mpfr_d_sub:                            Basic Arithmetic Functions.
--                                                              (line  35)
--* mpfr_eint:                             Special Functions.   (line 133)
-+                                                              (line  36)
-+* mpfr_eint:                             Special Functions.   (line 135)
- * mpfr_eq:                               Compatibility with MPF.
-                                                               (line  28)
- * mpfr_equal_p:                          Comparison Functions.
-                                                               (line  59)
- * mpfr_erangeflag_p:                     Exception Related Functions.
-                                                               (line 137)
--* mpfr_erf:                              Special Functions.   (line 177)
--* mpfr_erfc:                             Special Functions.   (line 178)
--* mpfr_exp:                              Special Functions.   (line  23)
--* mpfr_exp10:                            Special Functions.   (line  25)
--* mpfr_exp2:                             Special Functions.   (line  24)
--* mpfr_expm1:                            Special Functions.   (line 129)
--* mpfr_fac_ui:                           Special Functions.   (line 121)
-+* mpfr_erf:                              Special Functions.   (line 183)
-+* mpfr_erfc:                             Special Functions.   (line 184)
-+* mpfr_exp:                              Special Functions.   (line  25)
-+* mpfr_exp10:                            Special Functions.   (line  27)
-+* mpfr_exp2:                             Special Functions.   (line  26)
-+* mpfr_expm1:                            Special Functions.   (line 131)
-+* mpfr_fac_ui:                           Special Functions.   (line 123)
- * mpfr_fits_intmax_p:                    Conversion Functions.
-                                                               (line 150)
- * mpfr_fits_sint_p:                      Conversion Functions.
-@@ -3815,20 +3833,20 @@
-                                                               (line 147)
- * mpfr_floor:                            Integer Related Functions.
-                                                               (line   8)
--* mpfr_fma:                              Special Functions.   (line 203)
-+* mpfr_fma:                              Special Functions.   (line 209)
- * mpfr_fmod:                             Integer Related Functions.
-                                                               (line  92)
--* mpfr_fms:                              Special Functions.   (line 205)
-+* mpfr_fms:                              Special Functions.   (line 211)
- * mpfr_fprintf:                          Formatted Output Functions.
-                                                               (line 157)
- * mpfr_frac:                             Integer Related Functions.
-                                                               (line  76)
--* mpfr_free_cache:                       Special Functions.   (line 244)
-+* mpfr_free_cache:                       Special Functions.   (line 254)
- * mpfr_free_str:                         Conversion Functions.
-                                                               (line 137)
- * mpfr_frexp:                            Conversion Functions.
-                                                               (line  45)
--* mpfr_gamma:                            Special Functions.   (line 148)
-+* mpfr_gamma:                            Special Functions.   (line 150)
- * mpfr_get_d:                            Conversion Functions.
-                                                               (line   7)
- * mpfr_get_decimal64:                    Conversion Functions.
-@@ -3887,7 +3905,7 @@
-                                                               (line  56)
- * mpfr_greater_p:                        Comparison Functions.
-                                                               (line  55)
--* mpfr_hypot:                            Special Functions.   (line 218)
-+* mpfr_hypot:                            Special Functions.   (line 227)
- * mpfr_inexflag_p:                       Exception Related Functions.
-                                                               (line 136)
- * mpfr_inf_p:                            Comparison Functions.
-@@ -3922,21 +3940,21 @@
-                                                               (line  31)
- * mpfr_integer_p:                        Integer Related Functions.
-                                                               (line 119)
--* mpfr_j0:                               Special Functions.   (line 182)
--* mpfr_j1:                               Special Functions.   (line 183)
--* mpfr_jn:                               Special Functions.   (line 184)
-+* mpfr_j0:                               Special Functions.   (line 188)
-+* mpfr_j1:                               Special Functions.   (line 189)
-+* mpfr_jn:                               Special Functions.   (line 190)
- * mpfr_lessequal_p:                      Comparison Functions.
-                                                               (line  58)
- * mpfr_lessgreater_p:                    Comparison Functions.
-                                                               (line  64)
- * mpfr_less_p:                           Comparison Functions.
-                                                               (line  57)
--* mpfr_lgamma:                           Special Functions.   (line 157)
--* mpfr_li2:                              Special Functions.   (line 143)
--* mpfr_lngamma:                          Special Functions.   (line 152)
-+* mpfr_lgamma:                           Special Functions.   (line 162)
-+* mpfr_li2:                              Special Functions.   (line 145)
-+* mpfr_lngamma:                          Special Functions.   (line 154)
- * mpfr_log:                              Special Functions.   (line  16)
- * mpfr_log10:                            Special Functions.   (line  18)
--* mpfr_log1p:                            Special Functions.   (line 125)
-+* mpfr_log1p:                            Special Functions.   (line 127)
- * mpfr_log2:                             Special Functions.   (line  17)
- * mpfr_max:                              Miscellaneous Functions.
-                                                               (line  22)
-@@ -3947,29 +3965,29 @@
- * mpfr_modf:                             Integer Related Functions.
-                                                               (line  82)
- * mpfr_mul:                              Basic Arithmetic Functions.
--                                                              (line  51)
-+                                                              (line  53)
- * mpfr_mul_2exp:                         Compatibility with MPF.
-                                                               (line  47)
- * mpfr_mul_2si:                          Basic Arithmetic Functions.
--                                                              (line 174)
-+                                                              (line 179)
- * mpfr_mul_2ui:                          Basic Arithmetic Functions.
--                                                              (line 172)
-+                                                              (line 177)
- * mpfr_mul_d:                            Basic Arithmetic Functions.
--                                                              (line  57)
-+                                                              (line  59)
- * mpfr_mul_q:                            Basic Arithmetic Functions.
--                                                              (line  61)
-+                                                              (line  63)
- * mpfr_mul_si:                           Basic Arithmetic Functions.
--                                                              (line  55)
-+                                                              (line  57)
- * mpfr_mul_ui:                           Basic Arithmetic Functions.
--                                                              (line  53)
-+                                                              (line  55)
- * mpfr_mul_z:                            Basic Arithmetic Functions.
--                                                              (line  59)
-+                                                              (line  61)
- * mpfr_nanflag_p:                        Exception Related Functions.
-                                                               (line 135)
- * mpfr_nan_p:                            Comparison Functions.
-                                                               (line  39)
- * mpfr_neg:                              Basic Arithmetic Functions.
--                                                              (line 159)
-+                                                              (line 164)
- * mpfr_nextabove:                        Miscellaneous Functions.
-                                                               (line  15)
- * mpfr_nextbelow:                        Miscellaneous Functions.
-@@ -3983,13 +4001,13 @@
- * mpfr_overflow_p:                       Exception Related Functions.
-                                                               (line 133)
- * mpfr_pow:                              Basic Arithmetic Functions.
--                                                              (line 116)
-+                                                              (line 121)
- * mpfr_pow_si:                           Basic Arithmetic Functions.
--                                                              (line 120)
-+                                                              (line 125)
- * mpfr_pow_ui:                           Basic Arithmetic Functions.
--                                                              (line 118)
-+                                                              (line 123)
- * mpfr_pow_z:                            Basic Arithmetic Functions.
--                                                              (line 122)
-+                                                              (line 127)
- * mpfr_prec_round:                       Rounding Related Functions.
-                                                               (line  13)
- * ‘mpfr_prec_t’:                         Nomenclature and Types.
-@@ -3999,7 +4017,7 @@
- * mpfr_print_rnd_mode:                   Rounding Related Functions.
-                                                               (line  71)
- * mpfr_rec_sqrt:                         Basic Arithmetic Functions.
--                                                              (line 103)
-+                                                              (line 105)
- * mpfr_regular_p:                        Comparison Functions.
-                                                               (line  43)
- * mpfr_reldiff:                          Compatibility with MPF.
-@@ -4021,11 +4039,11 @@
- * ‘mpfr_rnd_t’:                          Nomenclature and Types.
-                                                               (line  34)
- * mpfr_root:                             Basic Arithmetic Functions.
--                                                              (line 109)
-+                                                              (line 114)
- * mpfr_round:                            Integer Related Functions.
-                                                               (line   9)
--* mpfr_sec:                              Special Functions.   (line  45)
--* mpfr_sech:                             Special Functions.   (line 109)
-+* mpfr_sec:                              Special Functions.   (line  47)
-+* mpfr_sech:                             Special Functions.   (line 111)
- * mpfr_set:                              Assignment Functions.
-                                                               (line   9)
- * mpfr_setsign:                          Miscellaneous Functions.
-@@ -4100,57 +4118,57 @@
-                                                               (line  49)
- * mpfr_signbit:                          Miscellaneous Functions.
-                                                               (line  99)
--* mpfr_sin:                              Special Functions.   (line  30)
--* mpfr_sinh:                             Special Functions.   (line  96)
--* mpfr_sinh_cosh:                        Special Functions.   (line 101)
--* mpfr_sin_cos:                          Special Functions.   (line  35)
-+* mpfr_sin:                              Special Functions.   (line  32)
-+* mpfr_sinh:                             Special Functions.   (line  98)
-+* mpfr_sinh_cosh:                        Special Functions.   (line 103)
-+* mpfr_sin_cos:                          Special Functions.   (line  37)
- * mpfr_si_div:                           Basic Arithmetic Functions.
--                                                              (line  78)
-+                                                              (line  80)
- * mpfr_si_sub:                           Basic Arithmetic Functions.
--                                                              (line  31)
-+                                                              (line  32)
- * mpfr_snprintf:                         Formatted Output Functions.
-                                                               (line 180)
- * mpfr_sprintf:                          Formatted Output Functions.
-                                                               (line 170)
- * mpfr_sqr:                              Basic Arithmetic Functions.
--                                                              (line  69)
-+                                                              (line  71)
- * mpfr_sqrt:                             Basic Arithmetic Functions.
--                                                              (line  96)
-+                                                              (line  98)
- * mpfr_sqrt_ui:                          Basic Arithmetic Functions.
--                                                              (line  97)
-+                                                              (line  99)
- * mpfr_strtofr:                          Assignment Functions.
-                                                               (line  80)
- * mpfr_sub:                              Basic Arithmetic Functions.
--                                                              (line  25)
-+                                                              (line  26)
- * mpfr_subnormalize:                     Exception Related Functions.
-                                                               (line  60)
- * mpfr_sub_d:                            Basic Arithmetic Functions.
--                                                              (line  37)
-+                                                              (line  38)
- * mpfr_sub_q:                            Basic Arithmetic Functions.
--                                                              (line  43)
-+                                                              (line  44)
- * mpfr_sub_si:                           Basic Arithmetic Functions.
--                                                              (line  33)
-+                                                              (line  34)
- * mpfr_sub_ui:                           Basic Arithmetic Functions.
--                                                              (line  29)
-+                                                              (line  30)
- * mpfr_sub_z:                            Basic Arithmetic Functions.
--                                                              (line  41)
--* mpfr_sum:                              Special Functions.   (line 252)
-+                                                              (line  42)
-+* mpfr_sum:                              Special Functions.   (line 262)
- * mpfr_swap:                             Assignment Functions.
-                                                               (line 150)
- * ‘mpfr_t’:                              Nomenclature and Types.
-                                                               (line   6)
--* mpfr_tan:                              Special Functions.   (line  31)
--* mpfr_tanh:                             Special Functions.   (line  97)
-+* mpfr_tan:                              Special Functions.   (line  33)
-+* mpfr_tanh:                             Special Functions.   (line  99)
- * mpfr_trunc:                            Integer Related Functions.
-                                                               (line  10)
- * mpfr_ui_div:                           Basic Arithmetic Functions.
--                                                              (line  74)
-+                                                              (line  76)
- * mpfr_ui_pow:                           Basic Arithmetic Functions.
--                                                              (line 126)
-+                                                              (line 131)
- * mpfr_ui_pow_ui:                        Basic Arithmetic Functions.
--                                                              (line 124)
-+                                                              (line 129)
- * mpfr_ui_sub:                           Basic Arithmetic Functions.
--                                                              (line  27)
-+                                                              (line  28)
- * mpfr_underflow_p:                      Exception Related Functions.
-                                                               (line 132)
- * mpfr_unordered_p:                      Comparison Functions.
-@@ -4181,61 +4199,61 @@
-                                                               (line 182)
- * mpfr_vsprintf:                         Formatted Output Functions.
-                                                               (line 171)
--* mpfr_y0:                               Special Functions.   (line 193)
--* mpfr_y1:                               Special Functions.   (line 194)
--* mpfr_yn:                               Special Functions.   (line 195)
-+* mpfr_y0:                               Special Functions.   (line 199)
-+* mpfr_y1:                               Special Functions.   (line 200)
-+* mpfr_yn:                               Special Functions.   (line 201)
- * mpfr_zero_p:                           Comparison Functions.
-                                                               (line  42)
--* mpfr_zeta:                             Special Functions.   (line 171)
--* mpfr_zeta_ui:                          Special Functions.   (line 172)
-+* mpfr_zeta:                             Special Functions.   (line 177)
-+* mpfr_zeta_ui:                          Special Functions.   (line 178)
- * mpfr_z_sub:                            Basic Arithmetic Functions.
--                                                              (line  39)
-+                                                              (line  40)
\1f
- Tag Table:
- Node: Top\7f775
- Node: Copying\7f2007
--Node: Introduction to MPFR\7f3766
--Node: Installing MPFR\7f5880
--Node: Reporting Bugs\7f11323
--Node: MPFR Basics\7f13353
--Node: Headers and Libraries\7f13669
--Node: Nomenclature and Types\7f16828
--Node: MPFR Variable Conventions\7f18874
--Node: Rounding Modes\7f20418
--Ref: ternary value\7f21544
--Node: Floating-Point Values on Special Numbers\7f23526
--Node: Exceptions\7f26572
--Node: Memory Handling\7f29749
--Node: MPFR Interface\7f30894
--Node: Initialization Functions\7f33008
--Node: Assignment Functions\7f40318
--Node: Combined Initialization and Assignment Functions\7f49673
--Node: Conversion Functions\7f50974
--Node: Basic Arithmetic Functions\7f60035
--Node: Comparison Functions\7f69200
--Node: Special Functions\7f72687
--Node: Input and Output Functions\7f86672
--Node: Formatted Output Functions\7f88644
--Node: Integer Related Functions\7f98431
--Node: Rounding Related Functions\7f105051
--Node: Miscellaneous Functions\7f108888
--Node: Exception Related Functions\7f117568
--Node: Compatibility with MPF\7f124386
--Node: Custom Interface\7f127127
--Node: Internals\7f131526
--Node: API Compatibility\7f133066
--Node: Type and Macro Changes\7f134995
--Node: Added Functions\7f137844
--Node: Changed Functions\7f141132
--Node: Removed Functions\7f145545
--Node: Other Changes\7f145973
--Node: Contributors\7f147576
--Node: References\7f150219
--Node: GNU Free Documentation License\7f151973
--Node: Concept Index\7f174562
--Node: Function and Type Index\7f180659
-+Node: Introduction to MPFR\7f3770
-+Node: Installing MPFR\7f5884
-+Node: Reporting Bugs\7f11327
-+Node: MPFR Basics\7f13357
-+Node: Headers and Libraries\7f13673
-+Node: Nomenclature and Types\7f16832
-+Node: MPFR Variable Conventions\7f18894
-+Node: Rounding Modes\7f20438
-+Ref: ternary value\7f21568
-+Node: Floating-Point Values on Special Numbers\7f23554
-+Node: Exceptions\7f26813
-+Node: Memory Handling\7f29990
-+Node: MPFR Interface\7f31135
-+Node: Initialization Functions\7f33249
-+Node: Assignment Functions\7f40559
-+Node: Combined Initialization and Assignment Functions\7f49914
-+Node: Conversion Functions\7f51215
-+Node: Basic Arithmetic Functions\7f60276
-+Node: Comparison Functions\7f69777
-+Node: Special Functions\7f73264
-+Node: Input and Output Functions\7f87862
-+Node: Formatted Output Functions\7f89834
-+Node: Integer Related Functions\7f99621
-+Node: Rounding Related Functions\7f106241
-+Node: Miscellaneous Functions\7f110078
-+Node: Exception Related Functions\7f118758
-+Node: Compatibility with MPF\7f125576
-+Node: Custom Interface\7f128317
-+Node: Internals\7f132716
-+Node: API Compatibility\7f134260
-+Node: Type and Macro Changes\7f136189
-+Node: Added Functions\7f139038
-+Node: Changed Functions\7f142326
-+Node: Removed Functions\7f146739
-+Node: Other Changes\7f147167
-+Node: Contributors\7f148770
-+Node: References\7f151413
-+Node: GNU Free Documentation License\7f153167
-+Node: Concept Index\7f175760
-+Node: Function and Type Index\7f181857
\1f
- End Tag Table
-diff -Naurd mpfr-3.1.3-a/src/lngamma.c mpfr-3.1.3-b/src/lngamma.c
---- mpfr-3.1.3-a/src/lngamma.c 2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/src/lngamma.c 2015-07-02 10:49:24.018113593 +0000
-@@ -603,16 +603,17 @@
-       mpfr_get_prec (y), mpfr_log_prec, y, inex));
-   /* special cases */
--  if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
-+  if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x) ||
-+                     (MPFR_IS_NEG (x) && mpfr_integer_p (x))))
-     {
--      if (MPFR_IS_NAN (x) || MPFR_IS_NEG (x))
-+      if (MPFR_IS_NAN (x))
-         {
-           MPFR_SET_NAN (y);
-           MPFR_RET_NAN;
-         }
--      else /* lngamma(+Inf) = lngamma(+0) = +Inf */
-+      else /* lngamma(+/-Inf) = lngamma(nonpositive integer) = +Inf */
-         {
--          if (MPFR_IS_ZERO (x))
-+          if (!MPFR_IS_INF (x))
-             mpfr_set_divby0 ();
-           MPFR_SET_INF (y);
-           MPFR_SET_POS (y);
-@@ -620,8 +621,8 @@
-         }
-     }
--  /* if x < 0 and -2k-1 <= x <= -2k, then lngamma(x) = NaN */
--  if (MPFR_IS_NEG (x) && (unit_bit (x) == 0 || mpfr_integer_p (x)))
-+  /* if -2k-1 < x < -2k <= 0, then lngamma(x) = NaN */
-+  if (MPFR_IS_NEG (x) && unit_bit (x) == 0)
-     {
-       MPFR_SET_NAN (y);
-       MPFR_RET_NAN;
-diff -Naurd mpfr-3.1.3-a/src/mpfr.h mpfr-3.1.3-b/src/mpfr.h
---- mpfr-3.1.3-a/src/mpfr.h    2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/src/mpfr.h    2015-07-02 10:49:24.038113803 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 3
- #define MPFR_VERSION_MINOR 1
- #define MPFR_VERSION_PATCHLEVEL 3
--#define MPFR_VERSION_STRING "3.1.3"
-+#define MPFR_VERSION_STRING "3.1.3-p1"
- /* Macros dealing with MPFR VERSION */
- #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
-diff -Naurd mpfr-3.1.3-a/src/version.c mpfr-3.1.3-b/src/version.c
---- mpfr-3.1.3-a/src/version.c 2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/src/version.c 2015-07-02 10:49:24.042113845 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "3.1.3";
-+  return "3.1.3-p1";
- }
-diff -Naurd mpfr-3.1.3-a/tests/tlngamma.c mpfr-3.1.3-b/tests/tlngamma.c
---- mpfr-3.1.3-a/tests/tlngamma.c      2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/tests/tlngamma.c      2015-07-02 10:49:24.018113593 +0000
-@@ -33,7 +33,7 @@
- special (void)
- {
-   mpfr_t x, y;
--  int inex;
-+  int i, inex;
-   mpfr_init (x);
-   mpfr_init (y);
-@@ -46,25 +46,29 @@
-       exit (1);
-     }
--  mpfr_set_inf (x, -1);
-+  mpfr_set_inf (x, 1);
-+  mpfr_clear_flags ();
-   mpfr_lngamma (y, x, MPFR_RNDN);
--  if (!mpfr_nan_p (y))
-+  if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0 || __gmpfr_flags != 0)
-     {
--      printf ("Error for lngamma(-Inf)\n");
-+      printf ("Error for lngamma(+Inf)\n");
-       exit (1);
-     }
--  mpfr_set_inf (x, 1);
-+  mpfr_set_inf (x, -1);
-+  mpfr_clear_flags ();
-   mpfr_lngamma (y, x, MPFR_RNDN);
--  if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0)
-+  if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0 || __gmpfr_flags != 0)
-     {
--      printf ("Error for lngamma(+Inf)\n");
-+      printf ("Error for lngamma(-Inf)\n");
-       exit (1);
-     }
-   mpfr_set_ui (x, 0, MPFR_RNDN);
-+  mpfr_clear_flags ();
-   mpfr_lngamma (y, x, MPFR_RNDN);
--  if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0)
-+  if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0 ||
-+      __gmpfr_flags != MPFR_FLAGS_DIVBY0)
-     {
-       printf ("Error for lngamma(+0)\n");
-       exit (1);
-@@ -72,32 +76,58 @@
-   mpfr_set_ui (x, 0, MPFR_RNDN);
-   mpfr_neg (x, x, MPFR_RNDN);
-+  mpfr_clear_flags ();
-   mpfr_lngamma (y, x, MPFR_RNDN);
--  if (!mpfr_nan_p (y))
-+  if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0 ||
-+      __gmpfr_flags != MPFR_FLAGS_DIVBY0)
-     {
-       printf ("Error for lngamma(-0)\n");
-       exit (1);
-     }
-   mpfr_set_ui (x, 1, MPFR_RNDN);
-+  mpfr_clear_flags ();
-   mpfr_lngamma (y, x, MPFR_RNDN);
--  if (MPFR_IS_NAN (y) || mpfr_cmp_ui (y, 0) || MPFR_IS_NEG (y))
-+  if (mpfr_cmp_ui0 (y, 0) || MPFR_IS_NEG (y))
-     {
-       printf ("Error for lngamma(1)\n");
-       exit (1);
-     }
--  mpfr_set_si (x, -1, MPFR_RNDN);
--  mpfr_lngamma (y, x, MPFR_RNDN);
--  if (!mpfr_nan_p (y))
-+  for (i = 1; i <= 5; i++)
-     {
--      printf ("Error for lngamma(-1)\n");
--      exit (1);
-+      int c;
-+
-+      mpfr_set_si (x, -i, MPFR_RNDN);
-+      mpfr_clear_flags ();
-+      mpfr_lngamma (y, x, MPFR_RNDN);
-+      if (!mpfr_inf_p (y) || mpfr_sgn (y) < 0 ||
-+          __gmpfr_flags != MPFR_FLAGS_DIVBY0)
-+        {
-+          printf ("Error for lngamma(-%d)\n", i);
-+          exit (1);
-+        }
-+      if (i & 1)
-+        {
-+          mpfr_nextabove (x);
-+          c = '+';
-+        }
-+      else
-+        {
-+          mpfr_nextbelow (x);
-+          c = '-';
-+        }
-+      mpfr_lngamma (y, x, MPFR_RNDN);
-+      if (!mpfr_nan_p (y))
-+        {
-+          printf ("Error for lngamma(-%d%cepsilon)\n", i, c);
-+          exit (1);
-+        }
-     }
-   mpfr_set_ui (x, 2, MPFR_RNDN);
-   mpfr_lngamma (y, x, MPFR_RNDN);
--  if (MPFR_IS_NAN (y) || mpfr_cmp_ui (y, 0) || MPFR_IS_NEG (y))
-+  if (mpfr_cmp_ui0 (y, 0) || MPFR_IS_NEG (y))
-     {
-       printf ("Error for lngamma(2)\n");
-       exit (1);
-@@ -127,7 +157,7 @@
-   mpfr_set_str (x, CHECK_X2, 10, MPFR_RNDN);
-   mpfr_lngamma (y, x, MPFR_RNDN);
-   mpfr_set_str (x, CHECK_Y2, 10, MPFR_RNDN);
--  if (MPFR_IS_NAN (y) || mpfr_cmp (y, x))
-+  if (mpfr_cmp0 (y, x))
-     {
-       printf ("mpfr_lngamma("CHECK_X2") is wrong:\n"
-               "expected ");
-@@ -143,7 +173,7 @@
-   mpfr_lngamma (y, x, MPFR_RNDU);
-   mpfr_set_prec (x, 175);
-   mpfr_set_str_binary (x, "0.1010001100011101101011001101110010100001000001000001110011000001101100001111001001000101011011100100010101011110100111110101010100010011010010000101010111001100011000101111E7");
--  if (MPFR_IS_NAN (y) || mpfr_cmp (x, y))
-+  if (mpfr_cmp0 (x, y))
-     {
-       printf ("Error in mpfr_lngamma (1)\n");
-       exit (1);
-@@ -155,7 +185,7 @@
-   mpfr_lngamma (x, y, MPFR_RNDZ);
-   mpfr_set_prec (y, 21);
-   mpfr_set_str_binary (y, "0.111000101000001100101E9");
--  if (MPFR_IS_NAN (x) || mpfr_cmp (x, y))
-+  if (mpfr_cmp0 (x, y))
-     {
-       printf ("Error in mpfr_lngamma (120)\n");
-       printf ("Expected "); mpfr_print_binary (y); puts ("");
-@@ -169,7 +199,7 @@
-   inex = mpfr_lngamma (y, x, MPFR_RNDN);
-   mpfr_set_prec (x, 206);
-   mpfr_set_str_binary (x, "0.10000111011000000011100010101001100110001110000111100011000100100110110010001011011110101001111011110110000001010100111011010000000011100110110101100111000111010011110010000100010111101010001101000110101001E13");
--  if (MPFR_IS_NAN (y) || mpfr_cmp (x, y))
-+  if (mpfr_cmp0 (x, y))
-     {
-       printf ("Error in mpfr_lngamma (768)\n");
-       exit (1);
-@@ -185,7 +215,7 @@
-   mpfr_set_str_binary (x, "0.1100E-66");
-   mpfr_lngamma (y, x, MPFR_RNDN);
-   mpfr_set_str_binary (x, "0.1100E6");
--  if (MPFR_IS_NAN (y) || mpfr_cmp (x, y))
-+  if (mpfr_cmp0 (x, y))
-     {
-       printf ("Error for lngamma(0.1100E-66)\n");
-       exit (1);
-@@ -199,7 +229,7 @@
-   mpfr_lngamma (y, x, MPFR_RNDN);
-   mpfr_set_prec (x, 32);
-   mpfr_set_str_binary (x, "-0.10001000111011111011000010100010E207");
--  if (MPFR_IS_NAN (y) || mpfr_cmp (x, y))
-+  if (mpfr_cmp0 (x, y))
-     {
-       printf ("Error for lngamma(-2^199+0.5)\n");
-       printf ("Got        ");
-diff -Naurd mpfr-3.1.3-a/PATCHES mpfr-3.1.3-b/PATCHES
---- mpfr-3.1.3-a/PATCHES       2015-07-02 10:50:08.046573308 +0000
-+++ mpfr-3.1.3-b/PATCHES       2015-07-02 10:50:08.126574142 +0000
-@@ -0,0 +1 @@
-+muldiv-2exp-overflow
-diff -Naurd mpfr-3.1.3-a/VERSION mpfr-3.1.3-b/VERSION
---- mpfr-3.1.3-a/VERSION       2015-07-02 10:49:24.042113845 +0000
-+++ mpfr-3.1.3-b/VERSION       2015-07-02 10:50:08.126574142 +0000
-@@ -1 +1 @@
--3.1.3-p1
-+3.1.3-p2
-diff -Naurd mpfr-3.1.3-a/src/div_2si.c mpfr-3.1.3-b/src/div_2si.c
---- mpfr-3.1.3-a/src/div_2si.c 2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/src/div_2si.c 2015-07-02 10:50:08.106573933 +0000
-@@ -49,7 +49,7 @@
-             rnd_mode = MPFR_RNDZ;
-           return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y));
-         }
--      else if (MPFR_UNLIKELY(n < 0 && (__gmpfr_emax < MPFR_EMIN_MIN - n ||
-+      else if (MPFR_UNLIKELY(n <= 0 && (__gmpfr_emax < MPFR_EMIN_MIN - n ||
-                                        exp > __gmpfr_emax + n)) )
-         return mpfr_overflow (y, rnd_mode, MPFR_SIGN(y));
-diff -Naurd mpfr-3.1.3-a/src/div_2ui.c mpfr-3.1.3-b/src/div_2ui.c
---- mpfr-3.1.3-a/src/div_2ui.c 2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/src/div_2ui.c 2015-07-02 10:50:08.106573933 +0000
-@@ -32,7 +32,7 @@
-      rnd_mode),
-     ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y, inexact));
--  if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x)))
-+  if (MPFR_UNLIKELY (n == 0 || MPFR_IS_SINGULAR (x)))
-     return mpfr_set (y, x, rnd_mode);
-   else
-     {
-diff -Naurd mpfr-3.1.3-a/src/mpfr.h mpfr-3.1.3-b/src/mpfr.h
---- mpfr-3.1.3-a/src/mpfr.h    2015-07-02 10:49:24.038113803 +0000
-+++ mpfr-3.1.3-b/src/mpfr.h    2015-07-02 10:50:08.126574142 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 3
- #define MPFR_VERSION_MINOR 1
- #define MPFR_VERSION_PATCHLEVEL 3
--#define MPFR_VERSION_STRING "3.1.3-p1"
-+#define MPFR_VERSION_STRING "3.1.3-p2"
- /* Macros dealing with MPFR VERSION */
- #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
-diff -Naurd mpfr-3.1.3-a/src/mul_2si.c mpfr-3.1.3-b/src/mul_2si.c
---- mpfr-3.1.3-a/src/mul_2si.c 2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/src/mul_2si.c 2015-07-02 10:50:08.106573933 +0000
-@@ -39,7 +39,7 @@
-     {
-       mpfr_exp_t exp = MPFR_GET_EXP (x);
-       MPFR_SETRAW (inexact, y, x, exp, rnd_mode);
--      if (MPFR_UNLIKELY( n > 0 && (__gmpfr_emax < MPFR_EMIN_MIN + n ||
-+      if (MPFR_UNLIKELY(n >= 0 && (__gmpfr_emax < MPFR_EMIN_MIN + n ||
-                                    exp > __gmpfr_emax - n)))
-         return mpfr_overflow (y, rnd_mode, MPFR_SIGN(y));
-       else if (MPFR_UNLIKELY(n < 0 && (__gmpfr_emin > MPFR_EMAX_MAX + n ||
-diff -Naurd mpfr-3.1.3-a/src/version.c mpfr-3.1.3-b/src/version.c
---- mpfr-3.1.3-a/src/version.c 2015-07-02 10:49:24.042113845 +0000
-+++ mpfr-3.1.3-b/src/version.c 2015-07-02 10:50:08.126574142 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "3.1.3-p1";
-+  return "3.1.3-p2";
- }
-diff -Naurd mpfr-3.1.3-a/tests/tmul_2exp.c mpfr-3.1.3-b/tests/tmul_2exp.c
---- mpfr-3.1.3-a/tests/tmul_2exp.c     2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/tests/tmul_2exp.c     2015-07-02 10:50:08.106573933 +0000
-@@ -242,6 +242,76 @@
-   large (MPFR_EMAX_MAX);
- }
-+/* Cases where the function overflows on n = 0 when rounding is like
-+   away from zero. */
-+static void
-+overflow0 (mpfr_exp_t emax)
-+{
-+  mpfr_exp_t old_emax;
-+  mpfr_t x, y1, y2;
-+  int neg, r, op;
-+  static char *sop[4] = { "mul_2ui", "mul_2si", "div_2ui", "div_2si" };
-+
-+  old_emax = mpfr_get_emax ();
-+  set_emax (emax);
-+
-+  mpfr_init2 (x, 8);
-+  mpfr_inits2 (6, y1, y2, (mpfr_ptr) 0);
-+
-+  mpfr_set_inf (x, 1);
-+  mpfr_nextbelow (x);
-+
-+  for (neg = 0; neg <= 1; neg++)
-+    {
-+      RND_LOOP (r)
-+        {
-+          int inex1, inex2;
-+          unsigned int flags1, flags2;
-+
-+          /* Even if there isn't an overflow (rounding ~ toward zero),
-+             the result is the same as the one of an overflow. */
-+          inex1 = mpfr_overflow (y1, (mpfr_rnd_t) r, neg ? -1 : 1);
-+          flags1 = MPFR_FLAGS_INEXACT;
-+          if (mpfr_inf_p (y1))
-+            flags1 |= MPFR_FLAGS_OVERFLOW;
-+          for (op = 0; op < 4; op++)
-+            {
-+              mpfr_clear_flags ();
-+              inex2 =
-+                op == 0 ? mpfr_mul_2ui (y2, x, 0, (mpfr_rnd_t) r) :
-+                op == 1 ? mpfr_mul_2si (y2, x, 0, (mpfr_rnd_t) r) :
-+                op == 2 ? mpfr_div_2ui (y2, x, 0, (mpfr_rnd_t) r) :
-+                op == 3 ? mpfr_div_2si (y2, x, 0, (mpfr_rnd_t) r) :
-+                (MPFR_ASSERTN (0), 0);
-+              flags2 = __gmpfr_flags;
-+              if (!(mpfr_equal_p (y1, y2) &&
-+                    SAME_SIGN (inex1, inex2) &&
-+                    flags1 == flags2))
-+                {
-+                  printf ("Error in overflow0 for %s, mpfr_%s, emax = %"
-+                          MPFR_EXP_FSPEC "d,\nx = ",
-+                          mpfr_print_rnd_mode ((mpfr_rnd_t) r), sop[op],
-+                          (mpfr_eexp_t) emax);
-+                  mpfr_dump (x);
-+                  printf ("Expected ");
-+                  mpfr_dump (y1);
-+                  printf ("  with inex = %d, flags =", inex1);
-+                  flags_out (flags1);
-+                  printf ("Got      ");
-+                  mpfr_dump (y2);
-+                  printf ("  with inex = %d, flags =", inex2);
-+                  flags_out (flags2);
-+                  exit (1);
-+                }
-+            }
-+        }
-+      mpfr_neg (x, x, MPFR_RNDN);
-+    }
-+
-+  mpfr_clears (x, y1, y2, (mpfr_ptr) 0);
-+  set_emax (old_emax);
-+}
-+
- int
- main (int argc, char *argv[])
- {
-@@ -334,6 +404,11 @@
-   underflow0 ();
-   large0 ();
-+  if (mpfr_get_emax () != MPFR_EMAX_MAX)
-+    overflow0 (mpfr_get_emax ());
-+  overflow0 (MPFR_EMAX_MAX);
-+  overflow0 (-1);
-+
-   tests_end_mpfr ();
-   return 0;
- }
-diff -Naurd mpfr-3.1.3-a/PATCHES mpfr-3.1.3-b/PATCHES
---- mpfr-3.1.3-a/PATCHES       2015-07-17 08:54:48.592799981 +0000
-+++ mpfr-3.1.3-b/PATCHES       2015-07-17 08:54:48.616811495 +0000
-@@ -0,0 +1 @@
-+muldiv-2exp-underflow
-diff -Naurd mpfr-3.1.3-a/VERSION mpfr-3.1.3-b/VERSION
---- mpfr-3.1.3-a/VERSION       2015-07-02 10:50:08.126574142 +0000
-+++ mpfr-3.1.3-b/VERSION       2015-07-17 08:54:48.616811495 +0000
-@@ -1 +1 @@
--3.1.3-p2
-+3.1.3-p3
-diff -Naurd mpfr-3.1.3-a/src/div_2si.c mpfr-3.1.3-b/src/div_2si.c
---- mpfr-3.1.3-a/src/div_2si.c 2015-07-02 10:50:08.106573933 +0000
-+++ mpfr-3.1.3-b/src/div_2si.c 2015-07-17 08:54:48.608807656 +0000
-@@ -45,7 +45,8 @@
-           if (rnd_mode == MPFR_RNDN &&
-               (__gmpfr_emin > MPFR_EMAX_MAX - (n - 1) ||
-                exp < __gmpfr_emin + (n - 1) ||
--               (inexact >= 0 && mpfr_powerof2_raw (y))))
-+               ((MPFR_IS_NEG (y) ? inexact <= 0 : inexact >= 0) &&
-+                mpfr_powerof2_raw (y))))
-             rnd_mode = MPFR_RNDZ;
-           return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y));
-         }
-diff -Naurd mpfr-3.1.3-a/src/div_2ui.c mpfr-3.1.3-b/src/div_2ui.c
---- mpfr-3.1.3-a/src/div_2ui.c 2015-07-02 10:50:08.106573933 +0000
-+++ mpfr-3.1.3-b/src/div_2ui.c 2015-07-17 08:54:48.608807656 +0000
-@@ -44,7 +44,9 @@
-       if (MPFR_UNLIKELY (n >= diffexp))  /* exp - n <= emin - 1 */
-         {
-           if (rnd_mode == MPFR_RNDN &&
--              (n > diffexp || (inexact >= 0 && mpfr_powerof2_raw (y))))
-+              (n > diffexp ||
-+               ((MPFR_IS_NEG (y) ? inexact <= 0 : inexact >= 0) &&
-+                mpfr_powerof2_raw (y))))
-             rnd_mode = MPFR_RNDZ;
-           return mpfr_underflow (y, rnd_mode, MPFR_SIGN (y));
-         }
-diff -Naurd mpfr-3.1.3-a/src/mpfr.h mpfr-3.1.3-b/src/mpfr.h
---- mpfr-3.1.3-a/src/mpfr.h    2015-07-02 10:50:08.126574142 +0000
-+++ mpfr-3.1.3-b/src/mpfr.h    2015-07-17 08:54:48.616811495 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 3
- #define MPFR_VERSION_MINOR 1
- #define MPFR_VERSION_PATCHLEVEL 3
--#define MPFR_VERSION_STRING "3.1.3-p2"
-+#define MPFR_VERSION_STRING "3.1.3-p3"
- /* Macros dealing with MPFR VERSION */
- #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
-diff -Naurd mpfr-3.1.3-a/src/mul_2si.c mpfr-3.1.3-b/src/mul_2si.c
---- mpfr-3.1.3-a/src/mul_2si.c 2015-07-02 10:50:08.106573933 +0000
-+++ mpfr-3.1.3-b/src/mul_2si.c 2015-07-17 08:54:48.608807656 +0000
-@@ -48,7 +48,8 @@
-           if (rnd_mode == MPFR_RNDN &&
-               (__gmpfr_emin > MPFR_EMAX_MAX + (n + 1) ||
-                exp < __gmpfr_emin - (n + 1) ||
--               (inexact >= 0 && mpfr_powerof2_raw (y))))
-+               ((MPFR_IS_NEG (y) ? inexact <= 0 : inexact >= 0) &&
-+                mpfr_powerof2_raw (y))))
-             rnd_mode = MPFR_RNDZ;
-           return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y));
-         }
-diff -Naurd mpfr-3.1.3-a/src/version.c mpfr-3.1.3-b/src/version.c
---- mpfr-3.1.3-a/src/version.c 2015-07-02 10:50:08.126574142 +0000
-+++ mpfr-3.1.3-b/src/version.c 2015-07-17 08:54:48.616811495 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "3.1.3-p2";
-+  return "3.1.3-p3";
- }
-diff -Naurd mpfr-3.1.3-a/tests/tmul_2exp.c mpfr-3.1.3-b/tests/tmul_2exp.c
---- mpfr-3.1.3-a/tests/tmul_2exp.c     2015-07-02 10:50:08.106573933 +0000
-+++ mpfr-3.1.3-b/tests/tmul_2exp.c     2015-07-17 08:54:48.608807656 +0000
-@@ -50,77 +50,82 @@
- {
-   mpfr_t x, y, z1, z2;
-   mpfr_exp_t emin;
--  int i, k;
-+  int i, k, s;
-   int prec;
-   int rnd;
-   int div;
-   int inex1, inex2;
-   unsigned int flags1, flags2;
--  /* Test mul_2si(x, e - k), div_2si(x, k - e) and div_2ui(x, k - e)
--   * with emin = e, x = 1 + i/16, i in { -1, 0, 1 }, and k = 1 to 4,
--   * by comparing the result with the one of a simple division.
-+  /* Test mul_2si(x, e - k), div_2si(x, k - e) and div_2ui(x, k - e) with
-+   * emin = e, x = s * (1 + i/16), i in { -1, 0, 1 }, s in { -1, 1 }, and
-+   * k = 1 to 4, by comparing the result with the one of a simple division.
-    */
-   emin = mpfr_get_emin ();
-   set_emin (e);
-   mpfr_inits2 (8, x, y, (mpfr_ptr) 0);
-   for (i = 15; i <= 17; i++)
--    {
--      inex1 = mpfr_set_ui_2exp (x, i, -4, MPFR_RNDN);
--      MPFR_ASSERTN (inex1 == 0);
--      for (prec = 6; prec >= 3; prec -= 3)
--        {
--          mpfr_inits2 (prec, z1, z2, (mpfr_ptr) 0);
--          RND_LOOP (rnd)
--            for (k = 1; k <= 4; k++)
--              {
--                /* The following one is assumed to be correct. */
--                inex1 = mpfr_mul_2si (y, x, e, MPFR_RNDN);
--                MPFR_ASSERTN (inex1 == 0);
--                inex1 = mpfr_set_ui (z1, 1 << k, MPFR_RNDN);
--                MPFR_ASSERTN (inex1 == 0);
--                mpfr_clear_flags ();
--                /* Do not use mpfr_div_ui to avoid the optimization
--                   by mpfr_div_2si. */
--                inex1 = mpfr_div (z1, y, z1, (mpfr_rnd_t) rnd);
--                flags1 = __gmpfr_flags;
--
--              for (div = 0; div <= 2; div++)
-+    for (s = 1; s >= -1; s -= 2)
-+      {
-+        inex1 = mpfr_set_si_2exp (x, s * i, -4, MPFR_RNDN);
-+        MPFR_ASSERTN (inex1 == 0);
-+        for (prec = 6; prec >= 3; prec -= 3)
-+          {
-+            mpfr_inits2 (prec, z1, z2, (mpfr_ptr) 0);
-+            RND_LOOP (rnd)
-+              for (k = 1; k <= 4; k++)
-                 {
-+                  /* The following one is assumed to be correct. */
-+                  inex1 = mpfr_mul_2si (y, x, e, MPFR_RNDN);
-+                  MPFR_ASSERTN (inex1 == 0);
-+                  inex1 = mpfr_set_ui (z1, 1 << k, MPFR_RNDN);
-+                  MPFR_ASSERTN (inex1 == 0);
-                   mpfr_clear_flags ();
--                  inex2 = div == 0 ?
--                    mpfr_mul_2si (z2, x, e - k, (mpfr_rnd_t) rnd) : div == 1 ?
--                    mpfr_div_2si (z2, x, k - e, (mpfr_rnd_t) rnd) :
--                    mpfr_div_2ui (z2, x, k - e, (mpfr_rnd_t) rnd);
--                  flags2 = __gmpfr_flags;
--                  if (flags1 == flags2 && SAME_SIGN (inex1, inex2) &&
--                      mpfr_equal_p (z1, z2))
--                    continue;
--                  printf ("Error in underflow(");
--                  if (e == MPFR_EMIN_MIN)
--                    printf ("MPFR_EMIN_MIN");
--                  else if (e == emin)
--                    printf ("default emin");
--                  else if (e >= LONG_MIN)
--                    printf ("%ld", (long) e);
--                  else
--                    printf ("<LONG_MIN");
--                  printf (") with mpfr_%s,\nx = %d/16, prec = %d, k = %d, "
--                          "%s\n", div == 0 ? "mul_2si" : div == 1 ?
--                          "div_2si" : "div_2ui", i, prec, k,
--                          mpfr_print_rnd_mode ((mpfr_rnd_t) rnd));
--                  printf ("Expected ");
--                  mpfr_out_str (stdout, 16, 0, z1, MPFR_RNDN);
--                  printf (", inex = %d, flags = %u\n", SIGN (inex1), flags1);
--                  printf ("Got      ");
--                  mpfr_out_str (stdout, 16, 0, z2, MPFR_RNDN);
--                  printf (", inex = %d, flags = %u\n", SIGN (inex2), flags2);
--                  exit (1);
--                }  /* div */
--              }  /* k */
--          mpfr_clears (z1, z2, (mpfr_ptr) 0);
--        }  /* prec */
--    }  /* i */
-+                  /* Do not use mpfr_div_ui to avoid the optimization
-+                     by mpfr_div_2si. */
-+                  inex1 = mpfr_div (z1, y, z1, (mpfr_rnd_t) rnd);
-+                  flags1 = __gmpfr_flags;
-+
-+                  for (div = 0; div <= 2; div++)
-+                    {
-+                      mpfr_clear_flags ();
-+                      inex2 =
-+                        div == 0 ?
-+                        mpfr_mul_2si (z2, x, e - k, (mpfr_rnd_t) rnd) :
-+                        div == 1 ?
-+                        mpfr_div_2si (z2, x, k - e, (mpfr_rnd_t) rnd) :
-+                        mpfr_div_2ui (z2, x, k - e, (mpfr_rnd_t) rnd);
-+                      flags2 = __gmpfr_flags;
-+                      if (flags1 == flags2 && SAME_SIGN (inex1, inex2) &&
-+                          mpfr_equal_p (z1, z2))
-+                        continue;
-+                      printf ("Error in underflow(");
-+                      if (e == MPFR_EMIN_MIN)
-+                        printf ("MPFR_EMIN_MIN");
-+                      else if (e == emin)
-+                        printf ("default emin");
-+                      else if (e >= LONG_MIN)
-+                        printf ("%ld", (long) e);
-+                      else
-+                        printf ("<LONG_MIN");
-+                      printf (") with mpfr_%s,\nx = %d/16, prec = %d, k = %d,"
-+                              " %s\n", div == 0 ? "mul_2si" : div == 1 ?
-+                              "div_2si" : "div_2ui", s * i, prec, k,
-+                              mpfr_print_rnd_mode ((mpfr_rnd_t) rnd));
-+                      printf ("Expected ");
-+                      mpfr_out_str (stdout, 16, 0, z1, MPFR_RNDN);
-+                      printf (", inex = %d, flags = %u\n",
-+                              SIGN (inex1), flags1);
-+                      printf ("Got      ");
-+                      mpfr_out_str (stdout, 16, 0, z2, MPFR_RNDN);
-+                      printf (", inex = %d, flags = %u\n",
-+                              SIGN (inex2), flags2);
-+                      exit (1);
-+                    }  /* div */
-+                }  /* k */
-+            mpfr_clears (z1, z2, (mpfr_ptr) 0);
-+          }  /* prec */
-+      }  /* i */
-   mpfr_clears (x, y, (mpfr_ptr) 0);
-   set_emin (emin);
- }
-diff -Naurd mpfr-3.1.3-a/PATCHES mpfr-3.1.3-b/PATCHES
---- mpfr-3.1.3-a/PATCHES       2015-07-17 08:58:21.094987384 +0000
-+++ mpfr-3.1.3-b/PATCHES       2015-07-17 08:58:21.118986898 +0000
-@@ -0,0 +1 @@
-+frexp
-diff -Naurd mpfr-3.1.3-a/VERSION mpfr-3.1.3-b/VERSION
---- mpfr-3.1.3-a/VERSION       2015-07-17 08:54:48.616811495 +0000
-+++ mpfr-3.1.3-b/VERSION       2015-07-17 08:58:21.118986898 +0000
-@@ -1 +1 @@
--3.1.3-p3
-+3.1.3-p4
-diff -Naurd mpfr-3.1.3-a/src/frexp.c mpfr-3.1.3-b/src/frexp.c
---- mpfr-3.1.3-a/src/frexp.c   2015-06-19 19:55:09.000000000 +0000
-+++ mpfr-3.1.3-b/src/frexp.c   2015-07-17 08:58:21.106987142 +0000
-@@ -26,6 +26,13 @@
- mpfr_frexp (mpfr_exp_t *exp, mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd)
- {
-   int inex;
-+  unsigned int saved_flags = __gmpfr_flags;
-+  MPFR_BLOCK_DECL (flags);
-+
-+  MPFR_LOG_FUNC
-+    (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd),
-+     ("y[%Pu]=%.*Rg exp=%" MPFR_EXP_FSPEC "d inex=%d", mpfr_get_prec (y),
-+      mpfr_log_prec, y, (mpfr_eexp_t) *exp, inex));
-   if (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)))
-     {
-@@ -49,8 +56,32 @@
-         }
-     }
--  inex = mpfr_set (y, x, rnd);
-+  MPFR_BLOCK (flags, inex = mpfr_set (y, x, rnd));
-+  __gmpfr_flags = saved_flags;
-+
-+  /* Possible overflow due to the rounding, no possible underflow. */
-+
-+  if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags)))
-+    {
-+      int inex2;
-+
-+      /* An overflow here means that the exponent of y would be larger than
-+         the one of x, thus x would be rounded to the next power of 2, and
-+         the returned y should be 1/2 in absolute value, rounded (i.e. with
-+         possible underflow or overflow). This also implies that x and y are
-+         different objects, so that the exponent of x has not been lost. */
-+      MPFR_LOG_MSG (("Internal overflow\n", 0));
-+      MPFR_ASSERTD (x != y);
-+      *exp = MPFR_GET_EXP (x) + 1;
-+      inex2 = mpfr_set_si_2exp (y, MPFR_INT_SIGN (x), -1, rnd);
-+      MPFR_LOG_MSG (("inex=%d inex2=%d\n", inex, inex2));
-+      if (inex2 != 0)
-+        inex = inex2;
-+      MPFR_RET (inex);
-+    }
-+
-   *exp = MPFR_GET_EXP (y);
--  MPFR_SET_EXP (y, 0);
-+  /* Do not use MPFR_SET_EXP because the range has not been checked yet. */
-+  MPFR_EXP (y) = 0;
-   return mpfr_check_range (y, inex, rnd);
- }
-diff -Naurd mpfr-3.1.3-a/src/mpfr.h mpfr-3.1.3-b/src/mpfr.h
---- mpfr-3.1.3-a/src/mpfr.h    2015-07-17 08:54:48.616811495 +0000
-+++ mpfr-3.1.3-b/src/mpfr.h    2015-07-17 08:58:21.114986979 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 3
- #define MPFR_VERSION_MINOR 1
- #define MPFR_VERSION_PATCHLEVEL 3
--#define MPFR_VERSION_STRING "3.1.3-p3"
-+#define MPFR_VERSION_STRING "3.1.3-p4"
- /* Macros dealing with MPFR VERSION */
- #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
-diff -Naurd mpfr-3.1.3-a/src/version.c mpfr-3.1.3-b/src/version.c
---- mpfr-3.1.3-a/src/version.c 2015-07-17 08:54:48.616811495 +0000
-+++ mpfr-3.1.3-b/src/version.c 2015-07-17 08:58:21.118986898 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "3.1.3-p3";
-+  return "3.1.3-p4";
- }
-diff -Naurd mpfr-3.1.3-a/tests/tfrexp.c mpfr-3.1.3-b/tests/tfrexp.c
---- mpfr-3.1.3-a/tests/tfrexp.c        2015-06-19 19:55:10.000000000 +0000
-+++ mpfr-3.1.3-b/tests/tfrexp.c        2015-07-17 08:58:21.106987142 +0000
-@@ -129,12 +129,115 @@
-   mpfr_clear (x);
- }
-+static void check1 (void)
-+{
-+  mpfr_exp_t emin, emax, e;
-+  mpfr_t x, y1, y2;
-+  int r, neg, red;
-+
-+  emin = mpfr_get_emin ();
-+  emax = mpfr_get_emax ();
-+  set_emin (MPFR_EMIN_MIN);
-+  set_emax (MPFR_EMAX_MAX);
-+
-+  mpfr_init2 (x, 7);
-+  mpfr_inits2 (4, y1, y2, (mpfr_ptr) 0);
-+
-+  mpfr_set_ui_2exp (x, 1, -2, MPFR_RNDN);
-+  while (mpfr_regular_p (x))
-+    {
-+      /* Test the exponents up to 3 and with the maximum exponent
-+         (to check potential intermediate overflow). */
-+      if (MPFR_GET_EXP (x) == 4)
-+        mpfr_set_exp (x, MPFR_EMAX_MAX);
-+      e = MPFR_GET_EXP (x);
-+      for (neg = 0; neg < 2; neg++)
-+        {
-+          RND_LOOP (r)
-+            {
-+              int inex1, inex2;
-+              mpfr_exp_t e1, e2;
-+              unsigned int flags1, flags2;
-+
-+              for (red = 0; red < 2; red++)
-+                {
-+                  if (red)
-+                    {
-+                      /* e1: exponent of the rounded value of x. */
-+                      MPFR_ASSERTN (e1 == e || e1 == e + 1);
-+                      set_emin (e);
-+                      set_emax (e);
-+                      mpfr_clear_flags ();
-+                      inex1 = e1 < 0 ?
-+                        mpfr_mul_2ui (y1, x, -e1, (mpfr_rnd_t) r) :
-+                        mpfr_div_2ui (y1, x, e1, (mpfr_rnd_t) r);
-+                      flags1 = __gmpfr_flags;
-+                    }
-+                  else
-+                    {
-+                      inex1 = mpfr_set (y1, x, (mpfr_rnd_t) r);
-+                      e1 = MPFR_IS_INF (y1) ? e + 1 : MPFR_GET_EXP (y1);
-+                      flags1 = inex1 != 0 ? MPFR_FLAGS_INEXACT : 0;
-+                    }
-+                  mpfr_clear_flags ();
-+                  inex2 = mpfr_frexp (&e2, y2, x, (mpfr_rnd_t) r);
-+                  flags2 = __gmpfr_flags;
-+                  set_emin (MPFR_EMIN_MIN);
-+                  set_emax (MPFR_EMAX_MAX);
-+                  if ((!red || e == 0) &&
-+                      (! mpfr_regular_p (y2) || MPFR_GET_EXP (y2) != 0))
-+                    {
-+                      printf ("Error in check1 for %s, red = %d, x = ",
-+                              mpfr_print_rnd_mode ((mpfr_rnd_t) r), red);
-+                      mpfr_dump (x);
-+                      printf ("Expected 1/2 <= |y| < 1, got y = ");
-+                      mpfr_dump (y2);
-+                      exit (1);
-+                    }
-+                  if (!red)
-+                    {
-+                      if (e2 > 0)
-+                        mpfr_mul_2ui (y2, y2, e2, MPFR_RNDN);
-+                      else if (e2 < 0)
-+                        mpfr_div_2ui (y2, y2, -e2, MPFR_RNDN);
-+                    }
-+                  if (! (SAME_SIGN (inex1, inex2) &&
-+                         mpfr_equal_p (y1, y2) &&
-+                         flags1 == flags2))
-+                    {
-+                      printf ("Error in check1 for %s, red = %d, x = ",
-+                              mpfr_print_rnd_mode ((mpfr_rnd_t) r), red);
-+                      mpfr_dump (x);
-+                      printf ("Expected y1 = ");
-+                      mpfr_dump (y1);
-+                      printf ("Got      y2 = ");
-+                      mpfr_dump (y2);
-+                      printf ("Expected inex ~= %d, got %d\n", inex1, inex2);
-+                      printf ("Expected flags:");
-+                      flags_out (flags1);
-+                      printf ("Got flags:     ");
-+                      flags_out (flags2);
-+                      exit (1);
-+                    }
-+                }
-+            }
-+          mpfr_neg (x, x, MPFR_RNDN);
-+        }
-+      mpfr_nextabove (x);
-+    }
-+
-+  mpfr_clears (x, y1, y2, (mpfr_ptr) 0);
-+  set_emin (emin);
-+  set_emax (emax);
-+}
-+
- int
- main (int argc, char *argv[])
- {
-   tests_start_mpfr ();
-   check_special ();
-+  check1 ();
-   tests_end_mpfr ();
-   return 0;
diff --git a/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch b/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch
new file mode 100644 (file)
index 0000000..b7580fb
--- /dev/null
@@ -0,0 +1,44 @@
+From 2e94b6ec10f1d15e24867bab3063bb85f173406a Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Thu, 9 Jul 2015 10:58:11 -0700
+Subject: [PATCH] CVE-2015-5252: s3: smbd: Fix symlink verification (file
+ access outside the share).
+
+Ensure matching component ends in '/' or '\0'.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11395
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+---
+ source3/smbd/vfs.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
+index 6c56964..bd93b7f 100644
+--- a/source3/smbd/vfs.c
++++ b/source3/smbd/vfs.c
+@@ -982,6 +982,7 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
+       if (!allow_widelinks || !allow_symlinks) {
+               const char *conn_rootdir;
+               size_t rootdir_len;
++              bool matched;
+               conn_rootdir = SMB_VFS_CONNECTPATH(conn, fname);
+               if (conn_rootdir == NULL) {
+@@ -992,8 +993,10 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
+               }
+               rootdir_len = strlen(conn_rootdir);
+-              if (strncmp(conn_rootdir, resolved_name,
+-                              rootdir_len) != 0) {
++              matched = (strncmp(conn_rootdir, resolved_name,
++                              rootdir_len) == 0);
++              if (!matched || (resolved_name[rootdir_len] != '/' &&
++                               resolved_name[rootdir_len] != '\0')) {
+                       DEBUG(2, ("check_reduced_name: Bad access "
+                               "attempt: %s is a symlink outside the "
+                               "share path\n", fname));
+-- 
+2.5.0
+
diff --git a/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch b/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch
new file mode 100644 (file)
index 0000000..4b722a5
--- /dev/null
@@ -0,0 +1,113 @@
+From 25139116756cc285a3a5534834cc276ef1b7baaa Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Wed, 30 Sep 2015 21:17:02 +0200
+Subject: [PATCH 1/2] CVE-2015-5296: s3:libsmb: force signing when requiring
+ encryption in do_connect()
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11536
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+---
+ source3/libsmb/clidfs.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
+index 23e1471..f153b6b 100644
+--- a/source3/libsmb/clidfs.c
++++ b/source3/libsmb/clidfs.c
+@@ -98,6 +98,11 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
+       const char *username;
+       const char *password;
+       NTSTATUS status;
++      int signing_state = get_cmdline_auth_info_signing_state(auth_info);
++
++      if (force_encrypt) {
++              signing_state = Required;
++      }
+       /* make a copy so we don't modify the global string 'service' */
+       servicename = talloc_strdup(ctx,share);
+@@ -132,7 +137,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
+       zero_sockaddr(&ss);
+       /* have to open a new connection */
+-      c = cli_initialise_ex(get_cmdline_auth_info_signing_state(auth_info));
++      c = cli_initialise_ex(signing_state);
+       if (c == NULL) {
+               d_printf("Connection to %s failed\n", server_n);
+               return NULL;
+-- 
+2.5.0
+
+
+From 060adb0abdeda51b8b622c6020b5dea0c8dde1cf Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Wed, 30 Sep 2015 21:17:02 +0200
+Subject: [PATCH 2/2] CVE-2015-5296: s3:libsmb: force signing when requiring
+ encryption in SMBC_server_internal()
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11536
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+---
+ source3/libsmb/libsmb_server.c | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
+index 45be660..167f2c9 100644
+--- a/source3/libsmb/libsmb_server.c
++++ b/source3/libsmb/libsmb_server.c
+@@ -258,6 +258,7 @@ SMBC_server_internal(TALLOC_CTX *ctx,
+         const char *username_used;
+       NTSTATUS status;
+       char *newserver, *newshare;
++      int signing_state = Undefined;
+       zero_sockaddr(&ss);
+       ZERO_STRUCT(c);
+@@ -404,8 +405,12 @@ again:
+       zero_sockaddr(&ss);
++      if (context->internal->smb_encryption_level != SMBC_ENCRYPTLEVEL_NONE) {
++              signing_state = Required;
++      }
++
+       /* have to open a new connection */
+-      if ((c = cli_initialise()) == NULL) {
++      if ((c = cli_initialise_ex(signing_state)) == NULL) {
+               errno = ENOMEM;
+               return NULL;
+       }
+@@ -750,6 +755,7 @@ SMBC_attr_server(TALLOC_CTX *ctx,
+         ipc_srv = SMBC_find_server(ctx, context, server, "*IPC$",
+                                    pp_workgroup, pp_username, pp_password);
+         if (!ipc_srv) {
++              int signing_state = Undefined;
+                 /* We didn't find a cached connection.  Get the password */
+               if (!*pp_password || (*pp_password)[0] == '\0') {
+@@ -771,6 +777,9 @@ SMBC_attr_server(TALLOC_CTX *ctx,
+                 if (smbc_getOptionUseCCache(context)) {
+                         flags |= CLI_FULL_CONNECTION_USE_CCACHE;
+                 }
++              if (context->internal->smb_encryption_level != SMBC_ENCRYPTLEVEL_NONE) {
++                      signing_state = Required;
++              }
+                 zero_sockaddr(&ss);
+                 nt_status = cli_full_connection(&ipc_cli,
+@@ -780,7 +789,7 @@ SMBC_attr_server(TALLOC_CTX *ctx,
+                                               *pp_workgroup,
+                                               *pp_password,
+                                               flags,
+-                                              Undefined);
++                                              signing_state);
+                 if (! NT_STATUS_IS_OK(nt_status)) {
+                         DEBUG(1,("cli_full_connection failed! (%s)\n",
+                                  nt_errstr(nt_status)));
+-- 
+2.5.0
+
diff --git a/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch b/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch
new file mode 100644 (file)
index 0000000..38936bb
--- /dev/null
@@ -0,0 +1,98 @@
+From 8e49de7754f7171a58a1f94dee0f1138dbee3c60 Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Fri, 23 Oct 2015 14:54:31 -0700
+Subject: [PATCH] CVE-2015-5299: s3-shadow-copy2: fix missing access check on
+ snapdir
+
+Fix originally from <partha@exablox.com>
+
+https://bugzilla.samba.org/show_bug.cgi?id=11529
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/modules/vfs_shadow_copy2.c | 47 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
+
+diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
+index fedfb53..16c1ed7 100644
+--- a/source3/modules/vfs_shadow_copy2.c
++++ b/source3/modules/vfs_shadow_copy2.c
+@@ -21,6 +21,8 @@
+ #include "includes.h"
+ #include "smbd/smbd.h"
++#include "smbd/globals.h"
++#include "../libcli/security/security.h"
+ #include "system/filesys.h"
+ #include "ntioctl.h"
+@@ -764,6 +766,43 @@ static int shadow_copy2_mkdir(vfs_handle_struct *handle,  const char *fname, mod
+         SHADOW2_NEXT(MKDIR, (handle, name, mode), int, -1);
+ }
++static bool check_access_snapdir(struct vfs_handle_struct *handle,
++                              const char *path)
++{
++      struct smb_filename smb_fname;
++      int ret;
++      NTSTATUS status;
++      uint32_t access_granted = 0;
++
++      ZERO_STRUCT(smb_fname);
++      smb_fname.base_name = talloc_asprintf(talloc_tos(),
++                                              "%s",
++                                              path);
++      if (smb_fname.base_name == NULL) {
++              return false;
++      }
++
++      ret = SMB_VFS_NEXT_STAT(handle, &smb_fname);
++      if (ret != 0 || !S_ISDIR(smb_fname.st.st_ex_mode)) {
++              TALLOC_FREE(smb_fname.base_name);
++              return false;
++      }
++
++      status = smbd_check_open_rights(handle->conn,
++                                      &smb_fname,
++                                      SEC_DIR_LIST,
++                                      &access_granted);
++      if (!NT_STATUS_IS_OK(status)) {
++              DEBUG(0,("user does not have list permission "
++                      "on snapdir %s\n",
++                      smb_fname.base_name));
++              TALLOC_FREE(smb_fname.base_name);
++              return false;
++      }
++      TALLOC_FREE(smb_fname.base_name);
++      return true;
++}
++
+ static int shadow_copy2_rmdir(vfs_handle_struct *handle,  const char *fname)
+ {
+         SHADOW2_NEXT(RMDIR, (handle, name), int, -1);
+@@ -877,6 +916,7 @@ static int shadow_copy2_get_shadow_copy2_data(vfs_handle_struct *handle,
+       SMB_STRUCT_DIRENT *d;
+       TALLOC_CTX *tmp_ctx = talloc_new(handle->data);
+       char *snapshot;
++      bool ret;
+       snapdir = shadow_copy2_find_snapdir(tmp_ctx, handle);
+       if (snapdir == NULL) {
+@@ -886,6 +926,13 @@ static int shadow_copy2_get_shadow_copy2_data(vfs_handle_struct *handle,
+               talloc_free(tmp_ctx);
+               return -1;
+       }
++      ret = check_access_snapdir(handle, snapdir);
++      if (!ret) {
++              DEBUG(0,("access denied on listing snapdir %s\n", snapdir));
++              errno = EACCES;
++              talloc_free(tmp_ctx);
++              return -1;
++      }
+       p = SMB_VFS_NEXT_OPENDIR(handle, snapdir, NULL, 0);
+-- 
+2.5.0
+
diff --git a/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch b/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch
new file mode 100644 (file)
index 0000000..4ae1473
--- /dev/null
@@ -0,0 +1,214 @@
+From a96c0528c68093d155b674269a9c8bf48315fc01 Mon Sep 17 00:00:00 2001
+From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Date: Tue, 24 Nov 2015 13:47:16 +1300
+Subject: [PATCH 1/3] CVE-2015-5330: Fix handling of unicode near string
+ endings
+
+Until now next_codepoint_ext() and next_codepoint_handle_ext() were
+using strnlen(str, 5) to determine how much string they should try to
+decode. This ended up looking past the end of the string when it was not
+null terminated and the final character looked like a multi-byte encoding.
+The fix is to let the caller say how long the string can be.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11599
+
+Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Pair-programmed-with: Andrew Bartlett <abartlet@samba.org>
+Reviewed-by: Ralph Boehme <slow@samba.org>
+---
+ lib/util/charset/charset.h     |  9 +++++----
+ lib/util/charset/codepoints.c  | 19 +++++++++++++------
+ lib/util/charset/util_unistr.c |  5 ++++-
+ source3/lib/util_str.c         |  2 +-
+ 4 files changed, 23 insertions(+), 12 deletions(-)
+
+diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h
+index 474d77e..b70aa61 100644
+--- a/lib/util/charset/charset.h
++++ b/lib/util/charset/charset.h
+@@ -175,15 +175,16 @@ smb_iconv_t get_conv_handle(struct smb_iconv_convenience *ic,
+                           charset_t from, charset_t to);
+ const char *charset_name(struct smb_iconv_convenience *ic, charset_t ch);
+-codepoint_t next_codepoint_ext(const char *str, charset_t src_charset,
+-                             size_t *size);
++codepoint_t next_codepoint_ext(const char *str, size_t len,
++                             charset_t src_charset, size_t *size);
+ codepoint_t next_codepoint(const char *str, size_t *size);
+ ssize_t push_codepoint(char *str, codepoint_t c);
+ /* codepoints */
+ codepoint_t next_codepoint_convenience_ext(struct smb_iconv_convenience *ic,
+-                          const char *str, charset_t src_charset,
+-                          size_t *size);
++                                         const char *str, size_t len,
++                                         charset_t src_charset,
++                                         size_t *size);
+ codepoint_t next_codepoint_convenience(struct smb_iconv_convenience *ic, 
+                           const char *str, size_t *size);
+ ssize_t push_codepoint_convenience(struct smb_iconv_convenience *ic, 
+diff --git a/lib/util/charset/codepoints.c b/lib/util/charset/codepoints.c
+index 5ee95a8..8dd647e 100644
+--- a/lib/util/charset/codepoints.c
++++ b/lib/util/charset/codepoints.c
+@@ -346,7 +346,8 @@ smb_iconv_t get_conv_handle(struct smb_iconv_convenience *ic,
+  */
+ _PUBLIC_ codepoint_t next_codepoint_convenience_ext(
+                       struct smb_iconv_convenience *ic,
+-                      const char *str, charset_t src_charset,
++                      const char *str, size_t len,
++                      charset_t src_charset,
+                       size_t *bytes_consumed)
+ {
+       /* it cannot occupy more than 4 bytes in UTF16 format */
+@@ -366,7 +367,7 @@ _PUBLIC_ codepoint_t next_codepoint_convenience_ext(
+        * we assume that no multi-byte character can take more than 5 bytes.
+        * This is OK as we only support codepoints up to 1M (U+100000)
+        */
+-      ilen_orig = strnlen(str, 5);
++      ilen_orig = MIN(len, 5);
+       ilen = ilen_orig;
+       descriptor = get_conv_handle(ic, src_charset, CH_UTF16);
+@@ -424,7 +425,13 @@ _PUBLIC_ codepoint_t next_codepoint_convenience_ext(
+ _PUBLIC_ codepoint_t next_codepoint_convenience(struct smb_iconv_convenience *ic,
+                                   const char *str, size_t *size)
+ {
+-      return next_codepoint_convenience_ext(ic, str, CH_UNIX, size);
++      /*
++       * We assume that no multi-byte character can take more than 5 bytes
++       * thus avoiding walking all the way down a long string. This is OK as
++       * Unicode codepoints only go up to (U+10ffff), which can always be
++       * encoded in 4 bytes or less.
++       */
++      return next_codepoint_convenience_ext(ic, str, strnlen(str, 5), CH_UNIX, size);
+ }
+ /*
+@@ -486,10 +493,10 @@ _PUBLIC_ ssize_t push_codepoint_convenience(struct smb_iconv_convenience *ic,
+       return 5 - olen;
+ }
+-_PUBLIC_ codepoint_t next_codepoint_ext(const char *str, charset_t src_charset,
+-                                      size_t *size)
++_PUBLIC_ codepoint_t next_codepoint_ext(const char *str, size_t len,
++                                      charset_t src_charset, size_t *size)
+ {
+-      return next_codepoint_convenience_ext(get_iconv_convenience(), str,
++      return next_codepoint_convenience_ext(get_iconv_convenience(), str, len,
+                                             src_charset, size);
+ }
+diff --git a/lib/util/charset/util_unistr.c b/lib/util/charset/util_unistr.c
+index 760be77..d9e9b34 100644
+--- a/lib/util/charset/util_unistr.c
++++ b/lib/util/charset/util_unistr.c
+@@ -485,7 +485,10 @@ _PUBLIC_ char *strupper_talloc_n(TALLOC_CTX *ctx, const char *src, size_t n)
+       while (n-- && *src) {
+               size_t c_size;
+-              codepoint_t c = next_codepoint_convenience(iconv_convenience, src, &c_size);
++              codepoint_t c = next_codepoint_convenience_ext(iconv_convenience,
++                                                             src,
++                                                             n,
++                                                             &c_size);
+               src += c_size;
+               c = toupper_m(c);
+diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
+index 4701528..f8a5160 100644
+--- a/source3/lib/util_str.c
++++ b/source3/lib/util_str.c
+@@ -1486,7 +1486,7 @@ size_t strlen_m_ext(const char *s, const charset_t src_charset,
+       while (*s) {
+               size_t c_size;
+-              codepoint_t c = next_codepoint_ext(s, src_charset, &c_size);
++              codepoint_t c = next_codepoint_ext(s, strnlen(s, 5), src_charset, &c_size);
+               s += c_size;
+               switch (dst_charset) {
+-- 
+2.5.0
+
+
+From 8298252a1ba9c014f7ceb76736abb38132181f79 Mon Sep 17 00:00:00 2001
+From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Date: Tue, 24 Nov 2015 13:54:09 +1300
+Subject: [PATCH 2/3] CVE-2015-5330: next_codepoint_handle_ext: don't
+ short-circuit UTF16 low bytes
+
+UTF16 contains zero bytes when it is encoding ASCII (for example), so we
+can't assume the absense of the 0x80 bit means a one byte encoding. No
+current callers use UTF16.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11599
+
+Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Pair-programmed-with: Andrew Bartlett <abartlet@samba.org>
+Reviewed-by: Ralph Boehme <slow@samba.org>
+---
+ lib/util/charset/codepoints.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/lib/util/charset/codepoints.c b/lib/util/charset/codepoints.c
+index 8dd647e..cf5f3e6 100644
+--- a/lib/util/charset/codepoints.c
++++ b/lib/util/charset/codepoints.c
+@@ -358,7 +358,10 @@ _PUBLIC_ codepoint_t next_codepoint_convenience_ext(
+       size_t olen;
+       char *outbuf;
+-      if ((str[0] & 0x80) == 0) {
++
++      if (((str[0] & 0x80) == 0) && (src_charset == CH_DOS ||
++                                     src_charset == CH_UNIX ||
++                                     src_charset == CH_UTF8)) {
+               *bytes_consumed = 1;
+               return (codepoint_t)str[0];
+       }
+-- 
+2.5.0
+
+
+From 0988b7cb606a7e4cd73fd8db02806abbc9d8f2e0 Mon Sep 17 00:00:00 2001
+From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Date: Tue, 24 Nov 2015 13:49:09 +1300
+Subject: [PATCH 3/3] CVE-2015-5330: strupper_talloc_n_handle(): properly count
+ characters
+
+When a codepoint eats more than one byte we really want to know,
+especially if the string is not NUL terminated.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11599
+
+Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Pair-programmed-with: Andrew Bartlett <abartlet@samba.org>
+Reviewed-by: Ralph Boehme <slow@samba.org>
+---
+ lib/util/charset/util_unistr.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/lib/util/charset/util_unistr.c b/lib/util/charset/util_unistr.c
+index d9e9b34..6dad43f 100644
+--- a/lib/util/charset/util_unistr.c
++++ b/lib/util/charset/util_unistr.c
+@@ -483,13 +483,14 @@ _PUBLIC_ char *strupper_talloc_n(TALLOC_CTX *ctx, const char *src, size_t n)
+               return NULL;
+       }
+-      while (n-- && *src) {
++      while (n && *src) {
+               size_t c_size;
+               codepoint_t c = next_codepoint_convenience_ext(iconv_convenience,
+                                                              src,
+                                                              n,
+                                                              &c_size);
+               src += c_size;
++              n -= c_size;
+               c = toupper_m(c);
+-- 
+2.5.0
+
diff --git a/src/patches/samba/CVE-2016-2125-v3.6.patch b/src/patches/samba/CVE-2016-2125-v3.6.patch
new file mode 100644 (file)
index 0000000..f67b5d0
--- /dev/null
@@ -0,0 +1,46 @@
+From 7cc3b25f4bf9e89e326d04b83bc7365f3cc29265 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Wed, 7 Dec 2016 10:58:35 +0100
+Subject: [PATCH] CVE-2016-2125: s3:gse: avoid using GSS_C_DELEG_FLAG
+
+We should only use GSS_C_DELEG_POLICY_FLAG in order to let
+the KDC decide if we should send delegated credentials to
+a remote server.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=12445
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+Backported-by: Andreas Schneider <asn@samba.org>
+---
+ source3/librpc/crypto/gse.c | 1 -
+ source3/libsmb/clifsinfo.c  | 2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/source3/librpc/crypto/gse.c b/source3/librpc/crypto/gse.c
+index 02fb0f6141d..211ca7774be 100644
+--- a/source3/librpc/crypto/gse.c
++++ b/source3/librpc/crypto/gse.c
+@@ -162,7 +162,6 @@ static NTSTATUS gse_context_init(TALLOC_CTX *mem_ctx,
+       memcpy(&gse_ctx->gss_mech, gss_mech_krb5, sizeof(gss_OID_desc));
+       gse_ctx->gss_c_flags = GSS_C_MUTUAL_FLAG |
+-                              GSS_C_DELEG_FLAG |
+                               GSS_C_DELEG_POLICY_FLAG |
+                               GSS_C_REPLAY_FLAG |
+                               GSS_C_SEQUENCE_FLAG;
+diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c
+index 1d66eb4c6b8..34ebc208db0 100644
+--- a/source3/libsmb/clifsinfo.c
++++ b/source3/libsmb/clifsinfo.c
+@@ -726,7 +726,7 @@ static NTSTATUS make_cli_gss_blob(TALLOC_CTX *ctx,
+                               &es->s.gss_state->gss_ctx,
+                               srv_name,
+                               GSS_C_NO_OID, /* default OID. */
+-                              GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG | GSS_C_DELEG_FLAG,
++                              GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG | GSS_C_DELEG_POLICY_FLAG,
+                               GSS_C_INDEFINITE,       /* requested ticket lifetime. */
+                               NULL,   /* no channel bindings */
+                               p_tok_in,
+-- 
+2.11.0
+
diff --git a/src/patches/samba/CVE-2016-2126-v3.6.patch b/src/patches/samba/CVE-2016-2126-v3.6.patch
new file mode 100644 (file)
index 0000000..8de651e
--- /dev/null
@@ -0,0 +1,80 @@
+From 4e47b5d703c54215804d595980be028f47a87cbf Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Wed, 7 Dec 2016 11:18:59 +0100
+Subject: [PATCH] CVE-2016-2126: auth/kerberos: only allow known checksum types
+ in check_pac_checksum()
+
+AES based checksums can only be checked with the corresponding AES based
+keytype.
+
+Otherwise we may trigger an undefined code path deep in the kerberos
+libraries, which can leed to segmentation faults.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=12446
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+Backported-by: Andreas Schneider <asn@samba.org>
+---
+ source3/include/smb_krb5.h | 12 ++++++++++++
+ source3/libads/authdata.c  | 22 ++++++++++++++++++++++
+ 2 files changed, 34 insertions(+)
+
+diff --git a/source3/include/smb_krb5.h b/source3/include/smb_krb5.h
+index 5a55d3040d5..2780622f512 100644
+--- a/source3/include/smb_krb5.h
++++ b/source3/include/smb_krb5.h
+@@ -61,6 +61,18 @@
+ #define ENCTYPE_ARCFOUR_HMAC ENCTYPE_ARCFOUR_HMAC_MD5
+ #endif
++#if !defined(CKSUMTYPE_HMAC_MD5_ARCFOUR) && defined(CKSUMTYPE_HMAC_MD5)
++#define CKSUMTYPE_HMAC_MD5_ARCFOUR CKSUMTYPE_HMAC_MD5
++#endif
++
++#if !defined(CKSUMTYPE_HMAC_SHA1_96_AES256) && defined(CKSUMTYPE_HMAC_SHA1_96_AES_256)
++#define CKSUMTYPE_HMAC_SHA1_96_AES256 CKSUMTYPE_HMAC_SHA1_96_AES_256
++#endif
++
++#if !defined(CKSUMTYPE_HMAC_SHA1_96_AES128) && defined(CKSUMTYPE_HMAC_SHA1_96_AES_128)
++#define CKSUMTYPE_HMAC_SHA1_96_AES128 CKSUMTYPE_HMAC_SHA1_96_AES_128
++#endif
++
+ /* The older versions of heimdal that don't have this
+    define don't seem to use it anyway.  I'm told they
+    always use a subkey */
+diff --git a/source3/libads/authdata.c b/source3/libads/authdata.c
+index 0d877ddef89..30622843f1d 100644
+--- a/source3/libads/authdata.c
++++ b/source3/libads/authdata.c
+@@ -42,6 +42,28 @@ static krb5_error_code check_pac_checksum(TALLOC_CTX *mem_ctx,
+       krb5_checksum cksum;
+       krb5_keyusage usage = 0;
++      switch (sig->type) {
++      case CKSUMTYPE_HMAC_MD5_ARCFOUR:
++              /* ignores the key type */
++              break;
++      case CKSUMTYPE_HMAC_SHA1_96_AES256:
++              if (KRB5_KEY_TYPE(keyblock) != ENCTYPE_AES256_CTS_HMAC_SHA1_96) {
++                      return EINVAL;
++              }
++              /* ok */
++              break;
++      case CKSUMTYPE_HMAC_SHA1_96_AES128:
++              if (KRB5_KEY_TYPE(keyblock) != ENCTYPE_AES128_CTS_HMAC_SHA1_96) {
++                      return EINVAL;
++              }
++              /* ok */
++              break;
++      default:
++              DEBUG(2,("check_pac_checksum: Checksum Type %d is not supported\n",
++                      (int)sig->type));
++              return EINVAL;
++      }
++
+       smb_krb5_checksum_from_pac_sig(&cksum, sig);
+ #ifdef HAVE_KRB5_KU_OTHER_CKSUM /* Heimdal */
+-- 
+2.11.0
+
diff --git a/src/patches/samba/CVE-2017-7494-v3-6.patch b/src/patches/samba/CVE-2017-7494-v3-6.patch
new file mode 100644 (file)
index 0000000..3b0d94c
--- /dev/null
@@ -0,0 +1,32 @@
+From b719a4d53fc6d590f4fac340d956344a5246de4e Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Mon, 8 May 2017 21:40:40 +0200
+Subject: [PATCH] CVE-2017-7494: Refuse to open pipe names with / inside
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=12780
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+---
+ source3/rpc_server/srv_pipe.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c
+index ec24fe7..b80e3f5 100644
+--- a/source3/rpc_server/srv_pipe.c
++++ b/source3/rpc_server/srv_pipe.c
+@@ -473,6 +473,11 @@ bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax)
+               pipename += 1;
+       }
++      if (strchr(pipename, '/')) {
++              DEBUG(1,("Refusing open on pipe %s\n", pipename));
++              return false;
++      }
++
+       if (lp_disable_spoolss() && strequal(pipename, "spoolss")) {
+               DEBUG(10, ("refusing spoolss access\n"));
+               return false;
+-- 
+2.9.4
+
diff --git a/src/patches/samba/doc-update.patch b/src/patches/samba/doc-update.patch
new file mode 100644 (file)
index 0000000..a0323b9
--- /dev/null
@@ -0,0 +1,2538 @@
+Index: samba-3.6.23/docs/manpages/dbwrap_tool.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/dbwrap_tool.1
++++ samba-3.6.23/docs/manpages/dbwrap_tool.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: dbwrap_tool
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "DBWRAP_TOOL" "1" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "DBWRAP_TOOL" "1" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/eventlogadm.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/eventlogadm.8
++++ samba-3.6.23/docs/manpages/eventlogadm.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: eventlogadm
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "EVENTLOGADM" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "EVENTLOGADM" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -105,7 +105,6 @@ The event log record field are:
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ LEN
+ \- This field should be 0, since
+ eventlogadm
+@@ -120,7 +119,6 @@ will calculate this value\&.
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ RS1
+ \- This must be the value 1699505740\&.
+ .RE
+@@ -133,7 +131,6 @@ RS1
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ RCN
+ \- This field should be 0\&.
+ .RE
+@@ -146,7 +143,6 @@ RCN
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ TMG
+ \- The time the eventlog record was generated; format is the number of seconds since 00:00:00 January 1, 1970, UTC\&.
+ .RE
+@@ -159,7 +155,6 @@ TMG
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ TMW
+ \- The time the eventlog record was written; format is the number of seconds since 00:00:00 January 1, 1970, UTC\&.
+ .RE
+@@ -172,7 +167,6 @@ TMW
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ EID
+ \- The eventlog ID\&.
+ .RE
+@@ -185,7 +179,6 @@ EID
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ ETP
+ \- The event type \-\- one of "INFO", "ERROR", "WARNING", "AUDIT SUCCESS" or "AUDIT FAILURE"\&.
+ .RE
+@@ -198,7 +191,6 @@ ETP
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ ECT
+ \- The event category; this depends on the message file\&. It is primarily used as a means of filtering in the eventlog viewer\&.
+ .RE
+@@ -211,7 +203,6 @@ ECT
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ RS2
+ \- This field should be 0\&.
+ .RE
+@@ -224,7 +215,6 @@ RS2
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ CRN
+ \- This field should be 0\&.
+ .RE
+@@ -237,7 +227,6 @@ CRN
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ USL
+ \- This field should be 0\&.
+ .RE
+@@ -250,7 +239,6 @@ USL
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ SRC
+ \- This field contains the source name associated with the event log\&. If a message file is used with an event log, there will be a registry entry for associating this source name with a message file DLL\&.
+ .RE
+@@ -263,7 +251,6 @@ SRC
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ SRN
+ \- The name of the machine on which the eventlog was generated\&. This is typically the host name\&.
+ .RE
+@@ -276,7 +263,6 @@ SRN
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ STR
+ \- The text associated with the eventlog\&. There may be more than one string in a record\&.
+ .RE
+@@ -289,7 +275,6 @@ STR
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ DAT
+ \- This field should be left unset\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/findsmb.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/findsmb.1
++++ samba-3.6.23/docs/manpages/findsmb.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: findsmb
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "FINDSMB" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "FINDSMB" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_ad.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_ad.8
++++ samba-3.6.23/docs/manpages/idmap_ad.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_ad
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_AD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_AD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_adex.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_adex.8
++++ samba-3.6.23/docs/manpages/idmap_adex.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_adex
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_ADEX" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_ADEX" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_autorid.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_autorid.8
++++ samba-3.6.23/docs/manpages/idmap_autorid.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_autorid
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_AUTORID" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_AUTORID" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_hash.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_hash.8
++++ samba-3.6.23/docs/manpages/idmap_hash.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_hash
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_HASH" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_HASH" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_ldap.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_ldap.8
++++ samba-3.6.23/docs/manpages/idmap_ldap.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_ldap
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_LDAP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_LDAP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_nss.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_nss.8
++++ samba-3.6.23/docs/manpages/idmap_nss.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_nss
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_NSS" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_NSS" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_rid.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_rid.8
++++ samba-3.6.23/docs/manpages/idmap_rid.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_rid
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_RID" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_RID" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_tdb2.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_tdb2.8
++++ samba-3.6.23/docs/manpages/idmap_tdb2.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_tdb2
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_TDB2" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_TDB2" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/idmap_tdb.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/idmap_tdb.8
++++ samba-3.6.23/docs/manpages/idmap_tdb.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: idmap_tdb
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "IDMAP_TDB" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "IDMAP_TDB" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/libsmbclient.7
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/libsmbclient.7
++++ samba-3.6.23/docs/manpages/libsmbclient.7
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: libsmbclient
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: 7
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "LIBSMBCLIENT" "7" "09/18/2013" "Samba 3\&.6" "7"
++.TH "LIBSMBCLIENT" "7" "04/11/2016" "Samba 3\&.6" "7"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -40,11 +40,9 @@ This tool is part of the
+ \fBsamba\fR(7)
+ suite\&.
+ .PP
+-
+ libsmbclient
+ is a library toolset that permits applications to manipulate CIFS/SMB network resources using many of the standards POSIX functions available for manipulating local UNIX/Linux files\&. It permits much more than just browsing, files can be opened and read or written, permissions changed, file times modified, attributes and ACL\*(Aqs can be manipulated, and so on\&. Of course, its functionality includes all the capabilities commonly called browsing\&.
+ .PP
+-
+ libsmbclient
+ can not be used directly from the command line, instead it provides an extension of the capabilities of tools such as file managers and browsers\&. This man page describes the configuration options for this tool so that the user may obtain greatest utility of use\&.
+ .SH "OPTIONS"
+@@ -77,7 +75,6 @@ and then append the contents of the
+ ~/\&.smb/smb\&.conf\&.append
+ to it\&.
+ .PP
+-
+ libsmbclient
+ will check the users shell environment for the
+ USER
+Index: samba-3.6.23/docs/manpages/lmhosts.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/lmhosts.5
++++ samba-3.6.23/docs/manpages/lmhosts.5
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: lmhosts
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: File Formats and Conventions
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "LMHOSTS" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions"
++.TH "LMHOSTS" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/log2pcap.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/log2pcap.1
++++ samba-3.6.23/docs/manpages/log2pcap.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: log2pcap
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "LOG2PCAP" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "LOG2PCAP" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -74,7 +74,7 @@ pcap_file
+ Name of the output file to write the pcap (or hexdump) data to\&. If this argument is not specified, output data will be written to stdout\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/net.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/net.8
++++ samba-3.6.23/docs/manpages/net.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: net
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "NET" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "NET" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -41,7 +41,7 @@ suite\&.
+ The Samba net utility is meant to work just like the net utility available for windows and DOS\&. The first argument should be used to specify the protocol to use when executing a certain command\&. ADS is used for ActiveDirectory, RAP is using for old (Win9x/NT3) clients and RPC can be used for NT4 and Windows 2000\&. If this argument is omitted, net will try to determine it automatically\&. Not all commands are available on all protocols\&.
+ .SH "OPTIONS"
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+@@ -113,6 +113,11 @@ Make queries to the external server usin
+ Let client requests timeout after 30 seconds the default is 10 seconds\&.
+ .RE
+ .PP
++\-\-no\-dns\-updates
++.RS 4
++Do not perform DNS updates as part of "net ads join"\&.
++.RE
++.PP
+ \-d|\-\-debuglevel=level
+ .RS 4
+ \fIlevel\fR
+@@ -153,7 +158,7 @@ Tries to set the date and time of the lo
+ .SS "TIME ZONE"
+ .PP
+ Displays the timezone in hours from GMT on the remote computer\&.
+-.SS "[RPC|ADS] JOIN [TYPE] [\-U username[%password]] [createupn=UPN] [createcomputer=OU] [options]"
++.SS "[RPC|ADS] JOIN [TYPE] [\-\-no\-dns\-updates] [\-U username[%password]] [createupn=UPN] [createcomputer=OU] [options]"
+ .PP
+ Join a domain\&. If the account already exists on the server, and [TYPE] is MEMBER, the machine will attempt to join automatically\&. (Assuming that the machine has been created in server manager) Otherwise, a password will be prompted for, and a new account may be created\&.
+ .PP
+@@ -509,8 +514,6 @@ net groupmap delete {ntgroup=string|sid=
+ .PP
+ Update en existing group entry\&.
+ .PP
+-
+-.sp
+ .if n \{\
+ .RS 4
+ .\}
+@@ -1208,8 +1211,7 @@ may be one of
+ \fImulti_sz\fR
+ or
+ \fIdword\fR\&. In case of
+-\fImulti_sz\fR
+-\fIvalue\fR
++\fImulti_sz\fR\fIvalue\fR
+ may be given multiple times\&.
+ .SS "REGISTRY INCREMENT key name [inc]"
+ .PP
+Index: samba-3.6.23/docs/manpages/nmbd.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/nmbd.8
++++ samba-3.6.23/docs/manpages/nmbd.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: nmbd
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "NMBD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "NMBD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -106,7 +106,7 @@ also logs to standard output, as if the
+ parameter had been given\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+@@ -264,7 +264,6 @@ The debug log level of nmbd may be raise
+ This man page is correct for version 3 of the Samba suite\&.
+ .SH "SEE ALSO"
+ .PP
+-
+ \fBinetd\fR(8),
+ \fBsmbd\fR(8),
+ \fBsmb.conf\fR(5),
+Index: samba-3.6.23/docs/manpages/nmblookup.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/nmblookup.1
++++ samba-3.6.23/docs/manpages/nmblookup.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: nmblookup
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "NMBLOOKUP" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "NMBLOOKUP" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -109,7 +109,7 @@ smb\&.conf
+ manual page for the list of valid options\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/ntlm_auth.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/ntlm_auth.1
++++ samba-3.6.23/docs/manpages/ntlm_auth.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: ntlm_auth
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "NTLM_AUTH" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "NTLM_AUTH" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -347,7 +347,7 @@ Base directory name for log/debug files\
+ will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/pam_winbind.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/pam_winbind.8
++++ samba-3.6.23/docs/manpages/pam_winbind.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: pam_winbind
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: 8
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "PAM_WINBIND" "8" "09/18/2013" "Samba 3\&.6" "8"
++.TH "PAM_WINBIND" "8" "04/11/2016" "Samba 3\&.6" "8"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/pam_winbind.conf.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/pam_winbind.conf.5
++++ samba-3.6.23/docs/manpages/pam_winbind.conf.5
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: pam_winbind.conf
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: 5
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "PAM_WINBIND\&.CONF" "5" "09/18/2013" "Samba 3\&.6" "5"
++.TH "PAM_WINBIND\&.CONF" "5" "04/11/2016" "Samba 3\&.6" "5"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/pdbedit.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/pdbedit.8
++++ samba-3.6.23/docs/manpages/pdbedit.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: pdbedit
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "PDBEDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "PDBEDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -204,8 +204,6 @@ Example:
+ .RS 4
+ This option can be used while adding or modifying a user account\&. It will specify the users\*(Aq account control property\&. Possible flags are listed below\&.
+ .sp
+-
+-.sp
+ .RS 4
+ .ie n \{\
+ \h'-04'\(bu\h'+03'\c
+@@ -555,7 +553,7 @@ Example:
+ This option is currently not being used\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/profiles.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/profiles.1
++++ samba-3.6.23/docs/manpages/profiles.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: profiles
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "PROFILES" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "PROFILES" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -59,7 +59,7 @@ file
+ by SID2\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/rpcclient.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/rpcclient.1
++++ samba-3.6.23/docs/manpages/rpcclient.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: rpcclient
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "RPCCLIENT" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "RPCCLIENT" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -199,7 +199,7 @@ smb\&.conf
+ manual page for the list of valid options\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/samba.7
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/samba.7
++++ samba-3.6.23/docs/manpages/samba.7
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: samba
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: Miscellanea
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SAMBA" "7" "09/18/2013" "Samba 3\&.6" "Miscellanea"
++.TH "SAMBA" "7" "04/11/2016" "Samba 3\&.6" "Miscellanea"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/sharesec.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/sharesec.1
++++ samba-3.6.23/docs/manpages/sharesec.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: sharesec
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SHARESEC" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SHARESEC" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -82,7 +82,7 @@ Remove ACEs\&.
+ Overwrite an existing share permission ACL\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/smbcacls.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbcacls.1
++++ samba-3.6.23/docs/manpages/smbcacls.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbcacls
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBCACLS" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBCACLS" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -102,7 +102,7 @@ This option displays all ACL information
+ Don\*(Aqt actually do anything, only validate the correctness of the arguments\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/smbclient.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbclient.1
++++ samba-3.6.23/docs/manpages/smbclient.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbclient
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBCLIENT" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBCLIENT" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -205,7 +205,7 @@ This parameter sets the maximum protocol
+ Make queries to the external server using the machine account of the local server\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/smb.conf.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smb.conf.5
++++ samba-3.6.23/docs/manpages/smb.conf.5
+@@ -2,12 +2,12 @@
+ .\"     Title: smb.conf
+ .\"    Author: [see the "AUTHOR" section]
+ .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+-.\"      Date: 10/15/2015
++.\"      Date: 04/11/2016
+ .\"    Manual: File Formats and Conventions
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMB\&.CONF" "5" "10/15/2015" "Samba 3\&.6" "File Formats and Conventions"
++.TH "SMB\&.CONF" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -1371,6 +1371,24 @@ Example:
+ \fI\fIallocation roundup size\fR\fR\fI = \fR\fI0 # (to disable roundups)\fR\fI \fR
+ .RE
++allow dcerpc auth level connect (G)
++.\" allow dcerpc auth level connect
++.PP
++.RS 4
++This option controls whether DCERPC services are allowed to be used with DCERPC_AUTH_LEVEL_CONNECT, which provides authentication, but no per message integrity nor privacy protection\&.
++.sp
++The behavior can be controlled per interface name (e\&.g\&. lsarpc, netlogon, samr, srvsvc, winreg, wkssvc \&.\&.\&.) by using \*(Aqallow dcerpc auth level connect:interface = no\*(Aq as option\&.
++.sp
++This option yields precedence to the implentation specific restrictions\&. E\&.g\&. the drsuapi and backupkey protocols require DCERPC_AUTH_LEVEL_PRIVACY\&. While others like samr and lsarpc have a hardcoded default of
++\fBno\fR\&.
++.sp
++Default:
++\fI\fIallow dcerpc auth level connect\fR\fR\fI = \fR\fIno\fR\fI \fR
++.sp
++Example:
++\fI\fIallow dcerpc auth level connect\fR\fR\fI = \fR\fIyes\fR\fI \fR
++.RE
++
+ allow insecure wide links (G)
+ .\" allow insecure wide links
+ .PP
+@@ -1826,6 +1844,24 @@ Example:
+ \fI\fIcheck password script\fR\fR\fI = \fR\fI/usr/local/sbin/crackcheck\fR\fI \fR
+ .RE
++client ipc signing (G)
++.\" client ipc signing
++.PP
++.RS 4
++This controls whether the client is allowed or required to use SMB signing for IPC$ connections as DCERPC transport inside of winbind\&. Possible values are
++\fIauto\fR,
++\fImandatory\fR
++and
++\fIdisabled\fR\&.
++.sp
++When set to auto, SMB signing is offered, but not enforced and if set to disabled, SMB signing is not offered either\&.
++.sp
++Connections from winbindd to Active Directory Domain Controllers always enforce signing\&.
++.sp
++Default:
++\fI\fIclient ipc signing\fR\fR\fI = \fR\fImandatory\fR\fI \fR
++.RE
++
+ client lanman auth (G)
+ .\" client lanman auth
+ .PP
+@@ -1874,14 +1910,11 @@ is just an alias for
+ \fIseal\fR\&.
+ .sp
+ The default value is
+-\fIplain\fR
+-which is not irritable to KRB5 clock skew errors\&. That implies synchronizing the time with the KDC in the case of using
+-\fIsign\fR
+-or
+-\fIseal\fR\&.
++\fIsign\fR\&. That implies synchronizing the time with the KDC in the case of using
++\fIKerberos\fR\&.
+ .sp
+ Default:
+-\fI\fIclient ldap sasl wrapping\fR\fR\fI = \fR\fIplain\fR\fI \fR
++\fI\fIclient ldap sasl wrapping\fR\fR\fI = \fR\fIsign\fR\fI \fR
+ .RE
+ client ntlmv2 auth (G)
+@@ -1905,6 +1938,12 @@ client lanman auth\&.
+ .sp
+ Note that Windows Vista and later versions already use NTLMv2 by default, and some sites (particularly those following \*(Aqbest practice\*(Aq security polices) only allow NTLMv2 responses, and not the weaker LM or NTLM\&.
+ .sp
++When
++\m[blue]\fBclient use spnego\fR\m[]
++is also set to
++\fByes\fR
++extended security (SPNEGO) is required in order to use NTLMv2 only within NTLMSSP\&. This behavior was introduced with the patches for CVE\-2016\-2111\&.
++.sp
+ Default:
+ \fI\fIclient ntlmv2 auth\fR\fR\fI = \fR\fIyes\fR\fI \fR
+ .RE
+@@ -1949,6 +1988,7 @@ and
+ \fIdisabled\fR\&.
+ .sp
+ When set to auto, SMB signing is offered, but not enforced\&. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either\&.
++IPC$ connections for DCERPC e\&.g\&. in winbindd, are handled by the \m[blue]\fBclient ipc signing\fR\m[] option\&.
+ .sp
+ Default:
+ \fI\fIclient signing\fR\fR\fI = \fR\fIauto\fR\fI \fR
+@@ -1978,6 +2018,12 @@ client use spnego (G)
+ .RS 4
+ This variable controls whether Samba clients will try to use Simple and Protected NEGOciation (as specified by rfc2478) with supporting servers (including WindowsXP, Windows2000 and Samba 3\&.0) to agree upon an authentication mechanism\&. This enables Kerberos authentication in particular\&.
+ .sp
++When
++\m[blue]\fBclient NTLMv2 auth\fR\m[]
++is also set to
++\fByes\fR
++extended security (SPNEGO) is required in order to use NTLMv2 only within NTLMSSP\&. This behavior was introduced with the patches for CVE\-2016\-2111\&.
++.sp
+ Default:
+ \fI\fIclient use spnego\fR\fR\fI = \fR\fIyes\fR\fI \fR
+ .RE
+@@ -8103,6 +8149,24 @@ Example:
+ \fI\fIqueueresume command\fR\fR\fI = \fR\fIenable %p\fR\fI \fR
+ .RE
++raw NTLMv2 auth (G)
++.\" raw NTLMv2 auth
++.PP
++.RS 4
++This parameter determines whether or not
++\fBsmbd\fR(8)
++will allow SMB1 clients without extended security (without SPNEGO) to use NTLMv2 authentication\&.
++.sp
++If this option,
++lanman auth
++and
++ntlm auth
++are all disabled, then only clients with SPNEGO support will be permitted\&. That means NTLMv2 is only supported within NTLMSSP\&.
++.sp
++Default:
++\fI\fIraw NTLMv2 auth\fR\fR\fI = \fR\fIno\fR\fI \fR
++.RE
++
+ read list (S)
+ .\" read list
+ .PP
+@@ -10699,6 +10763,18 @@ Default:
+ \fI\fIwinbind rpc only\fR\fR\fI = \fR\fIno\fR\fI \fR
+ .RE
++winbind sealed pipes (G)
++.\" winbind sealed pipes
++.PP
++.RS 4
++This option controls whether any requests from winbindd to domain controllers pipe will be sealed\&. Disabling sealing can be useful for debugging purposes\&.
++.sp
++The behavior can be controlled per netbios domain by using \*(Aqwinbind sealed pipes:NETBIOSDOMAIN = no\*(Aq as option\&.
++.sp
++Default:
++\fI\fIwinbind sealed pipes\fR\fR\fI = \fR\fIyes\fR\fI \fR
++.RE
++
+ winbind separator (G)
+ .\" winbind separator
+ .PP
+Index: samba-3.6.23/docs/manpages/smbcontrol.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbcontrol.1
++++ samba-3.6.23/docs/manpages/smbcontrol.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbcontrol
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBCONTROL" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBCONTROL" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -48,7 +48,7 @@ is a very small program, which sends mes
+ daemon running on the system\&.
+ .SH "OPTIONS"
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/smbcquotas.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbcquotas.1
++++ samba-3.6.23/docs/manpages/smbcquotas.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbcquotas
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBCQUOTAS" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBCQUOTAS" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -82,7 +82,7 @@ Don\*(Aqt actually do anything, only val
+ Be verbose\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/smbd.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbd.8
++++ samba-3.6.23/docs/manpages/smbd.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbd
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "SMBD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -130,7 +130,7 @@ Base directory name for log/debug files\
+ will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+@@ -207,8 +207,7 @@ if this variable is not defined) as the
+ .SH "PAM INTERACTION"
+ .PP
+ Samba uses PAM for authentication (when presented with a plaintext password), for account checking (is this account disabled?) and for session management\&. The degree too which samba supports PAM is restricted by the limitations of the SMB protocol and the
+-\m[blue]\fBobey pam restrictions\fR\m[]
+-\fBsmb.conf\fR(5)
++\m[blue]\fBobey pam restrictions\fR\m[]\fBsmb.conf\fR(5)
+ parameter\&. When this is set, the following restrictions apply:
+ .sp
+ .RS 4
+@@ -359,8 +358,7 @@ configuration file within a short period
+ To shut down a user\*(Aqs
+ smbd
+ process it is recommended that
+-SIGKILL (\-9)
+-\fINOT\fR
++SIGKILL (\-9)\fINOT\fR
+ be used, except as a last resort, as this may leave the shared memory area in an inconsistent state\&. The safe way to terminate an
+ smbd
+ is to send it a SIGTERM (\-15) signal and wait for it to die on its own\&.
+Index: samba-3.6.23/docs/manpages/smbget.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbget.1
++++ samba-3.6.23/docs/manpages/smbget.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbget
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBGET" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBGET" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbgetrc.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbgetrc.5
++++ samba-3.6.23/docs/manpages/smbgetrc.5
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbgetrc
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: File Formats and Conventions
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBGETRC" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions"
++.TH "SMBGETRC" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbpasswd.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbpasswd.5
++++ samba-3.6.23/docs/manpages/smbpasswd.5
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbpasswd
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: File Formats and Conventions
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBPASSWD" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions"
++.TH "SMBPASSWD" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbpasswd.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbpasswd.8
++++ samba-3.6.23/docs/manpages/smbpasswd.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbpasswd
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBPASSWD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "SMBPASSWD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbspool.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbspool.8
++++ samba-3.6.23/docs/manpages/smbspool.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbspool
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBSPOOL" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "SMBSPOOL" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbstatus.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbstatus.1
++++ samba-3.6.23/docs/manpages/smbstatus.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbstatus
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBSTATUS" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBSTATUS" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -114,7 +114,7 @@ processes and exit\&. Useful for scripti
+ causes smbstatus to only list shares\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/smbtar.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbtar.1
++++ samba-3.6.23/docs/manpages/smbtar.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbtar
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBTAR" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBTAR" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbta-util.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbta-util.8
++++ samba-3.6.23/docs/manpages/smbta-util.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbta-util
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBTA\-UTIL" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "SMBTA\-UTIL" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/smbtree.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smbtree.1
++++ samba-3.6.23/docs/manpages/smbtree.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smbtree
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMBTREE" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "SMBTREE" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -153,7 +153,7 @@ rpcclient
+ to prompt for a password and type it in directly\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/swat.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/swat.8
++++ samba-3.6.23/docs/manpages/swat.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: swat
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SWAT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "SWAT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -116,7 +116,7 @@ Base directory name for log/debug files\
+ will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/tdbbackup.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/tdbbackup.8
++++ samba-3.6.23/docs/manpages/tdbbackup.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: tdbbackup
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "TDBBACKUP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "TDBBACKUP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -84,7 +84,6 @@ Samba \&.tdb files are stored in various
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ secrets\&.tdb
+ \- usual location is in the /usr/local/samba/private directory, or on some systems in /etc/samba\&.
+ .RE
+@@ -97,7 +96,6 @@ secrets\&.tdb
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ passdb\&.tdb
+ \- usual location is in the /usr/local/samba/private directory, or on some systems in /etc/samba\&.
+ .RE
+@@ -110,7 +108,6 @@ passdb\&.tdb
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ *\&.tdb
+ located in the /usr/local/samba/var directory or on some systems in the /var/cache or /var/lib/samba directories\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/tdbdump.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/tdbdump.8
++++ samba-3.6.23/docs/manpages/tdbdump.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: tdbdump
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "TDBDUMP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "TDBDUMP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/tdbtool.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/tdbtool.8
++++ samba-3.6.23/docs/manpages/tdbtool.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: tdbtool
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "TDBTOOL" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "TDBTOOL" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/testparm.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/testparm.1
++++ samba-3.6.23/docs/manpages/testparm.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: testparm
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "TESTPARM" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "TESTPARM" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -66,7 +66,7 @@ testparm
+ will prompt for a carriage return after printing the service names and before dumping the service definitions\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/vfs_acl_tdb.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_acl_tdb.8
++++ samba-3.6.23/docs/manpages/vfs_acl_tdb.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_acl_tdb
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_ACL_TDB" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_ACL_TDB" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_acl_xattr.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_acl_xattr.8
++++ samba-3.6.23/docs/manpages/vfs_acl_xattr.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_acl_xattr
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_ACL_XATTR" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_ACL_XATTR" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_aio_fork.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_aio_fork.8
++++ samba-3.6.23/docs/manpages/vfs_aio_fork.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_aio_fork
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_AIO_FORK" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_AIO_FORK" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_aio_pthread.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_aio_pthread.8
++++ samba-3.6.23/docs/manpages/vfs_aio_pthread.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_aio_pthread
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_AIO_PTHREAD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_AIO_PTHREAD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_audit.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_audit.8
++++ samba-3.6.23/docs/manpages/vfs_audit.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_audit
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_cacheprime.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_cacheprime.8
++++ samba-3.6.23/docs/manpages/vfs_cacheprime.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_cacheprime
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_CACHEPRIME" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_CACHEPRIME" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_cap.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_cap.8
++++ samba-3.6.23/docs/manpages/vfs_cap.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_cap
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_CAP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_CAP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_catia.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_catia.8
++++ samba-3.6.23/docs/manpages/vfs_catia.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_catia
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_CATIA" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_CATIA" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_commit.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_commit.8
++++ samba-3.6.23/docs/manpages/vfs_commit.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_commit
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_COMMIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_COMMIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_crossrename.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_crossrename.8
++++ samba-3.6.23/docs/manpages/vfs_crossrename.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_crossrename
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_CROSSRENAME" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_CROSSRENAME" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_default_quota.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_default_quota.8
++++ samba-3.6.23/docs/manpages/vfs_default_quota.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_default_quota
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_DEFAULT_QUOTA" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_DEFAULT_QUOTA" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_dirsort.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_dirsort.8
++++ samba-3.6.23/docs/manpages/vfs_dirsort.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_dirsort
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_DIRSORT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_DIRSORT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_extd_audit.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_extd_audit.8
++++ samba-3.6.23/docs/manpages/vfs_extd_audit.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_extd_audit
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_EXTD_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_EXTD_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_fake_perms.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_fake_perms.8
++++ samba-3.6.23/docs/manpages/vfs_fake_perms.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_fake_perms
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_FAKE_PERMS" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_FAKE_PERMS" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_fileid.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_fileid.8
++++ samba-3.6.23/docs/manpages/vfs_fileid.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_fileid
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_FILEID" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_FILEID" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_full_audit.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_full_audit.8
++++ samba-3.6.23/docs/manpages/vfs_full_audit.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_full_audit
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_FULL_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_FULL_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_gpfs.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_gpfs.8
++++ samba-3.6.23/docs/manpages/vfs_gpfs.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_gpfs
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_GPFS" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_GPFS" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -96,7 +96,6 @@ Enable/Disable cross node sharemode hand
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ yes(default)
+ \- propagate sharemodes across all GPFS nodes\&.
+ .RE
+@@ -109,7 +108,6 @@ yes(default)
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no
+ \- do not propagate sharemodes across all GPFS nodes\&. This should only be used if the GPFS file system is exclusively exported by Samba\&. Access by local unix application or NFS exports could lead to corrupted files\&.
+ .RE
+@@ -133,7 +131,6 @@ options to the same value\&.
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ yes(default)
+ \- propagate leases across all GPFS nodes\&.
+ .RE
+@@ -146,7 +143,6 @@ yes(default)
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no
+ \- do not propagate leases across all GPFS nodes\&. This should only be used if the GPFS file system is exclusively exported by Samba\&. Access by local unix application or NFS exports could lead to corrupted files\&.
+ .RE
+@@ -166,7 +162,6 @@ Enable/Disable announcing if this FS has
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no(default)
+ \- Do not announce HSM\&.
+ .RE
+@@ -179,7 +174,6 @@ no(default)
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no
+ \- Announce HSM\&.
+ .RE
+@@ -201,7 +195,6 @@ function\&. This improves the casesensit
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ yes(default)
+ \- use
+ gpfs_get_realfilename_path()\&.
+@@ -215,7 +208,6 @@ gpfs_get_realfilename_path()\&.
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no
+ \- do not use
+ gpfs_get_realfilename_path()\&. It seems that
+@@ -238,7 +230,6 @@ Enable/Disable usage of the windows attr
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no(default)
+ \- do not use GPFS windows attributes\&.
+ .RE
+@@ -251,7 +242,6 @@ no(default)
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ yes
+ \- use GPFS windows attributes\&.
+ .RE
+@@ -271,7 +261,6 @@ GPFS ACLs doesn\*(Aqt know about the \*(
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ yes(default)
+ \- map \*(AqAPPEND\*(Aq to \*(AqWRITE\*(Aq\&.
+ .RE
+@@ -284,7 +273,6 @@ yes(default)
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no
+ \- do not map \*(AqAPPEND\*(Aq to \*(AqWRITE\*(Aq\&.
+ .RE
+@@ -308,7 +296,6 @@ to enable an explicit check for this fla
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ no(default)
+ \- ignore the DESC_DACL_PROTECTED flags\&.
+ .RE
+@@ -321,7 +308,6 @@ no(default)
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ yes
+ \- reject ACLs with DESC_DACL_PROTECTED\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/vfs_netatalk.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_netatalk.8
++++ samba-3.6.23/docs/manpages/vfs_netatalk.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_netatalk
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_NETATALK" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_NETATALK" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_notify_fam.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_notify_fam.8
++++ samba-3.6.23/docs/manpages/vfs_notify_fam.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_notify_fam
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_NOTIFY_FAM" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_NOTIFY_FAM" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_prealloc.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_prealloc.8
++++ samba-3.6.23/docs/manpages/vfs_prealloc.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_prealloc
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_PREALLOC" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_PREALLOC" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_preopen.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_preopen.8
++++ samba-3.6.23/docs/manpages/vfs_preopen.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_preopen
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_PREOPEN" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_PREOPEN" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_readahead.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_readahead.8
++++ samba-3.6.23/docs/manpages/vfs_readahead.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_readahead
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_READAHEAD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_READAHEAD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_readonly.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_readonly.8
++++ samba-3.6.23/docs/manpages/vfs_readonly.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_readonly
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_READONLY" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_READONLY" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_recycle.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_recycle.8
++++ samba-3.6.23/docs/manpages/vfs_recycle.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_recycle
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_RECYCLE" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_RECYCLE" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_scannedonly.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_scannedonly.8
++++ samba-3.6.23/docs/manpages/vfs_scannedonly.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_scannedonly
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_SCANNEDONLY" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_SCANNEDONLY" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_shadow_copy2.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_shadow_copy2.8
++++ samba-3.6.23/docs/manpages/vfs_shadow_copy2.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_shadow_copy2
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_SHADOW_COPY2" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_SHADOW_COPY2" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_shadow_copy.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_shadow_copy.8
++++ samba-3.6.23/docs/manpages/vfs_shadow_copy.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_shadow_copy
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_SHADOW_COPY" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_SHADOW_COPY" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_smb_traffic_analyzer.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_smb_traffic_analyzer.8
++++ samba-3.6.23/docs/manpages/vfs_smb_traffic_analyzer.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smb_traffic_analyzer
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMB_TRAFFIC_ANALYZER" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "SMB_TRAFFIC_ANALYZER" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -185,7 +185,6 @@ Several drawbacks have been seen with pr
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ Problematic parsing \-
+ Protocol version 1 uses hyphen and comma to seperate blocks of data\&. Once there is a filename with a hyphen, you will run into problems because the receiver decodes the data in a wrong way\&.
+ .RE
+@@ -198,7 +197,6 @@ Protocol version 1 uses hyphen and comma
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ Insecure network transfer \-
+ Protocol version 1 sends all it\*(Aqs data as plaintext over the network\&.
+ .RE
+@@ -211,7 +209,6 @@ Protocol version 1 sends all it\*(Aqs da
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ Limited set of supported VFS operations \-
+ Protocol version 1 supports only four VFS operations\&.
+ .RE
+@@ -224,7 +221,6 @@ Protocol version 1 supports only four VF
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ No subreleases of the protocol \-
+ Protocol version 1 is fixed on it\*(Aqs version, making it unable to introduce new features or bugfixes through compatible sub\-releases\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/vfs_streams_depot.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_streams_depot.8
++++ samba-3.6.23/docs/manpages/vfs_streams_depot.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_streams_depot
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_STREAMS_DEPOT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_STREAMS_DEPOT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_streams_xattr.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_streams_xattr.8
++++ samba-3.6.23/docs/manpages/vfs_streams_xattr.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_streams_xattr
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_STREAMS_XATTR" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_STREAMS_XATTR" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfstest.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfstest.1
++++ samba-3.6.23/docs/manpages/vfstest.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfstest
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFSTEST" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "VFSTEST" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -47,7 +47,7 @@ is a small command line utility that has
+ Execute the specified (colon\-separated) commands\&. See below for the commands that are available\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/vfs_time_audit.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_time_audit.8
++++ samba-3.6.23/docs/manpages/vfs_time_audit.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_time_audit
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_TIME_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_TIME_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/vfs_xattr_tdb.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/vfs_xattr_tdb.8
++++ samba-3.6.23/docs/manpages/vfs_xattr_tdb.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: vfs_xattr_tdb
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "VFS_XATTR_TDB" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "VFS_XATTR_TDB" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+Index: samba-3.6.23/docs/manpages/wbinfo.1
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/wbinfo.1
++++ samba-3.6.23/docs/manpages/wbinfo.1
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: wbinfo
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: User Commands
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "WBINFO" "1" "09/18/2013" "Samba 3\&.6" "User Commands"
++.TH "WBINFO" "1" "04/11/2016" "Samba 3\&.6" "User Commands"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -206,8 +206,7 @@ The
+ option queries
+ \fBwinbindd\fR(8)
+ for the SID associated with the name specified\&. Domain names can be specified before the user name by using the winbind separator character\&. For example CWDOM1/Administrator refers to the Administrator user in the domain CWDOM1\&. If no domain is specified then the domain used is the one specified in the
+-\fBsmb.conf\fR(5)
+-\fIworkgroup \fR
++\fBsmb.conf\fR(5)\fIworkgroup \fR
+ parameter\&.
+ .RE
+ .PP
+@@ -360,7 +359,7 @@ then the operation will fail\&.
+ Prints the program version number\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/winbindd.8
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/winbindd.8
++++ samba-3.6.23/docs/manpages/winbindd.8
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: winbindd
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: System Administration tools
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "WINBINDD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools"
++.TH "WINBINDD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -207,7 +207,7 @@ Base directory name for log/debug files\
+ will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&.
+ .RE
+ .PP
+-\-h|\-\-help
++\-?|\-\-help
+ .RS 4
+ Print a summary of command line options\&.
+ .RE
+@@ -254,7 +254,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBwinbind separator\fR\m[]
+ .RE
+ .sp
+@@ -266,7 +265,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBidmap config * : range\fR\m[]
+ .RE
+ .sp
+@@ -278,7 +276,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBidmap config * : backend\fR\m[]
+ .RE
+ .sp
+@@ -290,7 +287,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBwinbind cache time\fR\m[]
+ .RE
+ .sp
+@@ -302,7 +298,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBwinbind enum users\fR\m[]
+ .RE
+ .sp
+@@ -314,7 +309,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBwinbind enum groups\fR\m[]
+ .RE
+ .sp
+@@ -326,7 +320,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBtemplate homedir\fR\m[]
+ .RE
+ .sp
+@@ -338,7 +331,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBtemplate shell\fR\m[]
+ .RE
+ .sp
+@@ -350,7 +342,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBwinbind use default domain\fR\m[]
+ .RE
+ .sp
+@@ -362,7 +353,6 @@ file\&. All parameters should be specifi
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \m[blue]\fBwinbind: rpc only\fR\m[]
+ Setting this parameter forces winbindd to use RPC instead of LDAP to retrieve information from Domain Controllers\&.
+ .RE
+Index: samba-3.6.23/docs/manpages/winbind_krb5_locator.7
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/winbind_krb5_locator.7
++++ samba-3.6.23/docs/manpages/winbind_krb5_locator.7
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: winbind_krb5_locator
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 04/11/2016
+ .\"    Manual: 7
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "WINBIND_KRB5_LOCATOR" "7" "09/18/2013" "Samba 3\&.6" "7"
++.TH "WINBIND_KRB5_LOCATOR" "7" "04/11/2016" "Samba 3\&.6" "7"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -35,7 +35,6 @@ This plugin is part of the
+ \fBsamba\fR(7)
+ suite\&.
+ .PP
+-
+ winbind_krb5_locator
+ is a plugin that permits MIT and Heimdal Kerberos libraries to detect Kerberos Servers (for the KDC and kpasswd service) using the same semantics that other tools of the Samba suite use\&. This include site\-aware DNS service record lookups and caching of closest dc\&. The plugin uses the public locator API provided by most modern Kerberos implementations\&.
+ .SH "PREREQUISITES"
diff --git a/src/patches/samba/samba-3.2.0pre1-grouppwd.patch b/src/patches/samba/samba-3.2.0pre1-grouppwd.patch
new file mode 100644 (file)
index 0000000..b19a020
--- /dev/null
@@ -0,0 +1,13 @@
+Index: samba-3.6.22/source3/winbindd/winbindd_group.c
+===================================================================
+--- samba-3.6.22.orig/source3/winbindd/winbindd_group.c
++++ samba-3.6.22/source3/winbindd/winbindd_group.c
+@@ -69,7 +69,7 @@ bool fill_grent(TALLOC_CTX *mem_ctx, str
+       /* Group name and password */
+       safe_strcpy(gr->gr_name, full_group_name, sizeof(gr->gr_name) - 1);
+-      safe_strcpy(gr->gr_passwd, "x", sizeof(gr->gr_passwd) - 1);
++      safe_strcpy(gr->gr_passwd, "*", sizeof(gr->gr_passwd) - 1);
+       return True;
+ }
diff --git a/src/patches/samba/samba-3.2.0pre1-pipedir.patch b/src/patches/samba/samba-3.2.0pre1-pipedir.patch
new file mode 100644 (file)
index 0000000..a138c70
--- /dev/null
@@ -0,0 +1,13 @@
+Index: samba-3.6.6/nsswitch/winbind_struct_protocol.h
+===================================================================
+--- samba-3.6.6.orig/nsswitch/winbind_struct_protocol.h
++++ samba-3.6.6/nsswitch/winbind_struct_protocol.h
+@@ -29,7 +29,7 @@ typedef char fstring[FSTRING_LEN];
+  * is needed for launchd support -- jpeach.
+  */
+ #ifndef WINBINDD_SOCKET_DIR
+-#define WINBINDD_SOCKET_DIR  "/tmp/.winbindd"  /* Name of PF_UNIX dir */
++#define WINBINDD_SOCKET_DIR  "/var/run/winbindd"  /* Name of PF_UNIX dir */
+ #endif
+ /*
diff --git a/src/patches/samba/samba-3.2.5-inotify.patch b/src/patches/samba/samba-3.2.5-inotify.patch
new file mode 100644 (file)
index 0000000..e215f5b
--- /dev/null
@@ -0,0 +1,49 @@
+Index: samba-3.6.6/source3/smbd/notify_inotify.c
+===================================================================
+--- samba-3.6.6.orig/source3/smbd/notify_inotify.c
++++ samba-3.6.6/source3/smbd/notify_inotify.c
+@@ -77,6 +77,7 @@ struct inotify_private {
+       struct sys_notify_context *ctx;
+       int fd;
+       struct inotify_watch_context *watches;
++      bool broken_inotify;    /* Late stop for broken system */
+ };
+ struct inotify_watch_context {
+@@ -241,8 +242,15 @@ static void inotify_handler(struct event
+         filenames, and thus can't know how much to allocate
+         otherwise
+       */
+-      if (ioctl(in->fd, FIONREAD, &bufsize) != 0 || 
+-          bufsize == 0) {
++      if ((ioctl(in->fd, FIONREAD, &bufsize) != 0) && (errno == EACCES)) {
++              /*
++               * Workaround for broken system (SELinux policy bug fixed since long but it is always better not to loop on EACCES)
++               */
++              TALLOC_FREE(fde);
++              in->broken_inotify = True;
++              return;
++      }
++      if (bufsize == 0) {
+               DEBUG(0,("No data on inotify fd?!\n"));
+               TALLOC_FREE(fde);
+               return;
+@@ -300,6 +308,7 @@ static NTSTATUS inotify_setup(struct sys
+       }
+       in->ctx = ctx;
+       in->watches = NULL;
++      in->broken_inotify = False;
+       ctx->private_data = in;
+       talloc_set_destructor(in, inotify_destructor);
+@@ -394,6 +403,10 @@ NTSTATUS inotify_watch(struct sys_notify
+       in = talloc_get_type(ctx->private_data, struct inotify_private);
++      if (in->broken_inotify) {
++              return NT_STATUS_OK;
++      }
++
+       mask = inotify_map(e);
+       if (mask == 0) {
+               /* this filter can't be handled by inotify */
diff --git a/src/patches/samba/samba-3.5.11-docs.patch b/src/patches/samba/samba-3.5.11-docs.patch
new file mode 100644 (file)
index 0000000..35db3dc
--- /dev/null
@@ -0,0 +1,70 @@
+From 337e286f110f594f02ea6780900e0a95ec6794c2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Fri, 5 Aug 2011 12:25:52 +0200
+Subject: [PATCH] s3-docs: document --user-sidinfo wbinfo option.
+
+Guenther
+---
+ docs-xml/manpages-3/wbinfo.1.xml |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+Index: samba-3.6.22/docs-xml/manpages-3/wbinfo.1.xml
+===================================================================
+--- samba-3.6.22.orig/docs-xml/manpages-3/wbinfo.1.xml
++++ samba-3.6.22/docs-xml/manpages-3/wbinfo.1.xml
+@@ -47,7 +47,7 @@
+               <arg choide="opt">--online-status</arg>
+               <arg choice="opt">--own-domain</arg>
+               <arg choice="opt">-p</arg>
+-              <arg choice="opt">-P|--ping-dc</arg>
++              <arg choice="opt">--ping-dc</arg>
+               <arg choice="opt">-r user</arg>
+               <arg choide="opt">-R|--lookup-rids</arg>
+               <arg choice="opt">-s sid</arg>
+@@ -61,6 +61,7 @@
+               <arg choice="opt">--uid-info uid</arg>
+               <arg choide="opt">--usage</arg>
+               <arg choice="opt">--user-domgroups sid</arg>
++              <arg choice="opt">--user-sidinfo sid</arg>
+               <arg choice="opt">--user-sids sid</arg>
+               <arg choice="opt">-U uid</arg>
+               <arg choice="opt">-V</arg>
+@@ -414,6 +415,13 @@
+               </varlistentry>
+               <varlistentry>
++              <term>--user-sidinfo <replaceable>sid</replaceable></term>
++              <listitem><para>Get user info by sid.
++              </para></listitem>
++              </varlistentry>
++
++
++              <varlistentry>
+               <term>--user-sids <replaceable>sid</replaceable></term>
+               <listitem><para>Get user group SIDs for user.
+               </para></listitem>
+Index: samba-3.6.22/docs/manpages/wbinfo.1
+===================================================================
+--- samba-3.6.22.orig/docs/manpages/wbinfo.1
++++ samba-3.6.22/docs/manpages/wbinfo.1
+@@ -31,7 +31,7 @@
+ wbinfo \- Query information from winbind daemon
+ .SH "SYNOPSIS"
+ .HP \w'\ 'u
+-wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info] [\-\-group\-info] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-P|\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid]
++wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info] [\-\-group\-info] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sidinfo\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid]
+ .SH "DESCRIPTION"
+ .PP
+ This tool is part of the
+@@ -328,6 +328,11 @@ Print brief help overview\&.
+ Get user domain groups\&.
+ .RE
+ .PP
++\-\-user\-sidinfo \fIsid\fR
++.RS 4
++Get user info by sid\&.
++.RE
++.PP
+ \-\-user\-sids \fIsid\fR
+ .RS 4
+ Get user group SIDs for user\&.
diff --git a/src/patches/samba/samba-3.5.11-idmapdebug.patch b/src/patches/samba/samba-3.5.11-idmapdebug.patch
new file mode 100644 (file)
index 0000000..44da0ff
--- /dev/null
@@ -0,0 +1,26 @@
+Index: samba-3.6.6/source3/winbindd/idmap.c
+===================================================================
+--- samba-3.6.6.orig/source3/winbindd/idmap.c
++++ samba-3.6.6/source3/winbindd/idmap.c
+@@ -129,7 +129,7 @@ NTSTATUS smb_register_idmap(int version,
+       for (entry = backends; entry != NULL; entry = entry->next) {
+               if (strequal(entry->name, name)) {
+-                      DEBUG(0,("Idmap module %s already registered!\n",
++                      DEBUG(5,("Idmap module %s already registered!\n",
+                                name));
+                       return NT_STATUS_OBJECT_NAME_COLLISION;
+               }
+Index: samba-3.6.6/source3/winbindd/nss_info.c
+===================================================================
+--- samba-3.6.6.orig/source3/winbindd/nss_info.c
++++ samba-3.6.6/source3/winbindd/nss_info.c
+@@ -66,7 +66,7 @@ static struct nss_function_entry *nss_ge
+       }
+       if ( nss_get_backend(name) ) {
+-              DEBUG(0,("smb_register_idmap_nss: idmap module %s "
++              DEBUG(5,("smb_register_idmap_nss: idmap module %s "
+                        "already registered!\n", name));
+               return NT_STATUS_OBJECT_NAME_COLLISION;
+       }
diff --git a/src/patches/samba/samba-3.5.11-nss_info_doc.patch b/src/patches/samba/samba-3.5.11-nss_info_doc.patch
new file mode 100644 (file)
index 0000000..50051a0
--- /dev/null
@@ -0,0 +1,75 @@
+From 47871b11df083ec6936599e1196a553379c044b3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Wed, 19 Oct 2011 00:19:58 +0200
+Subject: [PATCH 1/2] s3-docs: Document Services for Unix 2.0 (sfu20) nss_info
+ ldap schema support.
+
+Guenther
+---
+ docs-xml/manpages-3/idmap_ad.8.xml             |    4 +++-
+ docs-xml/smbdotconf/winbind/winbindnssinfo.xml |    5 +++--
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+Index: samba-3.6.22/docs-xml/manpages-3/idmap_ad.8.xml
+===================================================================
+--- samba-3.6.22.orig/docs-xml/manpages-3/idmap_ad.8.xml
++++ samba-3.6.22/docs-xml/manpages-3/idmap_ad.8.xml
+@@ -63,12 +63,17 @@
+               </para></listitem>
+               </varlistentry>
+               <varlistentry>
+-              <term>schema_mode = &lt;rfc2307 | sfu &gt;</term>
++              <term>schema_mode = &lt;rfc2307 | sfu | sfu20&gt;</term>
+               <listitem><para>
+                       Defines the schema that idmap_ad should use when querying
+                       Active Directory regarding user and group information.
+                       This can be either the RFC2307 schema support included
+                       in Windows 2003 R2 or the Service for Unix (SFU) schema.
++                      For SFU 3.0 or 3.5 please choose "sfu", for SFU 2.0
++                      please choose "sfu20".
++
++                      Please note that primary group membership is currently always calculated
++                      via the "primaryGroupID" LDAP attribute.
+               </para></listitem>
+               </varlistentry>
+       </variablelist>
+Index: samba-3.6.22/docs-xml/smbdotconf/winbind/winbindnssinfo.xml
+===================================================================
+--- samba-3.6.22.orig/docs-xml/smbdotconf/winbind/winbindnssinfo.xml
++++ samba-3.6.22/docs-xml/smbdotconf/winbind/winbindnssinfo.xml
+@@ -18,14 +18,16 @@
+               </listitem>
+               <listitem>
+-                      <para><parameter moreinfo="none">&lt;sfu | rfc2307 &gt;</parameter>
++                      <para><parameter moreinfo="none">&lt;sfu | sfu20 | rfc2307 &gt;</parameter>
+                       - When Samba is running in security = ads and your Active Directory
+                       Domain Controller does support the Microsoft "Services for Unix" (SFU)
+                       LDAP schema, winbind can retrieve the login shell and the home
+-                      directory attributes directly from your Directory Server. Note that
++                      directory attributes directly from your Directory Server. For SFU 3.0 or 3.5 simply choose
++                      "sfu", if you use SFU 2.0 please choose "sfu20". Note that
+                       retrieving UID and GID from your ADS-Server requires to
+                       use <parameter moreinfo="none">idmap config DOMAIN:backend</parameter> = ad
+-                      as well.
++                      as well. The primary group membership is currently
++                      always calculated via the "primaryGroupID" LDAP attribute.
+                       </para>
+               </listitem>
+       </itemizedlist>
+Index: samba-3.6.22/docs/manpages/idmap_ad.8
+===================================================================
+--- samba-3.6.22.orig/docs/manpages/idmap_ad.8
++++ samba-3.6.22/docs/manpages/idmap_ad.8
+@@ -48,9 +48,9 @@ range = low \- high
+ Defines the available matching UID and GID range for which the backend is authoritative\&. Note that the range acts as a filter\&. If specified any UID or GID stored in AD that fall outside the range is ignored and the corresponding map is discarded\&. It is intended as a way to avoid accidental UID/GID overlaps between local and remotely defined IDs\&.
+ .RE
+ .PP
+-schema_mode = <rfc2307 | sfu >
++schema_mode = <rfc2307 | sfu | sfu20>
+ .RS 4
+-Defines the schema that idmap_ad should use when querying Active Directory regarding user and group information\&. This can be either the RFC2307 schema support included in Windows 2003 R2 or the Service for Unix (SFU) schema\&.
++Defines the schema that idmap_ad should use when querying Active Directory regarding user and group information\&. This can be either the RFC2307 schema support included in Windows 2003 R2 or the Service for Unix (SFU) schema\&. For SFU 3\&.0 or 3\&.5 please choose "sfu", for SFU 2\&.0 please choose "sfu20"\&. Please note that primary group membership is currently always calculated via the "primaryGroupID" LDAP attribute\&.
+ .RE
+ .SH "EXAMPLES"
+ .PP
diff --git a/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch b/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch
new file mode 100644 (file)
index 0000000..6355533
--- /dev/null
@@ -0,0 +1,65 @@
+From 21027216d43c33fac220746c32acff6b355c4e7d Mon Sep 17 00:00:00 2001
+From: Christian Ambach <ambi@samba.org>
+Date: Fri, 30 Sep 2011 17:07:05 +0200
+Subject: [PATCH] s3-docs: some corrections for wbinfo
+
+Parameters for --group-info and --gid-info were not listed
+properly in the SYNOPSIS and the OPTIONS section
+
+Autobuild-User: Christian Ambach <ambi@samba.org>
+Autobuild-Date: Fri Sep 30 18:44:34 CEST 2011 on sn-devel-104
+---
+ docs-xml/manpages-3/wbinfo.1.xml |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+Index: samba-3.6.6/docs-xml/manpages-3/wbinfo.1.xml
+===================================================================
+--- samba-3.6.6.orig/docs-xml/manpages-3/wbinfo.1.xml
++++ samba-3.6.6/docs-xml/manpages-3/wbinfo.1.xml
+@@ -33,8 +33,8 @@
+               <arg choice="opt">--getdcname domain</arg>
+               <arg choice="opt">--get-auth-user</arg>
+               <arg choice="opt">-G gid</arg>
+-              <arg choide="opt">--gid-info</arg>
+-              <arg choide="opt">--group-info</arg>
++              <arg choide="opt">--gid-info gid</arg>
++              <arg choide="opt">--group-info group</arg>
+               <arg choice="opt">--help|-?</arg>
+               <arg choice="opt">-i user</arg>
+               <arg choice="opt">-I ip</arg>
+@@ -171,8 +171,8 @@
+               </varlistentry>
+               <varlistentry>
+-              <term>--group-info <replaceable>user</replaceable></term>
+-              <listitem><para>Get group info for user.
++              <term>--group-info <replaceable>group</replaceable></term>
++              <listitem><para>Get group info from group name.
+               </para></listitem>
+               </varlistentry>
+Index: samba-3.6.6/docs/manpages/wbinfo.1
+===================================================================
+--- samba-3.6.6.orig/docs/manpages/wbinfo.1
++++ samba-3.6.6/docs/manpages/wbinfo.1
+@@ -31,7 +31,7 @@
+ wbinfo \- Query information from winbind daemon
+ .SH "SYNOPSIS"
+ .HP \w'\ 'u
+-wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info] [\-\-group\-info] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sidinfo\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid]
++wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info\ gid] [\-\-group\-info\ group] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sidinfo\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid]
+ .SH "DESCRIPTION"
+ .PP
+ This tool is part of the
+@@ -130,9 +130,9 @@ Find a DC for a domain\&.
+ Get group info from gid\&.
+ .RE
+ .PP
+-\-\-group\-info \fIuser\fR
++\-\-group\-info \fIgroup\fR
+ .RS 4
+-Get group info for user\&.
++Get group info from group name\&.
+ .RE
+ .PP
+ \-g|\-\-domain\-groups
diff --git a/src/patches/samba/samba-3.5.12-dns.patch b/src/patches/samba/samba-3.5.12-dns.patch
new file mode 100644 (file)
index 0000000..d655a82
--- /dev/null
@@ -0,0 +1,27 @@
+From 1b0421a1a3d2b2e0168c0957864c16adf93e326d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Wed, 21 Dec 2011 15:47:35 +0100
+Subject: [PATCH] s3-dns: prevent from potentially doing wrong SRV DNS
+ lookups.
+
+With an empty sitename we asked for e.g.
+_ldap._tcp.._sites.dc._msdcs.AD.EXAMPLE.COM
+
+Guenther
+---
+ source3/libads/dns.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+Index: samba-3.6.6/source3/libads/dns.c
+===================================================================
+--- samba-3.6.6.orig/source3/libads/dns.c
++++ samba-3.6.6/source3/libads/dns.c
+@@ -741,7 +741,7 @@ static NTSTATUS ads_dns_query_internal(T
+                                      int *numdcs )
+ {
+       char *name;
+-      if (sitename) {
++      if (sitename && strlen(sitename)) {
+               name = talloc_asprintf(ctx, "%s._tcp.%s._sites.%s._msdcs.%s",
+                                      servicename, sitename,
+                                      dc_pdc_gc_domains, realm);
diff --git a/src/patches/samba/samba-3.5.12-pam_radio_type.patch b/src/patches/samba/samba-3.5.12-pam_radio_type.patch
new file mode 100644 (file)
index 0000000..624b73f
--- /dev/null
@@ -0,0 +1,31 @@
+From 516ba47988f00f83dd4ee53556e0be6463de88ec Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Thu, 5 Apr 2012 14:05:00 +0200
+Subject: [PATCH] nsswitch: disable HAVE_PAM_RADIO_TYPE handling until proper
+ PAM_RADIO_TYPE handling is available.
+
+ This is needed that gdm doesn't crash.
+
+Guenther
+---
+ nsswitch/pam_winbind.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/nsswitch/pam_winbind.c b/nsswitch/pam_winbind.c
+index b802036..0ed91d8 100644
+--- a/nsswitch/pam_winbind.c
++++ b/nsswitch/pam_winbind.c
+@@ -807,7 +807,9 @@ static int wbc_auth_error_to_pam_error(struct pwb_context *ctx,
+       return pam_winbind_request_log(ctx, ret, username, fn);
+ }
+-#if defined(HAVE_PAM_RADIO_TYPE)
++#if 0
++/* #if defined(HAVE_PAM_RADIO_TYPE) currently disabled until proper
++ * PAM_RADIO_TYPE is implemented - gd */
+ static bool _pam_winbind_change_pwd(struct pwb_context *ctx)
+ {
+       struct pam_message msg, *pmsg;
+-- 
+1.7.7.6
+
diff --git a/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch b/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch
new file mode 100644 (file)
index 0000000..dac2ede
--- /dev/null
@@ -0,0 +1,40 @@
+From 814b2c730b2f38767712a005bf328a4a04478f63 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Fri, 17 May 2013 15:14:35 +0200
+Subject: [PATCH 1/2] s3-libads: Fail
+ create_local_private_krb5_conf_for_domain() if parameters missing.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Stefan Metzmacher <metze@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+(cherry picked from commit 6dc7c63efa95d0c04b542667d9b6a6621c8139bf)
+---
+ source3/libads/kerberos.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+Index: samba-3.6.22/source3/libads/kerberos.c
+===================================================================
+--- samba-3.6.22.orig/source3/libads/kerberos.c
++++ samba-3.6.22/source3/libads/kerberos.c
+@@ -866,6 +866,16 @@ bool create_local_private_krb5_conf_for_
+               return false;
+       }
++      if (realm == NULL) {
++              DEBUG(0, ("No realm has been specified! Do you really want to "
++                        "join an Active Directory server?\n"));
++              return false;
++      }
++
++      if (domain == NULL || pss == NULL || kdc_name == NULL) {
++              return false;
++      }
++
+       dname = lock_path("smb_krb5");
+       if (!dname) {
+               return false;
diff --git a/src/patches/samba/samba-3.6.19-valid_users_doc.patch b/src/patches/samba/samba-3.6.19-valid_users_doc.patch
new file mode 100644 (file)
index 0000000..602783b
--- /dev/null
@@ -0,0 +1,53 @@
+From 3c7822bac97ce4646f1b2c8419d1dae773c02c1d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Tue, 17 Sep 2013 12:47:58 +0200
+Subject: [PATCH] docs: point out side-effects of global "valid users" setting.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+---
+ docs-xml/smbdotconf/security/validusers.xml | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+Index: samba-3.6.22/docs-xml/smbdotconf/security/validusers.xml
+===================================================================
+--- samba-3.6.22.orig/docs-xml/smbdotconf/security/validusers.xml
++++ samba-3.6.22/docs-xml/smbdotconf/security/validusers.xml
+@@ -19,6 +19,16 @@
+     The current servicename is substituted for <parameter moreinfo="none">%S</parameter>. 
+     This is useful in the [homes] section.
+     </para>
++
++    <para><emphasis>Note: </emphasis>When used in the [global] section this
++    parameter may have unwanted side effects. For example: If samba is configured as a MASTER BROWSER (see
++    <parameter moreinfo="none">local master</parameter>,
++    <parameter moreinfo="none">os level</parameter>,
++    <parameter moreinfo="none">domain master</parameter>,
++    <parameter moreinfo="none">preferred master</parameter>) this option
++    will prevent workstations from being able to browse the network.
++    </para>
++
+ </description>
+ <related>invalid users</related>
+Index: samba-3.6.22/docs/manpages/smb.conf.5
+===================================================================
+--- samba-3.6.22.orig/docs/manpages/smb.conf.5
++++ samba-3.6.22/docs/manpages/smb.conf.5
+@@ -10311,6 +10311,12 @@ list then access is denied for that user
+ The current servicename is substituted for
+ \fI%S\fR\&. This is useful in the [homes] section\&.
+ .sp
++\fINote: \fRWhen used in the [global] section this parameter may have unwanted side effects\&. For example: If samba is configured as a MASTER BROWSER (see
++\fIlocal master\fR,
++\fIos level\fR,
++\fIdomain master\fR,
++\fIpreferred master\fR) this option will prevent workstations from being able to browse the network\&.
++.sp
+ Default:
+ \fI\fIvalid users\fR\fR\fI = \fR\fI # No valid users list (anyone can login) \fR\fI \fR
+ .sp
diff --git a/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch b/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch
new file mode 100644 (file)
index 0000000..9b6d221
--- /dev/null
@@ -0,0 +1,788 @@
+From 918ac8f0ed19aeaa4718fa94fcabe87d0419d768 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Mon, 13 Jan 2014 15:59:26 +0100
+Subject: [PATCH 1/5] PATCHSET11: s3-kerberos: remove print_kdc_line()
+ completely.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Just calling print_canonical_sockaddr() is sufficient, as it already deals with
+ipv6 as well. The port handling, which was only done for IPv6 (not IPv4), is
+removed as well. It was pointless because it always derived the port number from
+the provided address which was either a SMB (usually port 445) or LDAP
+connection. No KDC will ever run on port 389 or 445 on a Windows/Samba DC.
+Finally, the kerberos libraries that we support and build with, can deal with
+ipv6 addresses in krb5.conf, so we no longer put the (unnecessary) burden of
+resolving the DC name on the kerberos library anymore.
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+
+Conflicts:
+       source3/libads/kerberos.c
+---
+ source3/libads/kerberos.c | 86 +++++------------------------------------------
+ 1 file changed, 9 insertions(+), 77 deletions(-)
+
+diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
+index 1153ccb..064e5f7 100644
+--- a/source3/libads/kerberos.c
++++ b/source3/libads/kerberos.c
+@@ -661,73 +661,6 @@ int kerberos_kinit_password(const char *principal,
+ }
+ /************************************************************************
+-************************************************************************/
+-
+-static char *print_kdc_line(char *mem_ctx,
+-                      const char *prev_line,
+-                      const struct sockaddr_storage *pss,
+-                      const char *kdc_name)
+-{
+-      char *kdc_str = NULL;
+-
+-      if (pss->ss_family == AF_INET) {
+-              kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
+-                                      prev_line,
+-                                        print_canonical_sockaddr(mem_ctx, pss));
+-      } else {
+-              char addr[INET6_ADDRSTRLEN];
+-              uint16_t port = get_sockaddr_port(pss);
+-
+-              DEBUG(10,("print_kdc_line: IPv6 case for kdc_name: %s, port: %d\n",
+-                      kdc_name, port));
+-
+-              if (port != 0 && port != DEFAULT_KRB5_PORT) {
+-                      /* Currently for IPv6 we can't specify a non-default
+-                         krb5 port with an address, as this requires a ':'.
+-                         Resolve to a name. */
+-                      char hostname[MAX_DNS_NAME_LENGTH];
+-                      int ret = sys_getnameinfo((const struct sockaddr *)pss,
+-                                      sizeof(*pss),
+-                                      hostname, sizeof(hostname),
+-                                      NULL, 0,
+-                                      NI_NAMEREQD);
+-                      if (ret) {
+-                              DEBUG(0,("print_kdc_line: can't resolve name "
+-                                      "for kdc with non-default port %s. "
+-                                      "Error %s\n.",
+-                                      print_canonical_sockaddr(mem_ctx, pss),
+-                                      gai_strerror(ret)));
+-                              return NULL;
+-                      }
+-                      /* Success, use host:port */
+-                      kdc_str = talloc_asprintf(mem_ctx,
+-                                      "%s\tkdc = %s:%u\n",
+-                                      prev_line,
+-                                      hostname,
+-                                      (unsigned int)port);
+-              } else {
+-
+-                      /* no krb5 lib currently supports "kdc = ipv6 address"
+-                       * at all, so just fill in just the kdc_name if we have
+-                       * it and let the krb5 lib figure out the appropriate
+-                       * ipv6 address - gd */
+-
+-                      if (kdc_name) {
+-                              kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
+-                                              prev_line, kdc_name);
+-                      } else {
+-                              kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
+-                                              prev_line,
+-                                              print_sockaddr(addr,
+-                                                      sizeof(addr),
+-                                                      pss));
+-                      }
+-              }
+-      }
+-      return kdc_str;
+-}
+-
+-/************************************************************************
+  Create a string list of available kdc's, possibly searching by sitename.
+  Does DNS queries.
+@@ -746,7 +679,8 @@ static char *get_kdc_ip_string(char *mem_ctx,
+       struct ip_service *ip_srv_nonsite = NULL;
+       int count_site = 0;
+       int count_nonsite;
+-      char *kdc_str = print_kdc_line(mem_ctx, "", pss, kdc_name);
++      char *kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", "",
++                                      print_canonical_sockaddr(mem_ctx, pss));
+       if (kdc_str == NULL) {
+               return NULL;
+@@ -768,10 +702,9 @@ static char *get_kdc_ip_string(char *mem_ctx,
+                       }
+                       /* Append to the string - inefficient
+                        * but not done often. */
+-                      kdc_str = print_kdc_line(mem_ctx,
+-                                              kdc_str,
+-                                              &ip_srv_site[i].ss,
+-                                              NULL);
++                      kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
++                                                kdc_str,
++                                                print_canonical_sockaddr(mem_ctx, &ip_srv_site[i].ss));
+                       if (!kdc_str) {
+                               SAFE_FREE(ip_srv_site);
+                               return NULL;
+@@ -806,11 +739,10 @@ static char *get_kdc_ip_string(char *mem_ctx,
+               }
+               /* Append to the string - inefficient but not done often. */
+-              kdc_str = print_kdc_line(mem_ctx,
+-                              kdc_str,
+-                              &ip_srv_nonsite[i].ss,
+-                              NULL);
+-              if (!kdc_str) {
++              kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
++                                        kdc_str,
++                                        print_canonical_sockaddr(mem_ctx, &ip_srv_nonsite[i].ss));
++              if (kdc_str == NULL) {
+                       SAFE_FREE(ip_srv_site);
+                       SAFE_FREE(ip_srv_nonsite);
+                       return NULL;
+-- 
+1.9.0
+
+
+From b4eba7d838b60230b9f6c9a08ef0ddc00e3e47f0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Fri, 7 Mar 2014 14:47:31 +0100
+Subject: [PATCH 2/5] PATCHSET11: s3-kerberos: remove unused kdc_name from
+ create_local_private_krb5_conf_for_domain().
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+
+Autobuild-User(master): Günther Deschner <gd@samba.org>
+Autobuild-Date(master): Fri Mar  7 18:43:57 CET 2014 on sn-devel-104
+
+Conflicts:
+       source3/libads/kerberos.c
+       source3/libads/kerberos_proto.h
+       source3/libnet/libnet_join.c
+       source3/winbindd/winbindd_cm.c
+---
+ source3/libads/kerberos.c       | 10 ++++------
+ source3/libads/kerberos_proto.h |  3 +--
+ source3/libnet/libnet_join.c    |  2 +-
+ source3/libsmb/namequery_dc.c   |  6 ++----
+ source3/winbindd/winbindd_cm.c  |  6 ++----
+ 5 files changed, 10 insertions(+), 17 deletions(-)
+
+diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
+index 064e5f7..b826cb3 100644
+--- a/source3/libads/kerberos.c
++++ b/source3/libads/kerberos.c
+@@ -671,8 +671,7 @@ int kerberos_kinit_password(const char *principal,
+ static char *get_kdc_ip_string(char *mem_ctx,
+               const char *realm,
+               const char *sitename,
+-              struct sockaddr_storage *pss,
+-              const char *kdc_name)
++              struct sockaddr_storage *pss)
+ {
+       int i;
+       struct ip_service *ip_srv_site = NULL;
+@@ -769,8 +768,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
+ bool create_local_private_krb5_conf_for_domain(const char *realm,
+                                               const char *domain,
+                                               const char *sitename,
+-                                              struct sockaddr_storage *pss,
+-                                              const char *kdc_name)
++                                              struct sockaddr_storage *pss)
+ {
+       char *dname;
+       char *tmpname = NULL;
+@@ -794,7 +792,7 @@ bool create_local_private_krb5_conf_for_domain(const char *realm,
+               return false;
+       }
+-      if (domain == NULL || pss == NULL || kdc_name == NULL) {
++      if (domain == NULL || pss == NULL) {
+               return false;
+       }
+@@ -825,7 +823,7 @@ bool create_local_private_krb5_conf_for_domain(const char *realm,
+       realm_upper = talloc_strdup(fname, realm);
+       strupper_m(realm_upper);
+-      kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss, kdc_name);
++      kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss);
+       if (!kdc_ip_string) {
+               goto done;
+       }
+diff --git a/source3/libads/kerberos_proto.h b/source3/libads/kerberos_proto.h
+index 406669cc..90d7cd9 100644
+--- a/source3/libads/kerberos_proto.h
++++ b/source3/libads/kerberos_proto.h
+@@ -75,8 +75,7 @@ int kerberos_kinit_password(const char *principal,
+ bool create_local_private_krb5_conf_for_domain(const char *realm,
+                                               const char *domain,
+                                               const char *sitename,
+-                                              struct sockaddr_storage *pss,
+-                                              const char *kdc_name);
++                                              struct sockaddr_storage *pss);
+ /* The following definitions come from libads/authdata.c  */
+diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
+index e84682d..f1736ec 100644
+--- a/source3/libnet/libnet_join.c
++++ b/source3/libnet/libnet_join.c
+@@ -1985,7 +1985,7 @@ static WERROR libnet_DomainJoin(TALLOC_CTX *mem_ctx,
+       create_local_private_krb5_conf_for_domain(
+               r->out.dns_domain_name, r->out.netbios_domain_name,
+-              NULL, &cli->dest_ss, cli->desthost);
++              NULL, &cli->dest_ss);
+       if (r->out.domain_is_ad && r->in.account_ou &&
+           !(r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_UNSECURE)) {
+diff --git a/source3/libsmb/namequery_dc.c b/source3/libsmb/namequery_dc.c
+index 39b780c..149121a 100644
+--- a/source3/libsmb/namequery_dc.c
++++ b/source3/libsmb/namequery_dc.c
+@@ -111,14 +111,12 @@ static bool ads_dc_name(const char *domain,
+                               create_local_private_krb5_conf_for_domain(realm,
+                                                                       domain,
+                                                                       sitename,
+-                                                                      &ads->ldap.ss,
+-                                                                      ads->config.ldap_server_name);
++                                                                      &ads->ldap.ss);
+                       } else {
+                               create_local_private_krb5_conf_for_domain(realm,
+                                                                       domain,
+                                                                       NULL,
+-                                                                      &ads->ldap.ss,
+-                                                                      ads->config.ldap_server_name);
++                                                                      &ads->ldap.ss);
+                       }
+               }
+ #endif
+diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
+index 8271279..59f30a5 100644
+--- a/source3/winbindd/winbindd_cm.c
++++ b/source3/winbindd/winbindd_cm.c
+@@ -1226,8 +1226,7 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx,
+                                       create_local_private_krb5_conf_for_domain(domain->alt_name,
+                                                                       domain->name,
+                                                                       sitename,
+-                                                                      pss,
+-                                                                      name);
++                                                                      pss);
+                                       SAFE_FREE(sitename);
+                               } else {
+@@ -1235,8 +1234,7 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx,
+                                       create_local_private_krb5_conf_for_domain(domain->alt_name,
+                                                                       domain->name,
+                                                                       NULL,
+-                                                                      pss,
+-                                                                      name);
++                                                                      pss);
+                               }
+                               winbindd_set_locator_kdc_envs(domain);
+-- 
+1.9.0
+
+
+From db840b57e81922cea984530e2dc1b42cc99e75de Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Wed, 2 Apr 2014 19:37:34 +0200
+Subject: [PATCH 3/5] PATCHSET11: s3-kerberos: make ipv6 support for generated
+ krb5 config files more robust.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Older MIT Kerberos libraries will add any secondary ipv6 address as
+ipv4 address, defining the (default) krb5 port 88 circumvents that.
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+
+Autobuild-User(master): Günther Deschner <gd@samba.org>
+Autobuild-Date(master): Fri Apr  4 16:33:12 CEST 2014 on sn-devel-104
+
+Conflicts:
+       source3/libads/kerberos.c
+---
+ source3/libads/kerberos.c | 29 +++++++++++++++++++++++++++--
+ 1 file changed, 27 insertions(+), 2 deletions(-)
+
+diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
+index b826cb3..5e34aa3 100644
+--- a/source3/libads/kerberos.c
++++ b/source3/libads/kerberos.c
+@@ -668,6 +668,31 @@ int kerberos_kinit_password(const char *principal,
+ ************************************************************************/
++/* print_canonical_sockaddr prints an ipv6 addr in the form of
++* [ipv6.addr]. This string, when put in a generated krb5.conf file is not
++* always properly dealt with by some older krb5 libraries. Adding the hard-coded
++* portnumber workarounds the issue. - gd */
++
++static char *print_canonical_sockaddr_with_port(TALLOC_CTX *mem_ctx,
++                                              const struct sockaddr_storage *pss)
++{
++      char *str = NULL;
++
++      str = print_canonical_sockaddr(mem_ctx, pss);
++      if (str == NULL) {
++              return NULL;
++      }
++
++      if (pss->ss_family != AF_INET6) {
++              return str;
++      }
++
++#if defined(HAVE_IPV6)
++      str = talloc_asprintf_append(str, ":88");
++#endif
++      return str;
++}
++
+ static char *get_kdc_ip_string(char *mem_ctx,
+               const char *realm,
+               const char *sitename,
+@@ -679,7 +704,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
+       int count_site = 0;
+       int count_nonsite;
+       char *kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", "",
+-                                      print_canonical_sockaddr(mem_ctx, pss));
++                                      print_canonical_sockaddr_with_port(mem_ctx, pss));
+       if (kdc_str == NULL) {
+               return NULL;
+@@ -740,7 +765,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
+               /* Append to the string - inefficient but not done often. */
+               kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
+                                         kdc_str,
+-                                        print_canonical_sockaddr(mem_ctx, &ip_srv_nonsite[i].ss));
++                                        print_canonical_sockaddr_with_port(mem_ctx, &ip_srv_nonsite[i].ss));
+               if (kdc_str == NULL) {
+                       SAFE_FREE(ip_srv_site);
+                       SAFE_FREE(ip_srv_nonsite);
+-- 
+1.9.0
+
+
+From 208f1d7b5ae557bf34a39c847aeb1925ce4cb171 Mon Sep 17 00:00:00 2001
+From: Andrew Bartlett <abartlet@samba.org>
+Date: Tue, 26 Apr 2011 17:03:32 +1000
+Subject: [PATCH 4/5] PATCHSET11: s3-libads Pass a struct sockaddr_storage to
+ cldap routines
+
+This avoids these routines doing a DNS lookup that has already been
+done, and ensures that the emulated DNS lookup isn't thrown away.
+
+Andrew Bartlett
+---
+ source3/libads/cldap.c                | 14 ++++--------
+ source3/libads/cldap.h                |  4 ++--
+ source3/libads/ldap.c                 | 41 ++++++++++-------------------------
+ source3/libsmb/dsgetdcname.c          |  3 ++-
+ source3/utils/net_ads.c               |  7 +++---
+ source3/winbindd/idmap_adex/gc_util.c | 12 +++++++++-
+ 6 files changed, 33 insertions(+), 48 deletions(-)
+
+diff --git a/source3/libads/cldap.c b/source3/libads/cldap.c
+index 5d2e900..03fa17c 100644
+--- a/source3/libads/cldap.c
++++ b/source3/libads/cldap.c
+@@ -30,7 +30,7 @@
+ *******************************************************************/
+ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
+-                      const char *server,
++                      struct sockaddr_storage *ss,
+                       const char *realm,
+                       uint32_t nt_version,
+                       struct netlogon_samlogon_response **_reply)
+@@ -39,18 +39,12 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
+       struct cldap_netlogon io;
+       struct netlogon_samlogon_response *reply;
+       NTSTATUS status;
+-      struct sockaddr_storage ss;
+       char addrstr[INET6_ADDRSTRLEN];
+       const char *dest_str;
+       int ret;
+       struct tsocket_address *dest_addr;
+-      if (!interpret_string_addr_prefer_ipv4(&ss, server, 0)) {
+-              DEBUG(2,("Failed to resolve[%s] into an address for cldap\n",
+-                      server));
+-              return false;
+-      }
+-      dest_str = print_sockaddr(addrstr, sizeof(addrstr), &ss);
++      dest_str = print_sockaddr(addrstr, sizeof(addrstr), ss);
+       ret = tsocket_address_inet_from_strings(mem_ctx, "ip",
+                                               dest_str, LDAP_PORT,
+@@ -113,7 +107,7 @@ failed:
+ *******************************************************************/
+ bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx,
+-                        const char *server,
++                        struct sockaddr_storage *ss,
+                         const char *realm,
+                         struct NETLOGON_SAM_LOGON_RESPONSE_EX *reply5)
+ {
+@@ -121,7 +115,7 @@ bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx,
+       struct netlogon_samlogon_response *reply = NULL;
+       bool ret;
+-      ret = ads_cldap_netlogon(mem_ctx, server, realm, nt_version, &reply);
++      ret = ads_cldap_netlogon(mem_ctx, ss, realm, nt_version, &reply);
+       if (!ret) {
+               return false;
+       }
+diff --git a/source3/libads/cldap.h b/source3/libads/cldap.h
+index d2ad4b0..60e1c56 100644
+--- a/source3/libads/cldap.h
++++ b/source3/libads/cldap.h
+@@ -27,12 +27,12 @@
+ /* The following definitions come from libads/cldap.c  */
+ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
+-                      const char *server,
++                      struct sockaddr_storage *ss,
+                       const char *realm,
+                       uint32_t nt_version,
+                       struct netlogon_samlogon_response **reply);
+ bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx,
+-                        const char *server,
++                        struct sockaddr_storage *ss,
+                         const char *realm,
+                         struct NETLOGON_SAM_LOGON_RESPONSE_EX *reply5);
+diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
+index b841c84..0db0bcd 100644
+--- a/source3/libads/ldap.c
++++ b/source3/libads/ldap.c
+@@ -196,45 +196,32 @@ bool ads_closest_dc(ADS_STRUCT *ads)
+  */
+ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc)
+ {
+-      char *srv;
+       struct NETLOGON_SAM_LOGON_RESPONSE_EX cldap_reply;
+       TALLOC_CTX *frame = talloc_stackframe();
+       bool ret = false;
++      struct sockaddr_storage ss;
++      char addr[INET6_ADDRSTRLEN];
+       if (!server || !*server) {
+               TALLOC_FREE(frame);
+               return False;
+       }
+-      if (!is_ipaddress(server)) {
+-              struct sockaddr_storage ss;
+-              char addr[INET6_ADDRSTRLEN];
+-
+-              if (!resolve_name(server, &ss, 0x20, true)) {
+-                      DEBUG(5,("ads_try_connect: unable to resolve name %s\n",
+-                              server ));
+-                      TALLOC_FREE(frame);
+-                      return false;
+-              }
+-              print_sockaddr(addr, sizeof(addr), &ss);
+-              srv = talloc_strdup(frame, addr);
+-      } else {
+-              /* this copes with inet_ntoa brokenness */
+-              srv = talloc_strdup(frame, server);
+-      }
+-
+-      if (!srv) {
++      if (!resolve_name(server, &ss, 0x20, true)) {
++              DEBUG(5,("ads_try_connect: unable to resolve name %s\n",
++                       server ));
+               TALLOC_FREE(frame);
+               return false;
+       }
++      print_sockaddr(addr, sizeof(addr), &ss);
+       DEBUG(5,("ads_try_connect: sending CLDAP request to %s (realm: %s)\n", 
+-              srv, ads->server.realm));
++              addr, ads->server.realm));
+       ZERO_STRUCT( cldap_reply );
+-      if ( !ads_cldap_netlogon_5(frame, srv, ads->server.realm, &cldap_reply ) ) {
+-              DEBUG(3,("ads_try_connect: CLDAP request %s failed.\n", srv));
++      if ( !ads_cldap_netlogon_5(frame, &ss, ads->server.realm, &cldap_reply ) ) {
++              DEBUG(3,("ads_try_connect: CLDAP request %s failed.\n", addr));
+               ret = false;
+               goto out;
+       }
+@@ -243,7 +230,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc)
+       if ( !(cldap_reply.server_type & NBT_SERVER_LDAP) ) {
+               DEBUG(1,("ads_try_connect: %s's CLDAP reply says it is not an LDAP server!\n",
+-                      srv));
++                      addr));
+               ret = false;
+               goto out;
+       }
+@@ -273,13 +260,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc)
+       ads->server.workgroup          = SMB_STRDUP(cldap_reply.domain_name);
+       ads->ldap.port = gc ? LDAP_GC_PORT : LDAP_PORT;
+-      if (!interpret_string_addr(&ads->ldap.ss, srv, 0)) {
+-              DEBUG(1,("ads_try_connect: unable to convert %s "
+-                      "to an address\n",
+-                      srv));
+-              ret = false;
+-              goto out;
+-      }
++      ads->ldap.ss = ss;
+       /* Store our site name. */
+       sitename_store( cldap_reply.domain_name, cldap_reply.client_site);
+diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
+index 841a179..2f8b8dc 100644
+--- a/source3/libsmb/dsgetdcname.c
++++ b/source3/libsmb/dsgetdcname.c
+@@ -863,9 +863,10 @@ static NTSTATUS process_dc_dns(TALLOC_CTX *mem_ctx,
+       for (i=0; i<num_dcs; i++) {
++
+               DEBUG(10,("LDAP ping to %s\n", dclist[i].hostname));
+-              if (ads_cldap_netlogon(mem_ctx, dclist[i].hostname,
++              if (ads_cldap_netlogon(mem_ctx, &dclist[i].ss,
+                                       domain_name,
+                                       nt_version,
+                                       &r))
+diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
+index 8f8b7b4..816349d 100644
+--- a/source3/utils/net_ads.c
++++ b/source3/utils/net_ads.c
+@@ -62,7 +62,8 @@ static int net_ads_cldap_netlogon(struct net_context *c, ADS_STRUCT *ads)
+       struct NETLOGON_SAM_LOGON_RESPONSE_EX reply;
+       print_sockaddr(addr, sizeof(addr), &ads->ldap.ss);
+-      if ( !ads_cldap_netlogon_5(talloc_tos(), addr, ads->server.realm, &reply ) ) {
++
++      if ( !ads_cldap_netlogon_5(talloc_tos(), &ads->ldap.ss, ads->server.realm, &reply ) ) {
+               d_fprintf(stderr, _("CLDAP query failed!\n"));
+               return -1;
+       }
+@@ -385,7 +386,6 @@ int net_ads_check(struct net_context *c)
+ static int net_ads_workgroup(struct net_context *c, int argc, const char **argv)
+ {
+       ADS_STRUCT *ads;
+-      char addr[INET6_ADDRSTRLEN];
+       struct NETLOGON_SAM_LOGON_RESPONSE_EX reply;
+       if (c->display_usage) {
+@@ -407,8 +407,7 @@ static int net_ads_workgroup(struct net_context *c, int argc, const char **argv)
+               ads->ldap.port = 389;
+       }
+-      print_sockaddr(addr, sizeof(addr), &ads->ldap.ss);
+-      if ( !ads_cldap_netlogon_5(talloc_tos(), addr, ads->server.realm, &reply ) ) {
++      if ( !ads_cldap_netlogon_5(talloc_tos(), &ads->ldap.ss, ads->server.realm, &reply ) ) {
+               d_fprintf(stderr, _("CLDAP query failed!\n"));
+               ads_destroy(&ads);
+               return -1;
+diff --git a/source3/winbindd/idmap_adex/gc_util.c b/source3/winbindd/idmap_adex/gc_util.c
+index 77b318c..e625265 100644
+--- a/source3/winbindd/idmap_adex/gc_util.c
++++ b/source3/winbindd/idmap_adex/gc_util.c
+@@ -107,6 +107,7 @@ done:
+       NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
+       struct NETLOGON_SAM_LOGON_RESPONSE_EX cldap_reply;
+       TALLOC_CTX *frame = talloc_stackframe();
++      struct sockaddr_storage ss;
+       if (!gc || !domain) {
+               return NT_STATUS_INVALID_PARAMETER;
+@@ -126,8 +127,17 @@ done:
+       nt_status = ads_ntstatus(ads_status);
+       BAIL_ON_NTSTATUS_ERROR(nt_status);
++      if (!resolve_name(ads->config.ldap_server_name, &ss, 0x20, true)) {
++              DEBUG(5,("gc_find_forest_root: unable to resolve name %s\n",
++                       ads->config.ldap_server_name));
++              nt_status = NT_STATUS_IO_TIMEOUT;
++              /* This matches the old code which did the resolve in
++               * ads_cldap_netlogon_5 */
++              BAIL_ON_NTSTATUS_ERROR(nt_status);
++      }
++
+       if (!ads_cldap_netlogon_5(frame,
+-                                ads->config.ldap_server_name,
++                                &ss,
+                                 ads->config.realm,
+                                 &cldap_reply))
+       {
+-- 
+1.9.0
+
+
+From 4eb02e7caa83b725988dd9f659b3568873522a30 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Wed, 16 Apr 2014 16:07:14 +0200
+Subject: [PATCH 5/5] PATCHSET11: s3-libads: allow ads_try_connect() to re-use
+ a resolved ip address.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Pass down a struct sockaddr_storage to ads_try_connect.
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+
+Autobuild-User(master): Günther Deschner <gd@samba.org>
+Autobuild-Date(master): Thu Apr 17 19:56:16 CEST 2014 on sn-devel-104
+---
+ source3/libads/ldap.c | 44 ++++++++++++++++++++++++++------------------
+ 1 file changed, 26 insertions(+), 18 deletions(-)
+
+diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
+index 0db0bcd..f8349cf 100644
+--- a/source3/libads/ldap.c
++++ b/source3/libads/ldap.c
+@@ -194,33 +194,27 @@ bool ads_closest_dc(ADS_STRUCT *ads)
+   try a connection to a given ldap server, returning True and setting the servers IP
+   in the ads struct if successful
+  */
+-static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc)
++static bool ads_try_connect(ADS_STRUCT *ads, bool gc,
++                          struct sockaddr_storage *ss)
+ {
+       struct NETLOGON_SAM_LOGON_RESPONSE_EX cldap_reply;
+       TALLOC_CTX *frame = talloc_stackframe();
+       bool ret = false;
+-      struct sockaddr_storage ss;
+       char addr[INET6_ADDRSTRLEN];
+-      if (!server || !*server) {
++      if (ss == NULL) {
+               TALLOC_FREE(frame);
+               return False;
+       }
+-      if (!resolve_name(server, &ss, 0x20, true)) {
+-              DEBUG(5,("ads_try_connect: unable to resolve name %s\n",
+-                       server ));
+-              TALLOC_FREE(frame);
+-              return false;
+-      }
+-      print_sockaddr(addr, sizeof(addr), &ss);
++      print_sockaddr(addr, sizeof(addr), ss);
+       DEBUG(5,("ads_try_connect: sending CLDAP request to %s (realm: %s)\n", 
+               addr, ads->server.realm));
+       ZERO_STRUCT( cldap_reply );
+-      if ( !ads_cldap_netlogon_5(frame, &ss, ads->server.realm, &cldap_reply ) ) {
++      if ( !ads_cldap_netlogon_5(frame, ss, ads->server.realm, &cldap_reply ) ) {
+               DEBUG(3,("ads_try_connect: CLDAP request %s failed.\n", addr));
+               ret = false;
+               goto out;
+@@ -260,7 +254,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc)
+       ads->server.workgroup          = SMB_STRDUP(cldap_reply.domain_name);
+       ads->ldap.port = gc ? LDAP_GC_PORT : LDAP_PORT;
+-      ads->ldap.ss = ss;
++      ads->ldap.ss = *ss;
+       /* Store our site name. */
+       sitename_store( cldap_reply.domain_name, cldap_reply.client_site);
+@@ -292,6 +286,7 @@ static NTSTATUS ads_find_dc(ADS_STRUCT *ads)
+       bool use_own_domain = False;
+       char *sitename;
+       NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
++      bool ok = false;
+       /* if the realm and workgroup are both empty, assume they are ours */
+@@ -345,12 +340,14 @@ static NTSTATUS ads_find_dc(ADS_STRUCT *ads)
+               DEBUG(6,("ads_find_dc: (ldap) looking for %s '%s'\n",
+                       (got_realm ? "realm" : "domain"), realm));
+-              if (get_dc_name(domain, realm, srv_name, &ip_out)) {
++              ok = get_dc_name(domain, realm, srv_name, &ip_out);
++              if (ok) {
+                       /*
+                        * we call ads_try_connect() to fill in the
+                        * ads->config details
+                        */
+-                      if (ads_try_connect(ads, srv_name, false)) {
++                      ok = ads_try_connect(ads, false, &ip_out);
++                      if (ok) {
+                               return NT_STATUS_OK;
+                       }
+               }
+@@ -406,7 +403,8 @@ static NTSTATUS ads_find_dc(ADS_STRUCT *ads)
+                       }
+               }
+-              if ( ads_try_connect(ads, server, false) ) {
++              ok = ads_try_connect(ads, false, &ip_list[i].ss);
++              if (ok) {
+                       SAFE_FREE(ip_list);
+                       SAFE_FREE(sitename);
+                       return NT_STATUS_OK;
+@@ -591,9 +589,19 @@ ADS_STATUS ads_connect(ADS_STRUCT *ads)
+               TALLOC_FREE(s);
+       }
+-      if (ads->server.ldap_server)
+-      {
+-              if (ads_try_connect(ads, ads->server.ldap_server, ads->server.gc)) {
++      if (ads->server.ldap_server) {
++              bool ok = false;
++              struct sockaddr_storage ss;
++
++              ok = resolve_name(ads->server.ldap_server, &ss, 0x20, true);
++              if (!ok) {
++                      DEBUG(5,("ads_connect: unable to resolve name %s\n",
++                               ads->server.ldap_server));
++                      status = ADS_ERROR_NT(NT_STATUS_NOT_FOUND);
++                      goto out;
++              }
++              ok = ads_try_connect(ads, ads->server.gc, &ss);
++              if (ok) {
+                       goto got_connection;
+               }
+-- 
+1.9.0
+
+diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
+index b826cb3..5e34aa3 100644
+--- a/source3/libads/kerberos.c
++++ b/source3/libads/kerberos.c
+@@ -827,10 +827,6 @@
+               return false;
+       }
+-      if (domain == NULL || pss == NULL || kdc_name == NULL) {
+-              return false;
+-      }
+-
+       dname = lock_path("smb_krb5");
+       if (!dname) {
+               return false;
diff --git a/src/patches/samba/samba-3.6.23-gecos.patch b/src/patches/samba/samba-3.6.23-gecos.patch
new file mode 100644 (file)
index 0000000..2ecfe86
--- /dev/null
@@ -0,0 +1,42 @@
+From 02da0b0ae947f30480b1246de22e865491e479f0 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 12 Feb 2014 13:26:02 +0100
+Subject: [PATCH] PATCHSET12: s3-winbind: Use strlcpy to avoid log entry.
+
+The full_name from Windows can be longer than 255 chars which results in
+a warning on log level 0 that we have a string overflow. This will avoid
+the warning. However we should fix this sooner or later on the protocol
+level to have no limit.
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+
+Conflicts:
+       source3/winbindd/wb_fill_pwent.c
+---
+ source3/winbindd/wb_fill_pwent.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c
+index 9634317..9d42b31 100644
+--- a/source3/winbindd/wb_fill_pwent.c
++++ b/source3/winbindd/wb_fill_pwent.c
+@@ -141,8 +141,13 @@ static void wb_fill_pwent_getgrsid_done(struct tevent_req *subreq)
+                                    true);
+       }
+-      fstrcpy(state->pw->pw_name, output_username);
+-      fstrcpy(state->pw->pw_gecos, state->info->full_name);
++      strlcpy(state->pw->pw_name,
++              output_username,
++              sizeof(state->pw->pw_name));
++      /* FIXME The full_name can be longer than 255 chars */
++      strlcpy(state->pw->pw_gecos,
++              state->info->full_name ? state->info->full_name : "",
++              sizeof(state->pw->pw_gecos));
+       /* Home directory and shell */
+       ok = fillup_pw_field(lp_template_homedir(),
+-- 
+1.9.3
+
diff --git a/src/patches/samba/samba-3.6.23-glusterfs.patch b/src/patches/samba/samba-3.6.23-glusterfs.patch
new file mode 100644 (file)
index 0000000..2b82064
--- /dev/null
@@ -0,0 +1,2318 @@
+From f2f684d4eadadeebf725b513bf4945ccf0aa7371 Mon Sep 17 00:00:00 2001
+From: Anand Avati <avati@redhat.com>
+Date: Wed, 29 May 2013 07:21:46 -0400
+Subject: [PATCH 1/9] PATCHSET13: vfs_glusterfs: Samba VFS module for glusterfs
+
+Implement a Samba VFS plugin for glusterfs based on gluster's gfapi.
+This is a "bottom" vfs plugin (not something to be stacked on top of
+another module), and translates (most) calls into closest actions
+on gfapi.
+
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+Reviewed-by: Simo Sorce <idra@samba.org>
+Signed-off-by: Anand Avati <avati@redhat.com>
+---
+ source3/Makefile.in             |    5 +
+ source3/configure.in            |   23 +
+ source3/modules/vfs_glusterfs.c | 1461 +++++++++++++++++++++++++++++++++++++++
+ source3/modules/wscript_build   |    9 +
+ source3/wscript                 |   22 +
+ 5 files changed, 1520 insertions(+)
+ create mode 100644 source3/modules/vfs_glusterfs.c
+
+diff --git a/source3/Makefile.in b/source3/Makefile.in
+index 9e8e03d..27bc43e 100644
+--- a/source3/Makefile.in
++++ b/source3/Makefile.in
+@@ -848,6 +848,7 @@ VFS_SCANNEDONLY_OBJ = modules/vfs_scannedonly.o
+ VFS_CROSSRENAME_OBJ = modules/vfs_crossrename.o
+ VFS_LINUX_XFS_SGID_OBJ = modules/vfs_linux_xfs_sgid.o
+ VFS_TIME_AUDIT_OBJ = modules/vfs_time_audit.o
++VFS_GLUSTERFS_OBJ = modules/vfs_glusterfs.o
+ PAM_ERRORS_OBJ = ../libcli/auth/pam_errors.o
+ PLAINTEXT_AUTH_OBJ = auth/pampass.o auth/pass_check.o $(PAM_ERRORS_OBJ)
+@@ -3191,6 +3192,10 @@ bin/time_audit.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_TIME_AUDIT_OBJ)
+       @echo "Building plugin $@"
+       @$(SHLD_MODULE) $(VFS_TIME_AUDIT_OBJ)
++bin/glusterfs.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_GLUSTERFS_OBJ)
++      @echo "Building plugin $@"
++      $(SHLD_MODULE) $(VFS_GLUSTERFS_OBJ) @GLUSTERFS_LIBS@
++
+ #########################################################
+ ## IdMap NSS plugins
+diff --git a/source3/configure.in b/source3/configure.in
+index 42c23e3..3cc78e9 100644
+--- a/source3/configure.in
++++ b/source3/configure.in
+@@ -6688,6 +6688,29 @@
+ fi
++#############
++AC_ARG_ENABLE([glusterfs],
++       AC_HELP_STRING([--disable-glusterfs],[Do not build vfs_glusterfs module]))
++
++GLUTERFS_LIBS=""
++
++if test "x$enable_glusterfs" != "xno"; then
++   PKG_CHECK_MODULES([GLFS], [glusterfs-api >= 4], glfs_found=yes, glfs_found=no)
++fi
++
++if test "x$enable_glusterfs" = "xyes" -a "x$glfs_found" != "xyes"; then
++   echo "GFAPI not found in build system"
++   exit 1
++fi
++
++if test "x$glfs_found" = "xyes"; then
++    CFLAGS="$CFLAGS $GLFS_CFLAGS"
++    GLUSTERFS_LIBS="$GLFS_LIBS"
++    default_shared_modules="$default_shared_modules vfs_glusterfs"
++fi
++AC_SUBST(GLUSTERFS_LIBS)
++
++
+ #################################################
+ # Set pthread stuff
+@@ -7007,6 +7030,7 @@
+ SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
+ SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
+ SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
++SMB_MODULE(vfs_glusterfs, \$(VFS_GLUSTERFS_OBJ), "bin/glusterfs.$SHLIBEXT", VFS)
+ SMB_SUBSYSTEM(VFS,smbd/vfs.o)
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+new file mode 100644
+index 0000000..4beac1d
+--- /dev/null
++++ b/source3/modules/vfs_glusterfs.c
+@@ -0,0 +1,1461 @@
++/*
++   Unix SMB/CIFS implementation.
++
++   Wrap GlusterFS GFAPI calls in vfs functions.
++
++   Copyright (c) 2013 Anand Avati <avati@redhat.com>
++
++   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 3 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, see <http://www.gnu.org/licenses/>.
++*/
++
++#include "includes.h"
++#include "smbd/smbd.h"
++#include <stdio.h>
++#include "api/glfs.h"
++
++#define DEFAULT_VOLFILE_SERVER "localhost"
++
++/*
++  TODO
++  ----
++  Short term:
++  - AIO support
++  - sendfile/recvfile support
++*/
++
++/* Helpers to provide 'integer' fds */
++
++/* This is global. gfapi's FD operations do not
++   require filesystem context.
++*/
++static glfs_fd_t **glfd_fd;
++static int glfd_fd_size;
++static int glfd_fd_used;
++static int glfd_fd_store(glfs_fd_t *glfd)
++{
++      int i;
++      void *tmp;
++
++      if (glfd_fd_size == glfd_fd_used) {
++              if (glfd_fd_size >= INT_MAX - 1) {
++                      errno = ENOMEM;
++                      return -1;
++              }
++
++              tmp = talloc_realloc(glfd_fd, glfd_fd, glfs_fd_t *,
++                                   glfd_fd_size + 1);
++              if (tmp == NULL) {
++                      errno = ENOMEM;
++                      return -1;
++              }
++
++              glfd_fd = tmp;
++              glfd_fd[glfd_fd_size] = 0;
++              glfd_fd_size++;
++      }
++
++      for (i = 0; i < glfd_fd_size; i++) {
++              if (!glfd_fd[i]) {
++                      break;
++              }
++      }
++      glfd_fd_used++;
++      glfd_fd[i] = glfd;
++      return i;
++}
++
++static glfs_fd_t *glfd_fd_get(int i)
++{
++      if (i < 0 || i >= glfd_fd_size) {
++              return NULL;
++      }
++      return glfd_fd[i];
++}
++
++static glfs_fd_t *glfd_fd_clear(int i)
++{
++      glfs_fd_t *glfd = NULL;
++
++      if (i < 0 || i >= glfd_fd_size) {
++              return NULL;
++      }
++
++      glfd = glfd_fd[i];
++      glfd_fd[i] = 0;
++      glfd_fd_used--;
++      return glfd;
++}
++
++/* Helper to convert stat to stat_ex */
++
++static void smb_stat_ex_from_stat(struct stat_ex *dst, const struct stat *src)
++{
++      ZERO_STRUCTP(dst);
++
++      dst->st_ex_dev = src->st_dev;
++      dst->st_ex_ino = src->st_ino;
++      dst->st_ex_mode = src->st_mode;
++      dst->st_ex_nlink = src->st_nlink;
++      dst->st_ex_uid = src->st_uid;
++      dst->st_ex_gid = src->st_gid;
++      dst->st_ex_rdev = src->st_rdev;
++      dst->st_ex_size = src->st_size;
++      dst->st_ex_atime.tv_sec = src->st_atime;
++#ifdef STAT_HAVE_NSEC
++      dst->st_ex_atime.tv_nsec = src->st_atime_nsec;
++#endif
++      dst->st_ex_mtime.tv_sec = src->st_mtime;
++#ifdef STAT_HAVE_NSEC
++      dst->st_ex_mtime.tv_nsec = src->st_mtime_nsec;
++#endif
++      dst->st_ex_ctime.tv_sec = src->st_ctime;
++#ifdef STAT_HAVE_NSEC
++      dst->st_ex_ctime.tv_nsec = src->st_ctime_nsec;
++#endif
++      dst->st_ex_btime.tv_sec = src->st_mtime;
++#ifdef STAT_HAVE_NSEC
++      dst->st_ex_btime.tv_nsec = src->st_mtime_nsec;
++#endif
++      dst->st_ex_blksize = src->st_blksize;
++      dst->st_ex_blocks = src->st_blocks;
++}
++
++/* pre-opened glfs_t */
++
++static struct glfs_preopened {
++      char *volume;
++      glfs_t *fs;
++      int ref;
++      struct glfs_preopened *next, *prev;
++} *glfs_preopened;
++
++
++int glfs_set_preopened(const char *volume, glfs_t *fs)
++{
++      struct glfs_preopened *entry = NULL;
++
++      entry = talloc_zero(NULL, struct glfs_preopened);
++      if (!entry) {
++              errno = ENOMEM;
++              return -1;
++      }
++
++      entry->volume = talloc_strdup(entry, volume);
++      if (!entry->volume) {
++              talloc_free(entry);
++              errno = ENOMEM;
++              return -1;
++      }
++
++      entry->fs = fs;
++      entry->ref = 1;
++
++      DLIST_ADD(glfs_preopened, entry);
++
++      return 0;
++}
++
++static glfs_t *glfs_find_preopened(const char *volume)
++{
++      struct glfs_preopened *entry = NULL;
++
++      for (entry = glfs_preopened; entry; entry = entry->next) {
++              if (strcmp(entry->volume, volume) == 0) {
++                      entry->ref++;
++                      return entry->fs;
++              }
++      }
++
++      return NULL;
++}
++
++static void glfs_clear_preopened(glfs_t *fs)
++{
++      int i;
++      struct glfs_preopened *entry = NULL;
++
++      for (entry = glfs_preopened; entry; entry = entry->next) {
++              if (entry->fs == fs) {
++                      if (--entry->ref)
++                              return;
++
++                      DLIST_REMOVE(glfs_preopened, entry);
++
++                      glfs_fini(entry->fs);
++                      talloc_free(entry);
++              }
++      }
++}
++
++/* Disk Operations */
++
++static int vfs_gluster_connect(struct vfs_handle_struct *handle,
++                             const char *service, const char *user)
++{
++      const char *volfile_server;
++      const char *volume;
++      const char *logfile;
++      int loglevel;
++      glfs_t *fs;
++      int ret;
++
++      logfile = lp_parm_const_string(SNUM(handle->conn), "glusterfs",
++                                     "logfile", NULL);
++
++      loglevel = lp_parm_int(SNUM(handle->conn), "glusterfs", "loglevel", -1);
++
++      volfile_server = lp_parm_const_string(SNUM(handle->conn), "glusterfs",
++                                            "volfile_server", NULL);
++      if (volfile_server == NULL) {
++              volfile_server = DEFAULT_VOLFILE_SERVER;
++      }
++
++      volume = lp_parm_const_string(SNUM(handle->conn), "glusterfs", "volume",
++                                    NULL);
++      if (volume == NULL) {
++              volume = service;
++      }
++
++      fs = glfs_find_preopened(volume);
++      if (fs) {
++              goto found;
++      }
++
++      fs = glfs_new(volume);
++      if (fs == NULL) {
++              return -1;
++      }
++
++      ret = glfs_set_volfile_server(fs, "tcp", volfile_server, 0);
++      if (ret < 0) {
++              DEBUG(0, ("Failed to set volfile_server %s\n", volfile_server));
++              glfs_fini(fs);
++              return -1;
++      }
++
++      ret = glfs_set_xlator_option(fs, "*-md-cache", "cache-posix-acl",
++                                   "true");
++      if (ret < 0) {
++              DEBUG(0, ("%s: Failed to set xlator options\n", volume));
++              glfs_fini(fs);
++              return -1;
++      }
++
++      ret = glfs_set_logging(fs, logfile, loglevel);
++      if (ret < 0) {
++              DEBUG(0, ("%s: Failed to set logfile %s loglevel %d\n",
++                        volume, logfile, loglevel));
++              glfs_fini(fs);
++              return -1;
++      }
++
++      ret = glfs_init(fs);
++      if (ret < 0) {
++              DEBUG(0, ("%s: Failed to initialize volume (%s)\n",
++                        volume, strerror(errno)));
++              glfs_fini(fs);
++              return -1;
++      }
++
++      ret = glfs_set_preopened(volume, fs);
++      if (ret < 0) {
++              DEBUG(0, ("%s: Failed to register volume (%s)\n",
++                        volume, strerror(errno)));
++              glfs_fini(fs);
++              return -1;
++      }
++found:
++      DEBUG(0, ("%s: Initialized volume from server %s\n",
++                volume, volfile_server));
++      handle->data = fs;
++      return 0;
++}
++
++static void vfs_gluster_disconnect(struct vfs_handle_struct *handle)
++{
++      glfs_t *fs = NULL;
++
++      fs = handle->data;
++
++      glfs_clear_preopened(fs);
++}
++
++static uint64_t
++vfs_gluster_disk_free(struct vfs_handle_struct *handle, const char *path,
++                    bool small_query, uint64_t *bsize_p, uint64_t *dfree_p,
++                    uint64_t *dsize_p)
++{
++      struct statvfs statvfs = { 0, };
++      uint64_t dfree = 0;
++      int ret;
++
++      ret = glfs_statvfs(handle->data, path, &statvfs);
++      if (ret < 0) {
++              DEBUG(0, ("glfs_statvfs(%s) failed: %s\n",
++                        path, strerror(errno)));
++              return -1;
++      }
++
++      dfree = statvfs.f_bsize * statvfs.f_bavail;
++
++      if (bsize_p) {
++              *bsize_p = statvfs.f_bsize;
++      }
++      if (dfree_p) {
++              *dfree_p = dfree;
++      }
++      if (dsize_p) {
++              *dsize_p = statvfs.f_bsize * statvfs.f_blocks;
++      }
++
++      return dfree;
++}
++
++static int
++vfs_gluster_get_quota(struct vfs_handle_struct *handle,
++                    enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt)
++{
++      errno = ENOSYS;
++      return -1;
++}
++
++static int
++vfs_gluster_set_quota(struct vfs_handle_struct *handle,
++                    enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt)
++{
++      errno = ENOSYS;
++      return -1;
++}
++
++static int vfs_gluster_statvfs(struct vfs_handle_struct *handle,
++                             const char *path,
++                             struct vfs_statvfs_struct *vfs_statvfs)
++{
++      struct statvfs statvfs = { 0, };
++      int ret;
++
++      ret = glfs_statvfs(handle->data, path, &statvfs);
++      if (ret < 0) {
++              DEBUG(0, ("glfs_statvfs(%s) failed: %s\n",
++                        path, strerror(errno)));
++              return -1;
++      }
++
++      ZERO_STRUCTP(vfs_statvfs);
++
++      vfs_statvfs->OptimalTransferSize = statvfs.f_frsize;
++      vfs_statvfs->BlockSize = statvfs.f_bsize;
++      vfs_statvfs->TotalBlocks = statvfs.f_blocks;
++      vfs_statvfs->BlocksAvail = statvfs.f_bfree;
++      vfs_statvfs->UserBlocksAvail = statvfs.f_bavail;
++      vfs_statvfs->TotalFileNodes = statvfs.f_files;
++      vfs_statvfs->FreeFileNodes = statvfs.f_ffree;
++      vfs_statvfs->FsIdentifier = statvfs.f_fsid;
++      vfs_statvfs->FsCapabilities =
++          FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
++
++      return ret;
++}
++
++static uint32_t vfs_gluster_fs_capabilities(struct vfs_handle_struct *handle,
++                                          enum timestamp_set_resolution *p_ts_res)
++{
++      uint32_t caps = FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
++
++#ifdef STAT_HAVE_NSEC
++      *p_ts_res = TIMESTAMP_SET_NT_OR_BETTER;
++#endif
++
++      return caps;
++}
++
++static DIR *vfs_gluster_opendir(struct vfs_handle_struct *handle,
++                              const char *path, const char *mask,
++                              uint32 attributes)
++{
++      glfs_fd_t *fd;
++
++      fd = glfs_opendir(handle->data, path);
++      if (fd == NULL) {
++              DEBUG(0, ("glfs_opendir(%s) failed: %s\n",
++                        path, strerror(errno)));
++      }
++
++      return (DIR *) fd;
++}
++
++static DIR *vfs_gluster_fdopendir(struct vfs_handle_struct *handle,
++                                files_struct *fsp, const char *mask,
++                                uint32 attributes)
++{
++      return (DIR *) glfd_fd_get(fsp->fh->fd);
++}
++
++static int vfs_gluster_closedir(struct vfs_handle_struct *handle, DIR *dirp)
++{
++      return glfs_closedir((void *)dirp);
++}
++
++static SMB_STRUCT_DIRENT *vfs_gluster_readdir(struct vfs_handle_struct *handle,
++                                            SMB_STRUCT_DIR *dirp,
++                                            SMB_STRUCT_STAT *sbuf)
++{
++      char direntbuf[512];
++      int ret;
++      struct stat stat;
++      struct dirent *dirent = 0;
++      static SMB_STRUCT_DIRENT result;
++
++      if (sbuf != NULL) {
++              ret = glfs_readdirplus_r((void *)dirp, &stat, (void *)direntbuf,
++                                       &dirent);
++      } else {
++              ret = glfs_readdir_r((void *)dirp, (void *)direntbuf, &dirent);
++      }
++
++      if (ret < 0 || (dirent == NULL)) {
++              return NULL;
++      }
++
++      if (sbuf != NULL) {
++              smb_stat_ex_from_stat(sbuf, &stat);
++      }
++
++      result.d_ino = dirent->d_ino;
++      result.d_off = dirent->d_off;
++      result.d_reclen = dirent->d_reclen;
++      result.d_type = dirent->d_type;
++      strncpy(result.d_name, dirent->d_name, 256);
++
++      return &result;
++}
++
++static long vfs_gluster_telldir(struct vfs_handle_struct *handle, DIR *dirp)
++{
++      return glfs_telldir((void *)dirp);
++}
++
++static void vfs_gluster_seekdir(struct vfs_handle_struct *handle, DIR *dirp,
++                              long offset)
++{
++      glfs_seekdir((void *)dirp, offset);
++}
++
++static void vfs_gluster_rewinddir(struct vfs_handle_struct *handle,
++                                DIR *dirp)
++{
++      glfs_seekdir((void *)dirp, 0);
++}
++
++static void vfs_gluster_init_search_op(struct vfs_handle_struct *handle,
++                                     DIR *dirp)
++{
++      return;
++}
++
++static int vfs_gluster_mkdir(struct vfs_handle_struct *handle, const char *path,
++                           mode_t mode)
++{
++      return glfs_mkdir(handle->data, path, mode);
++}
++
++static int vfs_gluster_rmdir(struct vfs_handle_struct *handle, const char *path)
++{
++      return glfs_rmdir(handle->data, path);
++}
++
++static int vfs_gluster_open(struct vfs_handle_struct *handle,
++                          struct smb_filename *smb_fname, files_struct *fsp,
++                          int flags, mode_t mode)
++{
++      glfs_fd_t *glfd;
++
++      if (flags & O_DIRECTORY) {
++              glfd = glfs_opendir(handle->data, smb_fname->base_name);
++      } else if (flags & O_CREAT) {
++              glfd = glfs_creat(handle->data, smb_fname->base_name, flags,
++                                mode);
++      } else {
++              glfd = glfs_open(handle->data, smb_fname->base_name, flags);
++      }
++
++      if (glfd == NULL) {
++              DEBUG(0, ("glfs_{open[dir],creat}(%s) failed: %s\n",
++                        smb_fname->base_name, strerror(errno)));
++              return -1;
++      }
++
++      return glfd_fd_store(glfd);
++}
++
++static int vfs_gluster_close(struct vfs_handle_struct *handle,
++                           files_struct *fsp)
++{
++      return glfs_close(glfd_fd_clear(fsp->fh->fd));
++}
++
++static ssize_t vfs_gluster_read(struct vfs_handle_struct *handle,
++                              files_struct *fsp, void *data, size_t n)
++{
++      return glfs_read(glfd_fd_get(fsp->fh->fd), data, n, 0);
++}
++
++static ssize_t vfs_gluster_pread(struct vfs_handle_struct *handle,
++                               files_struct *fsp, void *data, size_t n,
++                               off_t offset)
++{
++      return glfs_pread(glfd_fd_get(fsp->fh->fd), data, n, offset, 0);
++}
++
++static ssize_t vfs_gluster_write(struct vfs_handle_struct *handle,
++                               files_struct *fsp, const void *data, size_t n)
++{
++      return glfs_write(glfd_fd_get(fsp->fh->fd), data, n, 0);
++}
++
++static ssize_t vfs_gluster_pwrite(struct vfs_handle_struct *handle,
++                                files_struct *fsp, const void *data, size_t n,
++                                off_t offset)
++{
++      return glfs_pwrite(glfd_fd_get(fsp->fh->fd), data, n, offset, 0);
++}
++
++static off_t vfs_gluster_lseek(struct vfs_handle_struct *handle,
++                             files_struct *fsp, off_t offset, int whence)
++{
++      return glfs_lseek(glfd_fd_get(fsp->fh->fd), offset, whence);
++}
++
++static ssize_t vfs_gluster_sendfile(struct vfs_handle_struct *handle, int tofd,
++                                  files_struct *fromfsp, const DATA_BLOB *hdr,
++                                  off_t offset, size_t n)
++{
++      errno = ENOTSUP;
++      return -1;
++}
++
++static ssize_t vfs_gluster_recvfile(struct vfs_handle_struct *handle,
++                                  int fromfd, files_struct *tofsp,
++                                  off_t offset, size_t n)
++{
++      errno = ENOTSUP;
++      return -1;
++}
++
++static int vfs_gluster_rename(struct vfs_handle_struct *handle,
++                            const struct smb_filename *smb_fname_src,
++                            const struct smb_filename *smb_fname_dst)
++{
++      return glfs_rename(handle->data, smb_fname_src->base_name,
++                         smb_fname_dst->base_name);
++}
++
++static int vfs_gluster_fsync(struct vfs_handle_struct *handle,
++                           files_struct *fsp)
++{
++      return glfs_fsync(glfd_fd_get(fsp->fh->fd));
++}
++
++static int vfs_gluster_stat(struct vfs_handle_struct *handle,
++                          struct smb_filename *smb_fname)
++{
++      struct stat st;
++      int ret;
++
++      ret = glfs_stat(handle->data, smb_fname->base_name, &st);
++      if (ret == 0) {
++              smb_stat_ex_from_stat(&smb_fname->st, &st);
++      }
++      if (ret < 0 && errno != ENOENT) {
++              DEBUG(0, ("glfs_stat(%s) failed: %s\n",
++                        smb_fname->base_name, strerror(errno)));
++      }
++      return ret;
++}
++
++static int vfs_gluster_fstat(struct vfs_handle_struct *handle,
++                           files_struct *fsp, SMB_STRUCT_STAT *sbuf)
++{
++      struct stat st;
++      int ret;
++
++      ret = glfs_fstat(glfd_fd_get(fsp->fh->fd), &st);
++      if (ret == 0) {
++              smb_stat_ex_from_stat(sbuf, &st);
++      }
++      if (ret < 0) {
++              DEBUG(0, ("glfs_ftat(%d) failed: %s\n",
++                        fsp->fh->fd, strerror(errno)));
++      }
++      return ret;
++}
++
++static int vfs_gluster_lstat(struct vfs_handle_struct *handle,
++                           struct smb_filename *smb_fname)
++{
++      struct stat st;
++      int ret;
++
++      ret = glfs_lstat(handle->data, smb_fname->base_name, &st);
++      if (ret == 0) {
++              smb_stat_ex_from_stat(&smb_fname->st, &st);
++      }
++      if (ret < 0 && errno != ENOENT) {
++              DEBUG(0, ("glfs_lstat(%s) failed: %s\n",
++                        smb_fname->base_name, strerror(errno)));
++      }
++
++      return ret;
++}
++
++static uint64_t vfs_gluster_get_alloc_size(struct vfs_handle_struct *handle,
++                                         files_struct *fsp,
++                                         const SMB_STRUCT_STAT *sbuf)
++{
++      return sbuf->st_ex_blocks * 512;
++}
++
++static int vfs_gluster_unlink(struct vfs_handle_struct *handle,
++                            const struct smb_filename *smb_fname)
++{
++      return glfs_unlink(handle->data, smb_fname->base_name);
++}
++
++static int vfs_gluster_chmod(struct vfs_handle_struct *handle,
++                           const char *path, mode_t mode)
++{
++      return glfs_chmod(handle->data, path, mode);
++}
++
++static int vfs_gluster_fchmod(struct vfs_handle_struct *handle,
++                            files_struct *fsp, mode_t mode)
++{
++      return glfs_fchmod(glfd_fd_get(fsp->fh->fd), mode);
++}
++
++static int vfs_gluster_chown(struct vfs_handle_struct *handle,
++                           const char *path, uid_t uid, gid_t gid)
++{
++      return glfs_chown(handle->data, path, uid, gid);
++}
++
++static int vfs_gluster_fchown(struct vfs_handle_struct *handle,
++                            files_struct *fsp, uid_t uid, gid_t gid)
++{
++      return glfs_fchown(glfd_fd_get(fsp->fh->fd), uid, gid);
++}
++
++static int vfs_gluster_lchown(struct vfs_handle_struct *handle,
++                            const char *path, uid_t uid, gid_t gid)
++{
++      return glfs_lchown(handle->data, path, uid, gid);
++}
++
++static int vfs_gluster_chdir(struct vfs_handle_struct *handle, const char *path)
++{
++      return glfs_chdir(handle->data, path);
++}
++
++static char *vfs_gluster_getwd(struct vfs_handle_struct *handle, char *path)
++{
++      return glfs_getcwd(handle->data, path, PATH_MAX);
++}
++
++static int vfs_gluster_ntimes(struct vfs_handle_struct *handle,
++                            const struct smb_filename *smb_fname,
++                            struct smb_file_time *ft)
++{
++      struct timespec times[2];
++
++      times[0].tv_sec = ft->atime.tv_sec;
++      times[0].tv_nsec = ft->atime.tv_nsec;
++      times[1].tv_sec = ft->mtime.tv_sec;
++      times[1].tv_nsec = ft->mtime.tv_nsec;
++
++      return glfs_utimens(handle->data, smb_fname->base_name, times);
++}
++
++static int vfs_gluster_ftruncate(struct vfs_handle_struct *handle,
++                               files_struct *fsp, off_t offset)
++{
++      return glfs_ftruncate(glfd_fd_get(fsp->fh->fd), offset);
++}
++
++static int vfs_gluster_fallocate(struct vfs_handle_struct *handle,
++                               struct files_struct *fsp,
++                               enum vfs_fallocate_mode mode,
++                               off_t offset, off_t len)
++{
++      errno = ENOTSUP;
++      return -1;
++}
++
++static char *vfs_gluster_realpath(struct vfs_handle_struct *handle,
++                                const char *path)
++{
++      return glfs_realpath(handle->data, path, 0);
++}
++
++static bool vfs_gluster_lock(struct vfs_handle_struct *handle,
++                           files_struct *fsp, int op, off_t offset,
++                           off_t count, int type)
++{
++      struct flock flock = { 0, };
++      int ret;
++
++      flock.l_type = type;
++      flock.l_whence = SEEK_SET;
++      flock.l_start = offset;
++      flock.l_len = count;
++      flock.l_pid = 0;
++
++      ret = glfs_posix_lock(glfd_fd_get(fsp->fh->fd), op, &flock);
++
++      if (op == F_GETLK) {
++              /* lock query, true if someone else has locked */
++              if ((ret != -1) &&
++                  (flock.l_type != F_UNLCK) &&
++                  (flock.l_pid != 0) && (flock.l_pid != getpid()))
++                      return true;
++              /* not me */
++              return false;
++      }
++
++      if (ret == -1) {
++              return false;
++      }
++
++      return true;
++}
++
++static int vfs_gluster_kernel_flock(struct vfs_handle_struct *handle,
++                                  files_struct *fsp, uint32 share_mode,
++                                  uint32_t access_mask)
++{
++      return 0;
++}
++
++static int vfs_gluster_linux_setlease(struct vfs_handle_struct *handle,
++                                    files_struct *fsp, int leasetype)
++{
++      errno = ENOSYS;
++      return -1;
++}
++
++static bool vfs_gluster_getlock(struct vfs_handle_struct *handle,
++                              files_struct *fsp, off_t *poffset,
++                              off_t *pcount, int *ptype, pid_t *ppid)
++{
++      struct flock flock = { 0, };
++      int ret;
++
++      flock.l_type = *ptype;
++      flock.l_whence = SEEK_SET;
++      flock.l_start = *poffset;
++      flock.l_len = *pcount;
++      flock.l_pid = 0;
++
++      ret = glfs_posix_lock(glfd_fd_get(fsp->fh->fd), F_GETLK, &flock);
++
++      if (ret == -1) {
++              return false;
++      }
++
++      *ptype = flock.l_type;
++      *poffset = flock.l_start;
++      *pcount = flock.l_len;
++      *ppid = flock.l_pid;
++
++      return true;
++}
++
++static int vfs_gluster_symlink(struct vfs_handle_struct *handle,
++                             const char *oldpath, const char *newpath)
++{
++      return glfs_symlink(handle->data, oldpath, newpath);
++}
++
++static int vfs_gluster_readlink(struct vfs_handle_struct *handle,
++                              const char *path, char *buf, size_t bufsiz)
++{
++      return glfs_readlink(handle->data, path, buf, bufsiz);
++}
++
++static int vfs_gluster_link(struct vfs_handle_struct *handle,
++                          const char *oldpath, const char *newpath)
++{
++      return glfs_link(handle->data, oldpath, newpath);
++}
++
++static int vfs_gluster_mknod(struct vfs_handle_struct *handle, const char *path,
++                           mode_t mode, SMB_DEV_T dev)
++{
++      return glfs_mknod(handle->data, path, mode, dev);
++}
++
++static NTSTATUS vfs_gluster_notify_watch(struct vfs_handle_struct *vfs_handle,
++                                       struct sys_notify_context *ctx,
++                                       struct notify_entry *e,
++                                       void (*callback) (struct sys_notify_context *ctx,
++                                                         void *private_data,
++                                                         struct notify_event *ev),
++                                       void *private_data, void *handle)
++{
++      return NT_STATUS_NOT_IMPLEMENTED;
++}
++
++static int vfs_gluster_chflags(struct vfs_handle_struct *handle,
++                             const char *path, unsigned int flags)
++{
++      errno = ENOSYS;
++      return -1;
++}
++
++static int vfs_gluster_get_real_filename(struct vfs_handle_struct *handle,
++                                       const char *path, const char *name,
++                                       TALLOC_CTX *mem_ctx, char **found_name)
++{
++      int ret;
++      char key_buf[NAME_MAX + 64];
++      char val_buf[NAME_MAX + 1];
++
++      if (strlen(name) >= NAME_MAX) {
++              errno = ENAMETOOLONG;
++              return -1;
++      }
++
++      snprintf(key_buf, NAME_MAX + 64,
++               "user.glusterfs.get_real_filename:%s", name);
++
++      ret = glfs_getxattr(handle->data, path, key_buf, val_buf, NAME_MAX + 1);
++      if (ret == -1 && errno == ENODATA) {
++              errno = EOPNOTSUPP;
++              return -1;
++      }
++
++      *found_name = talloc_strdup(mem_ctx, val_buf);
++      if (found_name[0] == NULL) {
++              errno = ENOMEM;
++              return -1;
++      }
++      return 0;
++}
++
++static const char *vfs_gluster_connectpath(struct vfs_handle_struct *handle,
++                                         const char *filename)
++{
++      return handle->conn->connectpath;
++}
++
++/* EA Operations */
++
++static ssize_t vfs_gluster_getxattr(struct vfs_handle_struct *handle,
++                                  const char *path, const char *name,
++                                  void *value, size_t size)
++{
++      return glfs_getxattr(handle->data, path, name, value, size);
++}
++
++static ssize_t vfs_gluster_lgetxattr(struct vfs_handle_struct *handle,
++                                   const char *path, const char *name,
++                                   void *value, size_t size)
++{
++      return glfs_lgetxattr(handle->data, path, name, value, size);
++}
++
++static ssize_t vfs_gluster_fgetxattr(struct vfs_handle_struct *handle,
++                                   files_struct *fsp, const char *name,
++                                   void *value, size_t size)
++{
++      return glfs_fgetxattr(glfd_fd_get(fsp->fh->fd), name, value, size);
++}
++
++static ssize_t vfs_gluster_listxattr(struct vfs_handle_struct *handle,
++                                   const char *path, char *list, size_t size)
++{
++      return glfs_listxattr(handle->data, path, list, size);
++}
++
++static ssize_t vfs_gluster_llistxattr(struct vfs_handle_struct *handle,
++                                    const char *path, char *list, size_t size)
++{
++      return glfs_llistxattr(handle->data, path, list, size);
++}
++
++static ssize_t vfs_gluster_flistxattr(struct vfs_handle_struct *handle,
++                                    files_struct *fsp, char *list,
++                                    size_t size)
++{
++      return glfs_flistxattr(glfd_fd_get(fsp->fh->fd), list, size);
++}
++
++static int vfs_gluster_removexattr(struct vfs_handle_struct *handle,
++                                 const char *path, const char *name)
++{
++      return glfs_removexattr(handle->data, path, name);
++}
++
++static int vfs_gluster_lremovexattr(struct vfs_handle_struct *handle,
++                                  const char *path, const char *name)
++{
++      return glfs_lremovexattr(handle->data, path, name);
++}
++
++static int vfs_gluster_fremovexattr(struct vfs_handle_struct *handle,
++                                  files_struct *fsp, const char *name)
++{
++      return glfs_fremovexattr(glfd_fd_get(fsp->fh->fd), name);
++}
++
++static int vfs_gluster_setxattr(struct vfs_handle_struct *handle,
++                              const char *path, const char *name,
++                              const void *value, size_t size, int flags)
++{
++      return glfs_setxattr(handle->data, path, name, value, size, flags);
++}
++
++static int vfs_gluster_lsetxattr(struct vfs_handle_struct *handle,
++                               const char *path, const char *name,
++                               const void *value, size_t size, int flags)
++{
++      return glfs_lsetxattr(handle->data, path, name, value, size, flags);
++}
++
++static int vfs_gluster_fsetxattr(struct vfs_handle_struct *handle,
++                               files_struct *fsp, const char *name,
++                               const void *value, size_t size, int flags)
++{
++      return glfs_fsetxattr(glfd_fd_get(fsp->fh->fd), name, value, size,
++                            flags);
++}
++
++/* AIO Operations */
++
++static bool vfs_gluster_aio_force(struct vfs_handle_struct *handle,
++                                files_struct *fsp)
++{
++      return false;
++}
++
++/* Offline Operations */
++
++static bool vfs_gluster_is_offline(struct vfs_handle_struct *handle,
++                                 const struct smb_filename *fname,
++                                 SMB_STRUCT_STAT *sbuf)
++{
++      return false;
++}
++
++static int vfs_gluster_set_offline(struct vfs_handle_struct *handle,
++                                 const struct smb_filename *fname)
++{
++      errno = ENOTSUP;
++      return -1;
++}
++
++/* Posix ACL Operations */
++
++#define GLUSTER_ACL_VERSION 2
++#define GLUSTER_ACL_READ    0x04
++#define GLUSTER_ACL_WRITE   0x02
++#define GLUSTER_ACL_EXECUTE 0x01
++
++#define GLUSTER_ACL_UNDEFINED_TAG  0x00
++#define GLUSTER_ACL_USER_OBJ       0x01
++#define GLUSTER_ACL_USER           0x02
++#define GLUSTER_ACL_GROUP_OBJ      0x04
++#define GLUSTER_ACL_GROUP          0x08
++#define GLUSTER_ACL_MASK           0x10
++#define GLUSTER_ACL_OTHER          0x20
++
++#define GLUSTER_ACL_UNDEFINED_ID  (-1)
++
++struct gluster_ace {
++      uint16_t tag;
++      uint16_t perm;
++      uint32_t id;
++};
++
++struct gluster_acl_header {
++      uint32_t version;
++      struct gluster_ace entries[];
++};
++
++static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size)
++{
++      int count;
++      size_t size;
++      struct gluster_ace *ace;
++      struct smb_acl_entry *smb_ace;
++      struct gluster_acl_header *hdr;
++      struct smb_acl_t *result;
++      int i;
++      uint16_t tag;
++      uint16_t perm;
++      uint32_t id;
++
++      size = xattr_size;
++
++      if (size < sizeof(*hdr)) {
++              /* ACL should be at least as big as the header */
++              errno = EINVAL;
++              return NULL;
++      }
++
++      size -= sizeof(*hdr);
++
++      if (size % sizeof(*ace)) {
++              /* Size of entries must strictly be a multiple of
++                 size of an ACE
++              */
++              errno = EINVAL;
++              return NULL;
++      }
++
++      count = size / sizeof(*ace);
++
++      hdr = (void *)buf;
++
++      if (ntohl(hdr->version) != GLUSTER_ACL_VERSION) {
++              DEBUG(0, ("Unknown gluster ACL version: %d\n",
++                        ntohl(hdr->version)));
++              return NULL;
++      }
++
++      result = SMB_MALLOC(sizeof(struct smb_acl_t) + (sizeof(struct smb_acl_entry) * count));
++      if (!result) {
++              errno = ENOMEM;
++              return NULL;
++      }
++
++      result->count = count;
++
++      smb_ace = result->acl;
++      ace = hdr->entries;
++
++      for (i = 0; i < count; i++) {
++              tag = ntohs(ace->tag);
++
++              switch(tag) {
++              case GLUSTER_ACL_USER:
++                      smb_ace->a_type = SMB_ACL_USER;
++                      break;
++              case GLUSTER_ACL_USER_OBJ:
++                      smb_ace->a_type = SMB_ACL_USER_OBJ;
++                      break;
++              case GLUSTER_ACL_GROUP:
++                      smb_ace->a_type = SMB_ACL_GROUP;
++                      break;
++              case GLUSTER_ACL_GROUP_OBJ:
++                      smb_ace->a_type = SMB_ACL_GROUP_OBJ;
++                      break;
++              case GLUSTER_ACL_OTHER:
++                      smb_ace->a_type = SMB_ACL_OTHER;
++                      break;
++              case GLUSTER_ACL_MASK:
++                      smb_ace->a_type = SMB_ACL_MASK;
++                      break;
++              default:
++                      DEBUG(0, ("unknown tag type %d\n", (unsigned int) tag));
++                      return NULL;
++              }
++
++              id = ntohl(ace->id);
++
++              switch(smb_ace->a_type) {
++              case SMB_ACL_USER:
++                      smb_ace->uid = id;
++                      break;
++              case SMB_ACL_GROUP:
++                      smb_ace->gid = id;
++                      break;
++              default:
++                      break;
++              }
++
++              perm = ntohs(ace->perm);
++
++              smb_ace->a_perm = 0;
++              smb_ace->a_perm |=
++                      ((perm & GLUSTER_ACL_READ) ? SMB_ACL_READ : 0);
++              smb_ace->a_perm |=
++                      ((perm & GLUSTER_ACL_WRITE) ? SMB_ACL_WRITE : 0);
++              smb_ace->a_perm |=
++                      ((perm & GLUSTER_ACL_EXECUTE) ? SMB_ACL_EXECUTE : 0);
++
++              ace++;
++              smb_ace++;
++      }
++
++      return result;
++}
++
++static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len)
++{
++      ssize_t size;
++      struct gluster_ace *ace;
++      struct smb_acl_entry *smb_ace;
++      struct gluster_acl_header *hdr;
++      int i;
++      int count;
++      uint16_t tag;
++      uint16_t perm;
++      uint32_t id;
++
++      count = theacl->count;
++
++      size = sizeof(*hdr) + (count * sizeof(*ace));
++      if (!buf) {
++              return size;
++      }
++
++      if (len < size) {
++              errno = ERANGE;
++              return -1;
++      }
++
++      hdr = (void *)buf;
++      ace = hdr->entries;
++      smb_ace = theacl->acl;
++
++      hdr->version = htonl(GLUSTER_ACL_VERSION);
++
++      for (i = 0; i < count; i++) {
++              switch(smb_ace->a_type) {
++              case SMB_ACL_USER:
++                      tag = GLUSTER_ACL_USER;
++                      break;
++              case SMB_ACL_USER_OBJ:
++                      tag = GLUSTER_ACL_USER_OBJ;
++                      break;
++              case SMB_ACL_GROUP:
++                      tag = GLUSTER_ACL_GROUP;
++                      break;
++              case SMB_ACL_GROUP_OBJ:
++                      tag = GLUSTER_ACL_GROUP_OBJ;
++                      break;
++              case SMB_ACL_OTHER:
++                      tag = GLUSTER_ACL_OTHER;
++                      break;
++              case SMB_ACL_MASK:
++                      tag = GLUSTER_ACL_MASK;
++                      break;
++              default:
++                      DEBUG(0, ("Unknown tag value %d\n",
++                                smb_ace->a_type));
++                      errno = EINVAL;
++                      return -1;
++              }
++
++              ace->tag = ntohs(tag);
++
++              switch(smb_ace->a_type) {
++              case SMB_ACL_USER:
++                      id = smb_ace->uid;
++                      break;
++              case SMB_ACL_GROUP:
++                      id = smb_ace->gid;
++                      break;
++              default:
++                      id = GLUSTER_ACL_UNDEFINED_ID;
++                      break;
++              }
++
++              ace->id = ntohl(id);
++
++              ace->perm = 0;
++              ace->perm |=
++                      ((smb_ace->a_perm & SMB_ACL_READ) ? GLUSTER_ACL_READ : 0);
++              ace->perm |=
++                      ((smb_ace->a_perm & SMB_ACL_WRITE) ? GLUSTER_ACL_WRITE : 0);
++              ace->perm |=
++                      ((smb_ace->a_perm & SMB_ACL_EXECUTE) ? GLUSTER_ACL_EXECUTE : 0);
++
++              ace++;
++              smb_ace++;
++      }
++
++      return size;
++}
++
++
++static SMB_ACL_T vfs_gluster_sys_acl_get_file(struct vfs_handle_struct *handle,
++                                            const char *path_p,
++                                            SMB_ACL_TYPE_T type)
++{
++      struct smb_acl_t *result;
++      char *buf;
++      char *key;
++      ssize_t ret;
++
++      switch (type) {
++      case SMB_ACL_TYPE_ACCESS:
++              key = "system.posix_acl_access";
++              break;
++      case SMB_ACL_TYPE_DEFAULT:
++              key = "system.posix_acl_default";
++              break;
++      default:
++              errno = EINVAL;
++              return NULL;
++      }
++
++      ret = glfs_getxattr(handle->data, path_p, key, 0, 0);
++      if (ret <= 0) {
++              return NULL;
++      }
++
++      buf = alloca(ret);
++      ret = glfs_getxattr(handle->data, path_p, key, buf, ret);
++      if (ret <= 0) {
++              return NULL;
++      }
++
++      result = gluster_to_smb_acl(buf, ret);
++
++      return result;
++}
++
++static SMB_ACL_T vfs_gluster_sys_acl_get_fd(struct vfs_handle_struct *handle,
++                                          struct files_struct *fsp)
++{
++      struct smb_acl_t *result;
++      int ret;
++      char *buf;
++
++      ret = glfs_fgetxattr(glfd_fd_get(fsp->fh->fd),
++                           "system.posix_acl_access", 0, 0);
++      if (ret <= 0) {
++              return NULL;
++      }
++
++      buf = alloca(ret);
++      ret = glfs_fgetxattr(glfd_fd_get(fsp->fh->fd),
++                           "system.posix_acl_access", buf, ret);
++      if (ret <= 0) {
++              return NULL;
++      }
++
++      result = gluster_to_smb_acl(buf, ret);
++
++      return result;
++}
++
++static int vfs_gluster_sys_acl_set_file(struct vfs_handle_struct *handle,
++                                      const char *name,
++                                      SMB_ACL_TYPE_T acltype,
++                                      SMB_ACL_T theacl)
++{
++      int ret;
++      char *key;
++      char *buf;
++      ssize_t size;
++
++      switch (acltype) {
++      case SMB_ACL_TYPE_ACCESS:
++              key = "system.posix_acl_access";
++              break;
++      case SMB_ACL_TYPE_DEFAULT:
++              key = "system.posix_acl_default";
++              break;
++      default:
++              errno = EINVAL;
++              return -1;
++      }
++
++      size = smb_to_gluster_acl(theacl, 0, 0);
++      buf = alloca(size);
++
++      size = smb_to_gluster_acl(theacl, buf, size);
++      if (size == -1) {
++              return -1;
++      }
++
++      ret = glfs_setxattr(handle->data, name, key, buf, size, 0);
++
++      return ret;
++}
++
++static int vfs_gluster_sys_acl_set_fd(struct vfs_handle_struct *handle,
++                                    struct files_struct *fsp,
++                                    SMB_ACL_T theacl)
++{
++      int ret;
++      char *buf;
++      ssize_t size;
++
++      size = smb_to_gluster_acl(theacl, 0, 0);
++      buf = alloca(size);
++
++      size = smb_to_gluster_acl(theacl, buf, size);
++      if (size == -1) {
++              return -1;
++      }
++
++      ret = glfs_fsetxattr(glfd_fd_get(fsp->fh->fd),
++                           "system.posix_acl_access", buf, size, 0);
++      return ret;
++}
++
++static int vfs_gluster_sys_acl_delete_def_file(struct vfs_handle_struct *handle,
++                                             const char *path)
++{
++      return glfs_removexattr(handle->data, path, "system.posix_acl_default");
++}
++
++static struct vfs_fn_pointers glusterfs_fns = {
++
++      /* Disk Operations */
++
++      .connect_fn = vfs_gluster_connect,
++      .disconnect = vfs_gluster_disconnect,
++      .disk_free = vfs_gluster_disk_free,
++      .get_quota = vfs_gluster_get_quota,
++      .set_quota = vfs_gluster_set_quota,
++      .statvfs = vfs_gluster_statvfs,
++      .fs_capabilities = vfs_gluster_fs_capabilities,
++
++      /* Directory Operations */
++
++      .opendir = vfs_gluster_opendir,
++      .fdopendir = vfs_gluster_fdopendir,
++      .readdir = vfs_gluster_readdir,
++      .seekdir = vfs_gluster_seekdir,
++      .telldir = vfs_gluster_telldir,
++      .rewind_dir = vfs_gluster_rewinddir,
++      .mkdir = vfs_gluster_mkdir,
++      .rmdir = vfs_gluster_rmdir,
++      .closedir = vfs_gluster_closedir,
++      .init_search_op = vfs_gluster_init_search_op,
++
++      /* File Operations */
++
++      .open_fn = vfs_gluster_open,
++      .create_file = NULL,
++      .close_fn = vfs_gluster_close,
++      .vfs_read = vfs_gluster_read,
++      .pread = vfs_gluster_pread,
++      .write = vfs_gluster_write,
++      .pwrite = vfs_gluster_pwrite,
++      .lseek = vfs_gluster_lseek,
++      .sendfile = vfs_gluster_sendfile,
++      .recvfile = vfs_gluster_recvfile,
++      .rename = vfs_gluster_rename,
++      .fsync = vfs_gluster_fsync,
++      .stat = vfs_gluster_stat,
++      .fstat = vfs_gluster_fstat,
++      .lstat = vfs_gluster_lstat,
++      .get_alloc_size = vfs_gluster_get_alloc_size,
++      .unlink = vfs_gluster_unlink,
++
++      .chmod = vfs_gluster_chmod,
++      .fchmod = vfs_gluster_fchmod,
++      .chown = vfs_gluster_chown,
++      .fchown = vfs_gluster_fchown,
++      .lchown = vfs_gluster_lchown,
++      .chdir = vfs_gluster_chdir,
++      .getwd = vfs_gluster_getwd,
++      .ntimes = vfs_gluster_ntimes,
++      .ftruncate = vfs_gluster_ftruncate,
++      .fallocate = vfs_gluster_fallocate,
++      .lock = vfs_gluster_lock,
++      .kernel_flock = vfs_gluster_kernel_flock,
++      .linux_setlease = vfs_gluster_linux_setlease,
++      .getlock = vfs_gluster_getlock,
++      .symlink = vfs_gluster_symlink,
++      .vfs_readlink = vfs_gluster_readlink,
++      .link = vfs_gluster_link,
++      .mknod = vfs_gluster_mknod,
++      .realpath = vfs_gluster_realpath,
++      .notify_watch = vfs_gluster_notify_watch,
++      .chflags = vfs_gluster_chflags,
++      .file_id_create = NULL,
++      .streaminfo = NULL,
++      .get_real_filename = vfs_gluster_get_real_filename,
++      .connectpath = vfs_gluster_connectpath,
++
++      .brl_lock_windows = NULL,
++      .brl_unlock_windows = NULL,
++      .brl_cancel_windows = NULL,
++      .strict_lock = NULL,
++      .strict_unlock = NULL,
++      .translate_name = NULL,
++
++      /* NT ACL Operations */
++      .fget_nt_acl = NULL,
++      .get_nt_acl = NULL,
++      .fset_nt_acl = NULL,
++
++      /* Posix ACL Operations */
++      .chmod_acl = NULL,      /* passthrough to default */
++      .fchmod_acl = NULL,     /* passthrough to default */
++
++      .sys_acl_get_entry = NULL,
++      .sys_acl_get_tag_type = NULL,
++      .sys_acl_get_permset = NULL,
++      .sys_acl_get_qualifier = NULL,
++      .sys_acl_get_file = vfs_gluster_sys_acl_get_file,
++      .sys_acl_get_fd = vfs_gluster_sys_acl_get_fd,
++      .sys_acl_clear_perms = NULL,
++      .sys_acl_add_perm = NULL,
++      .sys_acl_to_text = NULL,
++      .sys_acl_init = NULL,
++      .sys_acl_create_entry = NULL,
++      .sys_acl_set_tag_type = NULL,
++      .sys_acl_set_qualifier = NULL,
++      .sys_acl_set_permset = NULL,
++      .sys_acl_valid = NULL,
++      .sys_acl_set_file = vfs_gluster_sys_acl_set_file,
++      .sys_acl_set_fd = vfs_gluster_sys_acl_set_fd,
++      .sys_acl_delete_def_file = vfs_gluster_sys_acl_delete_def_file,
++      .sys_acl_get_perm = NULL,
++      .sys_acl_free_text = NULL,
++      .sys_acl_free_acl = NULL,
++      .sys_acl_free_qualifier = NULL,
++
++      /* EA Operations */
++      .getxattr = vfs_gluster_getxattr,
++      .lgetxattr = vfs_gluster_lgetxattr,
++      .fgetxattr = vfs_gluster_fgetxattr,
++      .listxattr = vfs_gluster_listxattr,
++      .llistxattr = vfs_gluster_llistxattr,
++      .flistxattr = vfs_gluster_flistxattr,
++      .removexattr = vfs_gluster_removexattr,
++      .lremovexattr = vfs_gluster_lremovexattr,
++      .fremovexattr = vfs_gluster_fremovexattr,
++      .setxattr = vfs_gluster_setxattr,
++      .lsetxattr = vfs_gluster_lsetxattr,
++      .fsetxattr = vfs_gluster_fsetxattr,
++
++      /* AIO Operations */
++      .aio_read = NULL,
++      .aio_write = NULL,
++      .aio_return_fn = NULL,
++      .aio_cancel = NULL,
++      .aio_error_fn = NULL,
++      .aio_fsync = NULL,
++      .aio_suspend = NULL,
++      .aio_force = vfs_gluster_aio_force,
++
++      /* Offline Operations */
++      .is_offline = vfs_gluster_is_offline,
++      .set_offline = vfs_gluster_set_offline,
++};
++
++NTSTATUS vfs_glusterfs_init(void);
++NTSTATUS vfs_glusterfs_init(void)
++{
++      return smb_register_vfs(SMB_VFS_INTERFACE_VERSION,
++                              "glusterfs", &glusterfs_fns);
++}
+diff --git a/source3/modules/wscript_build b/source3/modules/wscript_build
+index ff7163f..31c93be 100644
+--- a/source3/modules/wscript_build
++++ b/source3/modules/wscript_build
+@@ -50,6 +50,7 @@ VFS_SCANNEDONLY_SRC = 'vfs_scannedonly.c'
+ VFS_CROSSRENAME_SRC = 'vfs_crossrename.c'
+ VFS_LINUX_XFS_SGID_SRC = 'vfs_linux_xfs_sgid.c'
+ VFS_TIME_AUDIT_SRC = 'vfs_time_audit.c'
++VFS_GLUSTERFS_SRC = 'vfs_glusterfs.c'
+ bld.SAMBA3_SUBSYSTEM('NFS4_ACLS',
+@@ -408,6 +409,14 @@ bld.SAMBA3_MODULE('vfs_time_audit',
+                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_time_audit'),
+                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_time_audit'))
++bld.SAMBA3_MODULE('vfs_glusterfs',
++                  subsystem='vfs',
++                  source=VFS_GLUSTERFS_SRC,
++                  deps='samba-util gfapi',
++                  init_function='',
++                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_glusterfs'),
++                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_glusterfs'),
++                  allow_undefined_symbols=False)
+ CHARSET_WEIRD_SRC = 'weird.c'
+diff --git a/source3/wscript b/source3/wscript
+index bcc6ce1..7e34db5 100644
+--- a/source3/wscript
++++ b/source3/wscript
+@@ -60,6 +60,7 @@ def set_options(opt):
+     opt.SAMBA3_ADD_OPTION('automount')
+     opt.SAMBA3_ADD_OPTION('aio-support')
+     opt.SAMBA3_ADD_OPTION('profiling-data')
++    opt.SAMBA3_ADD_OPTION('glusterfs', with_name="enable", without_name="disable", default=True)
+     opt.SAMBA3_ADD_OPTION('cluster-support')
+@@ -1701,6 +1702,24 @@ main() {
+         conf.undefine('CLUSTER_SUPPORT')
++    #
++    # Checking for GlusterFS
++    #
++    if Options.options.with_glusterfs:
++        conf.check_cfg(package='glusterfs-api', args='"glusterfs-api >= 4" --cflags --libs',
++                       msg='Checking for glusterfs-api >= 4', uselib_store="GFAPI")
++        conf.CHECK_HEADERS('api/glfs.h', lib='gfapi')
++        conf.CHECK_LIB('gfapi', shlib=True)
++
++        if conf.CONFIG_SET('HAVE_API_GLFS_H'):
++            conf.DEFINE('HAVE_GLUSTERFS', '1')
++        else:
++            conf.SET_TARGET_TYPE('gfapi', 'EMPTY')
++            conf.undefine('HAVE_GLUSTERFS')
++    else:
++        conf.SET_TARGET_TYPE('gfapi', 'EMPTY')
++        conf.undefine('HAVE_GLUSTERFS')
++
+     conf.CHECK_CODE('__attribute__((destructor)) static void cleanup(void) { }',
+                   'HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR',
+@@ -1794,6 +1813,9 @@ main() {
+     if conf.CONFIG_SET('HAVE_GPFS'):
+       default_shared_modules.extend(TO_LIST('vfs_gpfs vfs_gpfs_hsm_notify'))
++    if conf.CONFIG_SET('HAVE_GLUSTERFS'):
++        default_shared_modules.extend(TO_LIST('vfs_glusterfs'))
++
+     explicit_shared_modules = TO_LIST(Options.options.shared_modules, delimiter=',')
+     explicit_static_modules = TO_LIST(Options.options.static_modules, delimiter=',')
+-- 
+1.9.3
+
+
+From e2b70ae1e9b072173de2b7d6140381b910d436b4 Mon Sep 17 00:00:00 2001
+From: Raghavendra Talur <rtalur@redhat.com>
+Date: Thu, 20 Jun 2013 17:58:15 -0700
+Subject: [PATCH 2/9] PATCHSET13: vfs_glusterfs: New file creation fix.
+
+When a new document is created in explorer, a check for file_exist is made.
+vfs_gluster_get_real_filename was returning 0 even when the file did not
+exist.
+---
+ source3/modules/vfs_glusterfs.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index 4beac1d..3752940 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -839,8 +839,10 @@ static int vfs_gluster_get_real_filename(struct vfs_handle_struct *handle,
+                "user.glusterfs.get_real_filename:%s", name);
+       ret = glfs_getxattr(handle->data, path, key_buf, val_buf, NAME_MAX + 1);
+-      if (ret == -1 && errno == ENODATA) {
+-              errno = EOPNOTSUPP;
++      if (ret == -1) {
++              if (errno == ENODATA) {
++                      errno = EOPNOTSUPP;
++              }
+               return -1;
+       }
+-- 
+1.9.3
+
+
+From e963ec42b17cdc7369e4b79387447bb3ddc99d2a Mon Sep 17 00:00:00 2001
+From: susant <spalai@redhat.com>
+Date: Wed, 7 Aug 2013 01:00:31 -0500
+Subject: [PATCH 3/9] PATCHSET13: vfs_glusterfs: Volume capacity reported to
+ Windows is incorrect
+
+VFS plugin was sending the actual size of the volume instead of the
+total number of block units because of which windows was getting the
+wrong volume capacity.
+
+Signed-off-by: susant <spalai@redhat.com>
+Reviewed-by: Anand Avati <avati@redhat.com>
+---
+ source3/modules/vfs_glusterfs.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index 3752940..1502776 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -297,7 +297,6 @@ vfs_gluster_disk_free(struct vfs_handle_struct *handle, const char *path,
+                     uint64_t *dsize_p)
+ {
+       struct statvfs statvfs = { 0, };
+-      uint64_t dfree = 0;
+       int ret;
+       ret = glfs_statvfs(handle->data, path, &statvfs);
+@@ -307,19 +306,17 @@ vfs_gluster_disk_free(struct vfs_handle_struct *handle, const char *path,
+               return -1;
+       }
+-      dfree = statvfs.f_bsize * statvfs.f_bavail;
+-
+       if (bsize_p) {
+-              *bsize_p = statvfs.f_bsize;
++              *bsize_p = (uint64_t)statvfs.f_bsize; /* Block size */
+       }
+       if (dfree_p) {
+-              *dfree_p = dfree;
++              *dfree_p = (uint64_t)statvfs.f_bavail; /* Available Block units */
+       }
+       if (dsize_p) {
+-              *dsize_p = statvfs.f_bsize * statvfs.f_blocks;
++              *dsize_p = (uint64_t)statvfs.f_blocks; /* Total Block units */
+       }
+-      return dfree;
++      return (uint64_t)statvfs.f_bavail;
+ }
+ static int
+-- 
+1.9.3
+
+
+From 1d41227866ede7ae14857105abd6b322e8e41525 Mon Sep 17 00:00:00 2001
+From: Anand Avati <avati@redhat.com>
+Date: Mon, 12 Aug 2013 14:59:24 -0500
+Subject: [PATCH 4/9] PATCHSET13: vfs_glusterfs: Implement proper
+ mashalling/unmarshalling of ACLs
+
+Use the primitives available in Samba byteorder.h for implementing
+proper (un)marshalling of ACL xattrs.
+
+Signed-off-by: Anand Avati <avati@redhat.com>
+Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+Tested-by: "Jose A. Rivera" <jarrpa@redhat.com>
+---
+ source3/modules/vfs_glusterfs.c | 154 +++++++++++++++++++++++++++++-----------
+ 1 file changed, 112 insertions(+), 42 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index 1502776..1b81d06 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -963,13 +963,36 @@ static int vfs_gluster_set_offline(struct vfs_handle_struct *handle,
+       return -1;
+ }
+-/* Posix ACL Operations */
++/*
++  Gluster ACL Format:
++
++  Size = 4 (header) + N * 8 (entry)
++
++  Offset  Size    Field (Little Endian)
++  -------------------------------------
++  0-3     4-byte  Version
++
++  4-5     2-byte  Entry-1 tag
++  6-7     2-byte  Entry-1 perm
++  8-11    4-byte  Entry-1 id
++
++  12-13   2-byte  Entry-2 tag
++  14-15   2-byte  Entry-2 perm
++  16-19   4-byte  Entry-2 id
++  ...
++
++ */
++
++/* header version */
+ #define GLUSTER_ACL_VERSION 2
++
++/* perm bits */
+ #define GLUSTER_ACL_READ    0x04
+ #define GLUSTER_ACL_WRITE   0x02
+ #define GLUSTER_ACL_EXECUTE 0x01
++/* tag values */
+ #define GLUSTER_ACL_UNDEFINED_TAG  0x00
+ #define GLUSTER_ACL_USER_OBJ       0x01
+ #define GLUSTER_ACL_USER           0x02
+@@ -980,57 +1003,48 @@ static int vfs_gluster_set_offline(struct vfs_handle_struct *handle,
+ #define GLUSTER_ACL_UNDEFINED_ID  (-1)
+-struct gluster_ace {
+-      uint16_t tag;
+-      uint16_t perm;
+-      uint32_t id;
+-};
+-
+-struct gluster_acl_header {
+-      uint32_t version;
+-      struct gluster_ace entries[];
+-};
++#define GLUSTER_ACL_HEADER_SIZE    4
++#define GLUSTER_ACL_ENTRY_SIZE     8
+ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size)
+ {
+       int count;
+       size_t size;
+-      struct gluster_ace *ace;
+       struct smb_acl_entry *smb_ace;
+-      struct gluster_acl_header *hdr;
+       struct smb_acl_t *result;
+       int i;
++      int offset;
+       uint16_t tag;
+       uint16_t perm;
+       uint32_t id;
+       size = xattr_size;
+-      if (size < sizeof(*hdr)) {
+-              /* ACL should be at least as big as the header */
++      if (size < GLUSTER_ACL_HEADER_SIZE) {
++              /* ACL should be at least as big as the header (4 bytes) */
+               errno = EINVAL;
+               return NULL;
+       }
+-      size -= sizeof(*hdr);
++      size -= GLUSTER_ACL_HEADER_SIZE; /* size of header = 4 bytes */
+-      if (size % sizeof(*ace)) {
++      if (size % GLUSTER_ACL_ENTRY_SIZE) {
+               /* Size of entries must strictly be a multiple of
+-                 size of an ACE
++                 size of an ACE (8 bytes)
+               */
+               errno = EINVAL;
+               return NULL;
+       }
+-      count = size / sizeof(*ace);
+-
+-      hdr = (void *)buf;
++      count = size / GLUSTER_ACL_ENTRY_SIZE;
+-      if (ntohl(hdr->version) != GLUSTER_ACL_VERSION) {
++      /* Version is the first 4 bytes of the ACL */
++      if (IVAL(buf, 0) != GLUSTER_ACL_VERSION) {
+               DEBUG(0, ("Unknown gluster ACL version: %d\n",
+-                        ntohl(hdr->version)));
++                        IVAL(buf, 0)));
+               return NULL;
+       }
++      offset = GLUSTER_ACL_HEADER_SIZE;
+       result = SMB_MALLOC(sizeof(struct smb_acl_t) + (sizeof(struct smb_acl_entry) * count));
+       if (!result) {
+@@ -1041,10 +1055,19 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size)
+       result->count = count;
+       smb_ace = result->acl;
+-      ace = hdr->entries;
+       for (i = 0; i < count; i++) {
+-              tag = ntohs(ace->tag);
++              /* TAG is the first 2 bytes of an entry */
++              tag = SVAL(buf, offset);
++              offset += 2;
++
++              /* PERM is the next 2 bytes of an entry */
++              perm = SVAL(buf, offset);
++              offset += 2;
++
++              /* ID is the last 4 bytes of an entry */
++              id = IVAL(buf, offset);
++              offset += 4;
+               switch(tag) {
+               case GLUSTER_ACL_USER:
+@@ -1070,7 +1093,6 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size)
+                       return NULL;
+               }
+-              id = ntohl(ace->id);
+               switch(smb_ace->a_type) {
+               case SMB_ACL_USER:
+@@ -1083,8 +1105,6 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size)
+                       break;
+               }
+-              perm = ntohs(ace->perm);
+-
+               smb_ace->a_perm = 0;
+               smb_ace->a_perm |=
+                       ((perm & GLUSTER_ACL_READ) ? SMB_ACL_READ : 0);
+@@ -1093,28 +1113,61 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size)
+               smb_ace->a_perm |=
+                       ((perm & GLUSTER_ACL_EXECUTE) ? SMB_ACL_EXECUTE : 0);
+-              ace++;
+               smb_ace++;
+       }
+       return result;
+ }
++
++static int gluster_ace_cmp(const void *left, const void *right)
++{
++      int ret = 0;
++      uint16_t tag_left, tag_right;
++      uint32_t id_left, id_right;
++
++      /*
++        Sorting precedence:
++
++         - Smaller TAG values must be earlier.
++
++         - Within same TAG, smaller identifiers must be earlier, E.g:
++           UID 0 entry must be earlier than UID 200
++           GID 17 entry must be earlier than GID 19
++      */
++
++      /* TAG is the first element in the entry */
++      tag_left = SVAL(left, 0);
++      tag_right = SVAL(right, 0);
++
++      ret = (tag_left - tag_right);
++      if (!ret) {
++              /* ID is the third element in the entry, after two short
++                 integers (tag and perm), i.e at offset 4.
++              */
++              id_left = IVAL(left, 4);
++              id_right = IVAL(right, 4);
++              ret = id_left - id_right;
++      }
++
++      return ret;
++}
++
++
+ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len)
+ {
+       ssize_t size;
+-      struct gluster_ace *ace;
+       struct smb_acl_entry *smb_ace;
+-      struct gluster_acl_header *hdr;
+       int i;
+       int count;
+       uint16_t tag;
+       uint16_t perm;
+       uint32_t id;
++      int offset;
+       count = theacl->count;
+-      size = sizeof(*hdr) + (count * sizeof(*ace));
++      size = GLUSTER_ACL_HEADER_SIZE + (count * GLUSTER_ACL_ENTRY_SIZE);
+       if (!buf) {
+               return size;
+       }
+@@ -1124,13 +1177,14 @@ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len)
+               return -1;
+       }
+-      hdr = (void *)buf;
+-      ace = hdr->entries;
+       smb_ace = theacl->acl;
+-      hdr->version = htonl(GLUSTER_ACL_VERSION);
++      /* Version is the first 4 bytes of the ACL */
++      SIVAL(buf, 0, GLUSTER_ACL_VERSION);
++      offset = GLUSTER_ACL_HEADER_SIZE;
+       for (i = 0; i < count; i++) {
++              /* Calculate tag */
+               switch(smb_ace->a_type) {
+               case SMB_ACL_USER:
+                       tag = GLUSTER_ACL_USER;
+@@ -1157,8 +1211,8 @@ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len)
+                       return -1;
+               }
+-              ace->tag = ntohs(tag);
++              /* Calculate id */
+               switch(smb_ace->a_type) {
+               case SMB_ACL_USER:
+                       id = smb_ace->uid;
+@@ -1171,20 +1225,36 @@ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len)
+                       break;
+               }
+-              ace->id = ntohl(id);
++              /* Calculate perm */
++              perm = 0;
+-              ace->perm = 0;
+-              ace->perm |=
++              perm |=
+                       ((smb_ace->a_perm & SMB_ACL_READ) ? GLUSTER_ACL_READ : 0);
+-              ace->perm |=
++              perm |=
+                       ((smb_ace->a_perm & SMB_ACL_WRITE) ? GLUSTER_ACL_WRITE : 0);
+-              ace->perm |=
++              perm |=
+                       ((smb_ace->a_perm & SMB_ACL_EXECUTE) ? GLUSTER_ACL_EXECUTE : 0);
+-              ace++;
++
++              /* TAG is the first 2 bytes of an entry */
++              SSVAL(buf, offset, tag);
++              offset += 2;
++
++              /* PERM is the next 2 bytes of an entry */
++              SSVAL(buf, offset, perm);
++              offset += 2;
++
++              /* ID is the last 4 bytes of an entry */
++              SIVAL(buf, offset, id);
++              offset += 4;
++
+               smb_ace++;
+       }
++      /* Skip the header, sort @count number of 8-byte entries */
++      qsort(buf+GLUSTER_ACL_HEADER_SIZE, count, GLUSTER_ACL_ENTRY_SIZE,
++            gluster_ace_cmp);
++
+       return size;
+ }
+-- 
+1.9.3
+
+
+From 26673935299da8ce830ff9d0ea5df18f52092092 Mon Sep 17 00:00:00 2001
+From: "Christopher R. Hertel" <crh@redhat.com>
+Date: Thu, 29 Aug 2013 11:01:24 -0500
+Subject: [PATCH 5/9] PATCHSET13: vfs_glusterfs: Fix excessive debug output
+ from vfs_gluster_open().
+
+The vfs_gluster_open() function generates a debug message (at level 0)
+for every failed attempt to open a pathname.  This includes cases in
+which attempts are made to open a directory as a file (those attempts
+are retried calling vfs_gluster_opendir()).  The result is that the log
+file fills with messages about failed attempts to open directories,
+because they are directories.  This patch ensures that failed attempts
+to open directories as files are logged at log level 4, not 0.  In
+addition, other failed open attempts are logged at level 1, not 0.
+
+Signed-off-by: Christopher R. Hertel <crh@redhat.com>
+Reviewed-by : Susant Palai <spalai@redhat.com>
+Reviewed-by : Raghavendra Talur <rtalur@redhat.com>
+Reviewed-by : Jose A. Rivera <jarrpa@redhat.com>
+---
+ source3/modules/vfs_glusterfs.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index 1b81d06..b92c7fd 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -488,11 +488,8 @@ static int vfs_gluster_open(struct vfs_handle_struct *handle,
+       }
+       if (glfd == NULL) {
+-              DEBUG(0, ("glfs_{open[dir],creat}(%s) failed: %s\n",
+-                        smb_fname->base_name, strerror(errno)));
+               return -1;
+       }
+-
+       return glfd_fd_store(glfd);
+ }
+-- 
+1.9.3
+
+
+From f396be725dd8e8f93b0eed1b23fcf0a0f61303a9 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Mon, 4 Nov 2013 12:32:05 +0100
+Subject: [PATCH 6/9] PATCHSET13: vfs: Fix some build warnings in glusterfs.
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/modules/vfs_glusterfs.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index b92c7fd..4b8da4a 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -1262,7 +1262,7 @@ static SMB_ACL_T vfs_gluster_sys_acl_get_file(struct vfs_handle_struct *handle,
+ {
+       struct smb_acl_t *result;
+       char *buf;
+-      char *key;
++      const char *key;
+       ssize_t ret;
+       switch (type) {
+@@ -1324,7 +1324,7 @@ static int vfs_gluster_sys_acl_set_file(struct vfs_handle_struct *handle,
+                                       SMB_ACL_T theacl)
+ {
+       int ret;
+-      char *key;
++      const char *key;
+       char *buf;
+       ssize_t size;
+-- 
+1.9.3
+
+
+From 2b136f8999e171d15736d0a532353799b7251ae2 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Fri, 15 Nov 2013 17:02:19 +0100
+Subject: [PATCH 7/9] PATCHSET13: s3-vfs: Make glfs_set_preopened() static.
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+---
+ source3/modules/vfs_glusterfs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index 4b8da4a..ef505a3 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -141,7 +141,7 @@ static struct glfs_preopened {
+ } *glfs_preopened;
+-int glfs_set_preopened(const char *volume, glfs_t *fs)
++static int glfs_set_preopened(const char *volume, glfs_t *fs)
+ {
+       struct glfs_preopened *entry = NULL;
+-- 
+1.9.3
+
+
+From 9b2c8854a5a27e4fdbe5191abf174d3152b0edfd Mon Sep 17 00:00:00 2001
+From: Poornima Gurusiddaiah <pgurusid@redhat.com>
+Date: Sun, 24 Nov 2013 21:37:53 +0000
+Subject: [PATCH 8/9] PATCHSET13: vfs_glusterfs: Enable per client log file
+
+In Samba configuration file, one of the options of gluster type is
+log file, the value of this option was not allowed to contain any
+variables, as a result all the clients would have a single log file,
+which complicated debugging.
+In this patch, variable substitution is performed for gluster log file.
+Hence allowing user to customise the gluster log file name.
+
+Signed-off-by: Poornima Gurusiddaiah <pgurusid@redhat.com>
+Reviewed-by: Ira Cooper <ira@samba.org>
+---
+ source3/modules/vfs_glusterfs.c | 41 ++++++++++++++++++++++-------------------
+ 1 file changed, 22 insertions(+), 19 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index ef505a3..3757968 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -205,12 +205,12 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle,
+ {
+       const char *volfile_server;
+       const char *volume;
+-      const char *logfile;
++      char *logfile;
+       int loglevel;
+       glfs_t *fs;
+-      int ret;
++      int ret = 0;
+-      logfile = lp_parm_const_string(SNUM(handle->conn), "glusterfs",
++      logfile = lp_parm_talloc_string(SNUM(handle->conn), "glusterfs",
+                                      "logfile", NULL);
+       loglevel = lp_parm_int(SNUM(handle->conn), "glusterfs", "loglevel", -1);
+@@ -229,57 +229,60 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle,
+       fs = glfs_find_preopened(volume);
+       if (fs) {
+-              goto found;
++              goto done;
+       }
+       fs = glfs_new(volume);
+       if (fs == NULL) {
+-              return -1;
++              ret = -1;
++              goto done;
+       }
+       ret = glfs_set_volfile_server(fs, "tcp", volfile_server, 0);
+       if (ret < 0) {
+               DEBUG(0, ("Failed to set volfile_server %s\n", volfile_server));
+-              glfs_fini(fs);
+-              return -1;
++              goto done;
+       }
+       ret = glfs_set_xlator_option(fs, "*-md-cache", "cache-posix-acl",
+                                    "true");
+       if (ret < 0) {
+               DEBUG(0, ("%s: Failed to set xlator options\n", volume));
+-              glfs_fini(fs);
+-              return -1;
++              goto done;
+       }
+       ret = glfs_set_logging(fs, logfile, loglevel);
+       if (ret < 0) {
+               DEBUG(0, ("%s: Failed to set logfile %s loglevel %d\n",
+                         volume, logfile, loglevel));
+-              glfs_fini(fs);
+-              return -1;
++              goto done;
+       }
+       ret = glfs_init(fs);
+       if (ret < 0) {
+               DEBUG(0, ("%s: Failed to initialize volume (%s)\n",
+                         volume, strerror(errno)));
+-              glfs_fini(fs);
+-              return -1;
++              goto done;
+       }
+       ret = glfs_set_preopened(volume, fs);
+       if (ret < 0) {
+               DEBUG(0, ("%s: Failed to register volume (%s)\n",
+                         volume, strerror(errno)));
+-              glfs_fini(fs);
++              goto done;
++      }
++done:
++      talloc_free(logfile);
++      if (ret < 0) {
++              if (fs)
++                      glfs_fini(fs);
+               return -1;
++      } else {
++              DEBUG(0, ("%s: Initialized volume from server %s\n",
++                         volume, volfile_server));
++              handle->data = fs;
++              return 0;
+       }
+-found:
+-      DEBUG(0, ("%s: Initialized volume from server %s\n",
+-                volume, volfile_server));
+-      handle->data = fs;
+-      return 0;
+ }
+ static void vfs_gluster_disconnect(struct vfs_handle_struct *handle)
+-- 
+1.9.3
+
+
+From 8577c573dcd44e26579a6594b83a6d582faef14c Mon Sep 17 00:00:00 2001
+From: Niels de Vos <ndevos@redhat.com>
+Date: Fri, 10 Jan 2014 16:26:18 +0100
+Subject: [PATCH 9/9] PATCHSET13: vfs/glusterfs: in case atime is not passed,
+ set it to the current atime
+
+The Linux CIFS client does not pass an updated atime when a write() is
+done. This causes the vfs/glusterfs module to set the atime to -1 on the
+Gluster backend, resulting in an atime far in the future (year 2106).
+
+Signed-off-by: Niels de Vos <ndevos@redhat.com>
+Reviewed-by: Ira Cooper <ira@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+
+Autobuild-User(master): Jeremy Allison <jra@samba.org>
+Autobuild-Date(master): Wed Jan 15 21:31:30 CET 2014 on sn-devel-104
+---
+ source3/modules/vfs_glusterfs.c | 26 ++++++++++++++++++++++----
+ 1 file changed, 22 insertions(+), 4 deletions(-)
+
+diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
+index 3757968..24f80dd 100644
+--- a/source3/modules/vfs_glusterfs.c
++++ b/source3/modules/vfs_glusterfs.c
+@@ -675,10 +675,28 @@ static int vfs_gluster_ntimes(struct vfs_handle_struct *handle,
+ {
+       struct timespec times[2];
+-      times[0].tv_sec = ft->atime.tv_sec;
+-      times[0].tv_nsec = ft->atime.tv_nsec;
+-      times[1].tv_sec = ft->mtime.tv_sec;
+-      times[1].tv_nsec = ft->mtime.tv_nsec;
++      if (null_timespec(ft->atime)) {
++              times[0].tv_sec = smb_fname->st.st_ex_atime.tv_sec;
++              times[0].tv_nsec = smb_fname->st.st_ex_atime.tv_nsec;
++      } else {
++              times[0].tv_sec = ft->atime.tv_sec;
++              times[0].tv_nsec = ft->atime.tv_nsec;
++      }
++
++      if (null_timespec(ft->mtime)) {
++              times[1].tv_sec = smb_fname->st.st_ex_mtime.tv_sec;
++              times[1].tv_nsec = smb_fname->st.st_ex_mtime.tv_nsec;
++      } else {
++              times[1].tv_sec = ft->mtime.tv_sec;
++              times[1].tv_nsec = ft->mtime.tv_nsec;
++      }
++
++      if ((timespec_compare(&times[0],
++                            &smb_fname->st.st_ex_atime) == 0) &&
++          (timespec_compare(&times[1],
++                            &smb_fname->st.st_ex_mtime) == 0)) {
++              return 0;
++      }
+       return glfs_utimens(handle->data, smb_fname->base_name, times);
+ }
+-- 
+1.9.3
+
diff --git a/src/patches/samba/samba-3.6.23-libsmbclient.patch b/src/patches/samba/samba-3.6.23-libsmbclient.patch
new file mode 100644 (file)
index 0000000..61107c5
--- /dev/null
@@ -0,0 +1,36 @@
+From b2b00b1d7871f7557fe7e8f616fa46a8e5ebd298 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 28 May 2014 16:02:15 +0200
+Subject: [PATCH] PATCHSET10: s3-libsmbclient: Always initialize globals.
+
+This fixes cases where we dereference NULL pointers of globals which
+were not initialized.
+---
+ source3/libsmb/libsmb_context.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c
+index 6c20d65..888c2ef 100644
+--- a/source3/libsmb/libsmb_context.c
++++ b/source3/libsmb/libsmb_context.c
+@@ -76,7 +76,7 @@ SMBC_module_init(void * punused)
+          * defaults ...
+          */
+-        if (!lp_load(get_dyn_CONFIGFILE(), True, False, False, False)) {
++        if (!lp_load(get_dyn_CONFIGFILE(), True, False, False, True)) {
+             DEBUG(5, ("Could not load config file: %s\n",
+                       get_dyn_CONFIGFILE()));
+         } else if (home) {
+@@ -89,7 +89,7 @@ SMBC_module_init(void * punused)
+             if (asprintf(&conf,
+                          "%s/.smb/smb.conf.append",
+                          home) > 0) {
+-                if (!lp_load(conf, True, False, False, False)) {
++                if (!lp_load(conf, True, False, False, True)) {
+                     DEBUG(10,
+                           ("Could not append config file: "
+                            "%s\n",
+-- 
+1.9.3
+
diff --git a/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch b/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch
new file mode 100644 (file)
index 0000000..ee27bd4
--- /dev/null
@@ -0,0 +1,118 @@
+From 3432aafbf86b4d3a559838d81b3ebc039e72a412 Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Tue, 10 Jun 2014 14:41:45 -0700
+Subject: [PATCH 1/2] s3: smbd - SMB[2|3]. Ensure a \ or / can't be found
+ anywhere in a search path, not just at the start.
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+---
+ source3/smbd/smb2_find.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/source3/smbd/smb2_find.c b/source3/smbd/smb2_find.c
+index 59e5b66..b0ab7a8 100644
+--- a/source3/smbd/smb2_find.c
++++ b/source3/smbd/smb2_find.c
+@@ -255,11 +255,11 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx,
+               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_INVALID);
+               return tevent_req_post(req, ev);
+       }
+-      if (strcmp(in_file_name, "\\") == 0) {
++      if (strchr_m(in_file_name, '\\') != NULL) {
+               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_INVALID);
+               return tevent_req_post(req, ev);
+       }
+-      if (strcmp(in_file_name, "/") == 0) {
++      if (strchr_m(in_file_name, '/') != NULL) {
+               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_INVALID);
+               return tevent_req_post(req, ev);
+       }
+-- 
+1.9.3
+
+
+From 190d0f39bb400a373c8f4d6847e2980c0df8da2b Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Tue, 10 Jun 2014 15:58:15 -0700
+Subject: [PATCH 2/2] s3: smbd : SMB2 - fix SMB2_SEARCH when searching non
+ wildcard string with a case-canonicalized share.
+
+We need to go through filename_convert() in order for the filename
+canonicalization to be done on a non-wildcard search string (as is
+done in the SMB1 findfirst code path).
+
+Fixes Bug #10650 - "case sensitive = True" option doesn't work with "max protocol = SMB2" or higher in large directories.
+
+https://bugzilla.samba.org/show_bug.cgi?id=10650
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+---
+ source3/smbd/smb2_find.c | 38 +++++++++++++++++++++++++++++++++++---
+ 1 file changed, 35 insertions(+), 3 deletions(-)
+
+diff --git a/source3/smbd/smb2_find.c b/source3/smbd/smb2_find.c
+index b0ab7a8..6fe6545 100644
+--- a/source3/smbd/smb2_find.c
++++ b/source3/smbd/smb2_find.c
+@@ -229,6 +229,7 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx,
+       uint32_t dirtype = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY;
+       bool dont_descend = false;
+       bool ask_sharemode = true;
++      bool wcard_has_wild;
+       req = tevent_req_create(mem_ctx, &state,
+                               struct smbd_smb2_find_state);
+@@ -303,16 +304,47 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx,
+               dptr_CloseDir(fsp);
+       }
++      wcard_has_wild = ms_has_wild(in_file_name);
++
++      /* Ensure we've canonicalized any search path if not a wildcard. */
++      if (!wcard_has_wild) {
++              struct smb_filename *smb_fname = NULL;
++              const char *fullpath;
++
++              if (ISDOT(fsp->fsp_name->base_name)) {
++                      fullpath = in_file_name;
++              } else {
++                      fullpath = talloc_asprintf(state,
++                                      "%s/%s",
++                                      fsp->fsp_name->base_name,
++                                      in_file_name);
++              }
++              if (tevent_req_nomem(fullpath, req)) {
++                      return tevent_req_post(req, ev);
++              }
++              status = filename_convert(state,
++                              conn,
++                              false, /* Not a DFS path. */
++                              fullpath,
++                              UCF_SAVE_LCOMP | UCF_ALWAYS_ALLOW_WCARD_LCOMP,
++                              &wcard_has_wild,
++                              &smb_fname);
++
++              if (!NT_STATUS_IS_OK(status)) {
++                      tevent_req_nterror(req, status);
++                      return tevent_req_post(req, ev);
++              }
++
++              in_file_name = smb_fname->original_lcomp;
++      }
++
+       if (fsp->dptr == NULL) {
+-              bool wcard_has_wild;
+               if (!(fsp->access_mask & SEC_DIR_LIST)) {
+                       tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
+                       return tevent_req_post(req, ev);
+               }
+-              wcard_has_wild = ms_has_wild(in_file_name);
+-
+               status = dptr_create(conn,
+                                    fsp,
+                                    fsp->fsp_name->base_name,
+-- 
+1.9.3
+
diff --git a/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch b/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch
new file mode 100644 (file)
index 0000000..2b6ce6a
--- /dev/null
@@ -0,0 +1,39 @@
+From ce2b7dad823e3af00884bc0c75851eec7445ec88 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Mon, 31 Oct 2016 12:25:35 +0100
+Subject: [PATCH] s3-libsmb Allow SESSION KEY setup without signing
+
+This is not supported by NetApp or EMC NAS systems. They do not
+implement the protocol correctly. So work around their broken
+implementations.
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/libsmb/ntlmssp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/source3/libsmb/ntlmssp.c b/source3/libsmb/ntlmssp.c
+index 7e58990..446d02d 100644
+--- a/source3/libsmb/ntlmssp.c
++++ b/source3/libsmb/ntlmssp.c
+@@ -206,7 +206,7 @@ void ntlmssp_want_feature_list(struct ntlmssp_state *ntlmssp_state, char *featur
+        * also add  NTLMSSP_NEGOTIATE_SEAL here. JRA.
+        */
+       if (in_list("NTLMSSP_FEATURE_SESSION_KEY", feature_list, True)) {
+-              ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN;
++              ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SIGN;
+       }
+       if (in_list("NTLMSSP_FEATURE_SIGN", feature_list, True)) {
+               ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN;
+@@ -231,7 +231,7 @@ void ntlmssp_want_feature(struct ntlmssp_state *ntlmssp_state, uint32_t feature)
+ {
+       /* As per JRA's comment above */
+       if (feature & NTLMSSP_FEATURE_SESSION_KEY) {
+-              ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN;
++              ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SIGN;
+       }
+       if (feature & NTLMSSP_FEATURE_SIGN) {
+               ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN;
+-- 
+2.10.1
+
diff --git a/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch b/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch
new file mode 100644 (file)
index 0000000..3953b29
--- /dev/null
@@ -0,0 +1,53 @@
+From e5d6a3914151217e1487d9a444c2ced4cfd89491 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Sat, 19 Jan 2013 01:37:29 +0100
+Subject: [PATCH 19/20] PATCHSET9: s3-spoolss: Make it easier to manipulate the
+ returned OSVersion at runtime.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/rpc_server/spoolss/srv_spoolss_nt.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+index 8372c43..0c4b582 100644
+--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+@@ -2352,9 +2352,13 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *mem_ctx,
+               enum ndr_err_code ndr_err;
+               struct spoolss_OSVersion os;
+-              os.major                = 5;    /* Windows 2000 == 5.0 */
+-              os.minor                = 0;
+-              os.build                = 2195; /* build */
++              os.major                = lp_parm_int(GLOBAL_SECTION_SNUM,
++                                                    "spoolss", "os_major", 5);
++                                                    /* Windows 2000 == 5.0 */
++              os.minor                = lp_parm_int(GLOBAL_SECTION_SNUM,
++                                                    "spoolss", "os_minor", 0);
++              os.build                = lp_parm_int(GLOBAL_SECTION_SNUM,
++                                                    "spoolss", "os_build", 2195);
+               os.extra_string         = "";   /* leave extra string empty */
+               ndr_err = ndr_push_struct_blob(&blob, mem_ctx, &os,
+@@ -2363,6 +2367,10 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *mem_ctx,
+                       return WERR_GENERAL_FAILURE;
+               }
++              if (DEBUGLEVEL >= 10) {
++                      NDR_PRINT_DEBUG(spoolss_OSVersion, &os);
++              }
++
+               *type = REG_BINARY;
+               data->binary = blob;
+-- 
+1.9.0
+
diff --git a/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch b/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch
new file mode 100644 (file)
index 0000000..7175ca8
--- /dev/null
@@ -0,0 +1,147 @@
+commit e8f6a7df1b5ae7f7275ac59b8c21b82de1922c3b
+Author:     Jeremy Allison <jra@samba.org>
+AuthorDate: Fri Aug 16 13:49:39 2013 -0700
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:50:28 2014 +0100
+
+    Add new "timeout" command and -t option to smbclient to set the per-operation timeout.
+    
+    This is needed as once SMB3 encryption is selected the server
+    response time can be very slow when requesting large numbers
+    (256) of large encrypted packets (1MB) from a Windows 2012
+    virtual machine. This allows clients to tune their allowable
+    wait time.
+    
+    Signed-off-by: Jeremy Allison <jra@samba.org>
+    Reviewed-by: Michael Adam <obnox@samba.org>
+    (cherry picked from commit d9c88a56dc451be09e8c9fc9aa8857e312fcb444)
+---
+ source3/client/client.c | 44 ++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 40 insertions(+), 4 deletions(-)
+
+diff --git a/source3/client/client.c b/source3/client/client.c
+index f6e42f6..aa16b14 100644
+--- a/source3/client/client.c
++++ b/source3/client/client.c
+@@ -54,7 +54,12 @@ static bool grepable = false;
+ static char *cmdstr = NULL;
+ const char *cmd_ptr = NULL;
++/* 30 second timeout on most commands */
++#define CLIENT_TIMEOUT (30*1000)
++#define SHORT_TIMEOUT (5*1000)
++
+ static int io_bufsize = 524288;
++static int io_timeout = (CLIENT_TIMEOUT/1000); /* Per operation timeout (in seconds). */
+ static int name_type = 0x20;
+ static int max_protocol = PROTOCOL_NT1;
+@@ -64,10 +69,6 @@ static int cmd_help(void);
+ #define CREATE_ACCESS_READ READ_CONTROL_ACCESS
+-/* 30 second timeout on most commands */
+-#define CLIENT_TIMEOUT (30*1000)
+-#define SHORT_TIMEOUT (5*1000)
+-
+ /* value for unused fid field in trans2 secondary request */
+ #define FID_UNUSED (0xFFFF)
+@@ -4264,6 +4265,31 @@ int cmd_iosize(void)
+ }
+ /****************************************************************************
++ timeout command
++***************************************************************************/
++
++static int cmd_timeout(void)
++{
++      TALLOC_CTX *ctx = talloc_tos();
++      char *buf;
++
++      if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) {
++              unsigned int old_timeout = cli_set_timeout(cli, 0);
++              cli_set_timeout(cli, old_timeout);
++              d_printf("timeout <n> (per-operation timeout "
++                      "in seconds - currently %u).\n",
++                      old_timeout/1000);
++              return 1;
++      }
++
++      io_timeout = strtol(buf,NULL,0);
++      cli_set_timeout(cli, io_timeout*1000);
++      d_printf("io_timeout per operation is now %d\n", io_timeout);
++      return 0;
++}
++
++
++/****************************************************************************
+ history
+ ****************************************************************************/
+ static int cmd_history(void)
+@@ -4369,6 +4395,7 @@ static struct {
+   {"symlink",cmd_symlink,"<oldname> <newname> create a UNIX symlink",{COMPL_REMOTE,COMPL_REMOTE}},
+   {"tar",cmd_tar,"tar <c|x>[IXFqbgNan] current directory to/from <file name>",{COMPL_NONE,COMPL_NONE}},
+   {"tarmode",cmd_tarmode,"<full|inc|reset|noreset> tar's behaviour towards archive bits",{COMPL_NONE,COMPL_NONE}},
++  {"timeout",cmd_timeout,"timeout <number> - set the per-operation timeout in seconds (default 20)",{COMPL_NONE,COMPL_NONE}},
+   {"translate",cmd_translate,"toggle text translation for printing",{COMPL_NONE,COMPL_NONE}},
+   {"unlock",cmd_unlock,"unlock <fnum> <hex-start> <hex-len> : remove a POSIX lock",{COMPL_REMOTE,COMPL_REMOTE}},
+   {"volume",cmd_volume,"print the volume name",{COMPL_NONE,COMPL_NONE}},
+@@ -4465,6 +4492,7 @@ static int process_command_string(const char *cmd_in)
+               if (!cli) {
+                       return 1;
+               }
++              cli_set_timeout(cli, io_timeout*1000);
+       }
+       while (cmd[0] != '\0')    {
+@@ -4942,6 +4970,8 @@ static int process(const char *base_directory)
+               return 1;
+       }
++      cli_set_timeout(cli, io_timeout*1000);
++
+       if (base_directory && *base_directory) {
+               rc = do_cd(base_directory);
+               if (rc) {
+@@ -4972,6 +5002,7 @@ static int do_host_query(const char *query_host)
+       if (!cli)
+               return 1;
++      cli_set_timeout(cli, io_timeout*1000);
+       browse_host(true);
+       /* Ensure that the host can do IPv4 */
+@@ -5003,6 +5034,7 @@ static int do_host_query(const char *query_host)
+               return 1;
+       }
++      cli_set_timeout(cli, io_timeout*1000);
+       list_servers(lp_workgroup());
+       cli_shutdown(cli);
+@@ -5026,6 +5058,7 @@ static int do_tar_op(const char *base_directory)
+                       max_protocol, port, name_type);
+               if (!cli)
+                       return 1;
++              cli_set_timeout(cli, io_timeout*1000);
+       }
+       recurse=true;
+@@ -5091,6 +5124,8 @@ static int do_message_op(struct user_auth_info *a_info)
+               return 1;
+       }
++      cli_set_timeout(cli, io_timeout*1000);
++
+       send_message(get_cmdline_auth_info_username(a_info));
+       cli_shutdown(cli);
+@@ -5127,6 +5162,7 @@ static int do_message_op(struct user_auth_info *a_info)
+               { "directory", 'D', POPT_ARG_STRING, NULL, 'D', "Start from directory", "DIR" },
+               { "command", 'c', POPT_ARG_STRING, &cmdstr, 'c', "Execute semicolon separated commands" }, 
+               { "send-buffer", 'b', POPT_ARG_INT, &io_bufsize, 'b', "Changes the transmit/send buffer", "BYTES" },
++              { "timeout", 't', POPT_ARG_INT, &io_timeout, 'b', "Changes the per-operation timeout", "SECONDS" },
+               { "port", 'p', POPT_ARG_INT, &port, 'p', "Port to connect to", "PORT" },
+               { "grepable", 'g', POPT_ARG_NONE, NULL, 'g', "Produce grepable output" },
+                 { "browse", 'B', POPT_ARG_NONE, NULL, 'B', "Browse SMB servers using DNS" },
diff --git a/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch b/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch
new file mode 100644 (file)
index 0000000..19e5f1a
--- /dev/null
@@ -0,0 +1,223 @@
+From ed26d110b814e2cf0413bd9665bd08bda271ba01 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Fri, 15 Jan 2016 14:46:07 +0100
+Subject: [PATCH 1/3] security: Add Asserted Identity sids (S-1-18)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11677
+
+definitions taken from [MS-DTYP]: Windows Data Types,
+2.4.2.4 Well-Known SID Structures.
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+---
+ libcli/security/dom_sid.h  | 3 +++
+ libcli/security/util_sid.c | 8 ++++++++
+ librpc/idl/security.idl    | 3 +++
+ 3 files changed, 14 insertions(+)
+
+diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h
+index 04571c2..503b621 100644
+--- a/libcli/security/dom_sid.h
++++ b/libcli/security/dom_sid.h
+@@ -35,6 +35,9 @@ extern const struct dom_sid global_sid_System;
+ extern const struct dom_sid global_sid_NULL;
+ extern const struct dom_sid global_sid_Authenticated_Users;
+ extern const struct dom_sid global_sid_Network;
++extern const struct dom_sid global_sid_Asserted_Identity;
++extern const struct dom_sid global_sid_Asserted_Identity_Service;
++extern const struct dom_sid global_sid_Asserted_Identity_Authentication_Authority;
+ extern const struct dom_sid global_sid_Creator_Owner;
+ extern const struct dom_sid global_sid_Creator_Group;
+ extern const struct dom_sid global_sid_Anonymous;
+diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c
+index cf1f7f3..5a41ef7 100644
+--- a/libcli/security/util_sid.c
++++ b/libcli/security/util_sid.c
+@@ -53,6 +53,14 @@ const struct dom_sid global_sid_Authenticated_Users =       /* All authenticated rids
+ const struct dom_sid global_sid_Restriced =                   /* Restriced Code */
+ { 1, 1, {0,0,0,0,0,5}, {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
+ #endif
++
++const struct dom_sid global_sid_Asserted_Identity =       /* Asserted Identity */
++{ 1, 0, {0,0,0,0,0,18}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
++const struct dom_sid global_sid_Asserted_Identity_Service =   /* Asserted Identity Service */
++{ 1, 1, {0,0,0,0,0,18}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
++const struct dom_sid global_sid_Asserted_Identity_Authentication_Authority =  /* Asserted Identity Authentication Authority */
++{ 1, 1, {0,0,0,0,0,18}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
++
+ const struct dom_sid global_sid_Network =                     /* Network rids */
+ { 1, 1, {0,0,0,0,0,5}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
+diff --git a/librpc/idl/security.idl b/librpc/idl/security.idl
+index 0ea79a3..7df773e 100644
+--- a/librpc/idl/security.idl
++++ b/librpc/idl/security.idl
+@@ -277,6 +277,9 @@ interface security
+       const string SID_NT_TRUSTED_INSTALLER =
+               "S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464";
++      const string SID_AUTHENTICATION_AUTHORITY_ASSERTED_IDENTITY = "S-1-18-1";
++      const string SID_SERVICE_ASSERTED_IDENTITY = "S-1-18-2";
++
+       /* well-known domain RIDs */
+       const int DOMAIN_RID_LOGON                   = 9;
+       const int DOMAIN_RID_ENTERPRISE_READONLY_DCS = 498;
+-- 
+2.5.0
+
+
+From be247c05146c45bcea5c06a38ff07e8f0c934ab6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Fri, 15 Jan 2016 14:43:12 +0100
+Subject: [PATCH 2/3] s3-util: add helper functions to deal with the S-1-18
+ domain.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11677
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+---
+ source3/Makefile.in            |  2 +-
+ source3/include/proto.h        |  5 +++++
+ source3/lib/util_specialsids.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ source3/wscript_build          |  1 +
+ 4 files changed, 47 insertions(+), 1 deletion(-)
+ create mode 100644 source3/lib/util_specialsids.c
+
+diff --git a/source3/Makefile.in b/source3/Makefile.in
+index 9e8e03d..8df2bff 100644
+--- a/source3/Makefile.in
++++ b/source3/Makefile.in
+@@ -456,7 +456,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \
+         lib/access.o lib/smbrun.o \
+         lib/bitmap.o lib/dprintf.o $(UTIL_REG_OBJ) \
+         lib/wins_srv.o \
+-        lib/util_str.o lib/clobber.o lib/util_sid.o \
++        lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_specialsids.o \
+         lib/util_unistr.o ../lib/util/charset/codepoints.o lib/util_file.o \
+         lib/util.o lib/util_cmdline.o lib/util_names.o \
+         lib/util_sock.o lib/sock_exec.o lib/util_sec.o \
+diff --git a/source3/include/proto.h b/source3/include/proto.h
+index 7303e76..8cd162b 100644
+--- a/source3/include/proto.h
++++ b/source3/include/proto.h
+@@ -1937,6 +1937,11 @@ bool sid_check_is_in_unix_groups(const struct dom_sid *sid);
+ const char *unix_groups_domain_name(void);
+ bool lookup_unix_group_name(const char *name, struct dom_sid *sid);
++/* The following definitions come from lib/util_specialsids.c  */
++bool sid_check_is_asserted_identity(const struct dom_sid *sid);
++bool sid_check_is_in_asserted_identity(const struct dom_sid *sid);
++const char *asserted_identity_domain_name(void);
++
+ /* The following definitions come from lib/filename_util.c */
+ NTSTATUS get_full_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname,
+diff --git a/source3/lib/util_specialsids.c b/source3/lib/util_specialsids.c
+new file mode 100644
+index 0000000..4c402d6
+--- /dev/null
++++ b/source3/lib/util_specialsids.c
+@@ -0,0 +1,40 @@
++/*
++   Unix SMB/CIFS implementation.
++   Copyright (C) Guenther Deschner 2016
++
++   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 3 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, see <http://www.gnu.org/licenses/>.
++*/
++
++#include "includes.h"
++#include "../libcli/security/security.h"
++
++bool sid_check_is_asserted_identity(const struct dom_sid *sid)
++{
++      return dom_sid_equal(sid, &global_sid_Asserted_Identity);
++}
++
++bool sid_check_is_in_asserted_identity(const struct dom_sid *sid)
++{
++      struct dom_sid dom_sid;
++
++      sid_copy(&dom_sid, sid);
++      sid_split_rid(&dom_sid, NULL);
++
++      return sid_check_is_asserted_identity(&dom_sid);
++}
++
++const char *asserted_identity_domain_name(void)
++{
++      return "Asserted Identity";
++}
+diff --git a/source3/wscript_build b/source3/wscript_build
+index 40935d1..ceccbb5 100755
+--- a/source3/wscript_build
++++ b/source3/wscript_build
+@@ -74,6 +74,7 @@ LIB_SRC = '''
+           lib/bitmap.c lib/dprintf.c
+           lib/wins_srv.c
+           lib/clobber.c lib/util_sid.c
++          lib/util_specialsids.c
+           lib/util_file.c
+           lib/util.c lib/util_cmdline.c lib/util_names.c
+           lib/util_sock.c lib/sock_exec.c lib/util_sec.c
+-- 
+2.5.0
+
+
+From bb5c28c8d45be8e26abe37e4873c4b1c59fff782 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Fri, 15 Jan 2016 14:43:48 +0100
+Subject: [PATCH 3/3] s3-util: skip S-1-18 sids in token generaion in
+ sid_array_from_info3().
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11677
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+---
+ source3/lib/util_sid.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c
+index f051b7a..92fbc76 100644
+--- a/source3/lib/util_sid.c
++++ b/source3/lib/util_sid.c
+@@ -190,6 +190,11 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
+          */
+       for (i = 0; i < info3->sidcount; i++) {
++
++              if (sid_check_is_in_asserted_identity(info3->sids[i].sid)) {
++                      continue;
++              }
++
+               status = add_sid_to_array(mem_ctx, info3->sids[i].sid,
+                                     &sid_array, &num_sids);
+               if (!NT_STATUS_IS_OK(status)) {
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-bug-1117059.patch b/src/patches/samba/samba-3.6.99-bug-1117059.patch
new file mode 100644 (file)
index 0000000..4941e66
--- /dev/null
@@ -0,0 +1,86 @@
+From 7f0edd8c68cd20a136a33d692f32ee2ffc30db76 Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Mon, 19 Jan 2015 13:51:55 +0100
+Subject: [PATCH] s3:winbind:grent: don't stop group enumeration when a group
+ has no gid
+
+simply continue with the next group
+
+Note: this patch introduces some code duplication to make it
+easier to create minimal backport patch. Subsequent patches
+will provide some refactoring to reduce the duplication.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=8905
+
+Signed-off-by: Michael Adam <obnox@samba.org>
+---
+ source3/winbindd/wb_next_grent.c | 51 +++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 50 insertions(+), 1 deletion(-)
+
+diff --git a/source3/winbindd/wb_next_grent.c b/source3/winbindd/wb_next_grent.c
+index 2b3799a..f52d2d1 100644
+--- a/source3/winbindd/wb_next_grent.c
++++ b/source3/winbindd/wb_next_grent.c
+@@ -168,9 +168,58 @@ static void wb_next_grent_getgrsid_done(struct tevent_req *subreq)
+       status = wb_getgrsid_recv(subreq, talloc_tos(), &domname, &name,
+                                 &state->gr->gr_gid, &state->members);
+       TALLOC_FREE(subreq);
+-      if (tevent_req_nterror(req, status)) {
++
++      if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
++              state->gstate->next_group += 1;
++
++              if (state->gstate->next_group >= state->gstate->num_groups) {
++                      TALLOC_FREE(state->gstate->groups);
++
++                      if (state->gstate->domain == NULL) {
++                              state->gstate->domain = domain_list();
++                      } else {
++                              state->gstate->domain = state->gstate->domain->next;
++                      }
++
++                      if ((state->gstate->domain != NULL) &&
++                          sid_check_is_domain(&state->gstate->domain->sid))
++                      {
++                              state->gstate->domain = state->gstate->domain->next;
++                      }
++
++                      if (state->gstate->domain == NULL) {
++                              tevent_req_nterror(req,
++                                                 NT_STATUS_NO_MORE_ENTRIES);
++                              return;
++                      }
++
++                      subreq = dcerpc_wbint_QueryGroupList_send(
++                              state, state->ev,
++                              dom_child_handle(state->gstate->domain),
++                              &state->next_groups);
++                      if (tevent_req_nomem(subreq, req)) {
++                              return;
++                      }
++
++                      tevent_req_set_callback(subreq,
++                                              wb_next_grent_fetch_done, req);
++                      return;
++              }
++
++              subreq = wb_getgrsid_send(
++                      state, state->ev,
++                      &state->gstate->groups[state->gstate->next_group].sid,
++                      state->max_nesting);
++              if (tevent_req_nomem(subreq, req)) {
++                      return;
++              }
++              tevent_req_set_callback(subreq, wb_next_grent_getgrsid_done,
++                                      req);
++              return;
++      } else if (tevent_req_nterror(req, status)) {
+               return;
+       }
++
+       if (!fill_grent(talloc_tos(), state->gr, domname, name,
+                       state->gr->gr_gid)) {
+               DEBUG(5, ("fill_grent failed\n"));
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-bug-1192211.patch b/src/patches/samba/samba-3.6.99-bug-1192211.patch
new file mode 100644 (file)
index 0000000..a14f736
--- /dev/null
@@ -0,0 +1,42 @@
+From a5b116fe3107a56e1d881906e77d9731b0c6b2c2 Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Sat, 1 Jun 2013 02:14:41 +0200
+Subject: [PATCH] shadow_copy2: implement disk_free
+
+Signed-off-by: Michael Adam <obnox@samba.org>
+---
+ source3/modules/vfs_shadow_copy2.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
+index fedfb53..7fd4dd5 100644
+--- a/source3/modules/vfs_shadow_copy2.c
++++ b/source3/modules/vfs_shadow_copy2.c
+@@ -944,6 +944,16 @@ static int shadow_copy2_get_shadow_copy2_data(vfs_handle_struct *handle,
+       return 0;
+ }
++static uint64_t shadow_copy2_disk_free(vfs_handle_struct *handle,
++                                     const char *fname, bool small_query,
++                                     uint64_t *bsize, uint64_t *dfree,
++                                     uint64_t *dsize)
++{
++      SHADOW2_NEXT(DISK_FREE,
++                   (handle, name, small_query, bsize, dfree, dsize),
++                   uint64_t, 0);
++}
++
+ static struct vfs_fn_pointers vfs_shadow_copy2_fns = {
+         .opendir = shadow_copy2_opendir,
+         .mkdir = shadow_copy2_mkdir,
+@@ -975,6 +985,7 @@ static struct vfs_fn_pointers vfs_shadow_copy2_fns = {
+         .get_nt_acl = shadow_copy2_get_nt_acl,
+         .chmod_acl = shadow_copy2_chmod_acl,
+       .get_shadow_copy_data = shadow_copy2_get_shadow_copy2_data,
++      .disk_free = shadow_copy2_disk_free,
+ };
+ NTSTATUS vfs_shadow_copy2_init(void);
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch b/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch
new file mode 100644 (file)
index 0000000..22330f1
--- /dev/null
@@ -0,0 +1,257 @@
+From caea507e6b57a82e059803e307f87fd39affde9c Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 15 Jul 2015 13:22:40 +0200
+Subject: [PATCH] PATCHSET31: docs: Documents length limitations for NetBIOS
+ name
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11401
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Michael Adam <obnox@samba.org>
+
+Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
+Autobuild-Date(master): Wed Jul 15 19:35:48 CEST 2015 on sn-devel-104
+---
+ docs-xml/smbdotconf/base/netbiosname.xml | 2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: samba-3.6.23/docs-xml/smbdotconf/base/netbiosname.xml
+===================================================================
+--- samba-3.6.23.orig/docs-xml/smbdotconf/base/netbiosname.xml
++++ samba-3.6.23/docs-xml/smbdotconf/base/netbiosname.xml
+@@ -9,6 +9,8 @@
+               the hosts DNS name) will be the name that these services are advertised under.
+               </para>
++              <para>Note that the maximum length for a NetBIOS name is 15 charactars.</para>
++
+               <para>
+               There is a bug in Samba-3 that breaks operation of browsing and access to shares if the netbios name
+               is set to the literal name <literal>PIPE</literal>. To avoid this problem, do not name your Samba-3
+Index: samba-3.6.23/docs/manpages/smb.conf.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smb.conf.5
++++ samba-3.6.23/docs/manpages/smb.conf.5
+@@ -1,13 +1,13 @@
+ '\" t
+ .\"     Title: smb.conf
+ .\"    Author: [see the "AUTHOR" section]
+-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+-.\"      Date: 09/18/2013
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 10/15/2015
+ .\"    Manual: File Formats and Conventions
+ .\"    Source: Samba 3.6
+ .\"  Language: English
+ .\"
+-.TH "SMB\&.CONF" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions"
++.TH "SMB\&.CONF" "5" "10/15/2015" "Samba 3\&.6" "File Formats and Conventions"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -1201,8 +1201,7 @@ add user to group script (G)
+ .PP
+ .RS 4
+ Full path to the script that will be called when a user is added to a group using the Windows NT domain administration tools\&. It will be run by
+-\fBsmbd\fR(8)
+-\fIAS ROOT\fR\&. Any
++\fBsmbd\fR(8)\fIAS ROOT\fR\&. Any
+ \fI%g\fR
+ will be replaced with the group name and any
+ \fI%u\fR
+@@ -1563,8 +1562,7 @@ smbpasswd
+ will fail to connect in it\*(Aqs default mode\&.
+ smbpasswd
+ can be forced to use the primary IP interface of the local host by using its
+-\fBsmbpasswd\fR(8)
+-\fI\-r \fR\fI\fIremote machine\fR\fR
++\fBsmbpasswd\fR(8)\fI\-r \fR\fI\fIremote machine\fR\fR
+ parameter, with
+ \fIremote machine\fR
+ set to the IP name of the primary interface of the local host\&.
+@@ -1868,8 +1866,7 @@ and
+ \fIseal\fR
+ are only available if Samba has been compiled against a modern OpenLDAP version (2\&.3\&.x or higher)\&.
+ .sp
+-This option is needed in the case of Domain Controllers enforcing the usage of signed LDAP connections (e\&.g\&. Windows 2000 SP3 or higher)\&. LDAP sign and seal can be controlled with the registry key "HKLM\eSystem\eCurrentControlSet\eServices\e
+-NTDS\eParameters\eLDAPServerIntegrity" on the Windows server side\&.
++This option is needed in the case of Domain Controllers enforcing the usage of signed LDAP connections (e\&.g\&. Windows 2000 SP3 or higher)\&. LDAP sign and seal can be controlled with the registry key "HKLM\eSystem\eCurrentControlSet\eServices\eNTDS\eParameters\eLDAPServerIntegrity" on the Windows server side\&.
+ .sp
+ Depending on the used KRB5 library (MIT and older Heimdal versions) it is possible that the message "integrity only" is not supported\&. In this case,
+ \fIsign\fR
+@@ -2513,8 +2510,7 @@ delete group script (G)
+ .PP
+ .RS 4
+ This is the full pathname to a script that will be run
+-\fIAS ROOT\fR
+-\fBsmbd\fR(8)
++\fIAS ROOT\fR\fBsmbd\fR(8)
+ when a group is requested to be deleted\&. It will expand any
+ \fI%g\fR
+ to the group name passed\&. This script is only useful for installations using the Windows NT domain administration tools\&.
+@@ -2633,8 +2629,7 @@ delete user from group script (G)
+ .PP
+ .RS 4
+ Full path to the script that will be called when a user is removed from a group using the Windows NT domain administration tools\&. It will be run by
+-\fBsmbd\fR(8)
+-\fIAS ROOT\fR\&. Any
++\fBsmbd\fR(8)\fIAS ROOT\fR\&. Any
+ \fI%g\fR
+ will be replaced with the group name and any
+ \fI%u\fR
+@@ -4895,8 +4890,7 @@ script\&.
+ LDAP connections should be secured where possible\&. This may be done setting
+ \fIeither\fR
+ this parameter to
+-\fIStart_tls\fR
+-\fIor\fR
++\fIStart_tls\fR\fIor\fR
+ by specifying
+ \fIldaps://\fR
+ in the URL argument of
+@@ -4935,9 +4929,7 @@ Please note that this parameter does onl
+ \fIrpc\fR
+ methods\&. To enable the LDAPv3 StartTLS extended operation (RFC2830) for
+ \fIads\fR, set
+-\m[blue]\fBldap ssl = yes\fR\m[]
+-\fIand\fR
+-\m[blue]\fBldap ssl ads = yes\fR\m[]\&. See
++\m[blue]\fBldap ssl = yes\fR\m[]\fIand\fR\m[blue]\fBldap ssl ads = yes\fR\m[]\&. See
+ smb\&.conf(5)
+ for more information on
+ \m[blue]\fBldap ssl ads\fR\m[]\&.
+@@ -5100,8 +5092,7 @@ in elections for local master browser\&.
+ Setting this value to
+ \fBno\fR
+ will cause
+-nmbd
+-\fInever\fR
++nmbd\fInever\fR
+ to become a local master browser\&.
+ .sp
+ Default:
+@@ -5463,7 +5454,6 @@ logon home (G)
+ .RS 4
+ This parameter specifies the home directory location when a Win95/98 or NT Workstation logs into a Samba PDC\&. It allows you to do
+ .sp
+-
+ C:\e>\fBNET USE H: /HOME\fR
+ .sp
+ from a command prompt, for example\&.
+@@ -5472,7 +5462,6 @@ This option takes the standard substitut
+ .sp
+ This parameter can be used with Win9X workstations to ensure that roaming profiles are stored in a subdirectory of the user\*(Aqs home directory\&. This is done in the following way:
+ .sp
+-
+ logon home = \e\e%N\e%U\eprofile
+ .sp
+ This tells Samba to return the above string, with substitutions made when a client requests the info, generally in a NetUserGetInfo request\&. Win9X clients truncate the info to \e\eserver\eshare when a user does
+@@ -6050,7 +6039,6 @@ The three settings are :
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \fBYes\fR
+ \- The read only DOS attribute is mapped to the inverse of the user or owner write bit in the unix permission mode set\&. If the owner write bit is not set, the read only attribute is reported as being set on the file\&. If the read only DOS attribute is set, Samba sets the owner, group and others write bits to zero\&. Write bits set in an ACL are ignored by Samba\&. If the read only DOS attribute is unset, Samba simply sets the write bit of the owner to one\&.
+ .RE
+@@ -6063,7 +6051,6 @@ The three settings are :
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \fBPermissions\fR
+ \- The read only DOS attribute is mapped to the effective permissions of the connecting user, as evaluated by
+ \fBsmbd\fR(8)
+@@ -6078,7 +6065,6 @@ by reading the unix permissions and POSI
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \fBNo\fR
+ \- The read only DOS attribute is unaffected by permissions, and can only be set by the
+ \m[blue]\fBstore dos attributes\fR\m[]
+@@ -6732,7 +6718,6 @@ The options are: "lmhosts", "host", "win
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \fBlmhosts\fR
+ : Lookup an IP address in the Samba lmhosts file\&. If the line in lmhosts has no name type attached to the NetBIOS name (see the manpage for lmhosts for details) then any name type matches for lookup\&.
+ .RE
+@@ -6745,7 +6730,6 @@ The options are: "lmhosts", "host", "win
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-
+ \fBhost\fR
+ : Do a standard host name to IP address resolution, using the system
+ /etc/hosts, NIS, or DNS lookups\&. This method of name resolution is operating system depended for instance on IRIX or Solaris this may be controlled by the
+@@ -6833,6 +6817,8 @@ netbios name (G)
+ .RS 4
+ This sets the NetBIOS name by which a Samba server is known\&. By default it is the same as the first component of the host\*(Aqs DNS name\&. If a machine is a browse server or logon server this name (or the first component of the hosts DNS name) will be the name that these services are advertised under\&.
+ .sp
++Note that the maximum length for a NetBIOS name is 15 charactars\&.
++.sp
+ There is a bug in Samba\-3 that breaks operation of browsing and access to shares if the netbios name is set to the literal name
+ PIPE\&. To avoid this problem, do not name your Samba\-3 server
+ PIPE\&.
+@@ -7639,7 +7625,6 @@ This option specifies a command to be ru
+ .sp
+ An interesting example is to send the users a welcome message every time they log in\&. Maybe a message of the day? Here is an example:
+ .sp
+-
+ preexec = csh \-c \*(Aqecho \e"Welcome to %S!\e" | /usr/local/samba/bin/smbclient \-M %m \-I %I\*(Aq &
+ .sp
+ Of course, this could get annoying after a while :\-)
+@@ -8452,9 +8437,7 @@ rpc_server (G)
+ Defines what kind of rpc server to use for a named pipe\&. The rpc_server prefix must be followed by the pipe name, and a value\&.
+ .sp
+ Three possible values are currently supported:
+-embedded
+-daemon
+-external
++embeddeddaemonexternal
+ .sp
+ The classic method is to run every pipe as an internal function
+ \fIembedded\fR
+@@ -8632,8 +8615,7 @@ security = share
+ server)\&. Instead, the clients send authentication information (passwords) on a per\-share basis, at the time they attempt to connect to that share\&.
+ .sp
+ Note that
+-smbd
+-\fIALWAYS\fR
++smbd\fIALWAYS\fR
+ uses a valid UNIX user to act on behalf of the client, even in
+ security = share
+ level security\&.
+@@ -10177,8 +10159,6 @@ This parameter specifies the absolute pa
+ .sp
+ For example, a valid usershare directory might be /usr/local/samba/lib/usershares, set up as follows\&.
+ .sp
+-
+-.sp
+ .if n \{\
+ .RS 4
+ .\}
+@@ -10650,10 +10630,10 @@ and
+ .sp -1
+ .IP \(bu 2.3
+ .\}
+-\fI<sfu | rfc2307 >\fR
+-\- When Samba is running in security = ads and your Active Directory Domain Controller does support the Microsoft "Services for Unix" (SFU) LDAP schema, winbind can retrieve the login shell and the home directory attributes directly from your Directory Server\&. Note that retrieving UID and GID from your ADS\-Server requires to use
++\fI<sfu | sfu20 | rfc2307 >\fR
++\- When Samba is running in security = ads and your Active Directory Domain Controller does support the Microsoft "Services for Unix" (SFU) LDAP schema, winbind can retrieve the login shell and the home directory attributes directly from your Directory Server\&. For SFU 3\&.0 or 3\&.5 simply choose "sfu", if you use SFU 2\&.0 please choose "sfu20"\&. Note that retrieving UID and GID from your ADS\-Server requires to use
+ \fIidmap config DOMAIN:backend\fR
+-= ad as well\&.
++= ad as well\&. The primary group membership is currently always calculated via the "primaryGroupID" LDAP attribute\&.
+ .RE
+ .sp
+ .RE
+@@ -11036,7 +11016,6 @@ special sections make life for an admini
+ This man page is correct for version 3 of the Samba suite\&.
+ .SH "SEE ALSO"
+ .PP
+-
+ \fBsamba\fR(7),
+ \fBsmbpasswd\fR(8),
+ \fBswat\fR(8),
diff --git a/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch b/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch
new file mode 100644 (file)
index 0000000..5683ae6
--- /dev/null
@@ -0,0 +1,314 @@
+From 252499c1513c45764d039af8732cd97b37c8c494 Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Thu, 9 Feb 2017 15:40:39 +0100
+Subject: [PATCH 1/3] smbd: Streamline get_ea_names_from_file
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Ralph Boehme <slow@samba.org>
+Backported-by: Andreas Schneider <asn@samba.org>
+Backported-from: 27daed8fcf95eed2df112dc1c30c3a40b5c9565b
+---
+ source3/smbd/trans2.c | 89 +++++++++++++++++++++++++++++----------------------
+ 1 file changed, 51 insertions(+), 38 deletions(-)
+
+diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
+index 98fd2af..49cfe9f 100644
+--- a/source3/smbd/trans2.c
++++ b/source3/smbd/trans2.c
+@@ -201,12 +201,14 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
+                               files_struct *fsp, const char *fname,
+                               char ***pnames, size_t *pnum_names)
+ {
++      char smallbuf[1024];
+       /* Get a list of all xattrs. Max namesize is 64k. */
+       size_t ea_namelist_size = 1024;
+-      char *ea_namelist = NULL;
++      char *ea_namelist = smallbuf;
++      char *to_free = NULL;
+       char *p;
+-      char **names, **tmp;
++      char **names;
+       size_t num_names;
+       ssize_t sizeret = -1;
+       NTSTATUS status;
+@@ -228,25 +230,24 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
+               return NT_STATUS_OK;
+       }
+-      /*
+-       * TALLOC the result early to get the talloc hierarchy right.
+-       */
+-
+-      names = TALLOC_ARRAY(mem_ctx, char *, 1);
+-      if (names == NULL) {
+-              DEBUG(0, ("talloc failed\n"));
+-              return NT_STATUS_NO_MEMORY;
++      if (fsp && fsp->fh->fd != -1) {
++              sizeret = SMB_VFS_FLISTXATTR(fsp, ea_namelist,
++                                           ea_namelist_size);
++      } else {
++              sizeret = SMB_VFS_LISTXATTR(conn,
++                                          fname,
++                                          ea_namelist,
++                                          ea_namelist_size);
+       }
+-      while (ea_namelist_size <= 65536) {
+-
+-              ea_namelist = TALLOC_REALLOC_ARRAY(
+-                      names, ea_namelist, char, ea_namelist_size);
++      if ((sizeret == -1) && (errno == ERANGE)) {
++              ea_namelist_size = 65536;
++              ea_namelist = TALLOC_ARRAY(mem_ctx, char, ea_namelist_size);
+               if (ea_namelist == NULL) {
+                       DEBUG(0, ("talloc failed\n"));
+-                      TALLOC_FREE(names);
+                       return NT_STATUS_NO_MEMORY;
+               }
++              to_free = ea_namelist;
+               if (fsp && fsp->fh->fd != -1) {
+                       sizeret = SMB_VFS_FLISTXATTR(fsp, ea_namelist,
+@@ -255,25 +256,18 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
+                       sizeret = SMB_VFS_LISTXATTR(conn, fname, ea_namelist,
+                                                   ea_namelist_size);
+               }
+-
+-              if ((sizeret == -1) && (errno == ERANGE)) {
+-                      ea_namelist_size *= 2;
+-              }
+-              else {
+-                      break;
+-              }
+       }
+       if (sizeret == -1) {
+-              TALLOC_FREE(names);
+-              return map_nt_error_from_unix(errno);
++              status = map_nt_error_from_unix(errno);
++              TALLOC_FREE(to_free);
++              return status;
+       }
+-      DEBUG(10, ("get_ea_list_from_file: ea_namelist size = %u\n",
+-                 (unsigned int)sizeret));
++      DEBUG(10, ("ea_namelist size = %zd\n", sizeret));
+       if (sizeret == 0) {
+-              TALLOC_FREE(names);
++              TALLOC_FREE(to_free);
+               return NT_STATUS_OK;
+       }
+@@ -282,7 +276,7 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
+        */
+       if (ea_namelist[sizeret-1] != '\0') {
+-              TALLOC_FREE(names);
++              TALLOC_FREE(to_free);
+               return NT_STATUS_INTERNAL_ERROR;
+       }
+@@ -295,26 +289,45 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
+               num_names += 1;
+       }
+-      tmp = TALLOC_REALLOC_ARRAY(mem_ctx, names, char *, num_names);
+-      if (tmp == NULL) {
++      *pnum_names = num_names;
++
++      if (pnames == NULL) {
++              TALLOC_FREE(to_free);
++              return NT_STATUS_OK;
++      }
++
++      names = TALLOC_ARRAY(mem_ctx, char *, num_names);
++      if (names == NULL) {
+               DEBUG(0, ("talloc failed\n"));
+-              TALLOC_FREE(names);
++              TALLOC_FREE(to_free);
+               return NT_STATUS_NO_MEMORY;
+       }
+-      names = tmp;
++      if (ea_namelist == smallbuf) {
++              ea_namelist = talloc_memdup(names, smallbuf, sizeret);
++              if (ea_namelist == NULL) {
++                      TALLOC_FREE(names);
++                      return NT_STATUS_NO_MEMORY;
++              }
++      } else {
++              talloc_steal(names, ea_namelist);
++
++              ea_namelist = talloc_realloc(names, ea_namelist, char,
++                                           sizeret);
++              if (ea_namelist == NULL) {
++                      TALLOC_FREE(names);
++                      return NT_STATUS_NO_MEMORY;
++              }
++      }
++
+       num_names = 0;
+       for (p = ea_namelist; p - ea_namelist < sizeret; p += strlen(p)+1) {
+               names[num_names++] = p;
+       }
+-      if (pnames) {
+-              *pnames = names;
+-      } else {
+-              TALLOC_FREE(names);
+-      }
+-      *pnum_names = num_names;
++      *pnames = names;
++
+       return NT_STATUS_OK;
+ }
+-- 
+2.9.3
+
+
+From 17563ab22ad19b34e1d9a1d12b2594c4186718b6 Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Tue, 25 Oct 2016 12:28:12 +0200
+Subject: [PATCH 2/3] lib/util/charset: Optimize next_codepoint for the ascii
+ case
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Ralph Boehme <slow@samba.org>
+
+(cherry picked from commit 07d9a909ba6853fb0b96f6d86e4cf0d5d1b35b28)
+---
+ lib/util/charset/codepoints.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/lib/util/charset/codepoints.c b/lib/util/charset/codepoints.c
+index 5ee95a8..7d157a3 100644
+--- a/lib/util/charset/codepoints.c
++++ b/lib/util/charset/codepoints.c
+@@ -495,6 +495,10 @@ _PUBLIC_ codepoint_t next_codepoint_ext(const char *str, charset_t src_charset,
+ _PUBLIC_ codepoint_t next_codepoint(const char *str, size_t *size)
+ {
++      if ((str[0] & 0x80) == 0) {
++              *size = 1;
++              return str[0];
++      }
+       return next_codepoint_convenience(get_iconv_convenience(), str, size);
+ }
+-- 
+2.9.3
+
+
+From ac8f6faa891fd282fb39ccb8e75a364bf97a5f2b Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Thu, 9 Feb 2017 15:05:01 +0100
+Subject: [PATCH 3/3] s3-vfs: Only walk the directory once in
+ open_and_sort_dir()
+
+On a slow filesystem or network filesystem this can make a huge
+difference.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=12571
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/modules/vfs_dirsort.c | 61 +++++++++++++++++++++++++++----------------
+ 1 file changed, 38 insertions(+), 23 deletions(-)
+
+diff --git a/source3/modules/vfs_dirsort.c b/source3/modules/vfs_dirsort.c
+index 698e96b..66582e6 100644
+--- a/source3/modules/vfs_dirsort.c
++++ b/source3/modules/vfs_dirsort.c
+@@ -68,8 +68,10 @@ static bool get_sorted_dir_mtime(vfs_handle_struct *handle,
+ static bool open_and_sort_dir(vfs_handle_struct *handle,
+                               struct dirsort_privates *data)
+ {
+-      unsigned int i = 0;
+-      unsigned int total_count = 0;
++      uint32_t total_count = 0;
++      /* This should be enough for most use cases */
++      uint32_t dirent_allocated = 64;
++      SMB_STRUCT_DIRENT *dp;
+       data->number_of_entries = 0;
+@@ -77,38 +79,51 @@ static bool open_and_sort_dir(vfs_handle_struct *handle,
+               return false;
+       }
+-      while (SMB_VFS_NEXT_READDIR(handle, data->source_directory, NULL)
+-             != NULL) {
+-              total_count++;
+-      }
+-
+-      if (total_count == 0) {
++      dp = SMB_VFS_NEXT_READDIR(handle, data->source_directory, NULL);
++      if (dp == NULL) {
+               return false;
+       }
+-      /* Open the underlying directory and count the number of entries
+-         Skip back to the beginning as we'll read it again */
+-      SMB_VFS_NEXT_REWINDDIR(handle, data->source_directory);
+-
+       /* Set up an array and read the directory entries into it */
+       TALLOC_FREE(data->directory_list); /* destroy previous cache if needed */
+       data->directory_list = talloc_zero_array(data,
+                                                SMB_STRUCT_DIRENT,
+-                                               total_count);
+-      if (!data->directory_list) {
++                                               dirent_allocated);
++      if (data->directory_list == NULL) {
+               return false;
+       }
+-      for (i = 0; i < total_count; i++) {
+-              SMB_STRUCT_DIRENT *dp = SMB_VFS_NEXT_READDIR(handle,
+-                                              data->source_directory,
+-                                              NULL);
+-              if (dp == NULL) {
+-                      break;
++
++      do {
++              if (total_count >= dirent_allocated) {
++                      struct dirent *dlist;
++
++                      /*
++                       * Be memory friendly.
++                       *
++                       * We should not double the amount of memory. With a lot
++                       * of files we reach easily 50MB, and doubling will
++                       * get much bigger just for a few files more.
++                       *
++                       * For 200k files this means 50 memory reallocations.
++                       */
++                      dirent_allocated += 4096;
++
++                      dlist = talloc_realloc(data,
++                                             data->directory_list,
++                                             SMB_STRUCT_DIRENT,
++                                             dirent_allocated);
++                      if (dlist == NULL) {
++                              break;
++                      }
++                      data->directory_list = dlist;
+               }
+-              data->directory_list[i] = *dp;
+-      }
++              data->directory_list[total_count] = *dp;
++
++              total_count++;
++              dp = SMB_VFS_NEXT_READDIR(handle, data->source_directory, NULL);
++      } while (dp != NULL);
+-      data->number_of_entries = i;
++      data->number_of_entries = total_count;
+       /* Sort the directory entries by name */
+       TYPESAFE_QSORT(data->directory_list, data->number_of_entries, compare_dirent);
+-- 
+2.9.3
+
diff --git a/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch b/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch
new file mode 100644 (file)
index 0000000..564ecb4
--- /dev/null
@@ -0,0 +1,271 @@
+From 8f286450a223d002358f6dfe81b770fee86c3c85 Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Tue, 3 Dec 2013 13:20:17 +0100
+Subject: [PATCH 1/3] PATCHSET15: smbd: Fix regression for the dropbox case.
+
+We need to allow to save a file to a directory with perm -wx.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=10297
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Andreas Schneider <asn@samba.org>
+(cherry picked from commit 5b49fe24c906cbae12beff7a1b45de6809258cab)
+---
+ source3/smbd/filename.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
+index 8ef0c0a..ca19369 100644
+--- a/source3/smbd/filename.c
++++ b/source3/smbd/filename.c
+@@ -716,7 +716,10 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
+                                * here.
+                                */
+                               if (errno == EACCES) {
+-                                      if (ucf_flags & UCF_CREATING_FILE) {
++                                      if ((ucf_flags & UCF_CREATING_FILE) == 0) {
++                                              status = NT_STATUS_ACCESS_DENIED;
++                                              goto fail;
++                                      } else {
+                                               /*
+                                                * This is the dropbox
+                                                * behaviour. A dropbox is a
+@@ -728,11 +731,8 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
+                                                * nevertheless want to allow
+                                                * users creating a file.
+                                                */
+-                                              status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
+-                                      } else {
+-                                              status = NT_STATUS_ACCESS_DENIED;
++                                              errno = 0;
+                                       }
+-                                      goto fail;
+                               }
+                               if ((errno != 0) && (errno != ENOENT)) {
+-- 
+1.9.3
+
+
+From 38674e8f208a7e8f2ead72266292f30b7ea33c87 Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Tue, 3 Dec 2013 10:19:09 -0800
+Subject: [PATCH 2/3] PATCHSET15: smbd: change flag name from UCF_CREATING_FILE
+ to UCF_PREP_CREATEFILE
+
+In preparation to using it for all open calls.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=10297
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+(cherry picked from commit 874318a97868e08837a1febb1be8e8a167b5ae0f)
+---
+ source3/include/smb.h      |  2 +-
+ source3/smbd/filename.c    |  2 +-
+ source3/smbd/nttrans.c     |  4 ++--
+ source3/smbd/reply.c       | 10 +++++-----
+ source3/smbd/smb2_create.c |  2 +-
+ 5 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/source3/include/smb.h b/source3/include/smb.h
+index 2d04373..559e061 100644
+--- a/source3/include/smb.h
++++ b/source3/include/smb.h
+@@ -1716,7 +1716,7 @@ struct smb_file_time {
+ #define UCF_COND_ALLOW_WCARD_LCOMP    0x00000004
+ #define UCF_POSIX_PATHNAMES           0x00000008
+ #define UCF_UNIX_NAME_LOOKUP          0x00000010
+-#define UCF_CREATING_FILE             0x00000020
++#define UCF_PREP_CREATEFILE           0x00000020
+ /*
+  * smb_filename
+diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
+index ca19369..2e68e52 100644
+--- a/source3/smbd/filename.c
++++ b/source3/smbd/filename.c
+@@ -716,7 +716,7 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
+                                * here.
+                                */
+                               if (errno == EACCES) {
+-                                      if ((ucf_flags & UCF_CREATING_FILE) == 0) {
++                                      if ((ucf_flags & UCF_PREP_CREATEFILE) == 0) {
+                                               status = NT_STATUS_ACCESS_DENIED;
+                                               goto fail;
+                                       } else {
+diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
+index 4c145e0..f5da720 100644
+--- a/source3/smbd/nttrans.c
++++ b/source3/smbd/nttrans.c
+@@ -537,7 +537,7 @@ void reply_ntcreate_and_X(struct smb_request *req)
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+                               (create_disposition == FILE_CREATE)
+-                                      ? UCF_CREATING_FILE : 0,
++                                ? UCF_PREP_CREATEFILE : 0,
+                               NULL,
+                               &smb_fname);
+@@ -1167,7 +1167,7 @@ static void call_nt_transact_create(connection_struct *conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+                               (create_disposition == FILE_CREATE)
+-                                      ? UCF_CREATING_FILE : 0,
++                                ? UCF_PREP_CREATEFILE : 0,
+                               NULL,
+                               &smb_fname);
+diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
+index 0585a6e..8478031 100644
+--- a/source3/smbd/reply.c
++++ b/source3/smbd/reply.c
+@@ -1761,7 +1761,7 @@ void reply_open(struct smb_request *req)
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+                               (create_disposition == FILE_CREATE)
+-                                      ? UCF_CREATING_FILE : 0,
++                                ? UCF_PREP_CREATEFILE : 0,
+                               NULL,
+                               &smb_fname);
+       if (!NT_STATUS_IS_OK(status)) {
+@@ -1939,7 +1939,7 @@ void reply_open_and_X(struct smb_request *req)
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+                               (create_disposition == FILE_CREATE)
+-                                      ? UCF_CREATING_FILE : 0,
++                                ? UCF_PREP_CREATEFILE : 0,
+                               NULL,
+                               &smb_fname);
+       if (!NT_STATUS_IS_OK(status)) {
+@@ -2147,7 +2147,7 @@ void reply_mknew(struct smb_request *req)
+                               conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+-                              UCF_CREATING_FILE,
++                              UCF_PREP_CREATEFILE,
+                               NULL,
+                               &smb_fname);
+       if (!NT_STATUS_IS_OK(status)) {
+@@ -2288,7 +2288,7 @@ void reply_ctemp(struct smb_request *req)
+               status = filename_convert(ctx, conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+-                              UCF_CREATING_FILE,
++                              UCF_PREP_CREATEFILE,
+                               NULL,
+                               &smb_fname);
+               if (!NT_STATUS_IS_OK(status)) {
+@@ -5541,7 +5541,7 @@ void reply_mkdir(struct smb_request *req)
+       status = filename_convert(ctx, conn,
+                                req->flags2 & FLAGS2_DFS_PATHNAMES,
+                                directory,
+-                               UCF_CREATING_FILE,
++                               UCF_PREP_CREATEFILE,
+                                NULL,
+                                &smb_dname);
+       if (!NT_STATUS_IS_OK(status)) {
+diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
+index 0862990..cd15852 100644
+--- a/source3/smbd/smb2_create.c
++++ b/source3/smbd/smb2_create.c
+@@ -695,7 +695,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
+                                         smb1req->flags2 & FLAGS2_DFS_PATHNAMES,
+                                         fname,
+                                         (in_create_disposition == FILE_CREATE) ?
+-                                              UCF_CREATING_FILE : 0,
++                                                UCF_PREP_CREATEFILE : 0,
+                                         NULL,
+                                         &smb_fname);
+               if (!NT_STATUS_IS_OK(status)) {
+-- 
+1.9.3
+
+
+From d3fb56a7239ef4173ff13f2fec2beb44402dee6b Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Tue, 3 Dec 2013 10:21:16 -0800
+Subject: [PATCH 3/3] PATCHSET15: smbd: Always use UCF_PREP_CREATEFILE for
+ filename_convert calls to resolve a path for open.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=10297
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+
+Autobuild-User(master): Jeremy Allison <jra@samba.org>
+Autobuild-Date(master): Mon Dec  9 21:02:21 CET 2013 on sn-devel-104
+
+(cherry picked from commit f98d10af2a05f0261611f4cabdfe274cd9fe91c0)
+---
+ source3/smbd/nttrans.c     | 6 ++----
+ source3/smbd/reply.c       | 6 ++----
+ source3/smbd/smb2_create.c | 3 +--
+ 3 files changed, 5 insertions(+), 10 deletions(-)
+
+diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
+index f5da720..f7d9b9d 100644
+--- a/source3/smbd/nttrans.c
++++ b/source3/smbd/nttrans.c
+@@ -536,8 +536,7 @@ void reply_ntcreate_and_X(struct smb_request *req)
+                               conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+-                              (create_disposition == FILE_CREATE)
+-                                ? UCF_PREP_CREATEFILE : 0,
++                              UCF_PREP_CREATEFILE,
+                               NULL,
+                               &smb_fname);
+@@ -1166,8 +1165,7 @@ static void call_nt_transact_create(connection_struct *conn,
+                               conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+-                              (create_disposition == FILE_CREATE)
+-                                ? UCF_PREP_CREATEFILE : 0,
++                              UCF_PREP_CREATEFILE,
+                               NULL,
+                               &smb_fname);
+diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
+index 8478031..1583c23 100644
+--- a/source3/smbd/reply.c
++++ b/source3/smbd/reply.c
+@@ -1760,8 +1760,7 @@ void reply_open(struct smb_request *req)
+                               conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+-                              (create_disposition == FILE_CREATE)
+-                                ? UCF_PREP_CREATEFILE : 0,
++                              UCF_PREP_CREATEFILE,
+                               NULL,
+                               &smb_fname);
+       if (!NT_STATUS_IS_OK(status)) {
+@@ -1938,8 +1937,7 @@ void reply_open_and_X(struct smb_request *req)
+                               conn,
+                               req->flags2 & FLAGS2_DFS_PATHNAMES,
+                               fname,
+-                              (create_disposition == FILE_CREATE)
+-                                ? UCF_PREP_CREATEFILE : 0,
++                              UCF_PREP_CREATEFILE,
+                               NULL,
+                               &smb_fname);
+       if (!NT_STATUS_IS_OK(status)) {
+diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
+index cd15852..d0cda33 100644
+--- a/source3/smbd/smb2_create.c
++++ b/source3/smbd/smb2_create.c
+@@ -694,8 +694,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
+                                         smb1req->conn,
+                                         smb1req->flags2 & FLAGS2_DFS_PATHNAMES,
+                                         fname,
+-                                        (in_create_disposition == FILE_CREATE) ?
+-                                                UCF_PREP_CREATEFILE : 0,
++                                        UCF_PREP_CREATEFILE,
+                                         NULL,
+                                         &smb_fname);
+               if (!NT_STATUS_IS_OK(status)) {
+-- 
+1.9.3
+
diff --git a/src/patches/samba/samba-3.6.99-fix_force_group.patch b/src/patches/samba/samba-3.6.99-fix_force_group.patch
new file mode 100644 (file)
index 0000000..2d4bb95
--- /dev/null
@@ -0,0 +1,68 @@
+From a502759e2e20e8001355b26d1e974a7116d78b92 Mon Sep 17 00:00:00 2001
+From: Justin Maggard <jmaggard@netgear.com>
+Date: Tue, 21 Jul 2015 15:17:30 -0700
+Subject: [PATCH] PATCHSET27: s3-passdb: Respect LOOKUP_NAME_GROUP flag in sid
+ lookup.
+
+Somewhere along the line, a config line like "valid users = @foo"
+broke when "foo" also exists as a user.
+
+user_ok_token() already does the right thing by adding the LOOKUP_NAME_GROUP
+flag; but lookup_name() was not respecting that flag, and went ahead and looked
+for users anyway.
+
+Regression test to follow.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11320
+
+Signed-off-by: Justin Maggard <jmaggard@netgear.com>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Marc Muehlfeld <mmuehlfeld@samba.org>
+
+Autobuild-User(master): Jeremy Allison <jra@samba.org>
+Autobuild-Date(master): Tue Jul 28 21:35:58 CEST 2015 on sn-devel-104
+
+(cherry picked from commit dc99d451bf23668d73878847219682fced547622)
+---
+ source3/passdb/lookup_sid.c | 4 ++--
+ source3/passdb/lookup_sid.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c
+index dcc2911..18d0e37 100644
+--- a/source3/passdb/lookup_sid.c
++++ b/source3/passdb/lookup_sid.c
+@@ -119,7 +119,7 @@ bool lookup_name(TALLOC_CTX *mem_ctx,
+                       goto ok;
+       }
+-      if (((flags & LOOKUP_NAME_NO_NSS) == 0)
++      if (((flags & (LOOKUP_NAME_NO_NSS|LOOKUP_NAME_GROUP)) == 0)
+           && strequal(domain, unix_users_domain_name())) {
+               if (lookup_unix_user_name(name, &sid)) {
+                       type = SID_NAME_USER;
+@@ -292,7 +292,7 @@ bool lookup_name(TALLOC_CTX *mem_ctx,
+       /* 11. Ok, windows would end here. Samba has two more options:
+                Unmapped users and unmapped groups */
+-      if (((flags & LOOKUP_NAME_NO_NSS) == 0)
++      if (((flags & (LOOKUP_NAME_NO_NSS|LOOKUP_NAME_GROUP)) == 0)
+           && lookup_unix_user_name(name, &sid)) {
+               domain = talloc_strdup(tmp_ctx, unix_users_domain_name());
+               type = SID_NAME_USER;
+diff --git a/source3/passdb/lookup_sid.h b/source3/passdb/lookup_sid.h
+index b2f5cf5..4b26e0a 100644
+--- a/source3/passdb/lookup_sid.h
++++ b/source3/passdb/lookup_sid.h
+@@ -29,7 +29,7 @@
+ #define LOOKUP_NAME_NONE              0x00000000
+ #define LOOKUP_NAME_ISOLATED             0x00000001  /* Look up unqualified names */
+ #define LOOKUP_NAME_REMOTE               0x00000002  /* Ask others */
+-#define LOOKUP_NAME_GROUP                0x00000004  /* (unused) This is a NASTY hack for
++#define LOOKUP_NAME_GROUP                0x00000004  /* This is a NASTY hack for
+                                                       valid users = @foo where foo also
+                                                       exists in as user. */
+ #define LOOKUP_NAME_NO_NSS             0x00000008  /* no NSS calls to avoid
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch b/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch
new file mode 100644 (file)
index 0000000..6552e1a
--- /dev/null
@@ -0,0 +1,58 @@
+From 4d187b353d77761d40b04b8451f7ebe11fc8fab8 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Tue, 31 Mar 2015 18:15:51 +0200
+Subject: [PATCH] PATCHSET24: s3-passdb: Fix 'force user' with winbind default
+ domain
+
+If we set 'winbind use default domain' and specify 'force user = user'
+without a domain name we fail to log in. In this case we need to try a
+lookup with the domain name.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11185
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+
+(cherry picked from commit cd4442c7ac93e165862c9195a7c345472646aa59)
+---
+ source3/passdb/lookup_sid.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c
+index 64a181e..dcc2911 100644
+--- a/source3/passdb/lookup_sid.c
++++ b/source3/passdb/lookup_sid.c
+@@ -391,6 +391,30 @@ bool lookup_name_smbconf(TALLOC_CTX *mem_ctx,
+                               ret_sid, ret_type);
+       }
++      /* Try with winbind default domain name. */
++      if (lp_winbind_use_default_domain()) {
++              bool ok;
++
++              qualified_name = talloc_asprintf(mem_ctx,
++                                               "%s\\%s",
++                                               lp_workgroup(),
++                                               full_name);
++              if (qualified_name == NULL) {
++                      return false;
++              }
++
++              ok = lookup_name(mem_ctx,
++                               qualified_name,
++                               flags,
++                               ret_domain,
++                               ret_name,
++                               ret_sid,
++                               ret_type);
++              if (ok) {
++                      return true;
++              }
++      }
++
+       /* Try with our own SAM name. */
+       qualified_name = talloc_asprintf(mem_ctx, "%s\\%s",
+                               get_global_sam_name(),
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch b/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch
new file mode 100644 (file)
index 0000000..cd732b0
--- /dev/null
@@ -0,0 +1,1292 @@
+From 77942b3569d379a097b2f7c58203d0379fd80ddc Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Mon, 16 Dec 2013 12:57:20 +0100
+Subject: [PATCH 1/6] s3-lib: Add winbind_lookup_usersids().
+
+Pair-Programmed-With: Guenther Deschner <gd@samba.org>
+Signed-off-by: Guenther Deschner <gd@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+---
+ source3/lib/winbind_util.c | 34 ++++++++++++++++++++++++++++++++++
+ source3/lib/winbind_util.h |  4 ++++
+ 2 files changed, 38 insertions(+)
+
+diff --git a/source3/lib/winbind_util.c b/source3/lib/winbind_util.c
+index f30bcfc..758fe73 100644
+--- a/source3/lib/winbind_util.c
++++ b/source3/lib/winbind_util.c
+@@ -342,6 +342,40 @@ bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx,
+       return true;
+ }
++bool winbind_lookup_usersids(TALLOC_CTX *mem_ctx,
++                           const struct dom_sid *user_sid,
++                           uint32_t *p_num_sids,
++                           struct dom_sid **p_sids)
++{
++      wbcErr ret;
++      struct wbcDomainSid dom_sid;
++      struct wbcDomainSid *sid_list = NULL;
++      uint32_t num_sids;
++
++      memcpy(&dom_sid, user_sid, sizeof(dom_sid));
++
++      ret = wbcLookupUserSids(&dom_sid,
++                              false,
++                              &num_sids,
++                              &sid_list);
++      if (ret != WBC_ERR_SUCCESS) {
++              return false;
++      }
++
++      *p_sids = talloc_array(mem_ctx, struct dom_sid, num_sids);
++      if (*p_sids == NULL) {
++              wbcFreeMemory(sid_list);
++              return false;
++      }
++
++      memcpy(*p_sids, sid_list, sizeof(dom_sid) * num_sids);
++
++      *p_num_sids = num_sids;
++      wbcFreeMemory(sid_list);
++
++      return true;
++}
++
+ #else      /* WITH_WINBIND */
+ struct passwd * winbind_getpwnam(const char * name)
+diff --git a/source3/lib/winbind_util.h b/source3/lib/winbind_util.h
+index 541bb95..abbc5a9 100644
+--- a/source3/lib/winbind_util.h
++++ b/source3/lib/winbind_util.h
+@@ -58,5 +58,9 @@ bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx,
+                            size_t num_members,
+                            uint32_t **pp_alias_rids,
+                            size_t *p_num_alias_rids);
++bool winbind_lookup_usersids(TALLOC_CTX *mem_ctx,
++                           const struct dom_sid *user_sid,
++                           uint32_t *p_num_sids,
++                           struct dom_sid **p_sids);
+ #endif /* __LIB__WINBIND_UTIL_H__ */
+-- 
+1.8.5.3
+
+
+From a776571e344110b89340f5008bed869763aa4dff Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Fri, 13 Dec 2013 19:08:34 +0100
+Subject: [PATCH 2/6] s3-auth: Add passwd_to_SamInfo3().
+
+First this function tries to contacts winbind if the user is a domain
+user to get valid information about it. If winbind isn't running it will
+try to create everything from the passwd struct. This is not always
+reliable but works in most cases. It improves the current situation
+which doesn't talk to winbind at all.
+
+Pair-Programmed-With: Guenther Deschner <gd@samba.org>
+Signed-off-by: Guenther Deschner <gd@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+---
+ source3/auth/proto.h       |   4 ++
+ source3/auth/server_info.c | 116 +++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 120 insertions(+)
+
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index 3d1fa06..c5a9647 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -225,6 +225,10 @@ NTSTATUS samu_to_SamInfo3(TALLOC_CTX *mem_ctx,
+                         const char *login_server,
+                         struct netr_SamInfo3 **_info3,
+                         struct extra_auth_info *extra);
++NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
++                          const char *unix_username,
++                          const struct passwd *pwd,
++                          struct netr_SamInfo3 **pinfo3);
+ struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx,
+                                        struct netr_SamInfo3 *orig);
+ struct netr_SamInfo3 *wbcAuthUserInfo_to_netr_SamInfo3(TALLOC_CTX *mem_ctx,
+diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
+index 90b3ed6..32ffd3a 100644
+--- a/source3/auth/server_info.c
++++ b/source3/auth/server_info.c
+@@ -24,6 +24,7 @@
+ #include "../libcli/security/security.h"
+ #include "rpc_client/util_netlogon.h"
+ #include "nsswitch/libwbclient/wbclient.h"
++#include "lib/winbind_util.h"
+ #include "passdb.h"
+ #undef DBGC_CLASS
+@@ -476,6 +477,121 @@ NTSTATUS samu_to_SamInfo3(TALLOC_CTX *mem_ctx,
+       return NT_STATUS_OK;
+ }
++NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
++                          const char *unix_username,
++                          const struct passwd *pwd,
++                          struct netr_SamInfo3 **pinfo3)
++{
++      struct netr_SamInfo3 *info3;
++      NTSTATUS status;
++      TALLOC_CTX *tmp_ctx;
++      const char *domain_name = NULL;
++      const char *user_name = NULL;
++      struct dom_sid domain_sid;
++      struct dom_sid user_sid;
++      struct dom_sid group_sid;
++      enum lsa_SidType type;
++      uint32_t num_sids = 0;
++      struct dom_sid *user_sids = NULL;
++      bool ok;
++
++      tmp_ctx = talloc_stackframe();
++
++      ok = lookup_name_smbconf(tmp_ctx,
++                               unix_username,
++                               LOOKUP_NAME_ALL,
++                               &domain_name,
++                               &user_name,
++                               &user_sid,
++                               &type);
++      if (!ok) {
++              status = NT_STATUS_NO_SUCH_USER;
++              goto done;
++      }
++
++      if (type != SID_NAME_USER) {
++              status = NT_STATUS_NO_SUCH_USER;
++              goto done;
++      }
++
++      ok = winbind_lookup_usersids(tmp_ctx,
++                                   &user_sid,
++                                   &num_sids,
++                                   &user_sids);
++      /* Check if winbind is running */
++      if (ok) {
++              /*
++               * Winbind is running and the first element of the user_sids
++               * is the primary group.
++               */
++              if (num_sids > 0) {
++                      group_sid = user_sids[0];
++              }
++      } else {
++              /*
++               * Winbind is not running, create the group_sid from the
++               * group id.
++               */
++              gid_to_sid(&group_sid, pwd->pw_gid);
++      }
++
++      /* Make sure we have a valid group sid */
++      ok = !is_null_sid(&group_sid);
++      if (!ok) {
++              status = NT_STATUS_NO_SUCH_USER;
++              goto done;
++      }
++
++      /* Construct a netr_SamInfo3 from the information we have */
++      info3 = talloc_zero(tmp_ctx, struct netr_SamInfo3);
++      if (!info3) {
++              status = NT_STATUS_NO_MEMORY;
++              goto done;
++      }
++
++      info3->base.account_name.string = talloc_strdup(info3, unix_username);
++      if (info3->base.account_name.string == NULL) {
++              status = NT_STATUS_NO_MEMORY;
++              goto done;
++      }
++
++      ZERO_STRUCT(domain_sid);
++
++      sid_copy(&domain_sid, &user_sid);
++      sid_split_rid(&domain_sid, &info3->base.rid);
++      info3->base.domain_sid = dom_sid_dup(info3, &domain_sid);
++
++      ok = sid_peek_check_rid(&domain_sid, &group_sid,
++                              &info3->base.primary_gid);
++      if (!ok) {
++              DEBUG(1, ("The primary group domain sid(%s) does not "
++                        "match the domain sid(%s) for %s(%s)\n",
++                        sid_string_dbg(&group_sid),
++                        sid_string_dbg(&domain_sid),
++                        unix_username,
++                        sid_string_dbg(&user_sid)));
++              status = NT_STATUS_INVALID_SID;
++              goto done;
++      }
++
++      info3->base.acct_flags = ACB_NORMAL;
++
++      if (num_sids) {
++              status = group_sids_to_info3(info3, user_sids, num_sids);
++              if (!NT_STATUS_IS_OK(status)) {
++                      goto done;
++              }
++      }
++
++      *pinfo3 = talloc_steal(mem_ctx, info3);
++
++      status = NT_STATUS_OK;
++done:
++      talloc_free(tmp_ctx);
++
++      return status;
++}
++
+ #undef RET_NOMEM
+ #define RET_NOMEM(ptr) do { \
+-- 
+1.8.5.3
+
+
+From de5914820e7e8665036411061911a9a5ed06a673 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Fri, 13 Dec 2013 19:11:01 +0100
+Subject: [PATCH 3/6] s3-auth: Pass talloc context to make_server_info_pw().
+
+Pair-Programmed-With: Guenther Deschner <gd@samba.org>
+Signed-off-by: Guenther Deschner <gd@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+---
+ source3/auth/auth_server.c |  5 ++++-
+ source3/auth/auth_unix.c   |  7 +++++--
+ source3/auth/auth_util.c   | 51 ++++++++++++++++++++++++++--------------------
+ source3/auth/proto.h       |  9 ++++----
+ source3/auth/user_krb5.c   |  2 +-
+ 5 files changed, 44 insertions(+), 30 deletions(-)
+
+diff --git a/source3/auth/auth_server.c b/source3/auth/auth_server.c
+index fdd7671..969caad 100644
+--- a/source3/auth/auth_server.c
++++ b/source3/auth/auth_server.c
+@@ -448,7 +448,10 @@ use this machine as the password server.\n"));
+               if ( (pass = smb_getpwnam(talloc_tos(), user_info->mapped.account_name,
+                       &real_username, True )) != NULL )
+               {
+-                      nt_status = make_server_info_pw(server_info, pass->pw_name, pass);
++                      nt_status = make_server_info_pw(mem_ctx,
++                                                      pass->pw_name,
++                                                      pass,
++                                                      server_info);
+                       TALLOC_FREE(pass);
+                       TALLOC_FREE(real_username);
+               }
+diff --git a/source3/auth/auth_unix.c b/source3/auth/auth_unix.c
+index 086c39e..d6ef547 100644
+--- a/source3/auth/auth_unix.c
++++ b/source3/auth/auth_unix.c
+@@ -56,8 +56,11 @@ static NTSTATUS check_unix_security(const struct auth_context *auth_context,
+       unbecome_root();
+       if (NT_STATUS_IS_OK(nt_status)) {
+-              if (pass) {
+-                      make_server_info_pw(server_info, pass->pw_name, pass);
++              if (pass != NULL) {
++                      nt_status = make_server_info_pw(mem_ctx,
++                                                      pass->pw_name,
++                                                      pass,
++                                                      server_info);
+               } else {
+                       /* we need to do somthing more useful here */
+                       nt_status = NT_STATUS_NO_SUCH_USER;
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index 288f461..3aa229d 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -555,14 +555,15 @@ NTSTATUS create_local_token(struct auth_serversupplied_info *server_info)
+  to a struct samu
+ ***************************************************************************/
+-NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info,
+-                             char *unix_username,
+-                           struct passwd *pwd)
++NTSTATUS make_server_info_pw(TALLOC_CTX *mem_ctx,
++                           const char *unix_username,
++                           const struct passwd *pwd,
++                           struct auth_serversupplied_info **server_info)
+ {
+       NTSTATUS status;
+       struct samu *sampass = NULL;
+       char *qualified_name = NULL;
+-      TALLOC_CTX *mem_ctx = NULL;
++      TALLOC_CTX *tmp_ctx;
+       struct dom_sid u_sid;
+       enum lsa_SidType type;
+       struct auth_serversupplied_info *result;
+@@ -580,27 +581,27 @@ NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info,
+        * plaintext passwords were used with no SAM backend.
+        */
+-      mem_ctx = talloc_init("make_server_info_pw_tmp");
+-      if (!mem_ctx) {
++      tmp_ctx = talloc_stackframe();
++      if (tmp_ctx == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
+-      qualified_name = talloc_asprintf(mem_ctx, "%s\\%s",
++      qualified_name = talloc_asprintf(tmp_ctx, "%s\\%s",
+                                       unix_users_domain_name(),
+                                       unix_username );
+       if (!qualified_name) {
+-              TALLOC_FREE(mem_ctx);
++              TALLOC_FREE(tmp_ctx);
+               return NT_STATUS_NO_MEMORY;
+       }
+-      if (!lookup_name(mem_ctx, qualified_name, LOOKUP_NAME_ALL,
++      if (!lookup_name(tmp_ctx, qualified_name, LOOKUP_NAME_ALL,
+                                               NULL, NULL,
+                                               &u_sid, &type)) {
+-              TALLOC_FREE(mem_ctx);
++              TALLOC_FREE(tmp_ctx);
+               return NT_STATUS_NO_SUCH_USER;
+       }
+-      TALLOC_FREE(mem_ctx);
++      TALLOC_FREE(tmp_ctx);
+       if (type != SID_NAME_USER) {
+               return NT_STATUS_NO_SUCH_USER;
+@@ -623,7 +624,7 @@ NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info,
+       /* set the user sid to be the calculated u_sid */
+       pdb_set_user_sid(sampass, &u_sid, PDB_SET);
+-      result = make_server_info(NULL);
++      result = make_server_info(mem_ctx);
+       if (result == NULL) {
+               TALLOC_FREE(sampass);
+               return NT_STATUS_NO_MEMORY;
+@@ -908,37 +909,43 @@ NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx,
+ {
+       struct auth_serversupplied_info *result;
+       struct passwd *pwd;
++      TALLOC_CTX *tmp_ctx;
+       NTSTATUS status;
+-      pwd = Get_Pwnam_alloc(talloc_tos(), username);
+-      if (pwd == NULL) {
+-              return NT_STATUS_NO_SUCH_USER;
++      tmp_ctx = talloc_stackframe();
++      if (tmp_ctx == NULL) {
++              return NT_STATUS_NO_MEMORY;
+       }
+-      status = make_server_info_pw(&result, pwd->pw_name, pwd);
+-
+-      TALLOC_FREE(pwd);
++      pwd = Get_Pwnam_alloc(tmp_ctx, username);
++      if (pwd == NULL) {
++              status = NT_STATUS_NO_SUCH_USER;
++              goto done;
++      }
++      status = make_server_info_pw(tmp_ctx, pwd->pw_name, pwd, &result);
+       if (!NT_STATUS_IS_OK(status)) {
+-              return status;
++              goto done;
+       }
+       result->nss_token = true;
+       result->guest = is_guest;
+       if (use_guest_token) {
+-              status = make_server_info_guest(mem_ctx, &result);
++              status = make_server_info_guest(tmp_ctx, &result);
+       } else {
+               status = create_local_token(result);
+       }
++      *presult = talloc_steal(mem_ctx, result);
++done:
++      talloc_free(tmp_ctx);
+       if (!NT_STATUS_IS_OK(status)) {
+               TALLOC_FREE(result);
+               return status;
+       }
+-      *presult = talloc_steal(mem_ctx, result);
+-      return NT_STATUS_OK;
++      return status;
+ }
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index c5a9647..50a27cf 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -144,14 +144,15 @@ NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username,
+ bool user_in_group_sid(const char *username, const struct dom_sid *group_sid);
+ bool user_in_group(const char *username, const char *groupname);
+ struct passwd;
+-NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info,
+-                             char *unix_username,
+-                           struct passwd *pwd);
++NTSTATUS make_server_info_pw(TALLOC_CTX *mem_ctx,
++                           const char *unix_username,
++                           const struct passwd *pwd,
++                           struct auth_serversupplied_info **server_info);
+ NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx,
+                                      const char *username,
+                                      bool use_guest_token,
+                                      bool is_guest,
+-                                     struct auth_serversupplied_info **presult);
++                                     struct auth_serversupplied_info **session_info);
+ struct auth_serversupplied_info *copy_serverinfo(TALLOC_CTX *mem_ctx,
+                                                const struct auth_serversupplied_info *src);
+ bool init_guest_info(void);
+diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c
+index e52149a..1214b45 100644
+--- a/source3/auth/user_krb5.c
++++ b/source3/auth/user_krb5.c
+@@ -238,7 +238,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                        */
+                       DEBUG(10, ("didn't find user %s in passdb, calling "
+                                  "make_server_info_pw\n", username));
+-                      status = make_server_info_pw(&tmp, username, pw);
++                      status = make_server_info_pw(mem_ctx, username, pw, &tmp);
+               }
+               TALLOC_FREE(sampass);
+-- 
+1.8.5.3
+
+
+From 840b5b996a719922a1fdaa5ee2188a4d4c60f345 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Fri, 13 Dec 2013 19:19:02 +0100
+Subject: [PATCH 4/6] s3-auth: Use passwd_to_SamInfo3().
+
+Correctly lookup users which come from smb.conf. passwd_to_SamInfo3()
+tries to contact winbind if the user is a domain user to get
+valid information about it. If winbind isn't running it will try to
+create everything from the passwd struct. This is not always reliable
+but works in most cases. It improves the current situation which doesn't
+talk to winbind at all.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=8598
+
+Pair-Programmed-With: Guenther Deschner <gd@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+
+Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
+Autobuild-Date(master): Wed Feb  5 01:40:38 CET 2014 on sn-devel-104
+---
+ source3/auth/auth_util.c   | 91 +++++++++-------------------------------------
+ source3/auth/server_info.c | 22 ++++++++++-
+ 2 files changed, 37 insertions(+), 76 deletions(-)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index 3aa229d..5ffdb25f 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -561,100 +561,43 @@ NTSTATUS make_server_info_pw(TALLOC_CTX *mem_ctx,
+                            struct auth_serversupplied_info **server_info)
+ {
+       NTSTATUS status;
+-      struct samu *sampass = NULL;
+-      char *qualified_name = NULL;
+-      TALLOC_CTX *tmp_ctx;
+-      struct dom_sid u_sid;
+-      enum lsa_SidType type;
++      TALLOC_CTX *tmp_ctx = NULL;
+       struct auth_serversupplied_info *result;
+-      /*
+-       * The SID returned in server_info->sam_account is based
+-       * on our SAM sid even though for a pure UNIX account this should
+-       * not be the case as it doesn't really exist in the SAM db.
+-       * This causes lookups on "[in]valid users" to fail as they
+-       * will lookup this name as a "Unix User" SID to check against
+-       * the user token. Fix this by adding the "Unix User"\unix_username
+-       * SID to the sid array. The correct fix should probably be
+-       * changing the server_info->sam_account user SID to be a
+-       * S-1-22 Unix SID, but this might break old configs where
+-       * plaintext passwords were used with no SAM backend.
+-       */
+-
+       tmp_ctx = talloc_stackframe();
+       if (tmp_ctx == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
+-      qualified_name = talloc_asprintf(tmp_ctx, "%s\\%s",
+-                                      unix_users_domain_name(),
+-                                      unix_username );
+-      if (!qualified_name) {
+-              TALLOC_FREE(tmp_ctx);
+-              return NT_STATUS_NO_MEMORY;
+-      }
+-
+-      if (!lookup_name(tmp_ctx, qualified_name, LOOKUP_NAME_ALL,
+-                                              NULL, NULL,
+-                                              &u_sid, &type)) {
+-              TALLOC_FREE(tmp_ctx);
+-              return NT_STATUS_NO_SUCH_USER;
+-      }
+-
+-      TALLOC_FREE(tmp_ctx);
+-
+-      if (type != SID_NAME_USER) {
+-              return NT_STATUS_NO_SUCH_USER;
+-      }
+-
+-      if ( !(sampass = samu_new( NULL )) ) {
+-              return NT_STATUS_NO_MEMORY;
+-      }
+-
+-      status = samu_set_unix( sampass, pwd );
+-      if (!NT_STATUS_IS_OK(status)) {
+-              return status;
+-      }
+-
+-      /* In pathological cases the above call can set the account
+-       * name to the DOMAIN\username form. Reset the account name
+-       * using unix_username */
+-      pdb_set_username(sampass, unix_username, PDB_SET);
+-
+-      /* set the user sid to be the calculated u_sid */
+-      pdb_set_user_sid(sampass, &u_sid, PDB_SET);
+-
+-      result = make_server_info(mem_ctx);
++      result = make_server_info(tmp_ctx);
+       if (result == NULL) {
+-              TALLOC_FREE(sampass);
+-              return NT_STATUS_NO_MEMORY;
++              status = NT_STATUS_NO_MEMORY;
++              goto done;
+       }
+-      status = samu_to_SamInfo3(result, sampass, global_myname(),
+-                                &result->info3, &result->extra);
+-      TALLOC_FREE(sampass);
++      status = passwd_to_SamInfo3(result,
++                                  unix_username,
++                                  pwd,
++                                  &result->info3);
+       if (!NT_STATUS_IS_OK(status)) {
+-              DEBUG(10, ("Failed to convert samu to info3: %s\n",
+-                         nt_errstr(status)));
+-              TALLOC_FREE(result);
+-              return status;
++              goto done;
+       }
+       result->unix_name = talloc_strdup(result, unix_username);
+-      result->sanitized_username = sanitize_username(result, unix_username);
+-
+-      if ((result->unix_name == NULL)
+-          || (result->sanitized_username == NULL)) {
+-              TALLOC_FREE(result);
+-              return NT_STATUS_NO_MEMORY;
++      if (result->unix_name == NULL) {
++              status = NT_STATUS_NO_MEMORY;
++              goto done;
+       }
+       result->utok.uid = pwd->pw_uid;
+       result->utok.gid = pwd->pw_gid;
+-      *server_info = result;
++      *server_info = talloc_steal(mem_ctx, result);
++      status = NT_STATUS_OK;
++done:
++      talloc_free(tmp_ctx);
+-      return NT_STATUS_OK;
++      return status;
+ }
+ static NTSTATUS get_system_info3(TALLOC_CTX *mem_ctx,
+diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
+index 32ffd3a..077bb6b 100644
+--- a/source3/auth/server_info.c
++++ b/source3/auth/server_info.c
+@@ -529,10 +529,28 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+               }
+       } else {
+               /*
+-               * Winbind is not running, create the group_sid from the
+-               * group id.
++               * Winbind is not running, try to create the group_sid from the
++               * passwd group id.
++               */
++
++              /*
++               * This can lead to a primary group of S-1-22-2-XX which
++               * will be rejected by other Samba code.
+                */
+               gid_to_sid(&group_sid, pwd->pw_gid);
++
++              ZERO_STRUCT(domain_sid);
++
++              /*
++               * If we are a unix group, set the group_sid to the
++               * 'Domain Users' RID of 513 which will always resolve to a
++               * name.
++               */
++              if (sid_check_is_in_unix_groups(&group_sid)) {
++                      sid_compose(&group_sid,
++                                  get_global_sam_sid(),
++                                  DOMAIN_RID_USERS);
++              }
+       }
+       /* Make sure we have a valid group sid */
+-- 
+1.8.5.3
+
+
+From 7d8da06b8966cfb45ede48ce2be0754fd592ff62 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Tue, 18 Feb 2014 10:02:57 +0100
+Subject: [PATCH 5/6] s3-auth: Pass mem_ctx to make_server_info_sam().
+
+Coverity-Id: 1168009
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=8598
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+
+Change-Id: Ie614b0654c3a7eec1ebb10dbb9763696eec795bd
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+
+(cherry picked from commit 3dc72266005e87a291f5bf9847257e8c54314d39)
+---
+ source3/auth/check_samsec.c    |  2 +-
+ source3/auth/proto.h           |  5 ++--
+ source3/auth/server_info_sam.c | 63 +++++++++++++++++++++++++-----------------
+ source3/auth/user_krb5.c       | 12 ++++----
+ 4 files changed, 49 insertions(+), 33 deletions(-)
+
+diff --git a/source3/auth/check_samsec.c b/source3/auth/check_samsec.c
+index f918dc0..ed30e0d 100644
+--- a/source3/auth/check_samsec.c
++++ b/source3/auth/check_samsec.c
+@@ -482,7 +482,7 @@ NTSTATUS check_sam_security(const DATA_BLOB *challenge,
+       }
+       become_root();
+-      nt_status = make_server_info_sam(server_info, sampass);
++      nt_status = make_server_info_sam(mem_ctx, sampass, server_info);
+       unbecome_root();
+       TALLOC_FREE(sampass);
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index 50a27cf..e6830aa 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -133,8 +133,9 @@ NTSTATUS make_user_info_for_reply_enc(struct auth_usersupplied_info **user_info,
+                                       DATA_BLOB lm_resp, DATA_BLOB nt_resp);
+ bool make_user_info_guest(struct auth_usersupplied_info **user_info) ;
+ struct samu;
+-NTSTATUS make_server_info_sam(struct auth_serversupplied_info **server_info,
+-                            struct samu *sampass);
++NTSTATUS make_server_info_sam(TALLOC_CTX *mem_ctx,
++                            struct samu *sampass,
++                            struct auth_serversupplied_info **pserver_info);
+ NTSTATUS create_local_token(struct auth_serversupplied_info *server_info);
+ NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username,
+                                   bool is_guest,
+diff --git a/source3/auth/server_info_sam.c b/source3/auth/server_info_sam.c
+index 31fd9f9..aed70fa 100644
+--- a/source3/auth/server_info_sam.c
++++ b/source3/auth/server_info_sam.c
+@@ -58,45 +58,54 @@ static bool is_our_machine_account(const char *username)
+  Make (and fill) a user_info struct from a struct samu
+ ***************************************************************************/
+-NTSTATUS make_server_info_sam(struct auth_serversupplied_info **server_info,
+-                            struct samu *sampass)
++NTSTATUS make_server_info_sam(TALLOC_CTX *mem_ctx,
++                            struct samu *sampass,
++                            struct auth_serversupplied_info **pserver_info)
+ {
+       struct passwd *pwd;
+-      struct auth_serversupplied_info *result;
++      struct auth_serversupplied_info *server_info;
+       const char *username = pdb_get_username(sampass);
++      TALLOC_CTX *tmp_ctx;
+       NTSTATUS status;
+-      if ( !(result = make_server_info(NULL)) ) {
++      tmp_ctx = talloc_stackframe();
++      if (tmp_ctx == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
+-      if ( !(pwd = Get_Pwnam_alloc(result, username)) ) {
++      server_info = make_server_info(tmp_ctx);
++      if (server_info == NULL) {
++              status = NT_STATUS_NO_MEMORY;
++              goto out;
++      }
++
++      pwd = Get_Pwnam_alloc(tmp_ctx, username);
++      if (pwd == NULL) {
+               DEBUG(1, ("User %s in passdb, but getpwnam() fails!\n",
+                         pdb_get_username(sampass)));
+-              TALLOC_FREE(result);
+-              return NT_STATUS_NO_SUCH_USER;
++              status = NT_STATUS_NO_SUCH_USER;
++              goto out;
+       }
+-      status = samu_to_SamInfo3(result, sampass, global_myname(),
+-                                &result->info3, &result->extra);
++      status = samu_to_SamInfo3(server_info,
++                                sampass,
++                                global_myname(),
++                                &server_info->info3,
++                                &server_info->extra);
+       if (!NT_STATUS_IS_OK(status)) {
+-              TALLOC_FREE(result);
+-              return status;
++              goto out;
+       }
+-      result->unix_name = pwd->pw_name;
+-      /* Ensure that we keep pwd->pw_name, because we will free pwd below */
+-      talloc_steal(result, pwd->pw_name);
+-      result->utok.gid = pwd->pw_gid;
+-      result->utok.uid = pwd->pw_uid;
++      server_info->unix_name = talloc_steal(server_info, pwd->pw_name);
+-      TALLOC_FREE(pwd);
++      server_info->utok.gid = pwd->pw_gid;
++      server_info->utok.uid = pwd->pw_uid;
+-      result->sanitized_username = sanitize_username(result,
+-                                                     result->unix_name);
+-      if (result->sanitized_username == NULL) {
+-              TALLOC_FREE(result);
+-              return NT_STATUS_NO_MEMORY;
++      server_info->sanitized_username = sanitize_username(server_info,
++                                                          server_info->unix_name);
++      if (server_info->sanitized_username == NULL) {
++              status = NT_STATUS_NO_MEMORY;
++              goto out;
+       }
+       if (IS_DC && is_our_machine_account(username)) {
+@@ -117,9 +126,13 @@ NTSTATUS make_server_info_sam(struct auth_serversupplied_info **server_info,
+       }
+       DEBUG(5,("make_server_info_sam: made server info for user %s -> %s\n",
+-               pdb_get_username(sampass), result->unix_name));
++               pdb_get_username(sampass), server_info->unix_name));
++
++      *pserver_info = talloc_steal(mem_ctx, server_info);
+-      *server_info = result;
++      status = NT_STATUS_OK;
++out:
++      talloc_free(tmp_ctx);
+-      return NT_STATUS_OK;
++      return status;
+ }
+diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c
+index 1214b45..1441f88 100644
+--- a/source3/auth/user_krb5.c
++++ b/source3/auth/user_krb5.c
+@@ -219,9 +219,6 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                * SID consistency with ntlmssp session setup
+                */
+               struct samu *sampass;
+-              /* The stupid make_server_info_XX functions here
+-                 don't take a talloc context. */
+-              struct auth_serversupplied_info *tmp = NULL;
+               sampass = samu_new(talloc_tos());
+               if (sampass == NULL) {
+@@ -231,14 +228,19 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+               if (pdb_getsampwnam(sampass, username)) {
+                       DEBUG(10, ("found user %s in passdb, calling "
+                                  "make_server_info_sam\n", username));
+-                      status = make_server_info_sam(&tmp, sampass);
++                      status = make_server_info_sam(mem_ctx,
++                                                    sampass,
++                                                    &server_info);
+               } else {
+                       /*
+                        * User not in passdb, make it up artificially
+                        */
+                       DEBUG(10, ("didn't find user %s in passdb, calling "
+                                  "make_server_info_pw\n", username));
+-                      status = make_server_info_pw(mem_ctx, username, pw, &tmp);
++                      status = make_server_info_pw(mem_ctx,
++                                                   username,
++                                                   pw,
++                                                   &server_info);
+               }
+               TALLOC_FREE(sampass);
+-- 
+1.8.5.3
+
+
+From 77c2d6c08ab3f3894a225a306dbc87f5575a1902 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Tue, 18 Feb 2014 10:19:57 +0100
+Subject: [PATCH 6/6] s3-auth: Pass mem_ctx to auth_check_ntlm_password().
+
+Coverity-Id: 1168009
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=8598
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+
+Change-Id: Ie01674561a6a75239a13918d3190c2f21c3efc7a
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+
+(cherry picked from commit 4d792db03f18aa164b565c7fdc7b446c174fba28)
+---
+ source3/auth/auth.c                         | 51 ++++++++++++++++++-----------
+ source3/auth/auth_compat.c                  | 19 ++++++++---
+ source3/auth/auth_ntlmssp.c                 |  6 ++--
+ source3/auth/proto.h                        |  3 +-
+ source3/auth/user_krb5.c                    |  7 ++--
+ source3/include/auth.h                      |  3 +-
+ source3/rpc_server/netlogon/srv_netlog_nt.c |  6 ++--
+ source3/smbd/sesssetup.c                    | 16 +++++----
+ 8 files changed, 69 insertions(+), 42 deletions(-)
+
+diff --git a/source3/auth/auth.c b/source3/auth/auth.c
+index dbe337f..17431b8 100644
+--- a/source3/auth/auth.c
++++ b/source3/auth/auth.c
+@@ -201,19 +201,19 @@ static bool check_domain_match(const char *user, const char *domain)
+  * @return An NTSTATUS with NT_STATUS_OK or an appropriate error.
+  *
+  **/
+-
+-static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
+-                                  const struct auth_usersupplied_info *user_info, 
+-                                  struct auth_serversupplied_info **server_info)
++static NTSTATUS check_ntlm_password(TALLOC_CTX *mem_ctx,
++                                  const struct auth_context *auth_context,
++                                  const struct auth_usersupplied_info *user_info,
++                                  struct auth_serversupplied_info **pserver_info)
+ {
+       /* if all the modules say 'not for me' this is reasonable */
+       NTSTATUS nt_status = NT_STATUS_NO_SUCH_USER;
+       const char *unix_username;
+       auth_methods *auth_method;
+-      TALLOC_CTX *mem_ctx;
+-      if (!user_info || !auth_context || !server_info)
++      if (user_info == NULL || auth_context == NULL || pserver_info == NULL) {
+               return NT_STATUS_LOGON_FAILURE;
++      }
+       DEBUG(3, ("check_ntlm_password:  Checking password for unmapped user [%s]\\[%s]@[%s] with the new password interface\n", 
+                 user_info->client.domain_name, user_info->client.account_name, user_info->workstation_name));
+@@ -247,17 +247,27 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
+               return NT_STATUS_LOGON_FAILURE;
+       for (auth_method = auth_context->auth_method_list;auth_method; auth_method = auth_method->next) {
++              struct auth_serversupplied_info *server_info;
++              TALLOC_CTX *tmp_ctx;
+               NTSTATUS result;
+-              mem_ctx = talloc_init("%s authentication for user %s\\%s", auth_method->name,
+-                                    user_info->mapped.domain_name, user_info->client.account_name);
++              tmp_ctx = talloc_named(mem_ctx,
++                                     0,
++                                     "%s authentication for user %s\\%s",
++                                     auth_method->name,
++                                     user_info->mapped.domain_name,
++                                     user_info->client.account_name);
+-              result = auth_method->auth(auth_context, auth_method->private_data, mem_ctx, user_info, server_info);
++              result = auth_method->auth(auth_context,
++                                         auth_method->private_data,
++                                         tmp_ctx,
++                                         user_info,
++                                         &server_info);
+               /* check if the module did anything */
+               if ( NT_STATUS_V(result) == NT_STATUS_V(NT_STATUS_NOT_IMPLEMENTED) ) {
+                       DEBUG(10,("check_ntlm_password: %s had nothing to say\n", auth_method->name));
+-                      talloc_destroy(mem_ctx);
++                      TALLOC_FREE(tmp_ctx);
+                       continue;
+               }
+@@ -271,19 +281,20 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
+                                 auth_method->name, user_info->client.account_name, nt_errstr(nt_status)));
+               }
+-              talloc_destroy(mem_ctx);
+-
+-              if ( NT_STATUS_IS_OK(nt_status))
+-              {
+-                              break;                  
++              if (NT_STATUS_IS_OK(nt_status)) {
++                      *pserver_info = talloc_steal(mem_ctx, server_info);
++                      TALLOC_FREE(tmp_ctx);
++                      break;
+               }
++
++              TALLOC_FREE(tmp_ctx);
+       }
+       /* successful authentication */
+       if (NT_STATUS_IS_OK(nt_status)) {
+-              unix_username = (*server_info)->unix_name;
+-              if (!(*server_info)->guest) {
++              unix_username = (*pserver_info)->unix_name;
++              if (!(*pserver_info)->guest) {
+                       /* We might not be root if we are an RPC call */
+                       become_root();
+                       nt_status = smb_pam_accountcheck(
+@@ -301,9 +312,9 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
+               }
+               if (NT_STATUS_IS_OK(nt_status)) {
+-                      DEBUG((*server_info)->guest ? 5 : 2, 
++                      DEBUG((*pserver_info)->guest ? 5 : 2,
+                             ("check_ntlm_password:  %sauthentication for user [%s] -> [%s] -> [%s] succeeded\n",
+-                             (*server_info)->guest ? "guest " : "",
++                             (*pserver_info)->guest ? "guest " : "",
+                              user_info->client.account_name,
+                              user_info->mapped.account_name,
+                              unix_username));
+@@ -317,7 +328,7 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
+       DEBUG(2, ("check_ntlm_password:  Authentication for user [%s] -> [%s] FAILED with error %s\n",
+                 user_info->client.account_name, user_info->mapped.account_name,
+                 nt_errstr(nt_status)));
+-      ZERO_STRUCTP(server_info);
++      ZERO_STRUCTP(pserver_info);
+       return nt_status;
+ }
+diff --git a/source3/auth/auth_compat.c b/source3/auth/auth_compat.c
+index 0ae712a..d51c96f 100644
+--- a/source3/auth/auth_compat.c
++++ b/source3/auth/auth_compat.c
+@@ -35,7 +35,8 @@ check if a username/password is OK assuming the password is in plaintext
+ return True if the password is correct, False otherwise
+ ****************************************************************************/
+-NTSTATUS check_plaintext_password(const char *smb_name,
++NTSTATUS check_plaintext_password(TALLOC_CTX *mem_ctx,
++                                const char *smb_name,
+                                 DATA_BLOB plaintext_blob,
+                                 struct auth_serversupplied_info **server_info)
+ {
+@@ -59,8 +60,10 @@ NTSTATUS check_plaintext_password(const char *smb_name,
+               return NT_STATUS_NO_MEMORY;
+       }
+-      nt_status = plaintext_auth_context->check_ntlm_password(plaintext_auth_context, 
+-                                                              user_info, server_info); 
++      nt_status = plaintext_auth_context->check_ntlm_password(mem_ctx,
++                                                              plaintext_auth_context,
++                                                              user_info,
++                                                              server_info);
+       TALLOC_FREE(plaintext_auth_context);
+       free_user_info(&user_info);
+@@ -84,7 +87,10 @@ static NTSTATUS pass_check_smb(struct auth_context *actx,
+                                    domain,
+                                    lm_pwd,
+                                    nt_pwd);
+-      nt_status = actx->check_ntlm_password(actx, user_info, &server_info);
++      nt_status = actx->check_ntlm_password(talloc_tos(),
++                                            actx,
++                                            user_info,
++                                            &server_info);
+       free_user_info(&user_info);
+       TALLOC_FREE(server_info);
+       return nt_status;
+@@ -127,7 +133,10 @@ bool password_ok(struct auth_context *actx, bool global_encrypted,
+               }
+       } else {
+               struct auth_serversupplied_info *server_info = NULL;
+-              NTSTATUS nt_status = check_plaintext_password(smb_name, password_blob, &server_info);
++              NTSTATUS nt_status = check_plaintext_password(talloc_tos(),
++                                                            smb_name,
++                                                            password_blob,
++                                                            &server_info);
+               TALLOC_FREE(server_info);
+               if (NT_STATUS_IS_OK(nt_status)) {
+                       return True;
+diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c
+index ae29c30..097501c 100644
+--- a/source3/auth/auth_ntlmssp.c
++++ b/source3/auth/auth_ntlmssp.c
+@@ -143,8 +143,10 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state,
+       user_info->logon_parameters = MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT | MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT;
+-      nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(auth_ntlmssp_state->auth_context, 
+-                                                                        user_info, &auth_ntlmssp_state->server_info); 
++      nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(mem_ctx,
++                                                                        auth_ntlmssp_state->auth_context,
++                                                                        user_info,
++                                                                        &auth_ntlmssp_state->server_info);
+       username_was_mapped = user_info->was_mapped;
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index e6830aa..fccabc4 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -50,7 +50,8 @@ NTSTATUS auth_builtin_init(void);
+ /* The following definitions come from auth/auth_compat.c  */
+-NTSTATUS check_plaintext_password(const char *smb_name,
++NTSTATUS check_plaintext_password(TALLOC_CTX *mem_ctx,
++                                const char *smb_name,
+                                 DATA_BLOB plaintext_password,
+                                 struct auth_serversupplied_info **server_info);
+ bool password_ok(struct auth_context *actx, bool global_encrypted,
+diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c
+index 1441f88..1e5254e 100644
+--- a/source3/auth/user_krb5.c
++++ b/source3/auth/user_krb5.c
+@@ -230,7 +230,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                                  "make_server_info_sam\n", username));
+                       status = make_server_info_sam(mem_ctx,
+                                                     sampass,
+-                                                    &server_info);
++                                                    server_info);
+               } else {
+                       /*
+                        * User not in passdb, make it up artificially
+@@ -240,7 +240,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                       status = make_server_info_pw(mem_ctx,
+                                                    username,
+                                                    pw,
+-                                                   &server_info);
++                                                   server_info);
+               }
+               TALLOC_FREE(sampass);
+@@ -250,9 +250,6 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                       return status;
+                 }
+-              /* Steal tmp server info into the server_info pointer. */
+-              *server_info = talloc_move(mem_ctx, &tmp);
+-
+               /* make_server_info_pw does not set the domain. Without this
+                * we end up with the local netbios name in substitutions for
+                * %D. */
+diff --git a/source3/include/auth.h b/source3/include/auth.h
+index c017da9..b0ac11a 100644
+--- a/source3/include/auth.h
++++ b/source3/include/auth.h
+@@ -89,7 +89,8 @@ struct auth_context {
+       NTSTATUS (*get_ntlm_challenge)(struct auth_context *auth_context,
+                                      uint8_t chal[8]);
+-      NTSTATUS (*check_ntlm_password)(const struct auth_context *auth_context,
++      NTSTATUS (*check_ntlm_password)(TALLOC_CTX *mem_ctx,
++                                      const struct auth_context *auth_context,
+                                       const struct auth_usersupplied_info *user_info, 
+                                       struct auth_serversupplied_info **server_info);
+       NTSTATUS (*nt_status_squash)(NTSTATUS nt_status);
+diff --git a/source3/rpc_server/netlogon/srv_netlog_nt.c b/source3/rpc_server/netlogon/srv_netlog_nt.c
+index 3fd93bc..1cf04df 100644
+--- a/source3/rpc_server/netlogon/srv_netlog_nt.c
++++ b/source3/rpc_server/netlogon/srv_netlog_nt.c
+@@ -1563,8 +1563,10 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p,
+       } /* end switch */
+       if ( NT_STATUS_IS_OK(status) ) {
+-              status = auth_context->check_ntlm_password(auth_context,
+-                      user_info, &server_info);
++              status = auth_context->check_ntlm_password(p->mem_ctx,
++                                                         auth_context,
++                                                         user_info,
++                                                         &server_info);
+       }
+       TALLOC_FREE(auth_context);
+diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c
+index 75c2a15..2a40e1b 100644
+--- a/source3/smbd/sesssetup.c
++++ b/source3/smbd/sesssetup.c
+@@ -140,7 +140,8 @@ static void reply_sesssetup_blob(struct smb_request *req,
+  Do a 'guest' logon, getting back the
+ ****************************************************************************/
+-static NTSTATUS check_guest_password(struct auth_serversupplied_info **server_info)
++static NTSTATUS check_guest_password(TALLOC_CTX *mem_ctx,
++                                   struct auth_serversupplied_info **server_info)
+ {
+       struct auth_context *auth_context;
+       struct auth_usersupplied_info *user_info = NULL;
+@@ -150,7 +151,7 @@ static NTSTATUS check_guest_password(struct auth_serversupplied_info **server_in
+       DEBUG(3,("Got anonymous request\n"));
+-      nt_status = make_auth_context_fixed(talloc_tos(), &auth_context, chal);
++      nt_status = make_auth_context_fixed(mem_ctx, &auth_context, chal);
+       if (!NT_STATUS_IS_OK(nt_status)) {
+               return nt_status;
+       }
+@@ -160,9 +161,10 @@ static NTSTATUS check_guest_password(struct auth_serversupplied_info **server_in
+               return NT_STATUS_NO_MEMORY;
+       }
+-      nt_status = auth_context->check_ntlm_password(auth_context,
+-                                              user_info,
+-                                              server_info);
++      nt_status = auth_context->check_ntlm_password(mem_ctx,
++                                                    auth_context,
++                                                    user_info,
++                                                    server_info);
+       TALLOC_FREE(auth_context);
+       free_user_info(&user_info);
+       return nt_status;
+@@ -1609,7 +1611,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
+       if (!*user) {
+-              nt_status = check_guest_password(&server_info);
++              nt_status = check_guest_password(talloc_tos(), &server_info);
+       } else if (doencrypt) {
+               struct auth_context *negprot_auth_context = NULL;
+@@ -1627,6 +1629,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
+                                               lm_resp, nt_resp);
+               if (NT_STATUS_IS_OK(nt_status)) {
+                       nt_status = negprot_auth_context->check_ntlm_password(
++                                      talloc_tos(),
+                                       negprot_auth_context,
+                                       user_info,
+                                       &server_info);
+@@ -1651,6 +1654,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
+                       if (NT_STATUS_IS_OK(nt_status)) {
+                               nt_status = plaintext_auth_context->check_ntlm_password(
++                                              talloc_tos(),
+                                               plaintext_auth_context,
+                                               user_info,
+                                               &server_info);
+-- 
+1.8.5.3
+
+From f07614228629e650b0e0a27dd4d15b6e5eef5baa Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 28 May 2014 15:12:29 +0200
+Subject: [PATCH 18/20] PATCHSET1: Allocate server_info on the correct memory
+ context.
+
+This fixes a talloc double free PANIC when connecting to share.
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/auth/auth_ntlmssp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c
+index 097501c..3c7e324 100644
+--- a/source3/auth/auth_ntlmssp.c
++++ b/source3/auth/auth_ntlmssp.c
+@@ -143,7 +143,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state,
+       user_info->logon_parameters = MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT | MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT;
+-      nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(mem_ctx,
++      nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(auth_ntlmssp_state,
+                                                                         auth_ntlmssp_state->auth_context,
+                                                                         user_info,
+                                                                         &auth_ntlmssp_state->server_info);
+-- 
+1.9.0
+
+commit 0c6838663d42a04a80e25a8a3827710926952077
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Wed Jul 2 16:39:22 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Jul 2 16:47:43 2014 +0200
+
+    PATCHSET1 s3-auth: Do not double free the result.
+    
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Guenther Deschner <gd@samba.org>
+---
+ source3/auth/auth_util.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index 5ffdb25f..1f1fed9 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -883,10 +883,6 @@ NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx,
+       *presult = talloc_steal(mem_ctx, result);
+ done:
+       talloc_free(tmp_ctx);
+-      if (!NT_STATUS_IS_OK(status)) {
+-              TALLOC_FREE(result);
+-              return status;
+-      }
+       return status;
+ }
+commit 879e576d439fddf33ab2353b4a54ccd162020a03
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Tue Jul 8 10:26:51 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 8 17:08:10 2014 +0200
+
+    PATCHSET1 s3-auth: Fix support for 'security = share' in passwd_to_SamInfo3().
+    
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/auth/server_info.c | 19 ++++++++++++++++---
+ 1 file changed, 16 insertions(+), 3 deletions(-)
+
+diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
+index 077bb6b..e627892 100644
+--- a/source3/auth/server_info.c
++++ b/source3/auth/server_info.c
+@@ -575,9 +575,21 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+       ZERO_STRUCT(domain_sid);
+-      sid_copy(&domain_sid, &user_sid);
+-      sid_split_rid(&domain_sid, &info3->base.rid);
+-      info3->base.domain_sid = dom_sid_dup(info3, &domain_sid);
++      /*
++       * Check if this is a "Unix Users" domain user,
++       * we need to handle it in a special way if that's the case.
++       */
++      if (sid_check_is_in_unix_users(&user_sid)) {
++              /*
++               * In info3 you can only set rids for the user and the
++               * primary group, and the domain sid must be that of
++               * the sam domain.
++               */
++              sid_copy(&domain_sid, get_global_sam_sid());
++      } else {
++              sid_copy(&domain_sid, &user_sid);
++              sid_split_rid(&domain_sid, &info3->base.rid);
++      }
+       ok = sid_peek_check_rid(&domain_sid, &group_sid,
+                               &info3->base.primary_gid);
+@@ -592,6 +604,7 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+               goto done;
+       }
++      info3->base.domain_sid = dom_sid_dup(info3, &domain_sid);
+       info3->base.acct_flags = ACB_NORMAL;
+       if (num_sids) {
diff --git a/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch b/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch
new file mode 100644 (file)
index 0000000..acb0c51
--- /dev/null
@@ -0,0 +1,922 @@
+commit 8a7159aa1b000593ffe89ca8d7477e6373764aaf
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Tue Jul 15 14:16:56 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:27 2014 +0200
+
+    PATCHSET14 s3-rpc_client: return info3 in rpccli_netlogon_password_logon().
+    
+    Guenther
+    
+    Signed-off-by: Günther Deschner <gd@samba.org>
+    Pair-Programmed-With: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+---
+ source3/rpc_client/cli_netlogon.c | 100 +++++++++++++++++++++-----------------
+ source3/rpc_client/cli_netlogon.h |   3 +-
+ source3/rpcclient/cmd_netlogon.c  |   3 +-
+ 3 files changed, 60 insertions(+), 46 deletions(-)
+
+diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c
+index c69a933..9454226 100644
+--- a/source3/rpc_client/cli_netlogon.c
++++ b/source3/rpc_client/cli_netlogon.c
+@@ -153,6 +153,53 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
+       return NT_STATUS_OK;
+ }
++static NTSTATUS map_validation_to_info3(TALLOC_CTX *mem_ctx,
++                                      uint16_t validation_level,
++                                      union netr_Validation *validation,
++                                      struct netr_SamInfo3 **info3_p)
++{
++      struct netr_SamInfo3 *info3;
++      NTSTATUS status;
++
++      if (validation == NULL) {
++              return NT_STATUS_INVALID_PARAMETER;
++      }
++
++      switch (validation_level) {
++      case 3:
++              if (validation->sam3 == NULL) {
++                      return NT_STATUS_INVALID_PARAMETER;
++              }
++
++              info3 = talloc_move(mem_ctx, &validation->sam3);
++              break;
++      case 6:
++              if (validation->sam6 == NULL) {
++                      return NT_STATUS_INVALID_PARAMETER;
++              }
++
++              info3 = talloc_zero(mem_ctx, struct netr_SamInfo3);
++              if (info3 == NULL) {
++                      return NT_STATUS_NO_MEMORY;
++              }
++              status = copy_netr_SamBaseInfo(info3, &validation->sam6->base, &info3->base);
++              if (!NT_STATUS_IS_OK(status)) {
++                      TALLOC_FREE(info3);
++                      return status;
++              }
++
++              info3->sidcount = validation->sam6->sidcount;
++              info3->sids = talloc_move(info3, &validation->sam6->sids);
++              break;
++      default:
++              return NT_STATUS_BAD_VALIDATION_CLASS;
++      }
++
++      *info3_p = info3;
++
++      return NT_STATUS_OK;
++}
++
+ /* Logon domain user */
+ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
+@@ -163,7 +210,8 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
+                                  const char *password,
+                                  const char *workstation,
+                                  uint16_t validation_level,
+-                                 int logon_type)
++                                 int logon_type,
++                                 struct netr_SamInfo3 **info3)
+ {
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       NTSTATUS status;
+@@ -298,54 +346,18 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
+               return NT_STATUS_ACCESS_DENIED;
+       }
+-      return result;
+-}
+-
+-static NTSTATUS map_validation_to_info3(TALLOC_CTX *mem_ctx,
+-                                      uint16_t validation_level,
+-                                      union netr_Validation *validation,
+-                                      struct netr_SamInfo3 **info3_p)
+-{
+-      struct netr_SamInfo3 *info3;
+-      NTSTATUS status;
+-
+-      if (validation == NULL) {
+-              return NT_STATUS_INVALID_PARAMETER;
++      if (!NT_STATUS_IS_OK(result)) {
++              return result;
+       }
+-      switch (validation_level) {
+-      case 3:
+-              if (validation->sam3 == NULL) {
+-                      return NT_STATUS_INVALID_PARAMETER;
+-              }
+-
+-              info3 = talloc_move(mem_ctx, &validation->sam3);
+-              break;
+-      case 6:
+-              if (validation->sam6 == NULL) {
+-                      return NT_STATUS_INVALID_PARAMETER;
+-              }
+-
+-              info3 = talloc_zero(mem_ctx, struct netr_SamInfo3);
+-              if (info3 == NULL) {
+-                      return NT_STATUS_NO_MEMORY;
+-              }
+-              status = copy_netr_SamBaseInfo(info3, &validation->sam6->base, &info3->base);
+-              if (!NT_STATUS_IS_OK(status)) {
+-                      TALLOC_FREE(info3);
+-                      return status;
+-              }
++      netlogon_creds_decrypt_samlogon(cli->dc, validation_level, &validation);
+-              info3->sidcount = validation->sam6->sidcount;
+-              info3->sids = talloc_move(info3, &validation->sam6->sids);
+-              break;
+-      default:
+-              return NT_STATUS_BAD_VALIDATION_CLASS;
++      result = map_validation_to_info3(mem_ctx, validation_level, &validation, info3);
++      if (!NT_STATUS_IS_OK(result)) {
++              return result;
+       }
+-      *info3_p = info3;
+-
+-      return NT_STATUS_OK;
++      return result;
+ }
+ /**
+diff --git a/source3/rpc_client/cli_netlogon.h b/source3/rpc_client/cli_netlogon.h
+index ad59d5b..9c6cbc8 100644
+--- a/source3/rpc_client/cli_netlogon.h
++++ b/source3/rpc_client/cli_netlogon.h
+@@ -41,7 +41,8 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
+                                  const char *password,
+                                  const char *workstation,
+                                  uint16_t validation_level,
+-                                 int logon_type);
++                                 int logon_type,
++                                 struct netr_SamInfo3 **info3);
+ NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli,
+                                          TALLOC_CTX *mem_ctx,
+                                          uint32 logon_parameters,
+diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c
+index 63057ac..e285145 100644
+--- a/source3/rpcclient/cmd_netlogon.c
++++ b/source3/rpcclient/cmd_netlogon.c
+@@ -724,6 +724,7 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli,
+       uint16_t validation_level = 3;
+       uint32 logon_param = 0;
+       const char *workstation = NULL;
++      struct netr_SamInfo3 *info3 = NULL;
+       /* Check arguments */
+@@ -750,7 +751,7 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli,
+       /* Perform the sam logon */
+-      result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, workstation, validation_level, logon_type);
++      result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, workstation, validation_level, logon_type, &info3);
+       if (!NT_STATUS_IS_OK(result))
+               goto done;
+commit 53c404ade6d660c449a9dddb56aa80dc6d5ea920
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Tue Jul 15 14:25:19 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:29 2014 +0200
+
+    PATCHSET14 s3-winbindd: call interactive samlogon via rpccli_netlogon_password_logon.
+    
+    Guenther
+    
+    Signed-off-by: Guenther Deschner <gd@samba.org>
+    Pair-Programmed-With: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+---
+ source3/winbindd/winbindd_pam.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
+index 125e393..2b31d54 100644
+--- a/source3/winbindd/winbindd_pam.c
++++ b/source3/winbindd/winbindd_pam.c
+@@ -1152,11 +1152,13 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
+                                           uint32_t logon_parameters,
+                                           const char *server,
+                                           const char *username,
++                                          const char *password,
+                                           const char *domainname,
+                                           const char *workstation,
+                                           const uint8_t chal[8],
+                                           DATA_BLOB lm_response,
+                                           DATA_BLOB nt_response,
++                                          bool interactive,
+                                           struct netr_SamInfo3 **info3)
+ {
+       int attempts = 0;
+@@ -1269,7 +1271,19 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
+                       domain->can_do_validation6 = false;
+               }
+-              if (domain->can_do_samlogon_ex && domain->can_do_validation6) {
++              if (interactive && username != NULL && password != NULL) {
++                      result = rpccli_netlogon_sam_logon(
++                                      netlogon_pipe,
++                                      mem_ctx,
++                                      logon_parameters,
++                                      domainname,
++                                      username,
++                                      password,
++                                      workstation,
++                                      3, /* FIXME */
++                                      NetlogonInteractiveInformation,
++                                      info3);
++              } else if (domain->can_do_samlogon_ex && domain->can_do_validation6) {
+                       result = rpccli_netlogon_sam_network_logon_ex(
+                                       netlogon_pipe,
+                                       mem_ctx,
+@@ -1453,11 +1467,13 @@ static NTSTATUS winbindd_dual_pam_auth_samlogon(TALLOC_CTX *mem_ctx,
+                                            0,
+                                            domain->dcname,
+                                            name_user,
++                                           pass,
+                                            name_domain,
+                                            global_myname(),
+                                            chal,
+                                            lm_resp,
+                                            nt_resp,
++                                           true,
+                                            &my_info3);
+       if (!NT_STATUS_IS_OK(result)) {
+               goto done;
+@@ -1874,12 +1890,14 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
+                                            state->request->data.auth_crap.logon_parameters,
+                                            domain->dcname,
+                                            name_user,
++                                           NULL, /* password */
+                                            name_domain,
+                                            /* Bug #3248 - found by Stefan Burkei. */
+                                            workstation, /* We carefully set this above so use it... */
+                                            state->request->data.auth_crap.chal,
+                                            lm_resp,
+                                            nt_resp,
++                                           false, /* interactive */
+                                            &info3);
+       if (!NT_STATUS_IS_OK(result)) {
+               goto done;
+commit f73d1b92b78c4c3f23f411807273e3d09d39c10a
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Mon Jul 7 17:14:37 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:30 2014 +0200
+
+    PATCHSET14 s3-winbindd: add wcache_query_user_fullname().
+    
+    This helper function is used to query the full name of a cached user object (for
+    further gecos processing).
+    
+    Thanks to Matt Rogers <mrogers@redhat.com>.
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440
+    
+    Guenther
+    
+    Pair-Programmed-With: Andreas Schneider <asn@samba.org>
+    Signed-off-by: Günther Deschner <gd@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+---
+ source3/winbindd/winbindd_cache.c | 34 ++++++++++++++++++++++++++++++++++
+ source3/winbindd/winbindd_proto.h |  4 ++++
+ 2 files changed, 38 insertions(+)
+
+diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
+index 0a65953..82c8087 100644
+--- a/source3/winbindd/winbindd_cache.c
++++ b/source3/winbindd/winbindd_cache.c
+@@ -2282,6 +2282,40 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain,
+       return status;
+ }
++
++/**
++* @brief Query a fullname from the username cache (for further gecos processing)
++*
++* @param domain               A pointer to the winbindd_domain struct.
++* @param mem_ctx      The talloc context.
++* @param user_sid     The user sid.
++* @param full_name    A pointer to the full_name string.
++*
++* @return NTSTATUS code
++*/
++NTSTATUS wcache_query_user_fullname(struct winbindd_domain *domain,
++                                  TALLOC_CTX *mem_ctx,
++                                  const struct dom_sid *user_sid,
++                                  const char **full_name)
++{
++      NTSTATUS status;
++      struct wbint_userinfo info;
++
++      status = wcache_query_user(domain, mem_ctx, user_sid, &info);
++      if (!NT_STATUS_IS_OK(status)) {
++              return status;
++      }
++
++      if (info.full_name != NULL) {
++              *full_name = talloc_strdup(mem_ctx, info.full_name);
++              if (*full_name == NULL) {
++                      return NT_STATUS_NO_MEMORY;
++              }
++      }
++
++      return NT_STATUS_OK;
++}
++
+ /* Lookup user information from a rid */
+ static NTSTATUS query_user(struct winbindd_domain *domain,
+                          TALLOC_CTX *mem_ctx,
+diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h
+index 82176b2..585853e 100644
+--- a/source3/winbindd/winbindd_proto.h
++++ b/source3/winbindd/winbindd_proto.h
+@@ -103,6 +103,10 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain,
+                          TALLOC_CTX *mem_ctx,
+                          const struct dom_sid *user_sid,
+                          struct wbint_userinfo *info);
++NTSTATUS wcache_query_user_fullname(struct winbindd_domain *domain,
++                                  TALLOC_CTX *mem_ctx,
++                                  const struct dom_sid *user_sid,
++                                  const char **full_name);
+ NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain,
+                                  TALLOC_CTX *mem_ctx,
+                                  uint32 num_sids, const struct dom_sid *sids,
+commit d4d04c269ade1e96f84b71e60a1c6c322eec5514
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Mon Jul 7 17:16:32 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:31 2014 +0200
+
+    PATCHSET14 s3-winbindd: use wcache_query_user_fullname after inspecting samlogon cache.
+    
+    The reason for this followup query is that very often the samlogon cache only
+    contains a info3 netlogon user structure that has been retrieved during a
+    netlogon samlogon authentication using "network" logon level. With that logon
+    level only a few info3 fields are filled in; the user's fullname is never filled
+    in that case. This is problematic when the cache is used to fill in the user's
+    gecos field (for NSS queries). When we have retrieved the user's fullname during
+    other queries, reuse it from the other caches.
+    
+    Thanks to Matt Rogers <mrogers@redhat.com>.
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440
+    
+    Guenther
+    
+    Pair-Programmed-With: Andreas Schneider <asn@samba.org>
+    Signed-off-by: Guenther Deschner <gd@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+---
+ source3/winbindd/winbindd_ads.c   |  8 ++++++++
+ source3/winbindd/winbindd_msrpc.c |  8 ++++++++
+ source3/winbindd/winbindd_pam.c   | 41 +++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 57 insertions(+)
+
+diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c
+index 3099ff0..7d960fc 100644
+--- a/source3/winbindd/winbindd_ads.c
++++ b/source3/winbindd/winbindd_ads.c
+@@ -515,6 +515,14 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
+               TALLOC_FREE(user);
++              if (info->full_name == NULL) {
++                      /* this might fail so we dont check the return code */
++                      wcache_query_user_fullname(domain,
++                                                 mem_ctx,
++                                                 sid,
++                                                 &info->full_name);
++              }
++
+               return NT_STATUS_OK;
+       }
+diff --git a/source3/winbindd/winbindd_msrpc.c b/source3/winbindd/winbindd_msrpc.c
+index b426884..eae822c 100644
+--- a/source3/winbindd/winbindd_msrpc.c
++++ b/source3/winbindd/winbindd_msrpc.c
+@@ -439,6 +439,14 @@ static NTSTATUS msrpc_query_user(struct winbindd_domain *domain,
+               user_info->full_name = talloc_strdup(user_info,
+                                                    user->base.full_name.string);
++              if (user_info->full_name == NULL) {
++                      /* this might fail so we dont check the return code */
++                      wcache_query_user_fullname(domain,
++                                                 mem_ctx,
++                                                 user_sid,
++                                                 &user_info->full_name);
++              }
++
+               status = NT_STATUS_OK;
+               goto done;
+       }
+diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
+index 2b31d54..86b352e 100644
+--- a/source3/winbindd/winbindd_pam.c
++++ b/source3/winbindd/winbindd_pam.c
+@@ -1739,6 +1739,26 @@ process_result:
+               sid_compose(&user_sid, info3->base.domain_sid,
+                           info3->base.rid);
++              if (info3->base.full_name.string == NULL) {
++                      struct netr_SamInfo3 *cached_info3;
++
++                      cached_info3 = netsamlogon_cache_get(state->mem_ctx,
++                                                           &user_sid);
++                      if (cached_info3 != NULL &&
++                          cached_info3->base.full_name.string != NULL) {
++                              info3->base.full_name.string =
++                                      talloc_strdup(info3,
++                                                    cached_info3->base.full_name.string);
++                      } else {
++
++                              /* this might fail so we dont check the return code */
++                              wcache_query_user_fullname(domain,
++                                              info3,
++                                              &user_sid,
++                                              &info3->base.full_name.string);
++                      }
++              }
++
+               wcache_invalidate_samlogon(find_domain_from_name(name_domain),
+                                          &user_sid);
+               netsamlogon_cache_store(name_user, info3);
+@@ -1910,6 +1930,27 @@ process_result:
+               sid_compose(&user_sid, info3->base.domain_sid,
+                           info3->base.rid);
++
++              if (info3->base.full_name.string == NULL) {
++                      struct netr_SamInfo3 *cached_info3;
++
++                      cached_info3 = netsamlogon_cache_get(state->mem_ctx,
++                                                           &user_sid);
++                      if (cached_info3 != NULL &&
++                          cached_info3->base.full_name.string != NULL) {
++                              info3->base.full_name.string =
++                                      talloc_strdup(info3,
++                                                    cached_info3->base.full_name.string);
++                      } else {
++
++                              /* this might fail so we dont check the return code */
++                              wcache_query_user_fullname(domain,
++                                              info3,
++                                              &user_sid,
++                                              &info3->base.full_name.string);
++                      }
++              }
++
+               wcache_invalidate_samlogon(find_domain_from_name(name_domain),
+                                          &user_sid);
+               netsamlogon_cache_store(name_user, info3);
+commit 7a38729ac2b93d0bd8c2450821cfcedff6fa3f53
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Wed Jul 9 13:36:06 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:32 2014 +0200
+
+    PATCHSET14 samlogon_cache: use a talloc_stackframe inside netsamlogon_cache_store.
+    
+    Guenther
+    
+    Signed-off-by: Günther Deschner <gd@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+---
+ source3/libsmb/samlogon_cache.c | 13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c
+index 590c950..4281965 100644
+--- a/source3/libsmb/samlogon_cache.c
++++ b/source3/libsmb/samlogon_cache.c
+@@ -132,7 +132,7 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3)
+       bool result = false;
+       struct dom_sid  user_sid;
+       time_t t = time(NULL);
+-      TALLOC_CTX *mem_ctx;
++      TALLOC_CTX *tmp_ctx = talloc_stackframe();
+       DATA_BLOB blob;
+       enum ndr_err_code ndr_err;
+       struct netsamlogoncache_entry r;
+@@ -156,11 +156,6 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3)
+       /* Prepare data */
+-      if (!(mem_ctx = TALLOC_P( NULL, int))) {
+-              DEBUG(0,("netsamlogon_cache_store: talloc() failed!\n"));
+-              return false;
+-      }
+-
+       /* only Samba fills in the username, not sure why NT doesn't */
+       /* so we fill it in since winbindd_getpwnam() makes use of it */
+@@ -175,11 +170,11 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3)
+               NDR_PRINT_DEBUG(netsamlogoncache_entry, &r);
+       }
+-      ndr_err = ndr_push_struct_blob(&blob, mem_ctx, &r,
++      ndr_err = ndr_push_struct_blob(&blob, tmp_ctx, &r,
+                                      (ndr_push_flags_fn_t)ndr_push_netsamlogoncache_entry);
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               DEBUG(0,("netsamlogon_cache_store: failed to push entry to cache\n"));
+-              TALLOC_FREE(mem_ctx);
++              TALLOC_FREE(tmp_ctx);
+               return false;
+       }
+@@ -190,7 +185,7 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3)
+               result = true;
+       }
+-      TALLOC_FREE(mem_ctx);
++      TALLOC_FREE(tmp_ctx);
+       return result;
+ }
+commit f89b793bd672a66f5e75ade33467f6621545f0d4
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Thu Jul 3 16:17:46 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:32 2014 +0200
+
+    PATCHSET14 samlogon_cache: avoid overwriting info3->base.full_name.string.
+    
+    This field servers as a source for the gecos field. We should not overwrite it
+    when a info3 struct from a samlogon network level gets saved in which case this
+    field is always NULL.
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440
+    
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Guenther Deschner <gd@samba.org>
+---
+ source3/libsmb/samlogon_cache.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c
+index 4281965..8a3dbd2 100644
+--- a/source3/libsmb/samlogon_cache.c
++++ b/source3/libsmb/samlogon_cache.c
+@@ -156,6 +156,20 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3)
+       /* Prepare data */
++      if (info3->base.full_name.string == NULL) {
++              struct netr_SamInfo3 *cached_info3;
++              const char *full_name = NULL;
++
++              cached_info3 = netsamlogon_cache_get(tmp_ctx, &user_sid);
++              if (cached_info3 != NULL) {
++                      full_name = cached_info3->base.full_name.string;
++              }
++
++              if (full_name != NULL) {
++                      info3->base.full_name.string = talloc_strdup(info3, full_name);
++              }
++      }
++
+       /* only Samba fills in the username, not sure why NT doesn't */
+       /* so we fill it in since winbindd_getpwnam() makes use of it */
+commit 8fcaeecf174a1c9088c84f271e2859f75e9a5101
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Thu Jul 3 16:19:42 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 15:25:33 2014 +0200
+
+    PATCHSET14 s3-winbind: Don't set the gecos field to NULL.
+    
+    The value is loaded from the cache anyway. So it will be set to NULL if
+    it is not available.
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440
+    
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Guenther Deschner <gd@samba.org>
+---
+ source3/winbindd/nss_info_template.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/source3/winbindd/nss_info_template.c b/source3/winbindd/nss_info_template.c
+index 5fdfd9b..de93803 100644
+--- a/source3/winbindd/nss_info_template.c
++++ b/source3/winbindd/nss_info_template.c
+@@ -48,7 +48,6 @@ static NTSTATUS nss_template_get_info( struct nss_domain_entry *e,
+         username */
+       *homedir = talloc_strdup( ctx, lp_template_homedir() );
+       *shell   = talloc_strdup( ctx, lp_template_shell() );
+-      *gecos   = NULL;
+       if ( !*homedir || !*shell ) {
+               return NT_STATUS_NO_MEMORY;
+commit d32503872aec4fca41056b2d9d9bbb6b15ce9701
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Tue Jul 15 16:21:08 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 16:24:59 2014 +0200
+
+    PATCHSET14 s3-rpc_client: add rpccli_netlogon_sam_logon_ex().
+    
+    This function deals with interactive samlogon and does a dcerpc_netr_SamLogonEx
+    call (w/o credential chaining).
+    
+    Guenther
+    
+    Signed-off-by: Günther Deschner <gd@samba.org>
+---
+ source3/rpc_client/cli_netlogon.c | 152 ++++++++++++++++++++++++++++++++++++++
+ source3/rpc_client/cli_netlogon.h |  10 +++
+ 2 files changed, 162 insertions(+)
+
+diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c
+index 9454226..0290944 100644
+--- a/source3/rpc_client/cli_netlogon.c
++++ b/source3/rpc_client/cli_netlogon.c
+@@ -360,6 +360,158 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
+       return result;
+ }
++/* Logon domain user */
++
++NTSTATUS rpccli_netlogon_sam_logon_ex(struct rpc_pipe_client *cli,
++                                    TALLOC_CTX *mem_ctx,
++                                    uint32 logon_parameters,
++                                    const char *domain,
++                                    const char *username,
++                                    const char *password,
++                                    const char *workstation,
++                                    uint16_t validation_level,
++                                    int logon_type,
++                                    struct netr_SamInfo3 **info3)
++{
++      NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
++      NTSTATUS status;
++      struct netr_Authenticator ret_creds;
++      union netr_LogonLevel *logon;
++      union netr_Validation validation;
++      uint8_t authoritative;
++      fstring clnt_name_slash;
++      struct dcerpc_binding_handle *b = cli->binding_handle;
++      uint32_t flags = 0;
++
++      ZERO_STRUCT(ret_creds);
++
++      logon = TALLOC_ZERO_P(mem_ctx, union netr_LogonLevel);
++      if (!logon) {
++              return NT_STATUS_NO_MEMORY;
++      }
++
++      if (workstation) {
++              fstr_sprintf( clnt_name_slash, "\\\\%s", workstation );
++      } else {
++              fstr_sprintf( clnt_name_slash, "\\\\%s", global_myname() );
++      }
++
++      /* Initialise input parameters */
++
++      switch (logon_type) {
++      case NetlogonInteractiveInformation: {
++
++              struct netr_PasswordInfo *password_info;
++
++              struct samr_Password lmpassword;
++              struct samr_Password ntpassword;
++
++              password_info = TALLOC_ZERO_P(mem_ctx, struct netr_PasswordInfo);
++              if (!password_info) {
++                      return NT_STATUS_NO_MEMORY;
++              }
++
++              nt_lm_owf_gen(password, ntpassword.hash, lmpassword.hash);
++
++              if (cli->dc->negotiate_flags & NETLOGON_NEG_ARCFOUR) {
++                      netlogon_creds_arcfour_crypt(cli->dc, lmpassword.hash, 16);
++                      netlogon_creds_arcfour_crypt(cli->dc, ntpassword.hash, 16);
++              } else {
++                      netlogon_creds_des_encrypt(cli->dc, &lmpassword);
++                      netlogon_creds_des_encrypt(cli->dc, &ntpassword);
++              }
++
++              password_info->identity_info.domain_name.string         = domain;
++              password_info->identity_info.parameter_control          = logon_parameters;
++              password_info->identity_info.logon_id_low               = 0xdead;
++              password_info->identity_info.logon_id_high              = 0xbeef;
++              password_info->identity_info.account_name.string        = username;
++              password_info->identity_info.workstation.string         = clnt_name_slash;
++
++              password_info->lmpassword = lmpassword;
++              password_info->ntpassword = ntpassword;
++
++              logon->password = password_info;
++
++              break;
++      }
++      case NetlogonNetworkInformation: {
++              struct netr_NetworkInfo *network_info;
++              uint8 chal[8];
++              unsigned char local_lm_response[24];
++              unsigned char local_nt_response[24];
++              struct netr_ChallengeResponse lm;
++              struct netr_ChallengeResponse nt;
++
++              ZERO_STRUCT(lm);
++              ZERO_STRUCT(nt);
++
++              network_info = TALLOC_ZERO_P(mem_ctx, struct netr_NetworkInfo);
++              if (!network_info) {
++                      return NT_STATUS_NO_MEMORY;
++              }
++
++              generate_random_buffer(chal, 8);
++
++              SMBencrypt(password, chal, local_lm_response);
++              SMBNTencrypt(password, chal, local_nt_response);
++
++              lm.length = 24;
++              lm.data = local_lm_response;
++
++              nt.length = 24;
++              nt.data = local_nt_response;
++
++              network_info->identity_info.domain_name.string          = domain;
++              network_info->identity_info.parameter_control           = logon_parameters;
++              network_info->identity_info.logon_id_low                = 0xdead;
++              network_info->identity_info.logon_id_high               = 0xbeef;
++              network_info->identity_info.account_name.string         = username;
++              network_info->identity_info.workstation.string          = clnt_name_slash;
++
++              memcpy(network_info->challenge, chal, 8);
++              network_info->nt = nt;
++              network_info->lm = lm;
++
++              logon->network = network_info;
++
++              break;
++      }
++      default:
++              DEBUG(0, ("switch value %d not supported\n",
++                      logon_type));
++              return NT_STATUS_INVALID_INFO_CLASS;
++      }
++
++      status = dcerpc_netr_LogonSamLogonEx(b, mem_ctx,
++                                           cli->srv_name_slash,
++                                           global_myname(),
++                                           logon_type,
++                                           logon,
++                                           validation_level,
++                                           &validation,
++                                           &authoritative,
++                                           &flags,
++                                           &result);
++      if (!NT_STATUS_IS_OK(status)) {
++              return status;
++      }
++
++      if (!NT_STATUS_IS_OK(result)) {
++              return result;
++      }
++
++      netlogon_creds_decrypt_samlogon(cli->dc, validation_level, &validation);
++
++      result = map_validation_to_info3(mem_ctx, validation_level, &validation, info3);
++      if (!NT_STATUS_IS_OK(result)) {
++              return result;
++      }
++
++      return result;
++}
++
++
+ /**
+  * Logon domain user with an 'network' SAM logon
+  *
+diff --git a/source3/rpc_client/cli_netlogon.h b/source3/rpc_client/cli_netlogon.h
+index 9c6cbc8..3763843 100644
+--- a/source3/rpc_client/cli_netlogon.h
++++ b/source3/rpc_client/cli_netlogon.h
+@@ -43,6 +43,16 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
+                                  uint16_t validation_level,
+                                  int logon_type,
+                                  struct netr_SamInfo3 **info3);
++NTSTATUS rpccli_netlogon_sam_logon_ex(struct rpc_pipe_client *cli,
++                                    TALLOC_CTX *mem_ctx,
++                                    uint32 logon_parameters,
++                                    const char *domain,
++                                    const char *username,
++                                    const char *password,
++                                    const char *workstation,
++                                    uint16_t validation_level,
++                                    int logon_type,
++                                    struct netr_SamInfo3 **info3);
+ NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli,
+                                          TALLOC_CTX *mem_ctx,
+                                          uint32 logon_parameters,
+commit f39f18e062207427ea436c85a7c721629a38bc0d
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Tue Jul 15 16:22:15 2014 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Tue Jul 15 16:25:04 2014 +0200
+
+    PATCHSET14 s3-winbindd: prefer to do a rpccli_netlogon_sam_logon_ex if we can.
+    
+    Guenther
+    
+    Signed-off-by: Günther Deschner <gd@samba.org>
+---
+ source3/winbindd/winbindd_pam.c | 36 +++++++++++++++++++++++++-----------
+ 1 file changed, 25 insertions(+), 11 deletions(-)
+
+diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
+index 86b352e..e838ac6 100644
+--- a/source3/winbindd/winbindd_pam.c
++++ b/source3/winbindd/winbindd_pam.c
+@@ -1272,17 +1272,31 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
+               }
+               if (interactive && username != NULL && password != NULL) {
+-                      result = rpccli_netlogon_sam_logon(
+-                                      netlogon_pipe,
+-                                      mem_ctx,
+-                                      logon_parameters,
+-                                      domainname,
+-                                      username,
+-                                      password,
+-                                      workstation,
+-                                      3, /* FIXME */
+-                                      NetlogonInteractiveInformation,
+-                                      info3);
++                      if (domain->can_do_samlogon_ex && domain->can_do_validation6) {
++                              result = rpccli_netlogon_sam_logon_ex(
++                                              netlogon_pipe,
++                                              mem_ctx,
++                                              logon_parameters,
++                                              domainname,
++                                              username,
++                                              password,
++                                              workstation,
++                                              6,
++                                              NetlogonInteractiveInformation,
++                                              info3);
++                      } else {
++                              result = rpccli_netlogon_sam_logon(
++                                              netlogon_pipe,
++                                              mem_ctx,
++                                              logon_parameters,
++                                              domainname,
++                                              username,
++                                              password,
++                                              workstation,
++                                              domain->can_do_validation6 ? 6 : 3,
++                                              NetlogonInteractiveInformation,
++                                              info3);
++                      }
+               } else if (domain->can_do_samlogon_ex && domain->can_do_validation6) {
+                       result = rpccli_netlogon_sam_network_logon_ex(
+                                       netlogon_pipe,
+From fa58aff691268b021ba4dde1eb580d0387b917e1 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 20 Aug 2014 15:51:21 +0200
+Subject: [PATCH] PATCHSET14: Reset netlogon pipe for interactive samlogon_ex.
+
+---
+ source3/winbindd/winbindd_pam.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
+index e838ac6..5316232 100644
+--- a/source3/winbindd/winbindd_pam.c
++++ b/source3/winbindd/winbindd_pam.c
+@@ -1297,6 +1297,18 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
+                                               NetlogonInteractiveInformation,
+                                               info3);
+                       }
++
++                      if (NT_STATUS_EQUAL(result, NT_STATUS_WRONG_PASSWORD)) {
++                              /*
++                               * HACK: This is a 3.6 hack that we get a new
++                               * session_key to do a successfuly interactive
++                               * logon
++                               */
++                              TALLOC_FREE(domain->conn.netlogon_pipe);
++                              attempts += 1;
++                              retry = true;
++                              continue;
++                      }
+               } else if (domain->can_do_samlogon_ex && domain->can_do_validation6) {
+                       result = rpccli_netlogon_sam_network_logon_ex(
+                                       netlogon_pipe,
+-- 
+1.9.3
+
diff --git a/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch b/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch
new file mode 100644 (file)
index 0000000..28661d7
--- /dev/null
@@ -0,0 +1,46 @@
+commit 1d5f14acc3bacb96f7b8b300b3aeccd793552122
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Wed Nov 27 17:21:01 2013 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:44:51 2014 +0100
+
+    s3-lib: Fix %G substitution for domain users in smbd
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10286
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Christian Ambach <ambi@samba.org>
+    
+    Autobuild-User(master): Christian Ambach <ambi@samba.org>
+    Autobuild-Date(master): Tue Dec 10 16:39:43 CET 2013 on sn-devel-104
+    
+    (cherry picked from commit 8eef4ab79ec5fb7e96ad2f2ad6c9bf30db13a50d)
+---
+ source3/lib/substitute.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
+index 10beed7..5f72a5d 100644
+--- a/source3/lib/substitute.c
++++ b/source3/lib/substitute.c
+@@ -605,10 +605,20 @@ static char *alloc_sub_basic(const char *smb_name, const char *domain_name,
+                       break;
+               case 'G' : {
+                       struct passwd *pass;
+-                      r = talloc_strdup(tmp_ctx, smb_name);
++
++                      if (domain_name != NULL && domain_name[0] != '\0') {
++                              r = talloc_asprintf(tmp_ctx,
++                                                  "%s%c%s",
++                                                  domain_name,
++                                                  *lp_winbind_separator(),
++                                                  smb_name);
++                      } else {
++                              r = talloc_strdup(tmp_ctx, smb_name);
++                      }
+                       if (r == NULL) {
+                               goto error;
+                       }
++
+                       pass = Get_Pwnam_alloc(tmp_ctx, r);
+                       if (pass != NULL) {
+                               a_string = realloc_string_sub(
diff --git a/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch b/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch
new file mode 100644 (file)
index 0000000..6d43f7c
--- /dev/null
@@ -0,0 +1,376 @@
+commit 75989f1d0d3ec86bb2046511b962ad72119c750b
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Mon Nov 18 14:58:04 2013 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:38:44 2014 +0100
+
+    s3-lib: Add grpname to talloc_sub_specified().
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=2191
+---
+ source3/include/proto.h          |  1 +
+ source3/lib/substitute.c         | 31 +++++++++++++++++++++++++------
+ source3/passdb/passdb.c          |  8 ++++----
+ source3/passdb/pdb_ldap.c        | 24 +++++++++++++++++++++---
+ source3/torture/torture.c        |  2 +-
+ source3/utils/net_sam.c          |  2 ++
+ source3/winbindd/wb_fill_pwent.c |  4 ++--
+ 7 files changed, 56 insertions(+), 16 deletions(-)
+
+diff --git a/source3/include/proto.h b/source3/include/proto.h
+index 7303e76..db091ce 100644
+--- a/source3/include/proto.h
++++ b/source3/include/proto.h
+@@ -365,6 +365,7 @@ char *talloc_sub_basic(TALLOC_CTX *mem_ctx, const char *smb_name,
+ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
+                       const char *input_string,
+                       const char *username,
++                      const char *grpname,
+                       const char *domain,
+                       uid_t uid,
+                       gid_t gid);
+diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
+index 68328e5..10beed7 100644
+--- a/source3/lib/substitute.c
++++ b/source3/lib/substitute.c
+@@ -722,6 +722,7 @@ done:
+ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
+                       const char *input_string,
+                       const char *username,
++                      const char *grpname,
+                       const char *domain,
+                       uid_t uid,
+                       gid_t gid)
+@@ -757,9 +758,18 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
+                       break;
+               case 'G' :
+                       if (gid != -1) {
+-                              a_string = talloc_string_sub(
+-                                      tmp_ctx, a_string, "%G",
+-                                      gidtoname(gid));
++                              const char *name;
++
++                              if (grpname != NULL) {
++                                      name = grpname;
++                              } else {
++                                      name = gidtoname(gid);
++                              }
++
++                              a_string = talloc_string_sub(tmp_ctx,
++                                                           a_string,
++                                                           "%G",
++                                                           name);
+                       } else {
+                               a_string = talloc_string_sub(
+                                       tmp_ctx, a_string,
+@@ -768,9 +778,18 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
+                       break;
+               case 'g' :
+                       if (gid != -1) {
+-                              a_string = talloc_string_sub(
+-                                      tmp_ctx, a_string, "%g",
+-                                      gidtoname(gid));
++                              const char *name;
++
++                              if (grpname != NULL) {
++                                      name = grpname;
++                              } else {
++                                      name = gidtoname(gid);
++                              }
++
++                              a_string = talloc_string_sub(tmp_ctx,
++                                                           a_string,
++                                                           "%g",
++                                                           name);
+                       } else {
+                               a_string = talloc_string_sub(
+                                       tmp_ctx, a_string, "%g", "NO_GROUP");
+diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c
+index 52c1129..493a694 100644
+--- a/source3/passdb/passdb.c
++++ b/source3/passdb/passdb.c
+@@ -228,16 +228,16 @@ static NTSTATUS samu_set_unix_internal(struct samu *user, const struct passwd *p
+               /* set some basic attributes */
+               pdb_set_profile_path(user, talloc_sub_specified(user, 
+-                      lp_logon_path(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid), 
++                      lp_logon_path(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid),
+                       PDB_DEFAULT);           
+               pdb_set_homedir(user, talloc_sub_specified(user, 
+-                      lp_logon_home(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid),
++                      lp_logon_home(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid),
+                       PDB_DEFAULT);
+               pdb_set_dir_drive(user, talloc_sub_specified(user, 
+-                      lp_logon_drive(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid),
++                      lp_logon_drive(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid),
+                       PDB_DEFAULT);
+               pdb_set_logon_script(user, talloc_sub_specified(user, 
+-                      lp_logon_script(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid), 
++                      lp_logon_script(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid),
+                       PDB_DEFAULT);
+       }
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index 9316f40..1665641 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -5399,11 +5399,29 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods,
+               if (is_machine) {
+                       /* TODO: choose a more appropriate default for machines */
+-                      homedir = talloc_sub_specified(tmp_ctx, lp_template_homedir(), "SMB_workstations_home", ldap_state->domain_name, uid, gid);
++                      homedir = talloc_sub_specified(tmp_ctx,
++                                                     lp_template_homedir(),
++                                                     "SMB_workstations_home",
++                                                     NULL,
++                                                     ldap_state->domain_name,
++                                                     uid,
++                                                     gid);
+                       shell = talloc_strdup(tmp_ctx, "/bin/false");
+               } else {
+-                      homedir = talloc_sub_specified(tmp_ctx, lp_template_homedir(), name, ldap_state->domain_name, uid, gid);
+-                      shell = talloc_sub_specified(tmp_ctx, lp_template_shell(), name, ldap_state->domain_name, uid, gid);
++                      homedir = talloc_sub_specified(tmp_ctx,
++                                                     lp_template_homedir(),
++                                                     name,
++                                                     NULL,
++                                                     ldap_state->domain_name,
++                                                     uid,
++                                                     gid);
++                      shell = talloc_sub_specified(tmp_ctx,
++                                                   lp_template_shell(),
++                                                   name,
++                                                   NULL,
++                                                   ldap_state->domain_name,
++                                                   uid,
++                                                   gid);
+               }
+               uidstr = talloc_asprintf(tmp_ctx, "%u", (unsigned int)uid);
+               gidstr = talloc_asprintf(tmp_ctx, "%u", (unsigned int)gid);
+diff --git a/source3/torture/torture.c b/source3/torture/torture.c
+index d37d83c..def177b 100644
+--- a/source3/torture/torture.c
++++ b/source3/torture/torture.c
+@@ -5976,7 +5976,7 @@ static bool subst_test(const char *str, const char *user, const char *domain,
+       char *subst;
+       bool result = true;
+-      subst = talloc_sub_specified(talloc_tos(), str, user, domain, uid, gid);
++      subst = talloc_sub_specified(talloc_tos(), str, user, NULL, domain, uid, gid);
+       if (strcmp(subst, expected) != 0) {
+               printf("sub_specified(%s, %s, %s, %d, %d) returned [%s], expected "
+diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
+index 0ff7c55..b49bb73 100644
+--- a/source3/utils/net_sam.c
++++ b/source3/utils/net_sam.c
+@@ -1847,10 +1847,12 @@ doma_done:
+               gidstr = talloc_asprintf(tc, "%u", (unsigned int)domadmins_gid);
+               dir = talloc_sub_specified(tc, lp_template_homedir(),
+                                               "Administrator",
++                                              NULL,
+                                               get_global_sam_name(),
+                                               uid, domadmins_gid);
+               shell = talloc_sub_specified(tc, lp_template_shell(),
+                                               "Administrator",
++                                              NULL,
+                                               get_global_sam_name(),
+                                               uid, domadmins_gid);
+diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c
+index 8f09480..4d94a31 100644
+--- a/source3/winbindd/wb_fill_pwent.c
++++ b/source3/winbindd/wb_fill_pwent.c
+@@ -181,11 +181,11 @@ static bool fillup_pw_field(const char *lp_template,
+       if ((in != NULL) && (in[0] != '\0') && (lp_security() == SEC_ADS)) {
+               templ = talloc_sub_specified(talloc_tos(), in,
+-                                           username, domname,
++                                           username, NULL, domname,
+                                            uid, gid);
+       } else {
+               templ = talloc_sub_specified(talloc_tos(), lp_template,
+-                                           username, domname,
++                                           username, NULL, domname,
+                                            uid, gid);
+       }
+commit 5faa0adf0a8c450897d7a61d348a600f889e5bef
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Mon Nov 18 14:58:14 2013 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:43:17 2014 +0100
+
+    s3-winbind: Pass the group name to fillup_pw_field().
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=2191
+---
+ source3/winbindd/wb_fill_pwent.c | 58 +++++++++++++++++++++++++++++-----------
+ 1 file changed, 42 insertions(+), 16 deletions(-)
+
+diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c
+index 4d94a31..878c5ad 100644
+--- a/source3/winbindd/wb_fill_pwent.c
++++ b/source3/winbindd/wb_fill_pwent.c
+@@ -29,6 +29,7 @@ struct wb_fill_pwent_state {
+ static bool fillup_pw_field(const char *lp_template,
+                           const char *username,
++                          const char *grpname,
+                           const char *domname,
+                           uid_t uid,
+                           gid_t gid,
+@@ -36,7 +37,7 @@ static bool fillup_pw_field(const char *lp_template,
+                           fstring out);
+ static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq);
+-static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq);
++static void wb_fill_pwent_getgrsid_done(struct tevent_req *subreq);
+ struct tevent_req *wb_fill_pwent_send(TALLOC_CTX *mem_ctx,
+                                     struct tevent_context *ev,
+@@ -76,33 +77,44 @@ static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq)
+               return;
+       }
+-      subreq = wb_sid2gid_send(state, state->ev, &state->info->group_sid);
++      subreq = wb_getgrsid_send(state, state->ev, &state->info->group_sid, 1);
+       if (tevent_req_nomem(subreq, req)) {
+               return;
+       }
+-      tevent_req_set_callback(subreq, wb_fill_pwent_sid2gid_done, req);
++      tevent_req_set_callback(subreq, wb_fill_pwent_getgrsid_done, req);
+ }
+-static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq)
++static void wb_fill_pwent_getgrsid_done(struct tevent_req *subreq)
+ {
+       struct tevent_req *req = tevent_req_callback_data(
+               subreq, struct tevent_req);
+       struct wb_fill_pwent_state *state = tevent_req_data(
+               req, struct wb_fill_pwent_state);
+       struct winbindd_domain *domain;
+-      char *dom_name;
++      const char *dom_name;
++      const char *grp_name;
+       fstring user_name, output_username;
+       char *mapped_name = NULL;
++      struct talloc_dict *members;
++      TALLOC_CTX *tmp_ctx = talloc_stackframe();
+       NTSTATUS status;
+-
+-      status = wb_sid2gid_recv(subreq, &state->pw->pw_gid);
++      bool ok;
++
++      status = wb_getgrsid_recv(subreq,
++                                tmp_ctx,
++                                &dom_name,
++                                &grp_name,
++                                &state->pw->pw_gid,
++                                &members);
+       TALLOC_FREE(subreq);
+       if (tevent_req_nterror(req, status)) {
++              talloc_free(tmp_ctx);
+               return;
+       }
+       domain = find_domain_from_sid_noinit(&state->info->user_sid);
+       if (domain == NULL) {
++              talloc_free(tmp_ctx);
+               tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER);
+               return;
+       }
+@@ -133,17 +145,30 @@ static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq)
+       fstrcpy(state->pw->pw_gecos, state->info->full_name);
+       /* Home directory and shell */
+-
+-      if (!fillup_pw_field(lp_template_homedir(), user_name, dom_name,
+-                           state->pw->pw_uid, state->pw->pw_gid,
+-                           state->info->homedir, state->pw->pw_dir)) {
++      ok = fillup_pw_field(lp_template_homedir(),
++                           user_name,
++                           grp_name,
++                           dom_name,
++                           state->pw->pw_uid,
++                           state->pw->pw_gid,
++                           state->info->homedir,
++                           state->pw->pw_dir);
++      if (!ok) {
++              talloc_free(tmp_ctx);
+               tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER);
+               return;
+       }
+-      if (!fillup_pw_field(lp_template_shell(), user_name, dom_name,
+-                           state->pw->pw_uid, state->pw->pw_gid,
+-                           state->info->shell, state->pw->pw_shell)) {
++      ok = fillup_pw_field(lp_template_shell(),
++                           user_name,
++                           grp_name,
++                           dom_name,
++                           state->pw->pw_uid,
++                           state->pw->pw_gid,
++                           state->info->shell,
++                           state->pw->pw_shell);
++      talloc_free(tmp_ctx);
++      if (!ok) {
+               tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER);
+               return;
+       }
+@@ -162,6 +187,7 @@ NTSTATUS wb_fill_pwent_recv(struct tevent_req *req)
+ static bool fillup_pw_field(const char *lp_template,
+                           const char *username,
++                          const char *grpname,
+                           const char *domname,
+                           uid_t uid,
+                           gid_t gid,
+@@ -181,11 +207,11 @@ static bool fillup_pw_field(const char *lp_template,
+       if ((in != NULL) && (in[0] != '\0') && (lp_security() == SEC_ADS)) {
+               templ = talloc_sub_specified(talloc_tos(), in,
+-                                           username, NULL, domname,
++                                           username, grpname, domname,
+                                            uid, gid);
+       } else {
+               templ = talloc_sub_specified(talloc_tos(), lp_template,
+-                                           username, NULL, domname,
++                                           username, grpname, domname,
+                                            uid, gid);
+       }
+commit db176c22f4f3e4c4f38288144d63822c3c191419
+Author:     Volker Lendecke <vl@samba.org>
+AuthorDate: Thu Jan 16 16:10:25 2014 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:44:15 2014 +0100
+
+    s3-winbind: Improve performance of wb_fill_pwent_sid2uid_done().
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=2191
+    
+    Signed-off-by: Volker Lendecke <vl@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+    
+    Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
+    Autobuild-Date(master): Thu Jan 16 20:17:24 CET 2014 on sn-devel-104
+    
+    (cherry picked from commit 1a43778433934530d77791edd1af538de8b1d8a3)
+---
+ source3/winbindd/wb_fill_pwent.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c
+index 878c5ad..9634317 100644
+--- a/source3/winbindd/wb_fill_pwent.c
++++ b/source3/winbindd/wb_fill_pwent.c
+@@ -77,7 +77,7 @@ static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq)
+               return;
+       }
+-      subreq = wb_getgrsid_send(state, state->ev, &state->info->group_sid, 1);
++      subreq = wb_getgrsid_send(state, state->ev, &state->info->group_sid, 0);
+       if (tevent_req_nomem(subreq, req)) {
+               return;
+       }
diff --git a/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch b/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch
new file mode 100644 (file)
index 0000000..6c78b23
--- /dev/null
@@ -0,0 +1,37 @@
+From e56b5bf5eddfa89ae948dc7bb154dfc6154199a6 Mon Sep 17 00:00:00 2001
+From: Matt Rogers <mrogers@redhat.com>
+Date: Wed, 12 Nov 2014 17:21:05 +0100
+Subject: [PATCH] PATCHSET17: s3-keytab: fix keytab array NULL termination.
+
+Signed-off-by: Matt Rogers <mrogers@redhat.com>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+(cherry picked from commit 0de6799996955fbf8e19ace8c4b7b61f5a262cb5)
+Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
+---
+ source3/libads/kerberos_keytab.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/source3/libads/kerberos_keytab.c b/source3/libads/kerberos_keytab.c
+index badce3e..1033842 100644
+--- a/source3/libads/kerberos_keytab.c
++++ b/source3/libads/kerberos_keytab.c
+@@ -629,14 +629,13 @@ int ads_keytab_create_default(ADS_STRUCT *ads)
+               goto done;
+       }
+-      oldEntries = talloc_array(tmpctx, char *, found);
++      oldEntries = talloc_zero_array(tmpctx, char *, found + 1);
+       if (!oldEntries) {
+               DEBUG(1, (__location__ ": Failed to allocate space to store "
+                         "the old keytab entries (talloc failed?).\n"));
+               ret = -1;
+               goto done;
+       }
+-      memset(oldEntries, '\0', found * sizeof(char *));
+       ret = krb5_kt_start_seq_get(context, keytab, &cursor);
+       if (ret == KRB5_KT_END || ret == ENOENT) {
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch b/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch
new file mode 100644 (file)
index 0000000..c425489
--- /dev/null
@@ -0,0 +1,37 @@
+commit afcc7e5ef289d25c19c7ac881ce505ec910fde7c
+Author:     Gregor Beck <gbeck@sernet.de>
+AuthorDate: Thu Feb 20 11:25:53 2014 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Mon Mar 3 16:49:42 2014 +0100
+
+    s3:winbindd: avoid directly asking a trusted domain in wb_lookupsids*()
+    
+    As a domain member we should always use a DC of our own domain.
+    
+    It would be possible to pass all sids in one single dcerpc_wbint_LookupSids()
+    call. For now we just fix bug.
+    
+    Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
+    
+    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10458
+    Signed-off-by: Gregor Beck <gbeck@sernet.de>
+    Signed-off-by: Stefan Metzmacher <metze@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+    (cherry picked from commit 66fb0ce9557553a4c01607b517e65ac4c93841d0)
+---
+ source3/winbindd/wb_lookupsids.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source3/winbindd/wb_lookupsids.c b/source3/winbindd/wb_lookupsids.c
+index 2fd735d..1bfdba8 100644
+--- a/source3/winbindd/wb_lookupsids.c
++++ b/source3/winbindd/wb_lookupsids.c
+@@ -320,7 +320,7 @@ static struct wb_lookupsids_domain *wb_lookupsids_get_domain(
+               }
+       }
+-      wb_domain = find_domain_from_sid_noinit(sid);
++      wb_domain = find_lookup_domain_from_sid(sid);
+       if (wb_domain == NULL) {
+               return NULL;
+       }
diff --git a/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch b/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch
new file mode 100644 (file)
index 0000000..ce19a97
--- /dev/null
@@ -0,0 +1,38 @@
+From 9f974a391260e95340f08091fdbc822845eae160 Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Tue, 19 Aug 2014 14:32:15 +0000
+Subject: [PATCH] PATCHSET29: smbd: Properly initialize mangle_hash
+
+[Bug 10782] mangle_hash() can fail to initialize charset (smbd crash).
+
+https://bugzilla.samba.org/show_bug.cgi?id=10782
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+
+Autobuild-User(master): Jeremy Allison <jra@samba.org>
+Autobuild-Date(master): Tue Aug 26 01:30:38 CEST 2014 on sn-devel-104
+
+(cherry picked from commit e914c2c52db7ecf3bb2a3860820c5cfe8812696e)
+---
+ source3/smbd/mangle_hash.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/source3/smbd/mangle_hash.c b/source3/smbd/mangle_hash.c
+index bafcd03..35a098f 100644
+--- a/source3/smbd/mangle_hash.c
++++ b/source3/smbd/mangle_hash.c
+@@ -706,6 +706,10 @@ const struct mangle_fns *mangle_hash_init(void)
+ {
+       mangle_reset();
++      if (chartest == NULL) {
++              init_chartest();
++      }
++
+       /* Create the in-memory tdb using our custom hash function. */
+       tdb_mangled_cache = tdb_open_ex("mangled_cache", 1031, TDB_INTERNAL,
+                               (O_RDWR|O_CREAT), 0644, NULL, fast_string_hash);
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch b/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch
new file mode 100644 (file)
index 0000000..3d5add1
--- /dev/null
@@ -0,0 +1,76 @@
+From c370237f44f91f98e4e5cce81fafeea442573bad Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 19 Aug 2015 16:24:08 +0200
+Subject: [PATCH 1/2] PATCHSET32: s3-auth: Pass nt_username to check_account()
+
+We set nt_username above but do not use it in this function.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=9862
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+(cherry picked from commit e8c76932e4ac192a00afa3b9731f5921c4b37da6)
+---
+ source3/auth/auth_util.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index a548b7b..aa269d6 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -1251,9 +1251,12 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
+       /* this call will try to create the user if necessary */
+-      nt_status = check_account(mem_ctx, nt_domain, sent_nt_username,
+-                                   &found_username, &pwd,
+-                                   &username_was_mapped);
++      nt_status = check_account(mem_ctx,
++                                nt_domain,
++                                nt_username,
++                                &found_username,
++                                &pwd,
++                                &username_was_mapped);
+       if (!NT_STATUS_IS_OK(nt_status)) {
+               return nt_status;
+-- 
+2.5.0
+
+
+From 1ab3cd252942b4fa5637d3f98b48ac3ba098de30 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 19 Aug 2015 16:11:47 +0200
+Subject: [PATCH 2/2] PATCHSET32: s3-auth: Fix 'map to guest = Bad Uid' support
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=9862
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+(cherry picked from commit 34965d4d98d172e848e2b96fad8a9e0b99288ba7)
+---
+ source3/auth/auth_util.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index aa269d6..cfda8b7 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -1259,6 +1259,14 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
+                                 &username_was_mapped);
+       if (!NT_STATUS_IS_OK(nt_status)) {
++              /* Handle 'map to guest = Bad Uid */
++              if (NT_STATUS_EQUAL(nt_status, NT_STATUS_NO_SUCH_USER) &&
++                  (lp_security() == SEC_ADS || lp_security() == SEC_DOMAIN) &&
++                  lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_UID) {
++                      DEBUG(2, ("Try to map %s to guest account\n",
++                                 nt_username));
++                      return make_server_info_guest(mem_ctx, server_info);
++              }
+               return nt_status;
+       }
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch b/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch
new file mode 100644 (file)
index 0000000..819a4f5
--- /dev/null
@@ -0,0 +1,89 @@
+From 51fbcb75007faddfbea29ef78a3857ba878a2327 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Thu, 6 Dec 2012 14:54:25 +0100
+Subject: [PATCH] s3-rpc_server: Remove obsolete process_creds boolean in
+ samlogon server.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Guenther
+
+Signed-off-by: Günther Deschner <gd@samba.org>
+Reviewed-by: Stefan Metzmacher <metze@samba.org>
+
+(cherry picked from commit c1fb595081c2b0bf66bce06c09750f53e8031311)
+---
+ source3/rpc_server/netlogon/srv_netlog_nt.c | 27 +++------------------------
+ 1 file changed, 3 insertions(+), 24 deletions(-)
+
+diff --git a/source3/rpc_server/netlogon/srv_netlog_nt.c b/source3/rpc_server/netlogon/srv_netlog_nt.c
+index 8079b3a..d14d0ed 100644
+--- a/source3/rpc_server/netlogon/srv_netlog_nt.c
++++ b/source3/rpc_server/netlogon/srv_netlog_nt.c
+@@ -1416,21 +1416,16 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p,
+       struct auth_usersupplied_info *user_info = NULL;
+       struct auth_serversupplied_info *server_info = NULL;
+       struct auth_context *auth_context = NULL;
+-      uint8_t pipe_session_key[16];
+-      bool process_creds = true;
+       const char *fn;
+       switch (p->opnum) {
+               case NDR_NETR_LOGONSAMLOGON:
+-                      process_creds = true;
+                       fn = "_netr_LogonSamLogon";
+                       break;
+               case NDR_NETR_LOGONSAMLOGONWITHFLAGS:
+-                      process_creds = true;
+                       fn = "_netr_LogonSamLogonWithFlags";
+                       break;
+               case NDR_NETR_LOGONSAMLOGONEX:
+-                      process_creds = false;
+                       fn = "_netr_LogonSamLogonEx";
+                       break;
+               default:
+@@ -1621,29 +1616,13 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p,
+            the SAM Local Security Authority should record that the user is
+            logged in to the domain.  */
+-      if (process_creds) {
+-              /* Get the pipe session key from the creds. */
+-              memcpy(pipe_session_key, creds->session_key, 16);
+-      } else {
+-              struct schannel_state *schannel_auth;
+-              /* Get the pipe session key from the schannel. */
+-              if ((p->auth.auth_type != DCERPC_AUTH_TYPE_SCHANNEL)
+-                  || (p->auth.auth_ctx == NULL)) {
+-                      return NT_STATUS_INVALID_HANDLE;
+-              }
+-
+-              schannel_auth = talloc_get_type_abort(p->auth.auth_ctx,
+-                                                    struct schannel_state);
+-              memcpy(pipe_session_key, schannel_auth->creds->session_key, 16);
+-      }
+-
+       switch (r->in.validation_level) {
+       case 2:
+-              status = serverinfo_to_SamInfo2(server_info, pipe_session_key, 16,
++              status = serverinfo_to_SamInfo2(server_info, creds->session_key, 16,
+                                               r->out.validation->sam2);
+               break;
+       case 3:
+-              status = serverinfo_to_SamInfo3(server_info, pipe_session_key, 16,
++              status = serverinfo_to_SamInfo3(server_info, creds->session_key, 16,
+                                               r->out.validation->sam3);
+               break;
+       case 6:
+@@ -1655,7 +1634,7 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p,
+                       break;
+               }
+-              status = serverinfo_to_SamInfo6(server_info, pipe_session_key, 16,
++              status = serverinfo_to_SamInfo6(server_info, creds->session_key, 16,
+                                               r->out.validation->sam6);
+               break;
+       }
+-- 
+2.9.3
+
diff --git a/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch b/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch
new file mode 100644 (file)
index 0000000..979809c
--- /dev/null
@@ -0,0 +1,34 @@
+commit 5c6cbc0becb78f57dea333185a56ea782716c334
+Author:     Jeremy Allison <jra@samba.org>
+AuthorDate: Mon Feb 24 16:18:31 2014 -0800
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Fri Feb 28 17:17:49 2014 +0100
+
+    s3-printing: Fix obvious memory leak in printer_list_get_printer().
+    
+    https://bugzilla.samba.org/show_bug.cgi?id=9993
+    
+    Signed-off-by: Jeremy Allison <jra@samba.org>
+    Reviewed-by: Ira Cooper <ira@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+    
+    Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
+    Autobuild-Date(master): Tue Feb 25 13:19:37 CET 2014 on sn-devel-104
+    
+    (cherry picked from commit 148bbdd8d04400b5d873f636671dd443952ca04f)
+---
+ source3/printing/printer_list.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/source3/printing/printer_list.c b/source3/printing/printer_list.c
+index 8f196a5..603ce4b 100644
+--- a/source3/printing/printer_list.c
++++ b/source3/printing/printer_list.c
+@@ -133,6 +133,7 @@ NTSTATUS printer_list_get_printer(TALLOC_CTX *mem_ctx,
+ done:
+       SAFE_FREE(nstr);
+       SAFE_FREE(cstr);
++      SAFE_FREE(lstr);
+       TALLOC_FREE(key);
+       return status;
+ }
diff --git a/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch b/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch
new file mode 100644 (file)
index 0000000..6de8a21
--- /dev/null
@@ -0,0 +1,46 @@
+From cf53bff0e8482e35068d8e894af5634a0a9b1399 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 29 Jun 2016 13:38:19 +0200
+Subject: [PATCH] s3-winbind: Fix memory leak with each cached credential login
+
+When we allow offline logon and have a lot of logins, windbind will leak
+4k of memory which each log in. On systems with heavy load this can grow
+quickly and the OOM killer will kill Winbind.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11999
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+---
+ source3/winbindd/winbindd_cache.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
+index 82c8087..2e983cd 100644
+--- a/source3/winbindd/winbindd_cache.c
++++ b/source3/winbindd/winbindd_cache.c
+@@ -3415,7 +3415,7 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const
+       struct winbind_cache *cache = get_cache(domain);
+       NTSTATUS status;
+       int ret;
+-      struct cred_list *cred, *oldest = NULL;
++      struct cred_list *cred, *next, *oldest = NULL;
+       if (!cache->tdb) {
+               return NT_STATUS_INTERNAL_DB_ERROR;
+@@ -3484,7 +3484,11 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const
+               status = NT_STATUS_UNSUCCESSFUL;
+       }
+ done:
+-      SAFE_FREE(wcache_cred_list);
++      for (cred = wcache_cred_list; cred; cred = next) {
++              next = cred->next;
++              DLIST_REMOVE(wcache_cred_list, cred);
++              SAFE_FREE(cred);
++      }
+       SAFE_FREE(oldest);
+       return status;
+-- 
+2.9.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch b/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch
new file mode 100644 (file)
index 0000000..9d99f44
--- /dev/null
@@ -0,0 +1,35 @@
+commit 9c3a46e53ebfff376eefee88c2b8745e17bdc21b
+Author:     Günther Deschner <gd@samba.org>
+AuthorDate: Tue Feb 4 16:38:46 2014 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Mon Mar 10 17:18:14 2014 +0100
+
+    PATCHSET6 librpc/nbt: increase MAX_COMPONENTS limit for nbt_names.
+    
+    domains with more then 10 subdomains are not so uncommon.
+    
+    https://bugzilla.samba.org/show_bug.cgi?id=10439
+    
+    Guenther
+    
+    Signed-off-by: Günther Deschner <gd@samba.org>
+    Reviewed-by: Andreas Schneider <asn@samba.org>
+    
+    (cherry picked from commit 4e05bad0d18e351cb2a2db74860e77adea727c79)
+---
+ libcli/nbt/nbtname.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libcli/nbt/nbtname.c b/libcli/nbt/nbtname.c
+index fec8e8e..3aa0000 100644
+--- a/libcli/nbt/nbtname.c
++++ b/libcli/nbt/nbtname.c
+@@ -30,7 +30,7 @@
+ #include "lib/util/util_net.h"
+ /* don't allow an unlimited number of name components */
+-#define MAX_COMPONENTS 10
++#define MAX_COMPONENTS 128
+ /**
+   print a nbt string
diff --git a/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch b/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch
new file mode 100644 (file)
index 0000000..954af02
--- /dev/null
@@ -0,0 +1,112 @@
+From 580eabc2c9dfe29d719a026ff8f6ac3d2ead1983 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Tue, 8 Sep 2015 16:48:08 +0200
+Subject: [PATCH] PATCHSET28: pam_winbind: Fix a segfault if initialization
+ fails
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11502
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Michael Adam <obnox@samba.org>
+
+Autobuild-User(master): Michael Adam <obnox@samba.org>
+Autobuild-Date(master): Tue Sep  8 21:39:21 CEST 2015 on sn-devel-104
+
+(cherry picked from commit 7d84cd6e40024fd361ea21635f7befed40f0e41f)
+---
+ nsswitch/pam_winbind.c | 19 ++++++++-----------
+ 1 file changed, 8 insertions(+), 11 deletions(-)
+
+diff --git a/nsswitch/pam_winbind.c b/nsswitch/pam_winbind.c
+index d126494..cfaa5f1 100644
+--- a/nsswitch/pam_winbind.c
++++ b/nsswitch/pam_winbind.c
+@@ -2465,7 +2465,7 @@ static int _pam_delete_cred(pam_handle_t *pamh, int flags,
+       retval = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (retval) {
+-              goto out;
++              return retval;
+       }
+       _PAM_LOG_FUNCTION_ENTER("_pam_delete_cred", ctx);
+@@ -2600,7 +2600,7 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags,
+       retval = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (retval) {
+-              goto out;
++              return retval;
+       }
+       _PAM_LOG_FUNCTION_ENTER("pam_sm_authenticate", ctx);
+@@ -2752,7 +2752,7 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags,
+       ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (ret) {
+-              goto out;
++              return ret;
+       }
+       _PAM_LOG_FUNCTION_ENTER("pam_sm_setcred", ctx);
+@@ -2782,8 +2782,6 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags,
+                       break;
+       }
+- out:
+-
+       _PAM_LOG_FUNCTION_LEAVE("pam_sm_setcred", ctx, ret);
+       TALLOC_FREE(ctx);
+@@ -2806,7 +2804,7 @@ int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags,
+       ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (ret) {
+-              goto out;
++              return ret;
+       }
+       _PAM_LOG_FUNCTION_ENTER("pam_sm_acct_mgmt", ctx);
+@@ -2901,7 +2899,7 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags,
+       ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (ret) {
+-              goto out;
++              return ret;
+       }
+       _PAM_LOG_FUNCTION_ENTER("pam_sm_open_session", ctx);
+@@ -2910,7 +2908,7 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags,
+               /* check and create homedir */
+               ret = _pam_mkhomedir(ctx);
+       }
+- out:
++
+       _PAM_LOG_FUNCTION_LEAVE("pam_sm_open_session", ctx, ret);
+       TALLOC_FREE(ctx);
+@@ -2927,12 +2925,11 @@ int pam_sm_close_session(pam_handle_t *pamh, int flags,
+       ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (ret) {
+-              goto out;
++              return ret;
+       }
+       _PAM_LOG_FUNCTION_ENTER("pam_sm_close_session", ctx);
+-out:
+       _PAM_LOG_FUNCTION_LEAVE("pam_sm_close_session", ctx, ret);
+       TALLOC_FREE(ctx);
+@@ -3012,7 +3009,7 @@ int pam_sm_chauthtok(pam_handle_t * pamh, int flags,
+       ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx);
+       if (ret) {
+-              goto out;
++              return ret;
+       }
+       _PAM_LOG_FUNCTION_ENTER("pam_sm_chauthtok", ctx);
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch b/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch
new file mode 100644 (file)
index 0000000..7c59211
--- /dev/null
@@ -0,0 +1,958 @@
+From 61c58824cc9117ffe206ae7c126929bfa2384486 Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Thu, 10 Jul 2014 00:18:10 +0200
+Subject: [PATCH 1/7] PATCHSET18: printing: traverse_read the printer list for
+ share updates
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The printcap update procedure involves the background printer process
+obtaining the printcap information from the printing backend, writing
+this to printer_list.tdb, and then notifying all smbd processes of the
+new list. The processes then all attempt to simultaneously traverse
+printer_list.tdb, in order to update their local share lists.
+
+With a large number of printers, and a large number of per-client smbd
+processes, this traversal results in significant lock contention, mostly
+due to the fact that the traversal is unnecessarily done with an
+exclusive (write) lock on the printer_list.tdb database.
+
+This commit changes the share update code path to perform a read-only
+traversal.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Reported-by: Alex K <korobkin+samba@gmail.com>
+Reported-by: Franz Pförtsch <franz.pfoertsch@brose.com>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/printing/load.c         |  2 +-
+ source3/printing/pcap.c         |  4 ++--
+ source3/printing/pcap.h         |  2 +-
+ source3/printing/printer_list.c | 17 +++++++++++------
+ source3/printing/printer_list.h |  4 ++--
+ 5 files changed, 17 insertions(+), 12 deletions(-)
+
+diff --git a/source3/printing/load.c b/source3/printing/load.c
+index 829c3e3..0a3de73 100644
+--- a/source3/printing/load.c
++++ b/source3/printing/load.c
+@@ -70,5 +70,5 @@ void load_printers(struct tevent_context *ev,
+       /* load all printcap printers */
+       if (lp_load_printers() && lp_servicenumber(PRINTERS_NAME) >= 0)
+-              pcap_printer_fn(lp_add_one_printer, NULL);
++              pcap_printer_read_fn(lp_add_one_printer, NULL);
+ }
+diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c
+index 62db4f5..6ad8e33 100644
+--- a/source3/printing/pcap.c
++++ b/source3/printing/pcap.c
+@@ -229,11 +229,11 @@ void pcap_printer_fn_specific(const struct pcap_cache *pc,
+       return;
+ }
+-void pcap_printer_fn(void (*fn)(const char *, const char *, const char *, void *), void *pdata)
++void pcap_printer_read_fn(void (*fn)(const char *, const char *, const char *, void *), void *pdata)
+ {
+       NTSTATUS status;
+-      status = printer_list_run_fn(fn, pdata);
++      status = printer_list_read_run_fn(fn, pdata);
+       if (!NT_STATUS_IS_OK(status)) {
+               DEBUG(3, ("Failed to run fn for all printers!\n"));
+       }
+diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h
+index 7056213..6c062c3 100644
+--- a/source3/printing/pcap.h
++++ b/source3/printing/pcap.h
+@@ -39,7 +39,7 @@ bool pcap_cache_add(const char *name, const char *comment, const char *location)
+ bool pcap_cache_loaded(void);
+ bool pcap_cache_replace(const struct pcap_cache *cache);
+ void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, const char *, void *), void *);
+-void pcap_printer_fn(void (*fn)(const char *, const char *, const char *, void *), void *);
++void pcap_printer_read_fn(void (*fn)(const char *, const char *, const char *, void *), void *);
+ void pcap_cache_reload(struct tevent_context *ev,
+                      struct messaging_context *msg_ctx,
+diff --git a/source3/printing/printer_list.c b/source3/printing/printer_list.c
+index 603ce4b..b24bf83 100644
+--- a/source3/printing/printer_list.c
++++ b/source3/printing/printer_list.c
+@@ -280,7 +280,8 @@ done:
+ typedef int (printer_list_trv_fn_t)(struct db_record *, void *);
+ static NTSTATUS printer_list_traverse(printer_list_trv_fn_t *fn,
+-                                              void *private_data)
++                                    void *private_data,
++                                    bool read_only)
+ {
+       struct db_context *db;
+       int ret;
+@@ -290,7 +291,11 @@ static NTSTATUS printer_list_traverse(printer_list_trv_fn_t *fn,
+               return NT_STATUS_INTERNAL_DB_CORRUPTION;
+       }
+-      ret = db->traverse(db, fn, private_data);
++      if (read_only) {
++              ret = db->traverse_read(db, fn, private_data);
++      } else {
++              ret = db->traverse(db, fn, private_data);
++      }
+       if (ret < 0) {
+               return NT_STATUS_UNSUCCESSFUL;
+       }
+@@ -357,7 +362,7 @@ NTSTATUS printer_list_clean_old(void)
+       state.status = NT_STATUS_OK;
+-      status = printer_list_traverse(printer_list_clean_fn, &state);
++      status = printer_list_traverse(printer_list_clean_fn, &state, false);
+       if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL) &&
+           !NT_STATUS_IS_OK(state.status)) {
+               status = state.status;
+@@ -404,8 +409,8 @@ static int printer_list_exec_fn(struct db_record *rec, void *private_data)
+       return 0;
+ }
+-NTSTATUS printer_list_run_fn(void (*fn)(const char *, const char *, const char *, void *),
+-                           void *private_data)
++NTSTATUS printer_list_read_run_fn(void (*fn)(const char *, const char *, const char *, void *),
++                                void *private_data)
+ {
+       struct printer_list_exec_state state;
+       NTSTATUS status;
+@@ -414,7 +419,7 @@ NTSTATUS printer_list_run_fn(void (*fn)(const char *, const char *, const char *
+       state.private_data = private_data;
+       state.status = NT_STATUS_OK;
+-      status = printer_list_traverse(printer_list_exec_fn, &state);
++      status = printer_list_traverse(printer_list_exec_fn, &state, true);
+       if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL) &&
+           !NT_STATUS_IS_OK(state.status)) {
+               status = state.status;
+diff --git a/source3/printing/printer_list.h b/source3/printing/printer_list.h
+index fb2e007..b12c192 100644
+--- a/source3/printing/printer_list.h
++++ b/source3/printing/printer_list.h
+@@ -100,6 +100,6 @@ NTSTATUS printer_list_mark_reload(void);
+  */
+ NTSTATUS printer_list_clean_old(void);
+-NTSTATUS printer_list_run_fn(void (*fn)(const char *, const char *, const char *, void *),
+-                           void *private_data);
++NTSTATUS printer_list_read_run_fn(void (*fn)(const char *, const char *, const char *, void *),
++                                void *private_data);
+ #endif /* _PRINTER_LIST_H_ */
+-- 
+2.1.0
+
+
+From 18b15f127b656ad9232789b073460c95b1aaa835 Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Fri, 11 Jul 2014 17:00:05 +0200
+Subject: [PATCH 2/7] PATCHSET18: printing: only reload printer shares on
+ client enum
+
+Currently, automatic printer share updates are handled in the following
+way:
+- Background printer process (BPP) forked on startup
+- Parent smbd and per-client children await MSG_PRINTER_PCAP messages
+- BPP periodically polls the printing backend for printcap data
+       - printcap data written to printer_list.tdb
+       - MSG_PRINTER_PCAP sent to all smbd processes following update
+- smbd processes all read the latest printer_list.tdb data, and update
+  their share listings
+
+This procedure is not scalable, as all smbd processes hit
+printer_list.tdb in parallel, resulting in a large spike in CPU usage.
+
+This change sees smbd processes only update their printer share lists
+only when a client asks for this information, e.g. via NetShareEnum or
+EnumPrinters.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Suggested-by: Volker Lendecke <vl@samba.org>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/printing/spoolssd.c                 | 17 +----------------
+ source3/rpc_server/spoolss/srv_spoolss_nt.c | 11 ++++++++++-
+ source3/rpc_server/srvsvc/srv_srvsvc_nt.c   |  1 +
+ source3/smbd/lanman.c                       |  3 +++
+ source3/smbd/server.c                       | 27 +++++----------------------
+ 5 files changed, 20 insertions(+), 39 deletions(-)
+
+diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c
+index 83727df..7953237 100644
+--- a/source3/printing/spoolssd.c
++++ b/source3/printing/spoolssd.c
+@@ -74,20 +74,6 @@ static void smb_conf_updated(struct messaging_context *msg,
+       spoolss_reopen_logs();
+ }
+-static void spoolss_pcap_updated(struct messaging_context *msg,
+-                               void *private_data,
+-                               uint32_t msg_type,
+-                               struct server_id server_id,
+-                               DATA_BLOB *data)
+-{
+-      struct tevent_context *ev_ctx = talloc_get_type_abort(private_data,
+-                                                           struct tevent_context);
+-
+-      DEBUG(10, ("Got message saying pcap was updated. Reloading.\n"));
+-      change_to_root_user();
+-      reload_printers(ev_ctx, msg);
+-}
+-
+ static void spoolss_sig_term_handler(struct tevent_context *ev,
+                                    struct tevent_signal *se,
+                                    int signum,
+@@ -206,12 +192,11 @@ void start_spoolssd(struct tevent_context *ev_ctx,
+               exit(1);
+       }
++      /* printer shares updated from printer_list.tdb on client enumeration */
+       messaging_register(msg_ctx, NULL,
+                          MSG_PRINTER_UPDATE, print_queue_receive);
+       messaging_register(msg_ctx, ev_ctx,
+                          MSG_SMB_CONF_UPDATED, smb_conf_updated);
+-      messaging_register(msg_ctx, ev_ctx,
+-                         MSG_PRINTER_PCAP, spoolss_pcap_updated);
+       /*
+        * Initialize spoolss with an init function to convert printers first.
+diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+index 516b7dc..db48574 100644
+--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+@@ -4316,12 +4316,21 @@ static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx,
+                                          uint32_t *count_p)
+ {
+       int snum;
+-      int n_services = lp_numservices();
++      int n_services;
+       union spoolss_PrinterInfo *info = NULL;
+       uint32_t count = 0;
+       WERROR result = WERR_OK;
+       struct dcerpc_binding_handle *b = NULL;
++      /*
++       * printer shares are only updated on client enumeration. The background
++       * printer process updates printer_list.tdb at regular intervals.
++       */
++      become_root();
++      reload_printers(messaging_event_context(msg_ctx), msg_ctx);
++      unbecome_root();
++
++      n_services = lp_numservices();
+       *count_p = 0;
+       *info_p = NULL;
+diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+index b9345d6..4600da3 100644
+--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
++++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+@@ -568,6 +568,7 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
+       /* Ensure all the usershares are loaded. */
+       become_root();
++      reload_printers(messaging_event_context(p->msg_ctx), p->msg_ctx);
+       load_usershare_shares();
+       load_registry_shares();
+       num_services = lp_numservices();
+diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
+index f56ea30..49f7583 100644
+--- a/source3/smbd/lanman.c
++++ b/source3/smbd/lanman.c
+@@ -43,6 +43,7 @@
+ #include "passdb/machine_sid.h"
+ #include "auth.h"
+ #include "rpc_server/rpc_ncacn_np.h"
++#include "messages.h"
+ #ifdef CHECK_TYPES
+ #undef CHECK_TYPES
+@@ -2091,6 +2092,8 @@ static bool api_RNetShareEnum(struct smbd_server_connection *sconn,
+       /* Ensure all the usershares are loaded. */
+       become_root();
++      reload_printers(messaging_event_context(sconn->msg_ctx),
++                      sconn->msg_ctx);
+       load_registry_shares();
+       count = load_usershare_shares();
+       unbecome_root();
+diff --git a/source3/smbd/server.c b/source3/smbd/server.c
+index a26dbc4..102e8dd 100644
+--- a/source3/smbd/server.c
++++ b/source3/smbd/server.c
+@@ -111,24 +111,6 @@ static void smb_conf_updated(struct messaging_context *msg,
+       /* printer reload triggered by background printing process */
+ }
+-/*******************************************************************
+- What to do when printcap is updated.
+- ********************************************************************/
+-
+-static void smb_pcap_updated(struct messaging_context *msg,
+-                           void *private_data,
+-                           uint32_t msg_type,
+-                           struct server_id server_id,
+-                           DATA_BLOB *data)
+-{
+-      struct tevent_context *ev_ctx =
+-              talloc_get_type_abort(private_data, struct tevent_context);
+-
+-      DEBUG(10,("Got message saying pcap was updated. Reloading.\n"));
+-      change_to_root_user();
+-      reload_printers(ev_ctx, msg);
+-}
+-
+ static void smbd_sig_term_handler(struct tevent_context *ev,
+                                 struct tevent_signal *se,
+                                 int signum,
+@@ -1287,10 +1269,11 @@ extern void build_options(bool screen);
+       if (is_daemon && !interactive
+           && lp_parm_bool(-1, "smbd", "backgroundqueue", true)) {
+-              /* background queue is responsible for printcap cache updates */
+-              messaging_register(smbd_server_conn->msg_ctx,
+-                                 smbd_event_context(),
+-                                 MSG_PRINTER_PCAP, smb_pcap_updated);
++              /*
++               * background queue is responsible for printcap cache updates.
++               * Other smbd processes only reload printers when a client
++               * issues an enumeration request.
++               */
+               start_background_queue(server_event_context(),
+                                      smbd_server_conn->msg_ctx);
+       } else {
+-- 
+2.1.0
+
+
+From 52196380547dde4784e42c35c46135bb5230a08d Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Tue, 22 Jul 2014 20:17:38 +0200
+Subject: [PATCH 3/7] PATCHSET18: printing: reload printer_list.tdb from in
+ memory list
+
+This will allow in future for a single atomic printer_list.tdb update.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/printing/pcap.c           | 26 +++++++++++---------------
+ source3/printing/pcap.h           |  8 ++++----
+ source3/printing/print_aix.c      | 17 ++++++++++++++---
+ source3/printing/print_iprint.c   | 16 ++++++++++------
+ source3/printing/print_standard.c |  8 ++++++--
+ source3/printing/print_svid.c     | 11 +++++++----
+ 6 files changed, 52 insertions(+), 34 deletions(-)
+
+diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c
+index 6ad8e33..5173fc9 100644
+--- a/source3/printing/pcap.c
++++ b/source3/printing/pcap.c
+@@ -83,7 +83,7 @@ void pcap_cache_destroy_specific(struct pcap_cache **pp_cache)
+       *pp_cache = NULL;
+ }
+-bool pcap_cache_add(const char *name, const char *comment, const char *location)
++static bool pcap_cache_add(const char *name, const char *comment, const char *location)
+ {
+       NTSTATUS status;
+       time_t t = time_mono(NULL);
+@@ -132,8 +132,8 @@ void pcap_cache_reload(struct tevent_context *ev,
+ {
+       const char *pcap_name = lp_printcapname();
+       bool pcap_reloaded = False;
+-      NTSTATUS status;
+       bool post_cache_fill_fn_handled = false;
++      struct pcap_cache *pcache = NULL;
+       DEBUG(3, ("reloading printcap cache\n"));
+@@ -143,12 +143,6 @@ void pcap_cache_reload(struct tevent_context *ev,
+               return;
+       }
+-      status = printer_list_mark_reload();
+-      if (!NT_STATUS_IS_OK(status)) {
+-              DEBUG(0, ("Failed to mark printer list for reload!\n"));
+-              return;
+-      }
+-
+ #ifdef HAVE_CUPS
+       if (strequal(pcap_name, "cups")) {
+               pcap_reloaded = cups_cache_reload(ev, msg_ctx,
+@@ -164,26 +158,26 @@ void pcap_cache_reload(struct tevent_context *ev,
+ #ifdef HAVE_IPRINT
+       if (strequal(pcap_name, "iprint")) {
+-              pcap_reloaded = iprint_cache_reload();
++              pcap_reloaded = iprint_cache_reload(&pcache);
+               goto done;
+       }
+ #endif
+ #if defined(SYSV) || defined(HPUX)
+       if (strequal(pcap_name, "lpstat")) {
+-              pcap_reloaded = sysv_cache_reload();
++              pcap_reloaded = sysv_cache_reload(&pcache);
+               goto done;
+       }
+ #endif
+ #ifdef AIX
+       if (strstr_m(pcap_name, "/qconfig") != NULL) {
+-              pcap_reloaded = aix_cache_reload();
++              pcap_reloaded = aix_cache_reload(&pcache);
+               goto done;
+       }
+ #endif
+-      pcap_reloaded = std_pcap_cache_reload(pcap_name);
++      pcap_reloaded = std_pcap_cache_reload(pcap_name, &pcache);
+ done:
+       DEBUG(3, ("reload status: %s\n", (pcap_reloaded) ? "ok" : "error"));
+@@ -192,14 +186,16 @@ done:
+               /* cleanup old entries only if the operation was successful,
+                * otherwise keep around the old entries until we can
+                * successfuly reaload */
+-              status = printer_list_clean_old();
+-              if (!NT_STATUS_IS_OK(status)) {
+-                      DEBUG(0, ("Failed to cleanup printer list!\n"));
++
++              if (!pcap_cache_replace(pcache)) {
++                      DEBUG(0, ("Failed to replace printer list!\n"));
+               }
++
+               if (post_cache_fill_fn != NULL) {
+                       post_cache_fill_fn(ev, msg_ctx);
+               }
+       }
++      pcap_cache_destroy_specific(&pcache);
+       return;
+ }
+diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h
+index 6c062c3..d388d7d 100644
+--- a/source3/printing/pcap.h
++++ b/source3/printing/pcap.h
+@@ -49,7 +49,7 @@ bool pcap_printername_ok(const char *printername);
+ /* The following definitions come from printing/print_aix.c  */
+-bool aix_cache_reload(void);
++bool aix_cache_reload(struct pcap_cache **_pcache);
+ /* The following definitions come from printing/print_cups.c  */
+@@ -60,13 +60,13 @@ bool cups_cache_reload(struct tevent_context *ev,
+ /* The following definitions come from printing/print_iprint.c  */
+-bool iprint_cache_reload(void);
++bool iprint_cache_reload(struct pcap_cache **_pcache);
+ /* The following definitions come from printing/print_svid.c  */
+-bool sysv_cache_reload(void);
++bool sysv_cache_reload(struct pcap_cache **_pcache);
+ /* The following definitions come from printing/print_standard.c  */
+-bool std_pcap_cache_reload(const char *pcap_name);
++bool std_pcap_cache_reload(const char *pcap_name, struct pcap_cache **_pcache);
+ #endif /* _PRINTING_PCAP_H_ */
+diff --git a/source3/printing/print_aix.c b/source3/printing/print_aix.c
+index 23d9a86..927a71b 100644
+--- a/source3/printing/print_aix.c
++++ b/source3/printing/print_aix.c
+@@ -29,12 +29,13 @@
+ #include "printing/pcap.h"
+ #ifdef AIX
+-bool aix_cache_reload(void)
++bool aix_cache_reload(struct pcap_cache **_pcache)
+ {
+       int iEtat;
+       XFILE *pfile;
+       char *line = NULL, *p;
+       char *name = NULL;
++      struct pcap_cache *pcache = NULL;
+       TALLOC_CTX *ctx = talloc_init("aix_cache_reload");
+       if (!ctx) {
+@@ -52,6 +53,8 @@ bool aix_cache_reload(void)
+       iEtat = 0;
+       /* scan qconfig file for searching <printername>:       */
+       for (;(line = fgets_slash(NULL, 1024, pfile)); free(line)) {
++              bool ok;
++
+               if (*line == '*' || *line == 0)
+                       continue;
+@@ -67,6 +70,7 @@ bool aix_cache_reload(void)
+                               if (strcmp(p, "bsh") != 0) {
+                                       name = talloc_strdup(ctx, p);
+                                       if (!name) {
++                                              pcap_cache_destroy_specific(&pcache);
+                                               SAFE_FREE(line);
+                                               x_fclose(pfile);
+                                               TALLOC_FREE(ctx);
+@@ -86,7 +90,10 @@ bool aix_cache_reload(void)
+                               /* name is found without stanza device  */
+                               /* probably a good printer ???          */
+                               iEtat = 0;
+-                              if (!pcap_cache_add(name, NULL, NULL)) {
++                              ok = pcap_cache_add_specific(&pcache,
++                                                           name, NULL, NULL);
++                              if (!ok) {
++                                      pcap_cache_destroy_specific(&pcache);
+                                       SAFE_FREE(line);
+                                       x_fclose(pfile);
+                                       TALLOC_FREE(ctx);
+@@ -101,7 +108,10 @@ bool aix_cache_reload(void)
+                       } else if (strstr_m(line, "device")) {
+                               /* it's a good virtual printer */
+                               iEtat = 0;
+-                              if (!pcap_cache_add(name, NULL, NULL)) {
++                              ok = pcap_cache_add_specific(&pcache,
++                                                           name, NULL, NULL);
++                              if (!ok) {
++                                      pcap_cache_destroy_specific(&pcache);
+                                       SAFE_FREE(line);
+                                       x_fclose(pfile);
+                                       TALLOC_FREE(ctx);
+@@ -113,6 +123,7 @@ bool aix_cache_reload(void)
+               }
+       }
++      *_pcache = pcache;
+       x_fclose(pfile);
+       TALLOC_FREE(ctx);
+       return true;
+diff --git a/source3/printing/print_iprint.c b/source3/printing/print_iprint.c
+index 529f0dd..6e91747 100644
+--- a/source3/printing/print_iprint.c
++++ b/source3/printing/print_iprint.c
+@@ -204,7 +204,8 @@ static int iprint_get_server_version(http_t *http, char* serviceUri)
+ static int iprint_cache_add_printer(http_t *http,
+                                  int reqId,
+-                                 char* url)
++                                 char *url,
++                                 struct pcap_cache **pcache)
+ {
+       ipp_t           *request = NULL,        /* IPP Request */
+                       *response = NULL;       /* IPP Response */
+@@ -340,7 +341,7 @@ static int iprint_cache_add_printer(http_t *http,
+               */
+               if (name != NULL && !secure && smb_enabled) 
+-                      pcap_cache_add(name, info, NULL);
++                      pcap_cache_add_specific(pcache, name, info, NULL);
+       }
+  out:
+@@ -349,7 +350,7 @@ static int iprint_cache_add_printer(http_t *http,
+       return(0);
+ }
+-bool iprint_cache_reload(void)
++bool iprint_cache_reload(struct pcap_cache **_pcache)
+ {
+       http_t          *http = NULL;           /* HTTP connection to server */
+       ipp_t           *request = NULL,        /* IPP Request */
+@@ -357,7 +358,8 @@ bool iprint_cache_reload(void)
+       ipp_attribute_t *attr;                  /* Current attribute */
+       cups_lang_t     *language = NULL;       /* Default language */
+       int             i;
+-      bool ret = False;
++      bool ret = false;
++      struct pcap_cache *pcache = NULL;
+       DEBUG(5, ("reloading iprint printcap cache\n"));
+@@ -439,14 +441,16 @@ bool iprint_cache_reload(void)
+                                       char *url = ippGetString(attr, i, NULL);
+                                       if (!url || !strlen(url))
+                                               continue;
+-                                      iprint_cache_add_printer(http, i+2, url);
++                                      iprint_cache_add_printer(http, i+2, url,
++                                                               &pcache);
+                               }
+                       }
+                       attr = ippNextAttribute(response);
+               }
+       }
+-      ret = True;
++      ret = true;
++      *_pcache = pcache;
+  out:
+       if (response)
+diff --git a/source3/printing/print_standard.c b/source3/printing/print_standard.c
+index c4f9c5b..b5f1056 100644
+--- a/source3/printing/print_standard.c
++++ b/source3/printing/print_standard.c
+@@ -59,10 +59,11 @@
+ #include "printing/pcap.h"
+ /* handle standard printcap - moved from pcap_printer_fn() */
+-bool std_pcap_cache_reload(const char *pcap_name)
++bool std_pcap_cache_reload(const char *pcap_name, struct pcap_cache **_pcache)
+ {
+       XFILE *pcap_file;
+       char *pcap_line;
++      struct pcap_cache *pcache = NULL;
+       if ((pcap_file = x_fopen(pcap_name, O_RDONLY, 0)) == NULL) {
+               DEBUG(0, ("Unable to open printcap file %s for read!\n", pcap_name));
+@@ -117,12 +118,15 @@ bool std_pcap_cache_reload(const char *pcap_name)
+                       }
+               }
+-              if (*name && !pcap_cache_add(name, comment, NULL)) {
++              if ((*name != '\0')
++               && !pcap_cache_add_specific(&pcache, name, comment, NULL)) {
+                       x_fclose(pcap_file);
++                      pcap_cache_destroy_specific(&pcache);
+                       return false;
+               }
+       }
+       x_fclose(pcap_file);
++      *_pcache = pcache;
+       return true;
+ }
+diff --git a/source3/printing/print_svid.c b/source3/printing/print_svid.c
+index 2226493..879661b 100644
+--- a/source3/printing/print_svid.c
++++ b/source3/printing/print_svid.c
+@@ -35,10 +35,11 @@
+ #include "printing/pcap.h"
+ #if defined(SYSV) || defined(HPUX)
+-bool sysv_cache_reload(void)
++bool sysv_cache_reload(struct pcap_cache **_pcache)
+ {
+       char **lines;
+       int i;
++      struct pcap_cache *pcache = NULL;
+ #if defined(HPUX)
+       DEBUG(5, ("reloading hpux printcap cache\n"));
+@@ -111,14 +112,16 @@ bool sysv_cache_reload(void)
+                       *tmp = '\0';
+               
+               /* add it to the cache */
+-              if (!pcap_cache_add(name, NULL, NULL)) {
++              if (!pcap_cache_add_specific(&pcache, name, NULL, NULL)) {
+                       TALLOC_FREE(lines);
+-                      return False;
++                      pcap_cache_destroy_specific(&pcache);
++                      return false;
+               }
+       }
+       TALLOC_FREE(lines);
+-      return True;
++      *_pcache = pcache;
++      return true;
+ }
+ #else
+-- 
+2.1.0
+
+
+From 91c0b6477fcd4ad20d1cda45f78f160cee8e58ff Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Fri, 25 Jul 2014 12:18:54 +0200
+Subject: [PATCH 4/7] PATCHSET18: printing: remove pcap_cache_add()
+
+All print list updates are now done via pcap_cache_replace(), which can
+call into the print_list code directly.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/printing/pcap.c | 16 ++++++----------
+ source3/printing/pcap.h |  1 -
+ 2 files changed, 6 insertions(+), 11 deletions(-)
+
+diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c
+index 5173fc9..5059f20 100644
+--- a/source3/printing/pcap.c
++++ b/source3/printing/pcap.c
+@@ -83,15 +83,6 @@ void pcap_cache_destroy_specific(struct pcap_cache **pp_cache)
+       *pp_cache = NULL;
+ }
+-static bool pcap_cache_add(const char *name, const char *comment, const char *location)
+-{
+-      NTSTATUS status;
+-      time_t t = time_mono(NULL);
+-
+-      status = printer_list_set_printer(talloc_tos(), name, comment, location, t);
+-      return NT_STATUS_IS_OK(status);
+-}
+-
+ bool pcap_cache_loaded(void)
+ {
+       NTSTATUS status;
+@@ -105,6 +96,7 @@ bool pcap_cache_replace(const struct pcap_cache *pcache)
+ {
+       const struct pcap_cache *p;
+       NTSTATUS status;
++      time_t t = time_mono(NULL);
+       status = printer_list_mark_reload();
+       if (!NT_STATUS_IS_OK(status)) {
+@@ -113,7 +105,11 @@ bool pcap_cache_replace(const struct pcap_cache *pcache)
+       }
+       for (p = pcache; p; p = p->next) {
+-              pcap_cache_add(p->name, p->comment, p->location);
++              status = printer_list_set_printer(talloc_tos(), p->name,
++                                                p->comment, p->location, t);
++              if (!NT_STATUS_IS_OK(status)) {
++                      return false;
++              }
+       }
+       status = printer_list_clean_old();
+diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h
+index d388d7d..7dccf84 100644
+--- a/source3/printing/pcap.h
++++ b/source3/printing/pcap.h
+@@ -35,7 +35,6 @@ struct pcap_cache;
+ bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment, const char *location);
+ void pcap_cache_destroy_specific(struct pcap_cache **ppcache);
+-bool pcap_cache_add(const char *name, const char *comment, const char *location);
+ bool pcap_cache_loaded(void);
+ bool pcap_cache_replace(const struct pcap_cache *cache);
+ void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, const char *, void *), void *);
+-- 
+2.1.0
+
+
+From 10582491e417d5ab5c77afe2337793dbacd98fa8 Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Wed, 23 Jul 2014 12:12:34 +0200
+Subject: [PATCH 5/7] PATCHSET18: printing: return last change time with
+ pcap_cache_loaded()
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/printing/load.c |  2 +-
+ source3/printing/pcap.c | 10 ++++++++--
+ source3/printing/pcap.h |  2 +-
+ source3/web/swat.c      |  4 ++--
+ 4 files changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/source3/printing/load.c b/source3/printing/load.c
+index 0a3de73..83f1095 100644
+--- a/source3/printing/load.c
++++ b/source3/printing/load.c
+@@ -64,7 +64,7 @@ load automatic printer services from pre-populated pcap cache
+ void load_printers(struct tevent_context *ev,
+                  struct messaging_context *msg_ctx)
+ {
+-      SMB_ASSERT(pcap_cache_loaded());
++      SMB_ASSERT(pcap_cache_loaded(NULL));
+       add_auto_printers();
+diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c
+index 5059f20..027c1b2 100644
+--- a/source3/printing/pcap.c
++++ b/source3/printing/pcap.c
+@@ -83,13 +83,19 @@ void pcap_cache_destroy_specific(struct pcap_cache **pp_cache)
+       *pp_cache = NULL;
+ }
+-bool pcap_cache_loaded(void)
++bool pcap_cache_loaded(time_t *_last_change)
+ {
+       NTSTATUS status;
+       time_t last;
+       status = printer_list_get_last_refresh(&last);
+-      return NT_STATUS_IS_OK(status);
++      if (!NT_STATUS_IS_OK(status)) {
++              return false;
++      }
++      if (_last_change != NULL) {
++              *_last_change = last;
++      }
++      return true;
+ }
+ bool pcap_cache_replace(const struct pcap_cache *pcache)
+diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h
+index 7dccf84..8fc9e9d 100644
+--- a/source3/printing/pcap.h
++++ b/source3/printing/pcap.h
+@@ -35,7 +35,7 @@ struct pcap_cache;
+ bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment, const char *location);
+ void pcap_cache_destroy_specific(struct pcap_cache **ppcache);
+-bool pcap_cache_loaded(void);
++bool pcap_cache_loaded(time_t *_last_change);
+ bool pcap_cache_replace(const struct pcap_cache *cache);
+ void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, const char *, void *), void *);
+ void pcap_printer_read_fn(void (*fn)(const char *, const char *, const char *, void *), void *);
+diff --git a/source3/web/swat.c b/source3/web/swat.c
+index f8933d2..a1a035c 100644
+--- a/source3/web/swat.c
++++ b/source3/web/swat.c
+@@ -586,7 +586,7 @@ static int save_reload(int snum)
+                 return 0;
+         }
+       iNumNonAutoPrintServices = lp_numservices();
+-      if (pcap_cache_loaded()) {
++      if (pcap_cache_loaded(NULL)) {
+               load_printers(server_event_context(),
+                             server_messaging_context());
+       }
+@@ -1572,7 +1572,7 @@ const char *lang_msg_rotate(TALLOC_CTX *ctx, const char *msgid)
+       reopen_logs();
+       load_interfaces();
+       iNumNonAutoPrintServices = lp_numservices();
+-      if (pcap_cache_loaded()) {
++      if (pcap_cache_loaded(NULL)) {
+               load_printers(server_event_context(),
+                             server_messaging_context());
+       }
+-- 
+2.1.0
+
+
+From 484667ff73b54b275f8629264aef27ec9628c7fd Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Wed, 23 Jul 2014 14:42:00 +0200
+Subject: [PATCH 6/7] PATCHSET18: smbd: only reprocess printer_list.tdb if it
+ changed
+
+The per-client smbd printer share inventory is currently updated from
+printer_list.tdb when a client enumerates printers, via EnumPrinters or
+NetShareEnum.
+printer_list.tdb is populated by the background print process, based on
+the latest printcap values retrieved from the printing backend (e.g.
+CUPS) at regular intervals.
+This change ensures that per-client smbd processes don't reparse
+printer_list.tdb if it hasn't been updated since the last enumeration.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Suggested-by: Volker Lendecke <vl@samba.org>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/smbd/server_reload.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c
+index c4c5a8d..57f7972 100644
+--- a/source3/smbd/server_reload.c
++++ b/source3/smbd/server_reload.c
+@@ -30,6 +30,13 @@
+ #include "auth.h"
+ #include "messages.h"
++/*
++ * The persistent pcap cache is populated by the background print process. Per
++ * client smbds should only reload their printer share inventories if this
++ * information has changed. Use last_reload_time to detect this.
++ */
++static time_t reload_last_pcap_time = 0;
++
+ /****************************************************************************
+  purge stale printers and reload from pre-populated pcap cache
+ **************************************************************************/
+@@ -40,6 +47,20 @@ void reload_printers(struct tevent_context *ev,
+       int pnum;
+       int snum;
+       const char *pname;
++      bool ok;
++      time_t pcap_last_update;
++
++      ok = pcap_cache_loaded(&pcap_last_update);
++      if (!ok) {
++              DEBUG(1, ("pcap cache not loaded\n"));
++              return;
++      }
++
++      if (reload_last_pcap_time == pcap_last_update) {
++              DEBUG(5, ("skipping printer reload, already up to date.\n"));
++              return;
++      }
++      reload_last_pcap_time = pcap_last_update;
+       n_services = lp_numservices();
+       pnum = lp_servicenumber(PRINTERS_NAME);
+-- 
+2.1.0
+
+
+From 08848f939b735b5a68066ebcc995247d77f5fa2d Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Wed, 6 Aug 2014 14:33:02 +0200
+Subject: [PATCH 7/7] PATCHSET18: printing: reload printer shares on
+ OpenPrinter
+
+The printer share inventory should be reloaded on open _and_
+enumeration, as there are some clients, such as cupsaddsmb, that do not
+perform an enumeration prior to access.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652
+
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+---
+ source3/rpc_server/spoolss/srv_spoolss_nt.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+index db48574..fb8f61f 100644
+--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+@@ -1737,6 +1737,16 @@ WERROR _spoolss_OpenPrinterEx(struct pipes_struct *p,
+               return WERR_INVALID_PARAM;
+       }
++      /*
++       * The printcap printer share inventory is updated on client
++       * enumeration. For clients that do not perform enumeration prior to
++       * access, such as cupssmbadd, we reinitialise the printer share
++       * inventory on open as well.
++       */
++      become_root();
++      reload_printers(messaging_event_context(p->msg_ctx), p->msg_ctx);
++      unbecome_root();
++
+       /* some sanity check because you can open a printer or a print server */
+       /* aka: \\server\printer or \\server */
+@@ -4323,7 +4333,7 @@ static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx,
+       struct dcerpc_binding_handle *b = NULL;
+       /*
+-       * printer shares are only updated on client enumeration. The background
++       * printer shares are updated on client enumeration. The background
+        * printer process updates printer_list.tdb at regular intervals.
+        */
+       become_root();
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch b/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch
new file mode 100644 (file)
index 0000000..cc43528
--- /dev/null
@@ -0,0 +1,37 @@
+From 75497eb3bb57424cefbbbe0c61cd2b0adcad802b Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Wed, 2 Nov 2016 17:19:09 +0100
+Subject: [PATCH] s3-winbind: Do not return NO_MEMORY if we have an empty user
+ list
+
+The domain child for the MACHINE ACCOUNT might fail with
+NT_STATUS_NO_MEMORY because an emtpy user list is returned.
+
+*pnum_info is already set to 0 at the beginngin so we should just
+declare victory here!
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=12405
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/winbindd/winbindd_rpc.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/source3/winbindd/winbindd_rpc.c b/source3/winbindd/winbindd_rpc.c
+index c560a6b..59bd78a 100644
+--- a/source3/winbindd/winbindd_rpc.c
++++ b/source3/winbindd/winbindd_rpc.c
+@@ -88,6 +88,10 @@ NTSTATUS rpc_query_user_list(TALLOC_CTX *mem_ctx,
+               num_dom_users = disp_info.info1.count;
+               num_info += num_dom_users;
++              /* If there are no user to enumerate we're done */
++              if (num_info == 0) {
++                      return NT_STATUS_OK;
++              }
+               info = TALLOC_REALLOC_ARRAY(mem_ctx,
+                                           info,
+-- 
+2.7.4
+
diff --git a/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch b/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch
new file mode 100644 (file)
index 0000000..02be2c6
--- /dev/null
@@ -0,0 +1,73 @@
+From fe30cb2d1932401b5507af9f12149506cf0ae749 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Tue, 7 Apr 2015 16:12:18 +0200
+Subject: [PATCH] PATCHSET25: rpcclient: Fix the timeout command
+
+https://bugzilla.samba.org/show_bug.cgi?id=11199
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Stefan Metzmacher <metze@samba.org>
+
+(cherry picked from commit 2bca4cdc6f83dce48c73a33288c4fd3ae80f883b)
+---
+ source3/rpcclient/rpcclient.c | 23 +++++++----------------
+ 1 file changed, 7 insertions(+), 16 deletions(-)
+
+diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
+index c2f3e4c..0dbcd01 100644
+--- a/source3/rpcclient/rpcclient.c
++++ b/source3/rpcclient/rpcclient.c
+@@ -481,8 +481,6 @@ static NTSTATUS cmd_seal(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+ static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+                           int argc, const char **argv)
+ {
+-      struct cmd_list *tmp;
+-
+       if (argc > 2) {
+               printf("Usage: %s timeout\n", argv[0]);
+               return NT_STATUS_OK;
+@@ -490,19 +488,6 @@ static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+       if (argc == 2) {
+               timeout = atoi(argv[1]);
+-
+-              for (tmp = cmd_list; tmp; tmp = tmp->next) {
+-
+-                      struct cmd_set *tmp_set;
+-
+-                      for (tmp_set = tmp->cmd_set; tmp_set->name; tmp_set++) {
+-                              if (tmp_set->rpc_pipe == NULL) {
+-                                      continue;
+-                              }
+-
+-                              rpccli_set_timeout(tmp_set->rpc_pipe, timeout);
+-                      }
+-              }
+       }
+       printf("timeout is %d\n", timeout);
+@@ -791,6 +776,11 @@ static NTSTATUS do_cmd(struct cli_state *cli,
+               }
+       }
++      /* Set timeout for new connections */
++      if (cmd_entry->rpc_pipe) {
++              rpccli_set_timeout(cmd_entry->rpc_pipe, timeout);
++      }
++
+       /* Run command */
+       if ( cmd_entry->returntype == RPC_RTYPE_NTSTATUS ) {
+@@ -1124,7 +1114,8 @@ out_free:
+       /* Load command lists */
+-      timeout = cli_set_timeout(cli, 10000);
++      timeout = 10000;
++      cli_set_timeout(cli, timeout);
+       cmd_set = rpcclient_command_list;
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch b/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch
new file mode 100644 (file)
index 0000000..ad23353
--- /dev/null
@@ -0,0 +1,70 @@
+From 56bfca66b8597afe731f4624bb9f862bb45f81ba Mon Sep 17 00:00:00 2001
+From: Matt Rogers <mrogers@redhat.com>
+Date: Mon, 12 Oct 2015 14:46:18 +0200
+Subject: [PATCH] PATCHSET33: s3-auch: Fix secuirty = server share access
+
+Resolve user groups in non-winbind path of passwd_to_SamInfo3(), fixing
+group memberships with server security.
+
+Signed-off-by: Matt Rogers <mrogers@redhat.com>
+---
+ source3/auth/server_info.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
+index 1fd9317..91724cc 100644
+--- a/source3/auth/server_info.c
++++ b/source3/auth/server_info.c
+@@ -571,7 +571,9 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+       enum lsa_SidType type;
+       uint32_t num_sids = 0;
+       struct dom_sid *user_sids = NULL;
++      gid_t *gids = NULL;
+       bool ok;
++      int i;
+       tmp_ctx = talloc_stackframe();
+@@ -629,6 +631,29 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+                                   get_global_sam_sid(),
+                                   DOMAIN_RID_USERS);
+               }
++
++              if (!getgroups_unix_user(tmp_ctx,
++                                       unix_username,
++                                       pwd->pw_gid,
++                                       &gids,
++                                       &num_sids)) {
++                      DEBUG(1, ("Failed to get unix user groups.\n"));
++                      goto done;
++              }
++
++              if (num_sids == 0) {
++                      smb_panic("primary group missing");
++              }
++
++              user_sids = TALLOC_ARRAY(tmp_ctx, struct dom_sid, num_sids);
++
++              if (user_sids == NULL) {
++                      return NT_STATUS_NO_MEMORY;
++              }
++
++              for (i = 0; i < num_sids; i++) {
++                      gid_to_sid(&user_sids[i], gids[i]);
++              }
+       }
+       /* Make sure we have a valid group sid */
+@@ -696,6 +721,9 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+       status = NT_STATUS_OK;
+ done:
++      if (gids != NULL) {
++              talloc_free(gids);
++      }
+       talloc_free(tmp_ctx);
+       return status;
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch b/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch
new file mode 100644 (file)
index 0000000..e31f75e
--- /dev/null
@@ -0,0 +1,186 @@
+commit 9dd0bb462b613a5f6f41d4130bfd31c0a64debd7
+Author:     Jeremy Allison <jra@samba.org>
+AuthorDate: Mon Jan 13 15:23:00 2014 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:45:44 2014 +0100
+
+    s3-winbind: Move setup_domain_child() into add_trusted_domain().
+    
+    Ensure it only gets called when a new domain is allocated
+    and added to the list.
+    
+    This should fix problems with the previous logic where
+    setup_domain_child() was called in places where an existing
+    domain was returned.
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10358
+---
+ source3/winbindd/winbindd_util.c | 74 ++++++++++++++++++----------------------
+ 1 file changed, 33 insertions(+), 41 deletions(-)
+
+diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c
+index 37b6578..353722e 100644
+--- a/source3/winbindd/winbindd_util.c
++++ b/source3/winbindd/winbindd_util.c
+@@ -89,7 +89,10 @@ static bool is_in_internal_domain(const struct dom_sid *sid)
+ }
+-/* Add a trusted domain to our list of domains */
++/* Add a trusted domain to our list of domains.
++   If the domain already exists in the list,
++   return it and don't re-initialize.
++ */
+ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const char *alt_name,
+                                                 struct winbindd_methods *methods,
+                                                 const struct dom_sid *sid)
+@@ -99,6 +102,7 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
+       char *idmap_config_option;
+       const char *param;
+       const char **ignored_domains, **dom;
++      int role = lp_server_role();
+       ignored_domains = lp_parm_string_list(-1, "winbind", "ignore domains", NULL);
+       for (dom=ignored_domains; dom && *dom; dom++) {
+@@ -146,7 +150,10 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
+       if (domain != NULL) {
+               /*
+-               * We found a match. Possibly update the SID
++               * We found a match on domain->name or
++               * domain->alt_name. Possibly update the SID
++               * if the stored SID was the NULL SID
++               * and return the matching entry.
+                */
+               if ((sid != NULL)
+                   && dom_sid_equal(&domain->sid, &global_sid_NULL)) {
+@@ -192,6 +199,15 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
+               sid_copy(&domain->sid, sid);
+       }
++      /* Is this our primary domain ? */
++      if (strequal(domain_name, get_global_sam_name()) &&
++          (role != ROLE_DOMAIN_MEMBER)) {
++              domain->primary = true;
++      } else if (strequal(domain_name, lp_workgroup()) &&
++                 (role == ROLE_DOMAIN_MEMBER)) {
++              domain->primary = true;
++      }
++
+       /* Link to domain list */
+       DLIST_ADD_END(_domain_list, domain, struct winbindd_domain *);
+@@ -228,6 +244,8 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
+ done:
++      setup_domain_child(domain);
++
+       DEBUG(2,("Added domain %s %s %s\n",
+                domain->name, domain->alt_name,
+                &domain->sid?sid_string_dbg(&domain->sid):""));
+@@ -341,18 +359,10 @@ static void trustdom_list_done(struct tevent_req *req)
+                  necessary.  This is important because we need the
+                  SID for sibling domains */
+-              if ( find_domain_from_name_noinit(p) != NULL ) {
+-                      domain = add_trusted_domain(p, alternate_name,
+-                                                  &cache_methods,
+-                                                  &sid);
+-              } else {
+-                      domain = add_trusted_domain(p, alternate_name,
+-                                                  &cache_methods,
+-                                                  &sid);
+-                      if (domain) {
+-                              setup_domain_child(domain);
+-                      }
+-              }
++              (void)add_trusted_domain(p, alternate_name,
++                                          &cache_methods,
++                                          &sid);
++
+               p=q;
+               if (p != NULL)
+                       p += 1;
+@@ -422,13 +432,10 @@ static void rescan_forest_root_trusts( void )
+               d = find_domain_from_name_noinit( dom_list[i].domain_name );
+               if ( !d ) {
+-                      d = add_trusted_domain( dom_list[i].domain_name,
++                      (void)add_trusted_domain( dom_list[i].domain_name,
+                                               dom_list[i].dns_name,
+                                               &cache_methods,
+-                                              &dom_list[i].sid );
+-                      if (d != NULL) {
+-                              setup_domain_child(d);
+-                      }
++                                              &dom_list[i].sid);
+               }
+               if (d == NULL) {
+@@ -494,13 +501,10 @@ static void rescan_forest_trusts( void )
+                          about it */
+                       if ( !d ) {
+-                              d = add_trusted_domain( dom_list[i].domain_name,
++                              (void)add_trusted_domain( dom_list[i].domain_name,
+                                                       dom_list[i].dns_name,
+                                                       &cache_methods,
+-                                                      &dom_list[i].sid );
+-                              if (d != NULL) {
+-                                      setup_domain_child(d);
+-                              }
++                                                      &dom_list[i].sid);
+                       }
+                       if (d == NULL) {
+@@ -601,7 +605,6 @@ enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domai
+ /* Look up global info for the winbind daemon */
+ bool init_domain_list(void)
+ {
+-      struct winbindd_domain *domain;
+       int role = lp_server_role();
+       /* Free existing list */
+@@ -609,26 +612,18 @@ bool init_domain_list(void)
+       /* BUILTIN domain */
+-      domain = add_trusted_domain("BUILTIN", NULL, &cache_methods,
+-                                  &global_sid_Builtin);
+-      if (domain) {
+-              setup_domain_child(domain);
+-      }
++      (void)add_trusted_domain("BUILTIN", NULL, &cache_methods,
++                               &global_sid_Builtin);
+       /* Local SAM */
+-      domain = add_trusted_domain(get_global_sam_name(), NULL,
+-                                  &cache_methods, get_global_sam_sid());
+-      if (domain) {
+-              if ( role != ROLE_DOMAIN_MEMBER ) {
+-                      domain->primary = True;
+-              }
+-              setup_domain_child(domain);
+-      }
++      (void)add_trusted_domain(get_global_sam_name(), NULL,
++                               &cache_methods, get_global_sam_sid());
+       /* Add ourselves as the first entry. */
+       if ( role == ROLE_DOMAIN_MEMBER ) {
++              struct winbindd_domain *domain;
+               struct dom_sid our_sid;
+               if (!secrets_fetch_domain_sid(lp_workgroup(), &our_sid)) {
+@@ -639,9 +634,6 @@ bool init_domain_list(void)
+               domain = add_trusted_domain( lp_workgroup(), lp_realm(),
+                                            &cache_methods, &our_sid);
+               if (domain) {
+-                      domain->primary = True;
+-                      setup_domain_child(domain);
+-
+                       /* Even in the parent winbindd we'll need to
+                          talk to the DC, so try and see if we can
+                          contact it. Theoretically this isn't neccessary
diff --git a/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch b/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch
new file mode 100644 (file)
index 0000000..3b0d178
--- /dev/null
@@ -0,0 +1,51 @@
+From cea644fd24dbbf2e2359fd7b6d361a698660d5eb Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Mon, 2 Mar 2015 11:55:01 +0100
+Subject: [PATCH] PATCHSET20: doc-xml: Add 'sharesec' reference to 'access
+ based share enum'
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11127
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Michael Adam <obnox@samba.org>
+
+Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
+Autobuild-Date(master): Mon Mar  2 14:33:33 CET 2015 on sn-devel-104
+
+(cherry picked from commit e2ed224653985afa13e906e2a5f3656a18d622c0)
+Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
+---
+ docs-xml/smbdotconf/security/accessbasedshareenum.xml | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+Index: samba-3.6.23/docs-xml/smbdotconf/security/accessbasedshareenum.xml
+===================================================================
+--- samba-3.6.23.orig/docs-xml/smbdotconf/security/accessbasedshareenum.xml
++++ samba-3.6.23/docs-xml/smbdotconf/security/accessbasedshareenum.xml
+@@ -7,7 +7,10 @@
+      <para>If this parameter is <constant>yes</constant> for a
+     service, then the share hosted by the service will only be visible
+     to users who have read or write access to the share during share
+-    enumeration (for example net view \\sambaserver).  This has
++    enumeration (for example net view \\sambaserver). The share ACLs
++    which allow or deny the access to the share can be modified using
++    for example the <command moreinfo="none">sharesec</command> command
++    or using the appropriate Windows tools. This has
+     parallels to access based enumeration, the main difference being
+     that only share permissions are evaluated, and security
+     descriptors on files contained on the share are not used in
+Index: samba-3.6.23/docs/manpages/smb.conf.5
+===================================================================
+--- samba-3.6.23.orig/docs/manpages/smb.conf.5
++++ samba-3.6.23/docs/manpages/smb.conf.5
+@@ -784,7 +784,9 @@ access based share enum (S)
+ .RS 4
+ If this parameter is
+ \fByes\fR
+-for a service, then the share hosted by the service will only be visible to users who have read or write access to the share during share enumeration (for example net view \e\esambaserver)\&. This has parallels to access based enumeration, the main difference being that only share permissions are evaluated, and security descriptors on files contained on the share are not used in computing enumeration access rights\&.
++for a service, then the share hosted by the service will only be visible to users who have read or write access to the share during share enumeration (for example net view \e\esambaserver)\&. The share ACLs which allow or deny the access to the share can be modified using for example the
++sharesec
++command or using the appropriate Windows tools\&. This has parallels to access based enumeration, the main difference being that only share permissions are evaluated, and security descriptors on files contained on the share are not used in computing enumeration access rights\&.
+ .sp
+ Default:
+ \fI\fIaccess based share enum\fR\fR\fI = \fR\fIno\fR\fI \fR
diff --git a/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch b/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch
new file mode 100644 (file)
index 0000000..4f136e5
--- /dev/null
@@ -0,0 +1,116 @@
+From b413a09fa5b927102655a8332e95a64a80e57825 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Thu, 21 Jul 2011 21:15:38 +0200
+Subject: [PATCH 1/2] PATCHSET19: s3:libsmb: don't pass cli->called.name to
+ NTLMv2_generate_names_blob()
+
+cli->called.name is never initialized, so this change doesn't change
+the behavior. And this behavior seems to be correct, see
+commit 29c0c37691da10bf061ba90a5b31482bda2fa486
+s4/libcli: do not use netbios name in NTLMv2 blobs w/o spnego.
+
+metze
+
+(cherry picked from commit 392ddf970c8f8486e79eec5214ed49912e344e09)
+---
+ source3/libsmb/cliconnect.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
+index 8653ba7..38ae230 100644
+--- a/source3/libsmb/cliconnect.c
++++ b/source3/libsmb/cliconnect.c
+@@ -862,11 +862,11 @@ static struct tevent_req *cli_session_setup_nt1_send(
+                       /*
+                        * note that the 'workgroup' here is a best
+                        * guess - we don't know the server's domain
+-                       * at this point.  The 'server name' is also
+-                       * dodgy...
++                       * at this point. Windows clients also don't
++                       * use hostname...
+                        */
+                       names_blob = NTLMv2_generate_names_blob(
+-                              NULL, cli->called.name, workgroup);
++                              NULL, NULL, workgroup);
+                       if (tevent_req_nomem(names_blob.data, req)) {
+                               return tevent_req_post(req, ev);
+-- 
+2.1.0
+
+
+From 1415733b6cfeba129e1459ef55a0a12a5dec0fa3 Mon Sep 17 00:00:00 2001
+From: Christian Ambach <christian.ambach@de.ibm.com>
+Date: Thu, 7 Apr 2011 14:05:04 +0200
+Subject: [PATCH 2/2] PATCHSET19: s4/libcli: do not use netbios name in NTLMv2
+ blobs w/o spnego
+
+I have seen domain controllers rejecting NTLMv2 blobs presented to
+NetrLogonSamLogonEx with LOGON_FAILURE when the MsvAvNbComputerName
+was a FQDN or an IP address
+
+I have not seen this field in NTLMv2 blobs send by Windows clients
+when extended security was not available, so omitting the field
+makes Samba similar to Windows.
+
+This prevents errors with some smbtorture testcases that disable
+spnego and when a target name is specified that is not a valid
+netbios name.
+
+Signed-off-by: Andrew Bartlett <abartlet@samba.org>
+
+Autobuild-User: Andrew Bartlett <abartlet@samba.org>
+Autobuild-Date: Thu Apr 14 02:19:08 CEST 2011 on sn-devel-104
+(cherry picked from commit 29c0c37691da10bf061ba90a5b31482bda2fa486)
+---
+ source4/libcli/smb_composite/sesssetup.c | 26 ++++++++++++++++++++++----
+ 1 file changed, 22 insertions(+), 4 deletions(-)
+
+diff --git a/source4/libcli/smb_composite/sesssetup.c b/source4/libcli/smb_composite/sesssetup.c
+index e1159a4..ebc3598 100644
+--- a/source4/libcli/smb_composite/sesssetup.c
++++ b/source4/libcli/smb_composite/sesssetup.c
+@@ -280,8 +280,17 @@ static NTSTATUS session_setup_nt1(struct composite_context *c,
+                                 struct smbcli_request **req) 
+ {
+       NTSTATUS nt_status = NT_STATUS_INTERNAL_ERROR;
+-      struct sesssetup_state *state = talloc_get_type(c->private_data, struct sesssetup_state);
+-      DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, session->transport->socket->hostname, cli_credentials_get_domain(io->in.credentials));
++      struct sesssetup_state *state = talloc_get_type(c->private_data,
++                                                      struct sesssetup_state);
++      const char *domain = cli_credentials_get_domain(io->in.credentials);
++
++      /*
++       * domain controllers tend to reject the NTLM v2 blob
++       * if the netbiosname is not valid (e.g. IP address or FQDN)
++       * so just leave it away (as Windows client do)
++       */
++      DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, NULL, domain);
++
+       DATA_BLOB session_key = data_blob(NULL, 0);
+       int flags = CLI_CRED_NTLM_AUTH;
+@@ -353,9 +362,18 @@ static NTSTATUS session_setup_old(struct composite_context *c,
+                                 struct smbcli_request **req) 
+ {
+       NTSTATUS nt_status;
+-      struct sesssetup_state *state = talloc_get_type(c->private_data, struct sesssetup_state);
++      struct sesssetup_state *state = talloc_get_type(c->private_data,
++                                                      struct sesssetup_state);
+       const char *password = cli_credentials_get_password(io->in.credentials);
+-      DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, session->transport->socket->hostname, cli_credentials_get_domain(io->in.credentials));
++      const char *domain = cli_credentials_get_domain(io->in.credentials);
++
++      /*
++       * domain controllers tend to reject the NTLM v2 blob
++       * if the netbiosname is not valid (e.g. IP address or FQDN)
++       * so just leave it away (as Windows client do)
++       */
++      DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, NULL, domain);
++
+       DATA_BLOB session_key;
+       int flags = 0;
+       if (session->options.lanman_auth) {
+-- 
+2.1.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch b/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch
new file mode 100644 (file)
index 0000000..3ad3b62
--- /dev/null
@@ -0,0 +1,55 @@
+From 20d92c8a18beb4af2b9020efed15f5238d86d13c Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Wed, 1 Apr 2015 01:03:13 +0200
+Subject: [PATCH] PATCHSET30 spoolss: purge the printer name cache on name
+ change
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Currently the name cache is only cleared on printer deletion. This means
+that if a printer undergoes a name change, the old name remains in the
+cache and can be subsequently used incorrecly if another printer takes
+the same name as the old.
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11210
+
+Reported-by: Franz Pförtsch <franz.pfoertsch@brose.com>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+
+Autobuild-User(master): Jeremy Allison <jra@samba.org>
+Autobuild-Date(master): Tue Apr 14 05:37:50 CEST 2015 on sn-devel-104
+
+(cherry picked from commit a97507a9a7ba01beead6a621e1210618e93a9f9c)
+---
+ source3/rpc_server/spoolss/srv_spoolss_nt.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+index fb8f61f..629bdc2 100644
+--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+@@ -6373,6 +6373,9 @@ static WERROR update_dsspooler(TALLOC_CTX *mem_ctx,
+                                                snum, printer->sharename ?
+                                                printer->sharename : "");
+               }
++
++              /* name change, purge any cache entries for the old */
++              prune_printername_cache();
+       }
+       if (force_update || !strequal(printer->printername, old_printer->printername)) {
+@@ -6398,6 +6401,9 @@ static WERROR update_dsspooler(TALLOC_CTX *mem_ctx,
+                       notify_printer_printername(server_event_context(),
+                                                  msg_ctx, snum, p ? p : "");
+               }
++
++              /* name change, purge any cache entries for the old */
++              prune_printername_cache();
+       }
+       if (force_update || !strequal(printer->portname, old_printer->portname)) {
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch b/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch
new file mode 100644 (file)
index 0000000..8819849
--- /dev/null
@@ -0,0 +1,111 @@
+From b6192b3cdeaa9eb719ec5da3977af9470504d294 Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Wed, 23 Dec 2015 18:01:23 +0100
+Subject: [PATCH] s3:smbd: fix a corner case of the symlink verification
+
+Commit 7606c0db257b3f9d84da5b2bf5fbb4034cc8d77d fixes the
+path checks in check_reduced_name[_with_privilege]() to
+prevent unintended access via wide links.
+
+The fix fails to correctly treat a corner case where the share
+path is "/". This case is important for some real world
+scenarios, notably the use of the glusterfs VFS module:
+
+For the share path "/", the newly introduced checks deny all
+operations in the share.
+
+This change fixes the checks for the corner case.
+The point is that the assumptions on which the original
+checks are based are not true for the rootdir "/" case.
+This is the case where the rootdir starts _and ends_ with
+a slash. Hence a subdirectory does not continue with a
+slash after the rootdir, since the candidate path has
+been normalized.
+
+This fix just omits the string comparison and the
+next character checks in the case of rootdir "/",
+which is correct because we know that the candidate
+path is normalized and hence starts with a '/'.
+
+The patch is fairly minimal, but changes indentation,
+hence best viewed with 'git show -w'.
+
+A side effect is that the rootdir="/" case needs
+one strncmp less.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11647
+
+Pair-Programmed-With: Jose A. Rivera <jarrpa@samba.org>
+
+Signed-off-by: Michael Adam <obnox@samba.org>
+Signed-off-by: Jose A. Rivera <jarrpa@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+
+Autobuild-User(master): Michael Adam <obnox@samba.org>
+Autobuild-Date(master): Thu Dec 24 00:57:31 CET 2015 on sn-devel-144
+
+(cherry picked from commit ada59ec7b3a5ed0478d11da2fe0c90991d137288)
+---
+ source3/smbd/vfs.c | 39 +++++++++++++++++++++++++++------------
+ 1 file changed, 27 insertions(+), 12 deletions(-)
+
+diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
+index bd93b7f..2b8000d 100644
+--- a/source3/smbd/vfs.c
++++ b/source3/smbd/vfs.c
+@@ -982,7 +982,6 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
+       if (!allow_widelinks || !allow_symlinks) {
+               const char *conn_rootdir;
+               size_t rootdir_len;
+-              bool matched;
+               conn_rootdir = SMB_VFS_CONNECTPATH(conn, fname);
+               if (conn_rootdir == NULL) {
+@@ -993,17 +992,33 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
+               }
+               rootdir_len = strlen(conn_rootdir);
+-              matched = (strncmp(conn_rootdir, resolved_name,
+-                              rootdir_len) == 0);
+-              if (!matched || (resolved_name[rootdir_len] != '/' &&
+-                               resolved_name[rootdir_len] != '\0')) {
+-                      DEBUG(2, ("check_reduced_name: Bad access "
+-                              "attempt: %s is a symlink outside the "
+-                              "share path\n", fname));
+-                      DEBUGADD(2, ("conn_rootdir =%s\n", conn_rootdir));
+-                      DEBUGADD(2, ("resolved_name=%s\n", resolved_name));
+-                      SAFE_FREE(resolved_name);
+-                      return NT_STATUS_ACCESS_DENIED;
++
++              /*
++               * In the case of rootdir_len == 1, we know that
++               * conn_rootdir is "/", and we also know that
++               * resolved_name starts with a slash.  So, in this
++               * corner case, resolved_name is automatically a
++               * sub-directory of the conn_rootdir. Thus we can skip
++               * the string comparison and the next character checks
++               * (which are even wrong in this case).
++               */
++              if (rootdir_len != 1) {
++                      bool matched;
++
++                      matched = (strncmp(conn_rootdir, resolved_name,
++                                      rootdir_len) == 0);
++                      if (!matched || (resolved_name[rootdir_len] != '/' &&
++                                       resolved_name[rootdir_len] != '\0')) {
++                              DEBUG(2, ("check_reduced_name: Bad access "
++                                      "attempt: %s is a symlink outside the "
++                                      "share path\n", fname));
++                              DEBUGADD(2, ("conn_rootdir =%s\n",
++                                           conn_rootdir));
++                              DEBUGADD(2, ("resolved_name=%s\n",
++                                           resolved_name));
++                              SAFE_FREE(resolved_name);
++                              return NT_STATUS_ACCESS_DENIED;
++                      }
+               }
+               /* Extra checks if all symlinks are disallowed. */
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch b/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch
new file mode 100644 (file)
index 0000000..a30494e
--- /dev/null
@@ -0,0 +1,397 @@
+From 72494e601ee6027873494f7ee7aff03d9170e3eb Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Mon, 16 Jun 2014 22:49:29 -0700
+Subject: [PATCH 1/5] PATCHSET21: s3: auth: Add some const to the struct
+ netr_SamInfo3 * arguments of copy_netr_SamInfo3() and
+ make_server_info_info3()
+
+Both functions only read from the struct netr_SamInfo3 * argument.
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
+Reviewed-by: Simo Sorce <idra@samba.org>
+(cherry picked from commit c2411767adb5ce48a4619349075f6f8faae41aab)
+
+Conflicts:
+       source3/auth/proto.h
+---
+ source3/auth/auth_util.c   | 2 +-
+ source3/auth/proto.h       | 4 ++--
+ source3/auth/server_info.c | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index 1f1fed9..a548b7b 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -1195,7 +1195,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
+                               const char *sent_nt_username,
+                               const char *domain,
+                               struct auth_serversupplied_info **server_info,
+-                              struct netr_SamInfo3 *info3)
++                              const struct netr_SamInfo3 *info3)
+ {
+       static const char zeros[16] = {0, };
+
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index fccabc4..c851722 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -173,7 +173,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
+                               const char *sent_nt_username,
+                               const char *domain,
+                               struct auth_serversupplied_info **server_info,
+-                              struct netr_SamInfo3 *info3);
++                              const struct netr_SamInfo3 *info3);
+ struct wbcAuthUserInfo;
+ NTSTATUS make_server_info_wbcAuthUserInfo(TALLOC_CTX *mem_ctx,
+                                         const char *sent_nt_username,
+@@ -233,7 +233,7 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
+                           const struct passwd *pwd,
+                           struct netr_SamInfo3 **pinfo3);
+ struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx,
+-                                       struct netr_SamInfo3 *orig);
++                                       const struct netr_SamInfo3 *orig);
+ struct netr_SamInfo3 *wbcAuthUserInfo_to_netr_SamInfo3(TALLOC_CTX *mem_ctx,
+                                       const struct wbcAuthUserInfo *info);
+
+diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
+index e627892..63b4989 100644
+--- a/source3/auth/server_info.c
++++ b/source3/auth/server_info.c
+@@ -632,7 +632,7 @@ done:
+       } } while(0)
+
+ struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx,
+-                                       struct netr_SamInfo3 *orig)
++                                       const struct netr_SamInfo3 *orig)
+ {
+       struct netr_SamInfo3 *info3;
+       unsigned int i;
+--
+2.1.0
+
+
+From 1afd41a9cc31acdff66ab084ba89913c8a239a0f Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Mon, 16 Jun 2014 22:54:45 -0700
+Subject: [PATCH 2/5] PATCHSET21: s3: auth: Change make_server_info_info3() to
+ take a const struct netr_SamInfo3 pointer instead of a struct PAC_LOGON_INFO.
+
+make_server_info_info3() only reads from the info3 pointer.
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
+Reviewed-by: Simo Sorce <idra@samba.org>
+(cherry picked from commit 527f7b54388713acaaf7b66c718cc0f7114fc368)
+
+Conflicts:
+       source3/auth/auth_generic.c
+       source3/auth/proto.h
+       source3/auth/user_krb5.c
+---
+ source3/auth/proto.h     | 2 +-
+ source3/auth/user_krb5.c | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index c851722..0ab32a7 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -305,7 +305,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                               char *ntdomain,
+                               char *username,
+                               struct passwd *pw,
+-                              struct PAC_LOGON_INFO *logon_info,
++                              const struct netr_SamInfo3 *info3,
+                               bool mapped_to_guest,
+                               struct auth_serversupplied_info **server_info);
+
+diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c
+index 1e5254e..fde2f48 100644
+--- a/source3/auth/user_krb5.c
++++ b/source3/auth/user_krb5.c
+@@ -184,7 +184,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                               char *ntdomain,
+                               char *username,
+                               struct passwd *pw,
+-                              struct PAC_LOGON_INFO *logon_info,
++                              const struct netr_SamInfo3 *info3,
+                               bool mapped_to_guest,
+                               struct auth_serversupplied_info **server_info)
+ {
+@@ -198,14 +198,14 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                       return status;
+               }
+
+-      } else if (logon_info) {
++      } else if (info3) {
+               /* pass the unmapped username here since map_username()
+                  will be called again in make_server_info_info3() */
+
+               status = make_server_info_info3(mem_ctx,
+                                               ntuser, ntdomain,
+                                               server_info,
+-                                              &logon_info->info3);
++                                              info3);
+               if (!NT_STATUS_IS_OK(status)) {
+                       DEBUG(1, ("make_server_info_info3 failed: %s!\n",
+                                 nt_errstr(status)));
+@@ -284,7 +284,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx,
+                               char *ntdomain,
+                               char *username,
+                               struct passwd *pw,
+-                              struct PAC_LOGON_INFO *logon_info,
++                              const struct netr_SamInfo3 *info3,
+                               bool mapped_to_guest,
+                               struct auth_serversupplied_info **server_info)
+ {
+--
+2.1.0
+
+
+From 08bf07ec03537aedbd7beb359cf9274be2882edf Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Mon, 16 Jun 2014 23:11:58 -0700
+Subject: [PATCH 3/5] PATCHSET21: s3: auth: Add
+ create_info3_from_pac_logon_info() to create a new info3 and merge resource
+ group SIDs into it.
+
+Originally written by Richard Sharpe Richard Sharpe <realrichardsharpe@gmail.com>.
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
+Reviewed-by: Simo Sorce <idra@samba.org>
+(cherry picked from commit db775c68ccbed0252abf092b5cb811e8f5fa9bb6)
+---
+ source3/auth/proto.h       |  5 ++-
+ source3/auth/server_info.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 82 insertions(+), 1 deletion(-)
+
+diff --git a/source3/auth/proto.h b/source3/auth/proto.h
+index 0ab32a7..4335cf8 100644
+--- a/source3/auth/proto.h
++++ b/source3/auth/proto.h
+@@ -209,6 +209,7 @@ NTSTATUS auth_winbind_init(void);
+ struct netr_SamInfo2;
+ struct netr_SamInfo3;
+ struct netr_SamInfo6;
++struct PAC_LOGON_INFO;
+
+ struct auth_serversupplied_info *make_server_info(TALLOC_CTX *mem_ctx);
+ NTSTATUS serverinfo_to_SamInfo2(struct auth_serversupplied_info *server_info,
+@@ -223,6 +224,9 @@ NTSTATUS serverinfo_to_SamInfo6(struct auth_serversupplied_info *server_info,
+                               uint8_t *pipe_session_key,
+                               size_t pipe_session_key_len,
+                               struct netr_SamInfo6 *sam6);
++NTSTATUS create_info3_from_pac_logon_info(TALLOC_CTX *mem_ctx,
++                                        const struct PAC_LOGON_INFO *logon_info,
++                                        struct netr_SamInfo3 **pp_info3);
+ NTSTATUS samu_to_SamInfo3(TALLOC_CTX *mem_ctx,
+                         struct samu *samu,
+                         const char *login_server,
+@@ -289,7 +293,6 @@ bool user_in_netgroup(TALLOC_CTX *ctx, const char *user, const char *ngname);
+ bool user_in_list(TALLOC_CTX *ctx, const char *user,const char **list);
+
+ /* The following definitions come from auth/user_krb5.c  */
+-struct PAC_LOGON_INFO;
+ NTSTATUS get_user_from_kerberos_info(TALLOC_CTX *mem_ctx,
+                                    const char *cli_name,
+                                    const char *princ_name,
+diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
+index 63b4989..1fd9317 100644
+--- a/source3/auth/server_info.c
++++ b/source3/auth/server_info.c
+@@ -21,6 +21,7 @@
+ #include "auth.h"
+ #include "../lib/crypto/arcfour.h"
+ #include "../librpc/gen_ndr/netlogon.h"
++#include "../librpc/gen_ndr/krb5pac.h"
+ #include "../libcli/security/security.h"
+ #include "rpc_client/util_netlogon.h"
+ #include "nsswitch/libwbclient/wbclient.h"
+@@ -293,6 +294,83 @@ static NTSTATUS group_sids_to_info3(struct netr_SamInfo3 *info3,
+       return NT_STATUS_OK;
+ }
+
++/*
++ * Merge resource SIDs, if any, into the passed in info3 structure.
++ */
++
++static NTSTATUS merge_resource_sids(const struct PAC_LOGON_INFO *logon_info,
++                              struct netr_SamInfo3 *info3)
++{
++      uint32_t i = 0;
++
++      if (!(logon_info->info3.base.user_flags & NETLOGON_RESOURCE_GROUPS)) {
++              return NT_STATUS_OK;
++      }
++
++      /*
++       * If there are any resource groups (SID Compression) add
++       * them to the extra sids portion of the info3 in the PAC.
++       *
++       * This makes the info3 look like it would if we got the info
++       * from the DC rather than the PAC.
++       */
++
++      /*
++       * Construct a SID for each RID in the list and then append it
++       * to the info3.
++       */
++      for (i = 0; i < logon_info->res_groups.count; i++) {
++              NTSTATUS status;
++              struct dom_sid new_sid;
++              uint32_t attributes = logon_info->res_groups.rids[i].attributes;
++
++              sid_compose(&new_sid,
++                      logon_info->res_group_dom_sid,
++                      logon_info->res_groups.rids[i].rid);
++
++              DEBUG(10, ("Adding SID %s to extra SIDS\n",
++                      sid_string_dbg(&new_sid)));
++
++              status = append_netr_SidAttr(info3, &info3->sids,
++                                      &info3->sidcount,
++                                      &new_sid,
++                                      attributes);
++              if (!NT_STATUS_IS_OK(status)) {
++                      DEBUG(1, ("failed to append SID %s to extra SIDS: %s\n",
++                              sid_string_dbg(&new_sid),
++                              nt_errstr(status)));
++                      return status;
++              }
++      }
++
++      return NT_STATUS_OK;
++}
++
++/*
++ * Create a copy of an info3 struct from the struct PAC_LOGON_INFO,
++ * then merge resource SIDs, if any, into it. If successful return
++ * the created info3 struct.
++ */
++
++NTSTATUS create_info3_from_pac_logon_info(TALLOC_CTX *mem_ctx,
++                                      const struct PAC_LOGON_INFO *logon_info,
++                                      struct netr_SamInfo3 **pp_info3)
++{
++      NTSTATUS status;
++      struct netr_SamInfo3 *info3 = copy_netr_SamInfo3(mem_ctx,
++                                      &logon_info->info3);
++      if (info3 == NULL) {
++              return NT_STATUS_NO_MEMORY;
++      }
++      status = merge_resource_sids(logon_info, info3);
++      if (!NT_STATUS_IS_OK(status)) {
++              TALLOC_FREE(info3);
++              return status;
++      }
++      *pp_info3 = info3;
++      return NT_STATUS_OK;
++}
++
+ #define RET_NOMEM(ptr) do { \
+       if (!ptr) { \
+               TALLOC_FREE(info3); \
+--
+2.1.0
+
+
+From 86d58108db53958f05d559b2d2a20185ef2deb55 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@cryptomilk.org>
+Date: Wed, 4 Mar 2015 17:45:39 +0100
+Subject: [PATCH 4/5] PATCHSET21: s3-winbind: Merge resource groups from a
+ trusted PAC into the sid array.
+
+This is a backport of db775c68ccbed0252abf092b5cb811e8f5fa9bb6.
+---
+ source3/winbindd/winbindd_pam.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
+index 5316232..b1838a6 100644
+--- a/source3/winbindd/winbindd_pam.c
++++ b/source3/winbindd/winbindd_pam.c
+@@ -546,6 +546,7 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx,
+       time_t time_offset = 0;
+       const char *user_ccache_file;
+       struct PAC_LOGON_INFO *logon_info = NULL;
++      struct netr_SamInfo3 *info3_copy = NULL;
+
+       *info3 = NULL;
+
+@@ -624,7 +625,14 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx,
+               goto failed;
+       }
+
+-      *info3 = &logon_info->info3;
++      result = create_info3_from_pac_logon_info(mem_ctx,
++                                                logon_info,
++                                                &info3_copy);
++      if (!NT_STATUS_IS_OK(result)) {
++              return result;
++      }
++
++      *info3 = info3_copy;
+
+       DEBUG(10,("winbindd_raw_kerberos_login: winbindd validated ticket of %s\n",
+               principal_s));
+--
+2.1.0
+
+
+From 40731d512ba1ee0502bdbdd831c4154f967d9f3e Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Mon, 9 Mar 2015 15:15:37 +0100
+Subject: [PATCH 5/5] PATCHSET21: s3-winbind: Fix chached user group lookup of
+ trusted domains.
+
+If a user group lookup has aleady been done before with a machine
+account we did always return the incomplete information from the cache.
+This patch makes sure we return the correct group information from the
+netsamlogon cache.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11143
+
+Pair-Programmed-With: Andreas Schneider <asn@samba.org>
+Signed-off-by: Michael Adam <obnox@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+
+(cherry picked from commit f5d0204bfa1eb641fe7697613c1f773b6a7e65de)
+---
+ source3/winbindd/wb_lookupusergroups.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/source3/winbindd/wb_lookupusergroups.c b/source3/winbindd/wb_lookupusergroups.c
+index aeffc17..1bb7081 100644
+--- a/source3/winbindd/wb_lookupusergroups.c
++++ b/source3/winbindd/wb_lookupusergroups.c
+@@ -37,6 +37,7 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx,
+ {
+       struct tevent_req *req, *subreq;
+       struct wb_lookupusergroups_state *state;
++      NTSTATUS status;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct wb_lookupusergroups_state);
+@@ -45,6 +46,16 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx,
+       }
+       sid_copy(&state->sid, sid);
+
++      status = lookup_usergroups_cached(NULL,
++                                        state,
++                                        &state->sid,
++                                        &state->sids.num_sids,
++                                        &state->sids.sids);
++      if (NT_STATUS_IS_OK(status)) {
++              tevent_req_done(req);
++              return tevent_req_post(req, ev);
++      }
++
+       subreq = dcerpc_wbint_LookupUserGroups_send(
+               state, ev, dom_child_handle(domain), &state->sid, &state->sids);
+       if (tevent_req_nomem(subreq, req)) {
+--
+2.1.0
diff --git a/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch b/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch
new file mode 100644 (file)
index 0000000..d25f9ff
--- /dev/null
@@ -0,0 +1,29 @@
+From 7aa2d48a4952980316dc0418d79053cfc9fea2ed Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Sun, 20 Oct 2013 17:25:27 +0200
+Subject: [PATCH] winbind3: Fix CID 241468 Resource leak
+
+We were leaking centry in this error case
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Jeremy Allison <jra@samba.org>
+(cherry picked from commit 71c8cd19cf079c7e1462a9ca4432725e3623f7cd)
+---
+ source3/winbindd/winbindd_cache.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
+index 82c8087..00bd034 100644
+--- a/source3/winbindd/winbindd_cache.c
++++ b/source3/winbindd/winbindd_cache.c
+@@ -2076,6 +2076,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
+               } else {
+                       /* something's definitely wrong */
+                       result = centry->status;
++                      centry_free(centry);
+                       goto error;
+               }
+-- 
+2.5.5
+
diff --git a/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch b/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch
new file mode 100644 (file)
index 0000000..554a6c9
--- /dev/null
@@ -0,0 +1,28 @@
+commit d88c59d3690e7c14edfc99411479c245de62e3aa
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Wed Oct 5 10:32:16 2016 +0200
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Oct 5 10:32:16 2016 +0200
+
+    s3-winbind: Fix memory leak in ad_idmap_cached_connection_internal()
+    
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+---
+ source3/winbindd/idmap_ad.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/source3/winbindd/idmap_ad.c b/source3/winbindd/idmap_ad.c
+index 2b35a4f..2b21051 100644
+--- a/source3/winbindd/idmap_ad.c
++++ b/source3/winbindd/idmap_ad.c
+@@ -127,7 +127,9 @@ static ADS_STATUS ad_idmap_cached_connection_internal(struct idmap_domain *dom)
+               realm = wb_dom->alt_name;
+       }
+-      if ( (ads = ads_init(realm, dom->name, ldap_server)) == NULL ) {
++      ads = ads_init(realm, dom->name, ldap_server);
++      SAFE_FREE(ldap_server);
++      if (ads == NULL) {
+               DEBUG(1,("ads_init failed\n"));
+               return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
+       }
diff --git a/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch b/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch
new file mode 100644 (file)
index 0000000..dccd3a7
--- /dev/null
@@ -0,0 +1,47 @@
+From 8368c6336f557220d6b2a088e291c5ce61f80f9e Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Wed, 16 Dec 2015 11:04:20 -0800
+Subject: [PATCH] s3: libsmb: Correctly initialize the list head when keeping a
+ list of primary followed by DFS connections.
+
+Greatly helped by <shargagan@novell.com> to
+track down this issue.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11624
+
+Signed-off-by: Jeremy Allison <jra@samba.org>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+
+Autobuild-User(master): Volker Lendecke <vl@samba.org>
+Autobuild-Date(master): Fri Dec 18 01:02:55 CET 2015 on sn-devel-144
+
+(cherry picked from commit d7feb1879ee711598540049c2c5eccc80fd6f1e5)
+---
+ source3/libsmb/libsmb_server.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
+index 45be660..e7416e0 100644
+--- a/source3/libsmb/libsmb_server.c
++++ b/source3/libsmb/libsmb_server.c
+@@ -634,7 +634,7 @@ again:
+       }
+       ZERO_STRUCTP(srv);
+-      srv->cli = c;
++      DLIST_ADD(srv->cli, c);
+       srv->dev = (dev_t)(str_checksum(server) ^ str_checksum(share));
+         srv->no_pathinfo = False;
+         srv->no_pathinfo2 = False;
+@@ -821,7 +821,7 @@ SMBC_attr_server(TALLOC_CTX *ctx,
+                 }
+                 ZERO_STRUCTP(ipc_srv);
+-                ipc_srv->cli = ipc_cli;
++                DLIST_ADD(ipc_srv->cli, ipc_cli);
+                 nt_status = cli_rpc_pipe_open_noauth(
+                       ipc_srv->cli, &ndr_table_lsarpc.syntax_id, &pipe_hnd);
+-- 
+2.7.4
+
diff --git a/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch b/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch
new file mode 100644 (file)
index 0000000..3d49697
--- /dev/null
@@ -0,0 +1,101 @@
+From df1da96d7f9a11ee1029c1bb55a40255ea63267c Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Wed, 6 Jan 2016 11:04:16 +0100
+Subject: [PATCH] PATCHSET35 net: add option --no-dns-updates for net ads join
+
+If called with this option, 'net ads join' will not attempt
+to perform dns updates.
+
+Backported for Samba 3.6 from master patches:
+
+ ae81a40b1193ef93add61666ace6fff1a1e0676a
+ d7a617f2f00c4a2b5294523fa651915c85de0d8b
+
+Signed-off-by: Michael Adam <obnox@samba.org>
+---
+ docs-xml/manpages-3/net.8.xml | 9 ++++++++-
+ source3/utils/net.c           | 2 ++
+ source3/utils/net.h           | 2 ++
+ source3/utils/net_ads.c       | 6 +++++-
+ 4 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/docs-xml/manpages-3/net.8.xml b/docs-xml/manpages-3/net.8.xml
+index 65f1272..cff3594 100644
+--- a/docs-xml/manpages-3/net.8.xml
++++ b/docs-xml/manpages-3/net.8.xml
+@@ -135,6 +135,13 @@
+               </para></listitem>
+               </varlistentry>
++              <varlistentry>
++              <term>--no-dns-updates</term>
++              <listitem><para>Do not perform DNS updates as part of
++              "net ads join".
++              </para></listitem>
++              </varlistentry>
++
+               &stdarg.server.debug;
+       </variablelist>
+ </refsect1>
+@@ -194,7 +201,7 @@ the remote server using <command>/bin/date</command>. </para>
+ </refsect2>
+ <refsect2>
+-<title>[RPC|ADS] JOIN [TYPE] [-U username[%password]] [createupn=UPN] [createcomputer=OU] [options]</title>
++<title>[RPC|ADS] JOIN [TYPE] [--no-dns-updates] [-U username[%password]] [createupn=UPN] [createcomputer=OU] [options]</title>
+ <para>
+ Join a domain.  If the account already exists on the server, and 
+diff --git a/source3/utils/net.c b/source3/utils/net.c
+index c53b285..3a95f7e 100644
+--- a/source3/utils/net.c
++++ b/source3/utils/net.c
+@@ -820,6 +820,8 @@ static struct functable net_func[] = {
+               {"lock", 0, POPT_ARG_NONE,   &c->opt_lock},
+               {"auto", 'a', POPT_ARG_NONE,   &c->opt_auto},
+               {"repair", 0, POPT_ARG_NONE,   &c->opt_repair},
++              /* Options for 'net ads join' */
++              {"no-dns-updates", 0, POPT_ARG_NONE, &c->opt_no_dns_updates},
+               POPT_COMMON_SAMBA
+               { 0, 0, 0, 0}
+       };
+diff --git a/source3/utils/net.h b/source3/utils/net.h
+index 1d1559f..adddf34 100644
+--- a/source3/utils/net.h
++++ b/source3/utils/net.h
+@@ -81,6 +81,8 @@ struct net_context {
+       int opt_auto;
+       int opt_repair;
++      int opt_no_dns_updates;
++
+       int opt_have_ip;
+       struct sockaddr_storage opt_dest_ip;
+       bool smb_encrypt;
+diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
+index 816349d..5c541f3 100644
+--- a/source3/utils/net_ads.c
++++ b/source3/utils/net_ads.c
+@@ -1296,7 +1296,7 @@ static NTSTATUS net_update_dns(struct net_context *c, TALLOC_CTX *mem_ctx, ADS_S
+ static int net_ads_join_usage(struct net_context *c, int argc, const char **argv)
+ {
+-      d_printf(_("net ads join [options]\n"
++      d_printf(_("net ads join [--no-dns-updates] [options]\n"
+                  "Valid options:\n"));
+       d_printf(_("   createupn[=UPN]    Set the userPrincipalName attribute during the join.\n"
+                  "                      The deault UPN is in the form host/netbiosname@REALM.\n"));
+@@ -1455,6 +1455,10 @@ int net_ads_join(struct net_context *c, int argc, const char **argv)
+       }
+ #if defined(WITH_DNS_UPDATES)
++      if (c->opt_no_dns_updates) {
++              goto done;
++      }
++
+       /*
+        * In a clustered environment, don't do dynamic dns updates:
+        * Registering the set of ip addresses that are assigned to
+-- 
+2.5.0
+
diff --git a/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch b/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch
new file mode 100644 (file)
index 0000000..820d136
--- /dev/null
@@ -0,0 +1,620 @@
+From 892d163635563a3505fcde2d3439a2f6b1af92a7 Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Thu, 18 Dec 2014 18:18:21 +0100
+Subject: [PATCH 1/4] PATCHSET16: printing: split out printer DN and GUID
+ retrieval
+
+This functions are used for printer publishing.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018
+
+Pair-programmed-with: Andreas Schneider <asn@samba.org>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+(cherry picked from commit 7cabd89789a50d37fc32735968c493092a37e69f)
+---
+ source3/printing/nt_printing_ads.c | 209 ++++++++++++++++++++++++-------------
+ 1 file changed, 137 insertions(+), 72 deletions(-)
+
+diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c
+index bf309b0..25e1ab6 100644
+--- a/source3/printing/nt_printing_ads.c
++++ b/source3/printing/nt_printing_ads.c
+@@ -87,6 +87,128 @@ done:
+       talloc_free(tmp_ctx);
+ }
++static WERROR nt_printer_dn_lookup(TALLOC_CTX *mem_ctx,
++                                 ADS_STRUCT *ads,
++                                 const char *printer,
++                                 char **pprinter_dn)
++{
++      char *printer_dn = NULL;
++      char *srv_dn = NULL;
++      char *srv_cn_0 = NULL;
++      char *srv_cn_escaped = NULL;
++      char *sharename_escaped = NULL;
++      char *srv_dn_utf8 = NULL;
++      char **srv_cn_utf8 = NULL;
++      size_t converted_size;
++      ADS_STATUS ads_status;
++      LDAPMessage *res;
++      WERROR result;
++      bool ok;
++
++      ads_status = ads_find_machine_acct(ads, &res, global_myname());
++      if (!ADS_ERR_OK(ads_status)) {
++              DEBUG(2, ("Failed to find machine account for %s\n",
++                        global_myname()));
++              result = WERR_NOT_FOUND;
++              goto err_out;
++      }
++
++      /*
++       * We use ldap_get_dn here as we need the answer in utf8 to call
++       * ldap_explode_dn(). JRA.
++       */
++      srv_dn_utf8 = ldap_get_dn((LDAP *)ads->ldap.ld, (LDAPMessage *)res);
++      ads_msgfree(ads, res);
++      if (srv_dn_utf8 == NULL) {
++              result = WERR_SERVER_UNAVAILABLE;
++              goto err_out;
++      }
++
++      srv_cn_utf8 = ldap_explode_dn(srv_dn_utf8, 1);
++      if (srv_cn_utf8 == NULL) {
++              ldap_memfree(srv_dn_utf8);
++              result = WERR_SERVER_UNAVAILABLE;
++              goto err_out;
++      }
++
++      /* Now convert to CH_UNIX. */
++      ok = pull_utf8_talloc(mem_ctx, &srv_dn, srv_dn_utf8, &converted_size);
++      ldap_memfree(srv_dn_utf8);
++      if (!ok) {
++              ldap_memfree(srv_cn_utf8);
++              result = WERR_SERVER_UNAVAILABLE;
++              goto err_out;
++      }
++
++      ok = pull_utf8_talloc(mem_ctx, &srv_cn_0, srv_cn_utf8[0], &converted_size);
++      ldap_memfree(srv_cn_utf8);
++      if (!ok) {
++              result = WERR_SERVER_UNAVAILABLE;
++              goto err_out;
++      }
++
++      srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn_0);
++      if (srv_cn_escaped == NULL) {
++              result = WERR_SERVER_UNAVAILABLE;
++              goto err_out;
++      }
++
++      sharename_escaped = escape_rdn_val_string_alloc(printer);
++      if (sharename_escaped == NULL) {
++              result = WERR_SERVER_UNAVAILABLE;
++              goto err_out;
++      }
++
++      printer_dn = talloc_asprintf(mem_ctx,
++                                   "cn=%s-%s,%s",
++                                   srv_cn_escaped,
++                                   sharename_escaped,
++                                   srv_dn);
++      if (printer_dn == NULL) {
++              result = WERR_NOMEM;
++              goto err_out;
++      }
++
++      *pprinter_dn = printer_dn;
++
++      result = WERR_OK;
++err_out:
++      SAFE_FREE(sharename_escaped);
++      SAFE_FREE(srv_cn_escaped);
++      TALLOC_FREE(srv_cn_0);
++      TALLOC_FREE(srv_dn);
++      return result;
++}
++
++static WERROR nt_printer_guid_retrieve_internal(ADS_STRUCT *ads,
++                                              const char *printer_dn,
++                                              struct GUID *pguid)
++{
++      ADS_STATUS ads_status;
++      LDAPMessage *res;
++      const char *attrs[] = {"objectGUID", NULL};
++      struct GUID guid;
++      bool ok;
++
++      ads_status = ads_search_dn(ads, &res, printer_dn, attrs);
++      if (!ADS_ERR_OK(ads_status)) {
++              DEBUG(2, ("Failed to retrieve GUID from DC - %s\n",
++                        ads_errstr(ads_status)));
++              return WERR_BADFILE;
++      }
++
++      ZERO_STRUCT(guid);
++      ok = ads_pull_guid(ads, res, &guid);
++      ads_msgfree(ads, res);
++      if (!ok) {
++              return WERR_NOMEM;
++      }
++
++      *pguid = guid;
++
++      return WERR_OK;
++}
++
+ WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx,
+                          const struct auth_serversupplied_info *session_info,
+                          struct messaging_context *msg_ctx,
+@@ -246,16 +368,12 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx,
+                                    struct spoolss_PrinterInfo2 *pinfo2)
+ {
+       ADS_STATUS ads_rc;
+-      LDAPMessage *res;
+-      char *prt_dn = NULL, *srv_dn, *srv_cn_0, *srv_cn_escaped, *sharename_escaped;
+-      char *srv_dn_utf8, **srv_cn_utf8;
+       TALLOC_CTX *ctx;
+       ADS_MODLIST mods;
+-      const char *attrs[] = {"objectGUID", NULL};
+       struct GUID guid;
+       WERROR win_rc = WERR_OK;
+-      size_t converted_size;
+       const char *printer = pinfo2->sharename;
++      char *printer_dn = NULL;
+       /* build the ads mods */
+       ctx = talloc_init("nt_printer_publish_ads");
+@@ -265,65 +383,13 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx,
+       DEBUG(5, ("publishing printer %s\n", printer));
+-      /* figure out where to publish */
+-      ads_rc = ads_find_machine_acct(ads, &res, global_myname());
+-      if (!ADS_ERR_OK(ads_rc)) {
+-              DEBUG(0, ("failed to find machine account for %s\n",
+-                        global_myname()));
+-              TALLOC_FREE(ctx);
+-              return WERR_NOT_FOUND;
+-      }
+-
+-      /* We use ldap_get_dn here as we need the answer
+-       * in utf8 to call ldap_explode_dn(). JRA. */
+-
+-      srv_dn_utf8 = ldap_get_dn((LDAP *)ads->ldap.ld, (LDAPMessage *)res);
+-      ads_msgfree(ads, res);
+-      if (!srv_dn_utf8) {
+-              TALLOC_FREE(ctx);
+-              return WERR_SERVER_UNAVAILABLE;
+-      }
+-      srv_cn_utf8 = ldap_explode_dn(srv_dn_utf8, 1);
+-      if (!srv_cn_utf8) {
+-              TALLOC_FREE(ctx);
+-              ldap_memfree(srv_dn_utf8);
+-              return WERR_SERVER_UNAVAILABLE;
+-      }
+-      /* Now convert to CH_UNIX. */
+-      if (!pull_utf8_talloc(ctx, &srv_dn, srv_dn_utf8, &converted_size)) {
+-              TALLOC_FREE(ctx);
+-              ldap_memfree(srv_dn_utf8);
+-              ldap_memfree(srv_cn_utf8);
+-              return WERR_SERVER_UNAVAILABLE;
+-      }
+-      if (!pull_utf8_talloc(ctx, &srv_cn_0, srv_cn_utf8[0], &converted_size)) {
+-              TALLOC_FREE(ctx);
+-              ldap_memfree(srv_dn_utf8);
+-              ldap_memfree(srv_cn_utf8);
+-              TALLOC_FREE(srv_dn);
+-              return WERR_SERVER_UNAVAILABLE;
+-      }
+-
+-      ldap_memfree(srv_dn_utf8);
+-      ldap_memfree(srv_cn_utf8);
+-
+-      srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn_0);
+-      if (!srv_cn_escaped) {
+-              TALLOC_FREE(ctx);
+-              return WERR_SERVER_UNAVAILABLE;
+-      }
+-      sharename_escaped = escape_rdn_val_string_alloc(printer);
+-      if (!sharename_escaped) {
+-              SAFE_FREE(srv_cn_escaped);
++      win_rc = nt_printer_dn_lookup(ctx, ads, printer, &printer_dn);
++      if (!W_ERROR_IS_OK(win_rc)) {
++              DEBUG(2, ("Failed to create printer dn\n"));
+               TALLOC_FREE(ctx);
+-              return WERR_SERVER_UNAVAILABLE;
++              return win_rc;
+       }
+-      prt_dn = talloc_asprintf(ctx, "cn=%s-%s,%s", srv_cn_escaped, sharename_escaped, srv_dn);
+-
+-      SAFE_FREE(srv_cn_escaped);
+-      SAFE_FREE(sharename_escaped);
+-
+       mods = ads_init_mods(ctx);
+       if (mods == NULL) {
+@@ -338,13 +404,13 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx,
+       }
+       /* publish it */
+-      ads_rc = ads_mod_printer_entry(ads, prt_dn, ctx, &mods);
++      ads_rc = ads_mod_printer_entry(ads, printer_dn, ctx, &mods);
+       if (ads_rc.err.rc == LDAP_NO_SUCH_OBJECT) {
+               int i;
+               for (i=0; mods[i] != 0; i++)
+                       ;
+               mods[i] = (LDAPMod *)-1;
+-              ads_rc = ads_add_printer_entry(ads, prt_dn, ctx, &mods);
++              ads_rc = ads_add_printer_entry(ads, printer_dn, ctx, &mods);
+       }
+       if (!ADS_ERR_OK(ads_rc)) {
+@@ -352,16 +418,15 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx,
+                         printer, ads_errstr(ads_rc)));
+       }
+-      /* retreive the guid and store it locally */
+-      if (ADS_ERR_OK(ads_search_dn(ads, &res, prt_dn, attrs))) {
+-              bool guid_ok;
+-              ZERO_STRUCT(guid);
+-              guid_ok = ads_pull_guid(ads, res, &guid);
+-              ads_msgfree(ads, res);
+-              if (guid_ok) {
+-                      store_printer_guid(msg_ctx, printer, guid);
+-              }
++      win_rc = nt_printer_guid_retrieve_internal(ads, printer_dn, &guid);
++      if (!W_ERROR_IS_OK(win_rc)) {
++              TALLOC_FREE(ctx);
++              return win_rc;
+       }
++
++      /* TODO add a return value */
++      store_printer_guid(msg_ctx, printer, guid);
++
+       TALLOC_FREE(ctx);
+       return win_rc;
+-- 
+2.3.0
+
+
+From 45bb946d93deaf4926754cf57454f79869e8bfaf Mon Sep 17 00:00:00 2001
+From: David Disseldorp <ddiss@samba.org>
+Date: Thu, 18 Dec 2014 18:23:11 +0100
+Subject: [PATCH 2/4] PATCHSET16: printing: add nt_printer_guid_retrieve()
+ helper
+
+This function connects to the domain controller and retrieves the
+GUID for the corresponding printer DN.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018
+
+Pair-programmed-with: Andreas Schneider <asn@samba.org>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+(cherry picked from commit 38dbd054dc331a441b10fdebbdb4bd0fc51cfc0a)
+---
+ source3/include/nt_printing.h      |  3 ++
+ source3/printing/nt_printing_ads.c | 58 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+)
+
+diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h
+index cdbad87..67a0522 100644
+--- a/source3/include/nt_printing.h
++++ b/source3/include/nt_printing.h
+@@ -132,6 +132,9 @@ bool print_access_check(const struct auth_serversupplied_info *server_info,
+                       struct messaging_context *msg_ctx, int snum,
+                       int access_type);
++WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer,
++                              struct GUID *pguid);
++
+ WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx,
+                          const struct auth_serversupplied_info *server_info,
+                          struct messaging_context *msg_ctx,
+diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c
+index 25e1ab6..6fa4bfc 100644
+--- a/source3/printing/nt_printing_ads.c
++++ b/source3/printing/nt_printing_ads.c
+@@ -209,6 +209,58 @@ static WERROR nt_printer_guid_retrieve_internal(ADS_STRUCT *ads,
+       return WERR_OK;
+ }
++WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer,
++                              struct GUID *pguid)
++{
++      ADS_STRUCT *ads = NULL;
++      char *old_krb5ccname = NULL;
++      char *printer_dn;
++      WERROR result;
++      ADS_STATUS ads_status;
++      TALLOC_CTX *tmp_ctx;
++
++      tmp_ctx = talloc_new(mem_ctx);
++      if (tmp_ctx == NULL) {
++              return WERR_NOMEM;
++      }
++
++      ads = ads_init(lp_realm(), lp_workgroup(), NULL);
++      if (ads == NULL) {
++              result = WERR_SERVER_UNAVAILABLE;
++              goto out;
++      }
++
++      old_krb5ccname = getenv(KRB5_ENV_CCNAME);
++      setenv(KRB5_ENV_CCNAME, "MEMORY:prtpub_cache", 1);
++      SAFE_FREE(ads->auth.password);
++      ads->auth.password = secrets_fetch_machine_password(lp_workgroup(),
++                                                          NULL, NULL);
++
++      ads_status = ads_connect(ads);
++      if (!ADS_ERR_OK(ads_status)) {
++              DEBUG(3, ("ads_connect failed: %s\n", ads_errstr(ads_status)));
++              result = WERR_ACCESS_DENIED;
++              goto out;
++      }
++
++      result = nt_printer_dn_lookup(tmp_ctx, ads, printer, &printer_dn);
++      if (!W_ERROR_IS_OK(result)) {
++              goto out;
++      }
++
++      result = nt_printer_guid_retrieve_internal(ads, printer_dn, pguid);
++out:
++      TALLOC_FREE(tmp_ctx);
++      ads_destroy(&ads);
++      ads_kdestroy("MEMORY:prtpub_cache");
++      unsetenv(KRB5_ENV_CCNAME);
++      if (old_krb5ccname != NULL) {
++              setenv(KRB5_ENV_CCNAME, old_krb5ccname, 0);
++      }
++
++      return result;
++}
++
+ WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx,
+                          const struct auth_serversupplied_info *session_info,
+                          struct messaging_context *msg_ctx,
+@@ -652,6 +704,12 @@ bool is_printer_published(TALLOC_CTX *mem_ctx,
+       return true;
+ }
+ #else
++WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer,
++                              struct GUID *pguid)
++{
++      return WERR_NOT_SUPPORTED;
++}
++
+ WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx,
+                          const struct auth_serversupplied_info *session_info,
+                          struct messaging_context *msg_ctx,
+-- 
+2.3.0
+
+
+From 228323b1c846d6dfcd39e23c8ce850c79f339de9 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Thu, 18 Dec 2014 15:13:27 +0000
+Subject: [PATCH 3/4] PATCHSET16: printing: rework nt_printer_guid_store to
+ return errors
+
+Callers can now choose whether or not to ignore errors.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018
+
+Pair-programmed-with: David Disseldorp <ddiss@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+(cherry picked from commit 6595ced146a53dcef9bbd5d2deb82a44c8ce1a1a)
+---
+ source3/include/nt_printing.h      |  3 +++
+ source3/printing/nt_printing_ads.c | 49 +++++++++++++++++++++++++-------------
+ 2 files changed, 35 insertions(+), 17 deletions(-)
+
+diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h
+index 67a0522..493f4ce 100644
+--- a/source3/include/nt_printing.h
++++ b/source3/include/nt_printing.h
+@@ -135,6 +135,9 @@ bool print_access_check(const struct auth_serversupplied_info *server_info,
+ WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer,
+                               struct GUID *pguid);
++WERROR nt_printer_guid_store(struct messaging_context *msg_ctx,
++                           const char *printer, struct GUID guid);
++
+ WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx,
+                          const struct auth_serversupplied_info *server_info,
+                          struct messaging_context *msg_ctx,
+diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c
+index 6fa4bfc..540a8a3 100644
+--- a/source3/printing/nt_printing_ads.c
++++ b/source3/printing/nt_printing_ads.c
+@@ -35,32 +35,32 @@
+ /*****************************************************************
+  ****************************************************************/
+-static void store_printer_guid(struct messaging_context *msg_ctx,
+-                             const char *printer, struct GUID guid)
++WERROR nt_printer_guid_store(struct messaging_context *msg_ctx,
++                           const char *printer, struct GUID guid)
+ {
+       TALLOC_CTX *tmp_ctx;
+-      struct auth_serversupplied_info *session_info = NULL;
++      const struct auth_serversupplied_info *session_info;
+       const char *guid_str;
+       DATA_BLOB blob;
+-      NTSTATUS status;
+       WERROR result;
+       tmp_ctx = talloc_new(NULL);
+       if (!tmp_ctx) {
+-              DEBUG(0, ("store_printer_guid: Out of memory?!\n"));
+-              return;
++              DEBUG(0, ("Out of memory?!\n"));
++              return WERR_NOMEM;
+       }
+-      status = make_session_info_system(tmp_ctx, &session_info);
+-      if (!NT_STATUS_IS_OK(status)) {
+-              DEBUG(0, ("store_printer_guid: "
+-                        "Could not create system session_info\n"));
++      session_info = get_session_info_system();
++      if (session_info == NULL) {
++              DEBUG(0, ("Could not get system session_info\n"));
++              result = WERR_NOMEM;
+               goto done;
+       }
+       guid_str = GUID_string(tmp_ctx, &guid);
+       if (!guid_str) {
+-              DEBUG(0, ("store_printer_guid: Out of memory?!\n"));
++              DEBUG(0, ("Out of memory?!\n"));
++              result = WERR_NOMEM;
+               goto done;
+       }
+@@ -68,9 +68,9 @@ static void store_printer_guid(struct messaging_context *msg_ctx,
+          Vista to whine */
+       if (!push_reg_sz(tmp_ctx, &blob, guid_str)) {
+-              DEBUG(0, ("store_printer_guid: "
+-                        "Could not marshall string %s for objectGUID\n",
++              DEBUG(0, ("Could not marshall string %s for objectGUID\n",
+                         guid_str));
++              result = WERR_NOMEM;
+               goto done;
+       }
+@@ -79,12 +79,15 @@ static void store_printer_guid(struct messaging_context *msg_ctx,
+                                          SPOOL_DSSPOOLER_KEY, "objectGUID",
+                                          REG_SZ, blob.data, blob.length);
+       if (!W_ERROR_IS_OK(result)) {
+-              DEBUG(0, ("store_printer_guid: "
+-                        "Failed to store GUID for printer %s\n", printer));
++              DEBUG(0, ("Failed to store GUID for printer %s\n", printer));
++              goto done;
+       }
++      result = WERR_OK;
+ done:
+       talloc_free(tmp_ctx);
++
++      return result;
+ }
+ static WERROR nt_printer_dn_lookup(TALLOC_CTX *mem_ctx,
+@@ -468,6 +471,7 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx,
+       if (!ADS_ERR_OK(ads_rc)) {
+               DEBUG(3, ("error publishing %s: %s\n",
+                         printer, ads_errstr(ads_rc)));
++              /* XXX failed to publish, so no guid to retrieve */
+       }
+       win_rc = nt_printer_guid_retrieve_internal(ads, printer_dn, &guid);
+@@ -476,8 +480,13 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx,
+               return win_rc;
+       }
+-      /* TODO add a return value */
+-      store_printer_guid(msg_ctx, printer, guid);
++      win_rc = nt_printer_guid_store(msg_ctx, printer, guid);
++      if (!W_ERROR_IS_OK(win_rc)) {
++              DEBUG(3, ("failed to store printer %s guid\n",
++                        printer));
++              /* not catastrophic, retrieve on next use */
++              win_rc = WERR_OK;
++      }
+       TALLOC_FREE(ctx);
+@@ -704,6 +713,12 @@ bool is_printer_published(TALLOC_CTX *mem_ctx,
+       return true;
+ }
+ #else
++WERROR nt_printer_guid_store(struct messaging_context *msg_ctx,
++                         const char *printer, struct GUID guid)
++{
++      return WERR_NOT_SUPPORTED;
++}
++
+ WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer,
+                               struct GUID *pguid)
+ {
+-- 
+2.3.0
+
+
+From d4847deadc4cd6f4f8071fae16d05bc8ec4ed566 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Thu, 18 Dec 2014 15:14:36 +0000
+Subject: [PATCH 4/4] PATCHSET16: spoolss: retrieve published printer GUID if
+ not in registry
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When a printer is published, the GUID for the published DN is retrieved
+from the domain controller and stored in the registry.
+When handling a spoolss GetPrinter(level=7) request, the same GUID is
+obtained from the registry and returned to the client.
+
+This change sees the spoolss server query the DC for the published
+printer GUID if it is not present in the registry when handling a
+spoolss GetPrinter(level=7) request.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018
+
+Pair-Programmed-With: David Disseldorp <ddiss@samba.org>
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Signed-off-by: David Disseldorp <ddiss@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+
+Autobuild-User(master): Günther Deschner <gd@samba.org>
+Autobuild-Date(master): Wed Feb 18 12:43:44 CET 2015 on sn-devel-104
+
+(cherry picked from commit a4157e7c5d75be7003ad0b72fdfe9856a9e5ba8f)
+---
+ source3/rpc_server/spoolss/srv_spoolss_nt.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+index 0c4b582..516b7dc 100644
+--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+@@ -4213,7 +4213,25 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
+               werr = nt_printer_guid_get(tmp_ctx, session_info, msg_ctx,
+                                          printer, &guid);
+               if (!W_ERROR_IS_OK(werr)) {
+-                      goto out_tmp_free;
++                      /*
++                       * If we do not have a GUID entry in the registry, then
++                       * try to retrieve it from AD and store it now.
++                       */
++                      werr = nt_printer_guid_retrieve(tmp_ctx, printer,
++                                                      &guid);
++                      if (!W_ERROR_IS_OK(werr)) {
++                              DEBUG(1, ("Failed to retrieve GUID for "
++                                        "printer [%s] from AD - "
++                                        "Is the the printer still "
++                                        "published ?\n", printer));
++                              goto out_tmp_free;
++                      }
++
++                      werr = nt_printer_guid_store(msg_ctx, printer, guid);
++                      if (!W_ERROR_IS_OK(werr)) {
++                              DEBUG(3, ("failed to store printer %s guid\n",
++                                        printer));
++                      }
+               }
+               r->guid = talloc_strdup_upper(mem_ctx, GUID_string2(mem_ctx, &guid));
+               r->action = DSPRINT_PUBLISH;
+-- 
+2.3.0
+
diff --git a/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch b/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch
new file mode 100644 (file)
index 0000000..641e62b
--- /dev/null
@@ -0,0 +1,75 @@
+From cd3082b03487eaeddb0105807b5ad39b47aa65f1 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@samba.org>
+Date: Tue, 8 Nov 2016 12:20:41 +0100
+Subject: [PATCH] s3-spoolss: Remove printer from registry if it is unpublished
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=11665
+
+Signed-off-by: Andreas Schneider <asn@samba.org>
+Reviewed-by: Guenther Deschner <gd@samba.org>
+---
+ source3/rpc_server/spoolss/srv_spoolss_nt.c | 34 ++++++++++++++++++++++++-----
+ 1 file changed, 29 insertions(+), 5 deletions(-)
+
+diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+index 556cd4f..f1ab3fb 100644
+--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
+@@ -4194,6 +4194,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
+                                     int snum)
+ {
+       struct auth_serversupplied_info *session_info;
++      struct spoolss_PrinterInfo2 *pinfo2 = NULL;
+       char *printer;
+       NTSTATUS status;
+       WERROR werr;
+@@ -4218,7 +4219,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
+       }
+       if (is_printer_published(tmp_ctx, session_info, msg_ctx,
+-                               servername, printer, NULL)) {
++                               servername, printer, &pinfo2)) {
+               struct GUID guid;
+               werr = nt_printer_guid_get(tmp_ctx, session_info, msg_ctx,
+                                          printer, &guid);
+@@ -4230,10 +4231,33 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
+                       werr = nt_printer_guid_retrieve(tmp_ctx, printer,
+                                                       &guid);
+                       if (!W_ERROR_IS_OK(werr)) {
+-                              DEBUG(1, ("Failed to retrieve GUID for "
+-                                        "printer [%s] from AD - "
+-                                        "Is the the printer still "
+-                                        "published ?\n", printer));
++                              DEBUG(3, ("Failed to retrieve GUID for "
++                                        "printer [%s] from AD - %s\n",
++                                        printer,
++                                        win_errstr(werr)));
++                              if (W_ERROR_EQUAL(werr, WERR_FILE_NOT_FOUND)) {
++                                      /*
++                                       * If we did not find it in AD, then it
++                                       * is unpublished and we should reflect
++                                       * this in the registry and return
++                                       * success.
++                                       */
++                                      DEBUG(1, ("Unpublish printer [%s]\n",
++                                                pinfo2->sharename));
++                                      nt_printer_publish(tmp_ctx,
++                                                         session_info,
++                                                         msg_ctx,
++                                                         pinfo2,
++                                                         DSPRINT_UNPUBLISH);
++                                      r->guid = talloc_strdup(mem_ctx, "");
++                                      r->action = DSPRINT_UNPUBLISH;
++
++                                      if (r->guid == NULL) {
++                                              werr = WERR_NOT_ENOUGH_MEMORY;
++                                      } else {
++                                              werr = WERR_OK;
++                                      }
++                              }
+                               goto out_tmp_free;
+                       }
+-- 
+2.10.1
+
diff --git a/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch b/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch
new file mode 100644 (file)
index 0000000..f38aabf
--- /dev/null
@@ -0,0 +1,308 @@
+From 1d94210adc6e0bb8a08fbfc1a516a0f958dbf744 Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Wed, 16 Jan 2013 12:00:00 +0100
+Subject: [PATCH 1/2] winbind: Use standard tevent_context_init
+
+This makes winbind use epoll instead of poll
+---
+ source3/winbindd/winbindd.c       |   38 ++++++++++++++++++++++++++++++++-----
+ source3/winbindd/winbindd.h       |    2 --
+ source3/winbindd/winbindd_proto.h |    1 +
+ 3 files changed, 34 insertions(+), 7 deletions(-)
+
+Index: samba-3.6.22/source3/winbindd/winbindd.c
+===================================================================
+--- samba-3.6.22.orig/source3/winbindd/winbindd.c
++++ samba-3.6.22/source3/winbindd/winbindd.c
+@@ -48,14 +48,42 @@ static bool interactive = False;
+ extern bool override_logfile;
++struct tevent_context *winbind_event_context(void)
++{
++      static struct tevent_context *ev = NULL;
++
++      if (ev != NULL) {
++              return ev;
++      }
++
++      /*
++       * Note we MUST use the NULL context here, not the autofree context,
++       * to avoid side effects in forked children exiting.
++       */
++      ev = tevent_context_init(NULL);
++      if (ev == NULL) {
++              smb_panic("Could not init winbindd's messaging context.\n");
++      }
++      return ev;
++}
++
+ struct messaging_context *winbind_messaging_context(void)
+ {
+-      struct messaging_context *msg_ctx = server_messaging_context();
+-      if (likely(msg_ctx != NULL)) {
+-              return msg_ctx;
++      static struct messaging_context *msg = NULL;
++
++      if (msg != NULL) {
++              return msg;
++      }
++
++      /*
++       * Note we MUST use the NULL context here, not the autofree context,
++       * to avoid side effects in forked children exiting.
++       */
++      msg = messaging_init(NULL, procid_self(), winbind_event_context());
++      if (msg == NULL) {
++              smb_panic("Could not init winbindd's messaging context.\n");
+       }
+-      smb_panic("Could not init winbindd's messaging context.\n");
+-      return NULL;
++      return msg;
+ }
+ /* Reload configuration */
+Index: samba-3.6.22/source3/winbindd/winbindd.h
+===================================================================
+--- samba-3.6.22.orig/source3/winbindd/winbindd.h
++++ samba-3.6.22/source3/winbindd/winbindd.h
+@@ -397,6 +397,4 @@ struct WINBINDD_CCACHE_ENTRY {
+ #define WINBINDD_PAM_AUTH_KRB5_RENEW_TIME 2592000 /* one month */
+ #define DOM_SEQUENCE_NONE ((uint32)-1)
+-#define winbind_event_context server_event_context
+-
+ #endif /* _WINBINDD_H */
+Index: samba-3.6.22/source3/winbindd/winbindd_proto.h
+===================================================================
+--- samba-3.6.22.orig/source3/winbindd/winbindd_proto.h
++++ samba-3.6.22/source3/winbindd/winbindd_proto.h
+@@ -34,6 +34,7 @@ bool winbindd_use_cache(void);
+ void winbindd_register_handlers(void);
+ const char *get_winbind_pipe_dir(void);
+ char *get_winbind_priv_pipe_dir(void);
++struct tevent_context *winbind_event_context(void);
+ int main(int argc, char **argv, char **envp);
+ /* The following definitions come from winbindd/winbindd_ads.c  */
+Index: samba-3.6.22/source3/winbindd/winbindd_dual.c
+===================================================================
+--- samba-3.6.22.orig/source3/winbindd/winbindd_dual.c
++++ samba-3.6.22/source3/winbindd/winbindd_dual.c
+@@ -1284,6 +1284,66 @@ NTSTATUS winbindd_reinit_after_fork(cons
+       return NT_STATUS_OK;
+ }
++struct child_handler_state {
++      struct winbindd_child *child;
++      struct winbindd_cli_state *cli_state;
++};
++
++static void child_handler(struct tevent_context *ev, struct tevent_fd *fde,
++                        uint16_t flags, void *private_data)
++{
++      struct child_handler_state *ch_state =
++              (struct child_handler_state *)private_data;
++      struct winbindd_cli_state *state = ch_state->cli_state;
++      struct iovec iov[2];
++      int iov_count;
++      NTSTATUS status;
++
++      if ((flags & TEVENT_FD_READ) == 0) {
++              return;
++      }
++
++      /* fetch a request from the main daemon */
++      status = child_read_request(state);
++
++      if (!NT_STATUS_IS_OK(status)) {
++              /* we lost contact with our parent */
++              _exit(0);
++      }
++
++      DEBUG(4,("child daemon request %d\n", (int)state->request->cmd));
++
++      ZERO_STRUCTP(state->response);
++      state->request->null_term = '\0';
++      state->mem_ctx = talloc_tos();
++      child_process_request(ch_state->child, state);
++
++      DEBUG(4, ("Finished processing child request %d\n",
++                (int)state->request->cmd));
++
++      SAFE_FREE(state->request->extra_data.data);
++
++      iov[0].iov_base = (void *)state->response;
++      iov[0].iov_len = sizeof(struct winbindd_response);
++      iov_count = 1;
++
++      if (state->response->length > sizeof(struct winbindd_response)) {
++              iov[1].iov_base =
++                      (void *)state->response->extra_data.data;
++              iov[1].iov_len = state->response->length-iov[0].iov_len;
++              iov_count = 2;
++      }
++
++      DEBUG(10, ("Writing %d bytes to parent\n",
++                 (int)state->response->length));
++
++      if (write_data_iov(state->sock, iov, iov_count) !=
++          state->response->length) {
++              DEBUG(0, ("Could not write result\n"));
++              exit(1);
++      }
++}
++
+ /*
+  * In a child there will be only one domain, reference that here.
+  */
+@@ -1301,6 +1361,7 @@ static bool fork_domain_child(struct win
+       struct winbindd_request request;
+       struct winbindd_response response;
+       struct winbindd_domain *primary_domain = NULL;
++      struct child_handler_state ch_state;
+       NTSTATUS status;
+       ssize_t nwritten;
+@@ -1322,6 +1383,9 @@ static bool fork_domain_child(struct win
+       state.request = &request;
+       state.response = &response;
++      ch_state.child = child;
++      ch_state.cli_state = &state;
++
+       child->pid = sys_fork();
+       if (child->pid == -1) {
+@@ -1464,22 +1528,14 @@ static bool fork_domain_child(struct win
+               }
+       }
+-      while (1) {
++      if (tevent_add_fd(winbind_event_context(), NULL, state.sock,
++                        TEVENT_FD_READ, child_handler, &ch_state) == NULL) {
++              DEBUG(1, ("tevent_add_fd failed\n"));
++              exit(1);
++      }
+-              int ret;
+-              struct pollfd *pfds;
+-              int num_pfds;
+-              int timeout;
+-              struct timeval t;
+-              struct timeval *tp;
++      while (1) {
+               TALLOC_CTX *frame = talloc_stackframe();
+-              struct iovec iov[2];
+-              int iov_count;
+-
+-              if (run_events_poll(winbind_event_context(), 0, NULL, 0)) {
+-                      TALLOC_FREE(frame);
+-                      continue;
+-              }
+               if (child->domain && child->domain->startup &&
+                               (time_mono(NULL) > child->domain->startup_time + 30)) {
+@@ -1489,99 +1545,12 @@ static bool fork_domain_child(struct win
+                       child->domain->startup = False;
+               }
+-              pfds = TALLOC_ZERO_P(talloc_tos(), struct pollfd);
+-              if (pfds == NULL) {
+-                      DEBUG(1, ("talloc failed\n"));
+-                      _exit(1);
+-              }
+-
+-              pfds->fd = state.sock;
+-              pfds->events = POLLIN|POLLHUP;
+-              num_pfds = 1;
+-
+-              timeout = INT_MAX;
+-
+-              if (!event_add_to_poll_args(
+-                          winbind_event_context(), talloc_tos(),
+-                          &pfds, &num_pfds, &timeout)) {
+-                      DEBUG(1, ("event_add_to_poll_args failed\n"));
+-                      _exit(1);
+-              }
+-              tp = get_timed_events_timeout(winbind_event_context(), &t);
+-              if (tp) {
+-                      DEBUG(11,("select will use timeout of %u.%u seconds\n",
+-                              (unsigned int)tp->tv_sec, (unsigned int)tp->tv_usec ));
+-              }
+-
+-              ret = sys_poll(pfds, num_pfds, timeout);
+-
+-              if (run_events_poll(winbind_event_context(), ret,
+-                                  pfds, num_pfds)) {
+-                      /* We got a signal - continue. */
+-                      TALLOC_FREE(frame);
+-                      continue;
+-              }
+-
+-              TALLOC_FREE(pfds);
+-
+-              if (ret == 0) {
+-                      DEBUG(11,("nothing is ready yet, continue\n"));
+-                      TALLOC_FREE(frame);
+-                      continue;
+-              }
+-
+-              if (ret == -1 && errno == EINTR) {
+-                      /* We got a signal - continue. */
+-                      TALLOC_FREE(frame);
+-                      continue;
+-              }
+-
+-              if (ret == -1 && errno != EINTR) {
+-                      DEBUG(0,("poll error occured\n"));
+-                      TALLOC_FREE(frame);
+-                      perror("poll");
++              if (tevent_loop_once(winbind_event_context()) != 0) {
++                      DEBUG(1, ("tevent_loop_once failed: %s\n",
++                                strerror(errno)));
+                       _exit(1);
+               }
+-              /* fetch a request from the main daemon */
+-              status = child_read_request(&state);
+-
+-              if (!NT_STATUS_IS_OK(status)) {
+-                      /* we lost contact with our parent */
+-                      _exit(0);
+-              }
+-
+-              DEBUG(4,("child daemon request %d\n", (int)state.request->cmd));
+-
+-              ZERO_STRUCTP(state.response);
+-              state.request->null_term = '\0';
+-              state.mem_ctx = frame;
+-              child_process_request(child, &state);
+-
+-              DEBUG(4, ("Finished processing child request %d\n",
+-                        (int)state.request->cmd));
+-
+-              SAFE_FREE(state.request->extra_data.data);
+-
+-              iov[0].iov_base = (void *)state.response;
+-              iov[0].iov_len = sizeof(struct winbindd_response);
+-              iov_count = 1;
+-
+-              if (state.response->length > sizeof(struct winbindd_response)) {
+-                      iov[1].iov_base =
+-                              (void *)state.response->extra_data.data;
+-                      iov[1].iov_len = state.response->length-iov[0].iov_len;
+-                      iov_count = 2;
+-              }
+-
+-              DEBUG(10, ("Writing %d bytes to parent\n",
+-                         (int)state.response->length));
+-
+-              if (write_data_iov(state.sock, iov, iov_count) !=
+-                  state.response->length) {
+-                      DEBUG(0, ("Could not write result\n"));
+-                      exit(1);
+-              }
+               TALLOC_FREE(frame);
+       }
+ }
index d5f0a71262750a62a743314678c6159f9431b35a..0180ded179540b5ae782032554979c93884432f8 100644 (file)
@@ -310,6 +310,16 @@ exiterror() {
                losetup -d /dev/loop${i} 2>/dev/null
            fi;
        done
+
+       if [ -n "${LOGFILE}" ]; then
+               echo # empty line
+
+               local line
+               while read -r line; do
+                       echo "    ${line}"
+               done <<< "$(tail -n30 ${LOGFILE})"
+       fi
+
        echo -e "\nERROR: $*"
        echo "       Check $LOGFILE for errors if applicable"
        exit 1
@@ -555,7 +565,9 @@ lfsmake1() {
 
        local PKG_TIME_START=`date +%s`
 
-       cd $BASEDIR/lfs && make -f $*   BUILDTARGET=$BUILDTARGET \
+       cd $BASEDIR/lfs && \
+               PATH="/tools/ccache/bin:/tools/bin:$PATH" \
+               make -f $* TOOLCHAIN=1 BUILDTARGET=$BUILDTARGET \
                                                CROSSTARGET="${CROSSTARGET}" \
                                                MACHINE=$MACHINE \
                                                MACHINE_TYPE=$MACHINE_TYPE \